diff options
-rw-r--r-- | asm/learn_move.s | 18 | ||||
-rw-r--r-- | graphics/pokedex/arrows.png | bin | 0 -> 303 bytes | |||
-rw-r--r-- | include/learn_move.h | 7 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/learn_move.c | 139 | ||||
-rw-r--r-- | sym_ewram.txt | 11 |
6 files changed, 167 insertions, 10 deletions
diff --git a/asm/learn_move.s b/asm/learn_move.s index 109f1a32e..2bd50789c 100644 --- a/asm/learn_move.s +++ b/asm/learn_move.s @@ -5,6 +5,7 @@ .text +/* thumb_func_start sub_8160624 sub_8160624: @ 8160624 push {lr} @@ -14,7 +15,9 @@ sub_8160624: @ 8160624 pop {r0} bx r0 thumb_func_end sub_8160624 +*/ +/* thumb_func_start sub_8160638 sub_8160638: @ 8160638 push {lr} @@ -35,7 +38,9 @@ sub_8160638: @ 8160638 bx r0 .pool thumb_func_end sub_8160638 +*/ +/* thumb_func_start sub_8160664 sub_8160664: @ 8160664 push {r4,lr} @@ -60,7 +65,9 @@ _08160688: bx r0 .pool thumb_func_end sub_8160664 +*/ +/* thumb_func_start sub_81606A0 sub_81606A0: @ 81606A0 push {r4-r6,lr} @@ -100,8 +107,8 @@ sub_81606A0: @ 81606A0 bl ListMenuInit ldr r1, [r6] movs r2, 0x89 - lsls r2, 1 - adds r1, r2 + lsls r2, 1 //0x112 + adds r1, r2 //partymon + 0x112 strb r0, [r1] movs r0, 0 movs r1, 0 @@ -114,7 +121,9 @@ sub_81606A0: @ 81606A0 bx r0 .pool thumb_func_end sub_81606A0 +*/ +/* thumb_func_start sub_8160740 sub_8160740: @ 8160740 push {r4,r5,lr} @@ -171,7 +180,9 @@ sub_8160740: @ 8160740 bx r0 .pool thumb_func_end sub_8160740 +*/ +/* thumb_func_start sub_81607EC sub_81607EC: @ 81607EC push {lr} @@ -198,7 +209,9 @@ sub_81607EC: @ 81607EC bx r0 .pool thumb_func_end sub_81607EC +*/ +/* thumb_func_start sub_816082C sub_816082C: @ 816082C push {lr} @@ -211,6 +224,7 @@ sub_816082C: @ 816082C pop {r0} bx r0 thumb_func_end sub_816082C +*/ thumb_func_start sub_816084C sub_816084C: @ 816084C diff --git a/graphics/pokedex/arrows.png b/graphics/pokedex/arrows.png Binary files differnew file mode 100644 index 000000000..2abf39366 --- /dev/null +++ b/graphics/pokedex/arrows.png diff --git a/include/learn_move.h b/include/learn_move.h new file mode 100644 index 000000000..034d689d4 --- /dev/null +++ b/include/learn_move.h @@ -0,0 +1,7 @@ +#ifndef GUARD_LEARN_MOVE_H +#define GUARD_LEARN_MOVE_H + +void sub_8160624(void); +void sub_8160638(void); + +#endif //GUARD_LEARN_MOVE_H diff --git a/ld_script.txt b/ld_script.txt index ea17676bf..69e677e9b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -204,6 +204,7 @@ SECTIONS { src/battle_controller_safari.o(.text); src/fldeff_sweetscent.o(.text); asm/battle_anim_815A0D4.o(.text); + src/learn_move.o(.text); asm/learn_move.o(.text); src/fldeff_softboiled.o(.text); src/decoration_inventory.o(.text); @@ -486,6 +487,7 @@ SECTIONS { src/battle_controller_safari.o(.rodata); data/battle_anim_815A0D4.o(.rodata); data/learn_move.o(.rodata); + src/learn_move.o(.rodata); src/roamer.o(.rodata); data/battle_tower.o(.rodata); src/use_pokeblock.o(.rodata); diff --git a/src/learn_move.c b/src/learn_move.c new file mode 100644 index 000000000..addae6a38 --- /dev/null +++ b/src/learn_move.c @@ -0,0 +1,139 @@ +#include "global.h" +#include "main.h" +#include "task.h" +#include "script.h" +#include "sprite.h" +#include "palette.h" +#include "menu.h" +#include "menu_helpers.h" +#include "list_menu.h" +#include "malloc.h" +#include "field_screen.h" +#include "event_data.h" +#include "bg.h" +#include "gpu_regs.h" +#include "learn_move.h" + +EWRAM_DATA u8 *gUnknown_0203BC34 = 0; +EWRAM_DATA u8 gUnknown_0203BC38[8] = {0}; + +extern void (*gFieldCallback)(void); +extern const struct SpritePalette gUnknown_085CEBB8; +extern const struct SpriteSheet gUnknown_085CEBB0; +extern const struct BgTemplate gUnknown_085CEC28; +extern void sub_81D2824(u16); + +void sub_8160868(void); +void sub_8161280(void); +void sub_81610B8(void); +void sub_816082C(void); + +static void sub_8160664(u8 taskId); +void sub_81606A0(void); //CB2_InitLearnMove +void sub_8160740(void); +void sub_81607EC(void); +void sub_816082C(void); + +void sub_8160624(void) //VBlankCB_LearnMove +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +void sub_8160638(void) //TeachMoveTutorMove +{ + ScriptContext2_Enable(); + CreateTask(sub_8160664, 0xA); + BeginNormalPaletteFade(-1, 0, 0, 0x10, 0); +} + +void sub_8160664(u8 taskId) +{ + if (!gPaletteFade.active) + { + SetMainCallback2(sub_81606A0); + gFieldCallback = sub_80AF168; + DestroyTask(taskId); + } +} + +// Doesn't match +void sub_81606A0(void) //CB2_InitLearnMove +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + + gUnknown_0203BC34 = AllocZeroed(0x118); //gUnknown_0203BC34 ? + gUnknown_0203BC34[68] = gSpecialVar_0x8004; + + SetVBlankCallback(sub_8160624); + sub_81607EC(); + sub_81D2824(0); + + //gUnknown_0203BC38 ? + gUnknown_0203BC38[0] = 0; + gUnknown_0203BC38[2] = 0; + gUnknown_0203BC38[4] = 0; + + sub_8161280(); + + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + sub_81610B8(); + + gUnknown_0203BC34[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]); + FillPalette(0, 0, 2); + SetMainCallback2(sub_816082C); +} + +// Doesn't match +void sub_8160740(void) +{ + ResetSpriteData(); + FreeAllSpritePalettes(); + ResetTasks(); + clear_scheduled_bg_copies_to_vram(); + + gUnknown_0203BC34 = AllocZeroed(0x118); //gUnknown_0203BC34 ? + gUnknown_0203BC34[68] = gSpecialVar_0x8004; + gUnknown_0203BC34[69] = gSpecialVar_0x8005; + + SetVBlankCallback(sub_8160624); + sub_81607EC(); + + //gUnknown_0203BC38 ? + sub_81D2824(gUnknown_0203BC38[4]); + sub_8161280(); + + LoadSpriteSheet(&gUnknown_085CEBB0); + LoadSpritePalette(&gUnknown_085CEBB8); + + gUnknown_0203BC34[274] = ListMenuInit(&gMultiuseListMenuTemplate, gUnknown_0203BC38[0], gUnknown_0203BC38[2]); + FillPalette(0, 0, 2); + SetMainCallback2(sub_816082C); +} + +void sub_81607EC(void) +{ + ResetVramOamAndBgCntRegs(); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, &gUnknown_085CEC28, 2); + ResetAllBgsCoordinates(); + SetGpuReg(0, 0x1040); + ShowBg(0); + ShowBg(1); + SetGpuReg(0x50, 0); +} + +void sub_816082C(void) +{ + sub_8160868(); + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + do_scheduled_bg_tilemap_copies_to_vram(); + UpdatePaletteFade(); +} diff --git a/sym_ewram.txt b/sym_ewram.txt index 37a34b19a..4d57c5a19 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -655,19 +655,14 @@ gUnknown_0203ABB8: @ 203ABB8 .space 0x4 .include "src/save.o" - + .space 0x4 /*unused var?*/ .include "src/mystery_event_script.o" -gUnknown_0203BC34: @ 203BC34 - .space 0x4 - -gUnknown_0203BC38: @ 203BC38 - .space 0x8 - + .include "src/learn_move.o" .include "src/decoration_inventory.o" - .include "src/roamer.o" + .include "src/roamer.o" gUnknown_0203BC88: @ 203BC88 .space 0x4 |