pokedex_screen through sub_810250C

This commit is contained in:
PikalaxALT
2019-12-06 16:57:33 -05:00
parent 22a73c654b
commit 7871a505b3
4 changed files with 122 additions and 284 deletions
-284
View File
@@ -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}
+1
View File
@@ -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
+1
View File
@@ -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);
+120
View File
@@ -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);
}