diff options
-rw-r--r-- | asm/pokedex_area_screen.s | 170 | ||||
-rw-r--r-- | data/pokedex_area_screen.s | 1 | ||||
-rw-r--r-- | include/region_map.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/pokedex_area_screen.c | 90 |
5 files changed, 93 insertions, 171 deletions
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s index 779a5a0ed..9f47d4162 100644 --- a/asm/pokedex_area_screen.s +++ b/asm/pokedex_area_screen.s @@ -5,176 +5,6 @@ .text - thumb_func_start UnusedPokedexAreaScreen -UnusedPokedexAreaScreen: @ 8110664 - push {lr} - ldr r3, _08110678 @ =gSharedMem - str r1, [r3, 0x4] - str r2, [r3, 0x8] - strh r0, [r3, 0xE] - ldr r0, _0811067C @ =CB2_UnusedPokedexAreaScreen - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08110678: .4byte gSharedMem -_0811067C: .4byte CB2_UnusedPokedexAreaScreen - thumb_func_end UnusedPokedexAreaScreen - - thumb_func_start CB2_UnusedPokedexAreaScreen -CB2_UnusedPokedexAreaScreen: @ 8110680 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0811069C @ =gMain - ldr r1, _081106A0 @ =0x0000043c - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0x7 - bls _08110692 - b _081107C0 -_08110692: - lsls r0, 2 - ldr r1, _081106A4 @ =_081106A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0811069C: .4byte gMain -_081106A0: .4byte 0x0000043c -_081106A4: .4byte _081106A8 - .align 2, 0 -_081106A8: - .4byte _081106C8 - .4byte _08110720 - .4byte _08110740 - .4byte _08110746 - .4byte _08110752 - .4byte _08110770 - .4byte _08110782 - .4byte _081107A8 -_081106C8: - movs r0, 0 - bl SetVBlankCallback - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xC4 - lsls r2, 7 - adds r0, r2, 0 - strh r0, [r1] - bl ResetPaletteFade - bl ResetSpriteData - bl ResetTasks - bl FreeSpriteTileRanges - bl FreeAllSpritePalettes - ldr r0, _08110710 @ =REG_BG0HOFS - movs r1, 0 - strh r1, [r0] - ldr r2, _08110714 @ =REG_BG0VOFS - ldr r3, _08110718 @ =0x0000fff8 - adds r0, r3, 0 - strh r0, [r2] - ldr r0, _0811071C @ =REG_BG2VOFS - strh r1, [r0] - subs r0, 0x2 - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - b _081107C0 - .align 2, 0 -_08110710: .4byte REG_BG0HOFS -_08110714: .4byte REG_BG0VOFS -_08110718: .4byte 0x0000fff8 -_0811071C: .4byte REG_BG2VOFS -_08110720: - ldr r4, _0811073C @ =gSharedMem + 0x6E8 - adds r0, r4, 0 - movs r1, 0 - bl InitRegionMap - movs r0, 0x88 - lsls r0, 4 - adds r4, r0 - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x10 - bl StringFill - b _081107C0 - .align 2, 0 -_0811073C: .4byte gSharedMem + 0x6E8 -_08110740: - bl sub_8110824 - b _081107C0 -_08110746: - bl DrawAreaGlow - lsls r0, 24 - cmp r0, 0 - bne _081107CC - b _081107C0 -_08110752: - movs r0, 0x1 - movs r1, 0x1 - bl CreateRegionMapPlayerIcon - movs r1, 0x8 - negs r1, r1 - movs r0, 0 - bl sub_80FB2A4 - ldr r0, _0811076C @ =sub_81107DC - bl SetVBlankCallback - b _081107C0 - .align 2, 0 -_0811076C: .4byte sub_81107DC -_08110770: - movs r0, 0x15 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - b _081107C0 -_08110782: - ldr r1, _0811079C @ =REG_BLDCNT - ldr r2, _081107A0 @ =0x00003f41 - adds r0, r2, 0 - strh r0, [r1] - bl sub_8111084 - movs r1, 0x80 - lsls r1, 19 - ldr r3, _081107A4 @ =0x00007741 - adds r0, r3, 0 - strh r0, [r1] - b _081107C0 - .align 2, 0 -_0811079C: .4byte REG_BLDCNT -_081107A0: .4byte 0x00003f41 -_081107A4: .4byte 0x00007741 -_081107A8: - ldr r0, _081107B8 @ =sub_8111288 - bl sub_8110814 - ldr r0, _081107BC @ =sub_81107F0 - bl SetMainCallback2 - b _081107CC - .align 2, 0 -_081107B8: .4byte sub_8111288 -_081107BC: .4byte sub_81107F0 -_081107C0: - ldr r1, _081107D4 @ =gMain - ldr r0, _081107D8 @ =0x0000043c - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_081107CC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_081107D4: .4byte gMain -_081107D8: .4byte 0x0000043c - thumb_func_end CB2_UnusedPokedexAreaScreen - thumb_func_start sub_81107DC sub_81107DC: @ 81107DC push {lr} diff --git a/data/pokedex_area_screen.s b/data/pokedex_area_screen.s index 410f0d4c5..6d52e30a5 100644 --- a/data/pokedex_area_screen.s +++ b/data/pokedex_area_screen.s @@ -26,6 +26,7 @@ gUnknown_083F857A:: @ 83F857A @ XXX: what is this? .align 2 +gUnknown_083F8588:: .4byte gSharedMem .align 2 diff --git a/include/region_map.h b/include/region_map.h index 89a47cd05..3fe7de460 100644 --- a/include/region_map.h +++ b/include/region_map.h @@ -51,7 +51,7 @@ struct RegionMap /*0x080*/ u8 filler80[0x100]; /*0x180*/ u8 cursorSmallImage[0x100]; /*0x280*/ u8 cursorLargeImage[0x600]; -}; +}; // size: 0x880 void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed); void sub_80FA904(struct RegionMap *regionMap, bool8 zoomed); diff --git a/ld_script.txt b/ld_script.txt index d3f41018a..382feba7c 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -340,6 +340,7 @@ SECTIONS { src/hof_pc.o(.text); src/field_specials.o(.text); src/battle/battle_records.o(.text); + src/pokedex_area_screen.o(.text); asm/pokedex_area_screen.o(.text); src/evolution_scene.o(.text); src/roulette.o(.text); diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index 67ca276c4..020f0e9b2 100644 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -1,9 +1,31 @@ // Includes #include "global.h" +#include "ewram.h" +#include "main.h" +#include "palette.h" +#include "task.h" +#include "sprite.h" +#include "region_map.h" +#include "string_util.h" +#include "text.h" // Static type declarations +struct PokedexAreaScreenEwramStruct +{ + u8 filler_0000[4]; + u32 unk0004; + u32 unk0008; + u8 filler_000C[2]; + u16 unk000E; + u8 filler_0010[0x6d8]; + struct RegionMap unk06E8; + u8 unk0F68[16]; +}; + +#define ePokedexAreaScreen (*(struct PokedexAreaScreenEwramStruct *)gSharedMem) + // Static RAM declarations EWRAM_DATA u16 gUnknown_02039260 = 0; @@ -15,6 +37,74 @@ EWRAM_DATA u16 gUnknown_0203926A = 0; // Static ROM declarations +void CB2_UnusedPokedexAreaScreen(void); +void sub_81107DC(void); +void sub_81107F0(void); +void sub_8110814(void (*func)(void)); +void sub_8110824(void); +void sub_8111084(void); +bool8 DrawAreaGlow(void); +void sub_8111288(void); + // .rodata // .text + +void UnusedPokedexAreaScreen(u16 a0, u32 a1, u32 a2) +{ + ePokedexAreaScreen.unk0004 = a1; + ePokedexAreaScreen.unk0008 = a2; + ePokedexAreaScreen.unk000E = a0; + SetMainCallback2(CB2_UnusedPokedexAreaScreen); +} + +void CB2_UnusedPokedexAreaScreen(void) +{ + switch (gMain.state) + { + case 0: + SetVBlankCallback(NULL); + REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG1_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + ResetPaletteFade(); + ResetSpriteData(); + ResetTasks(); + FreeSpriteTileRanges(); + FreeAllSpritePalettes(); + REG_BG0HOFS = 0; + REG_BG0VOFS = -8; + REG_BG2VOFS = 0; + REG_BG2HOFS = 0; + REG_BG3HOFS = 0; + REG_BG3VOFS = 0; + break; + case 1: + InitRegionMap(&ePokedexAreaScreen.unk06E8, FALSE); + StringFill(ePokedexAreaScreen.unk0F68, CHAR_SPACE, 16); + break; + case 2: + sub_8110824(); + break; + case 3: + if (DrawAreaGlow()) + return; + break; + case 4: + CreateRegionMapPlayerIcon(1, 1); + sub_80FB2A4(0, -8); + SetVBlankCallback(sub_81107DC); + break; + case 5: + BeginNormalPaletteFade(0xFFFFFFEB, 0, 16, 0, 0); + break; + case 6: + REG_BLDCNT = BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD; + sub_8111084(); + REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON; + break; + case 7: + sub_8110814(sub_8111288); + SetMainCallback2(sub_81107F0); + return; + } + gMain.state++; +} |