summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex_area_screen.s170
-rw-r--r--data/pokedex_area_screen.s1
-rw-r--r--include/region_map.h2
-rw-r--r--ld_script.txt1
-rw-r--r--src/pokedex_area_screen.c90
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++;
+}