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 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 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 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 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 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 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 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 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 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