summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2019-12-06 16:57:33 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2019-12-06 16:57:33 -0500
commit7871a505b39e5452f0a39f96ce2deea810099906 (patch)
tree7d4786cae7b6fdd01cda645fdcd6ddd7b17d2e93
parent22a73c654b33878d8861109a3898bddc0d30c6b3 (diff)
pokedex_screen through sub_810250C
-rw-r--r--asm/pokedex_screen.s284
-rw-r--r--include/sound.h1
-rw-r--r--ld_script.txt1
-rw-r--r--src/pokedex_screen.c120
4 files changed, 122 insertions, 284 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 9c57cff88..ad2b96cdf 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -5,290 +5,6 @@
.text
- thumb_func_start sub_81024C0
-sub_81024C0: @ 81024C0
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81024C0
-
- thumb_func_start sub_81024D4
-sub_81024D4: @ 81024D4
- push {lr}
- ldr r0, _08102500 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081024EC
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- beq _08102504
-_081024EC:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- b _08102508
- .align 2, 0
-_08102500: .4byte gPaletteFade
-_08102504:
- bl UpdatePaletteFade
-_08102508:
- pop {r0}
- bx r0
- thumb_func_end sub_81024D4
-
- thumb_func_start sub_810250C
-sub_810250C: @ 810250C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- bl IsNationalPokedexEnabled
- lsls r0, 24
- lsrs r6, r0, 24
- bl m4aSoundVSyncOff
- movs r0, 0
- bl SetVBlankCallback
- bl ResetPaletteFade
- bl ResetSpriteData
- bl ResetTasks
- bl ScanlineEffect_Stop
- movs r0, 0x1
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08102598 @ =gUnknown_8451EBC
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0x2
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- adds r0, r4, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0
- bl SetBgTilemapBuffer
- cmp r6, 0
- beq _081025A0
- ldr r1, _0810259C @ =gUnknown_84403AC
- movs r0, 0
- str r0, [sp]
- movs r0, 0x3
- adds r2, r4, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- b _081025AE
- .align 2, 0
-_08102598: .4byte gUnknown_8451EBC
-_0810259C: .4byte gUnknown_84403AC
-_081025A0:
- ldr r1, _081026A4 @ =gUnknown_8440274
- str r6, [sp]
- movs r0, 0x3
- adds r2, r4, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
-_081025AE:
- ldr r0, _081026A8 @ =gUnknown_8451ECC
- bl InitWindows
- bl DeactivateAllTextPrinters
- bl m4aSoundVSyncOn
- ldr r0, _081026AC @ =sub_81024C0
- bl SetVBlankCallback
- movs r0, 0x1
- bl EnableInterrupts
- ldr r0, _081026B0 @ =sub_810287C
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _081026B4 @ =gUnknown_203ACF0
- movs r0, 0x70
- bl Alloc
- str r0, [r5]
- ldr r1, _081026B8 @ =gUnknown_8451EE4
- movs r2, 0x70
- bl memcpy
- ldr r0, [r5]
- strb r4, [r0]
- movs r0, 0xC1
- lsls r0, 4
- bl Alloc
- ldr r1, [r5]
- str r0, [r1, 0x44]
- movs r0, 0
- movs r1, 0x1
- bl sub_8104BBC
- ldr r1, [r5]
- adds r1, 0x6A
- strh r0, [r1]
- movs r0, 0x1
- movs r1, 0x1
- bl sub_8104BBC
- ldr r1, [r5]
- adds r1, 0x6C
- strh r0, [r1]
- movs r0, 0
- movs r1, 0
- bl sub_8104BBC
- ldr r1, [r5]
- adds r1, 0x66
- strh r0, [r1]
- movs r0, 0x1
- movs r1, 0
- bl sub_8104BBC
- ldr r1, [r5]
- adds r1, 0x68
- strh r0, [r1]
- movs r0, 0x80
- bl sub_8072474
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- ldr r2, _081026BC @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- cmp r6, 0
- beq _081026C4
- ldr r0, _081026C0 @ =gUnknown_84406E0
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0
- bl LoadPalette
- b _081026D0
- .align 2, 0
-_081026A4: .4byte gUnknown_8440274
-_081026A8: .4byte gUnknown_8451ECC
-_081026AC: .4byte sub_81024C0
-_081026B0: .4byte sub_810287C
-_081026B4: .4byte gUnknown_203ACF0
-_081026B8: .4byte gUnknown_8451EE4
-_081026BC: .4byte gPaletteFade
-_081026C0: .4byte gUnknown_84406E0
-_081026C4:
- ldr r0, _08102758 @ =gUnknown_84404C8
- movs r2, 0x80
- lsls r2, 2
- movs r1, 0
- bl LoadPalette
-_081026D0:
- movs r4, 0x20
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x3
- movs r1, 0x1
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r5, 0x11
- str r5, [sp, 0x8]
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- movs r0, 0x2
- mov r8, r0
- str r0, [sp, 0x4]
- movs r6, 0xF
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl FillBgTilemapBufferRect
- str r4, [sp]
- mov r0, r8
- str r0, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x12
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08102758: .4byte gUnknown_84404C8
- thumb_func_end sub_810250C
-
thumb_func_start CB2_OpenPokedexFromStartMenu
CB2_OpenPokedexFromStartMenu: @ 810275C
push {lr}
diff --git a/include/sound.h b/include/sound.h
index e5736fad8..73ca1c654 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -46,5 +46,6 @@ void SE12PanpotControl(s8 pan);
bool8 IsSEPlaying(void);
bool8 IsBGMPlaying(void);
bool8 IsSpecialSEPlaying(void);
+void sub_8072474(u16 volume);
#endif // GUARD_SOUND_H
diff --git a/ld_script.txt b/ld_script.txt
index 0e7cbca77..e46625ad3 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -227,6 +227,7 @@ SECTIONS {
src/map_preview_screen.o(.text);
asm/link_rfu_2.o(.text);
asm/link_rfu.o(.text);
+ src/pokedex_screen.o(.text);
asm/pokedex_screen.o(.text);
src/list_menu.o(.text);
asm/item_menu.o(.text);
diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c
new file mode 100644
index 000000000..1731f1cec
--- /dev/null
+++ b/src/pokedex_screen.c
@@ -0,0 +1,120 @@
+#include "global.h"
+#include "bg.h"
+#include "malloc.h"
+#include "palette.h"
+#include "graphics.h"
+#include "dma3.h"
+#include "gpu_regs.h"
+#include "m4a.h"
+#include "scanline_effect.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+#include "new_menu_helpers.h"
+#include "sound.h"
+#include "event_data.h"
+
+struct PokedexScreenData
+{
+ u8 field_00;
+ u8 filler_01[0x43];
+ void * field_44;
+ u8 filler_48[0x1E];
+ u16 field_66;
+ u16 field_68;
+ u16 field_6A;
+ u16 field_6C;
+};
+
+EWRAM_DATA struct PokedexScreenData * gUnknown_203ACF0 = NULL;
+
+void sub_810287C(u8 taskId);
+u16 sub_8104BBC(u8 a0, u8 a1);
+
+extern const u32 gUnknown_8440274[];
+extern const u32 gUnknown_84403AC[];
+extern const u16 gUnknown_84404C8[];
+extern const u16 gUnknown_84406E0[];
+extern const struct BgTemplate gUnknown_8451EBC[4];
+extern const struct WindowTemplate gUnknown_8451ECC[];
+extern const struct PokedexScreenData gUnknown_8451EE4;
+
+void sub_81024C0(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_81024D4(void)
+{
+ if (!gPaletteFade.active || IsDma3ManagerBusyWithBgCopy())
+ {
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ }
+ else
+ {
+ UpdatePaletteFade();
+ }
+}
+
+void sub_810250C(void)
+{
+ bool8 natDex;
+ u8 taskId;
+
+ natDex = IsNationalPokedexEnabled();
+ m4aSoundVSyncOff();
+ SetVBlankCallback(NULL);
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ ScanlineEffect_Stop();
+ ResetBgsAndClearDma3BusyFlags(TRUE);
+ InitBgsFromTemplates(0, gUnknown_8451EBC, NELEMS(gUnknown_8451EBC));
+ SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(2, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
+ if (natDex)
+ DecompressAndLoadBgGfxUsingHeap(3, gUnknown_84403AC, BG_SCREEN_SIZE, 0, 0);
+ else
+ DecompressAndLoadBgGfxUsingHeap(3, gUnknown_8440274, BG_SCREEN_SIZE, 0, 0);
+ InitWindows(gUnknown_8451ECC);
+ DeactivateAllTextPrinters();
+ m4aSoundVSyncOn();
+ SetVBlankCallback(sub_81024C0);
+ EnableInterrupts(INTR_FLAG_VBLANK);
+ taskId = CreateTask(sub_810287C, 0);
+ gUnknown_203ACF0 = Alloc(sizeof(*gUnknown_203ACF0));
+ *gUnknown_203ACF0 = gUnknown_8451EE4;
+ gUnknown_203ACF0->field_00 = taskId;
+ gUnknown_203ACF0->field_44 = Alloc(0xC10);
+ gUnknown_203ACF0->field_6A = sub_8104BBC(0, 1);
+ gUnknown_203ACF0->field_6C = sub_8104BBC(1, 1);
+ gUnknown_203ACF0->field_66 = sub_8104BBC(0, 0);
+ gUnknown_203ACF0->field_68 = sub_8104BBC(1, 0);
+ sub_8072474(0x80);
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ if (natDex)
+ LoadPalette(gUnknown_84406E0, 0, 0x200);
+ else
+ LoadPalette(gUnknown_84404C8, 0, 0x200);
+ FillBgTilemapBufferRect(3, 0x001, 0, 0, 32, 32, 0);
+ FillBgTilemapBufferRect(2, 0x000, 0, 0, 32, 32, 0x11);
+ FillBgTilemapBufferRect(1, 0x000, 0, 0, 32, 32, 0x11);
+ FillBgTilemapBufferRect(0, 0x0003, 0, 0, 32, 2, 0xF);
+ FillBgTilemapBufferRect(0, 0x0000, 0, 2, 32, 16, 0x11);
+ FillBgTilemapBufferRect(0, 0x003, 0, 18, 32, 2, 0xF);
+}