diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-28 21:18:01 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-04-28 21:18:01 -0400 |
commit | e79f35324a846fa99be5f2a6e368c6fddf34d8a1 (patch) | |
tree | e50d3be8f28ddee1d3d161cb1a223807f15cfd74 | |
parent | da9b567dfd4ec56b50710ee6617e06e629c80bb3 (diff) |
Finish decompilation of pokedex_cry_screen.o(.text)
-rw-r--r-- | asm/pokedex_cry_screen.s | 100 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/pokedex_cry_screen.c | 38 |
3 files changed, 36 insertions, 104 deletions
diff --git a/asm/pokedex_cry_screen.s b/asm/pokedex_cry_screen.s index ffb75502e..c3461fa64 100644 --- a/asm/pokedex_cry_screen.s +++ b/asm/pokedex_cry_screen.s @@ -5,104 +5,4 @@ .text - thumb_func_start sub_811A324 -sub_811A324: @ 811A324 - ldr r2, _0811A344 @ =0x040000d4 - ldr r0, _0811A348 @ =gSharedMem - str r0, [r2] - movs r1, 0xE0 - lsls r1, 9 - adds r0, r1 - ldrh r0, [r0, 0x14] - movs r1, 0xC0 - lsls r1, 19 - adds r0, r1 - str r0, [r2, 0x4] - ldr r0, _0811A34C @ =0x80000e00 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - bx lr - .align 2, 0 -_0811A344: .4byte 0x040000d4 -_0811A348: .4byte gSharedMem -_0811A34C: .4byte 0x80000e00 - thumb_func_end sub_811A324 - - thumb_func_start sub_811A350 -sub_811A350: @ 811A350 - push {lr} - lsls r0, 24 - lsrs r0, 24 - adds r3, r0, 0 - lsls r1, 16 - lsrs r1, 16 - lsls r2, 24 - lsrs r2, 24 - cmp r0, 0x1 - beq _0811A38C - cmp r0, 0x1 - bgt _0811A36E - cmp r0, 0 - beq _0811A378 - b _0811A3C4 -_0811A36E: - cmp r3, 0x2 - beq _0811A3A0 - cmp r3, 0x3 - beq _0811A3B4 - b _0811A3C4 -_0811A378: - cmp r2, 0 - beq _0811A384 - ldr r0, _0811A380 @ =REG_BG0VOFS - b _0811A3C2 - .align 2, 0 -_0811A380: .4byte REG_BG0VOFS -_0811A384: - ldr r0, _0811A388 @ =REG_BG0HOFS - b _0811A3C2 - .align 2, 0 -_0811A388: .4byte REG_BG0HOFS -_0811A38C: - cmp r2, 0 - beq _0811A398 - ldr r0, _0811A394 @ =REG_BG1VOFS - b _0811A3C2 - .align 2, 0 -_0811A394: .4byte REG_BG1VOFS -_0811A398: - ldr r0, _0811A39C @ =REG_BG1HOFS - b _0811A3C2 - .align 2, 0 -_0811A39C: .4byte REG_BG1HOFS -_0811A3A0: - cmp r2, 0 - beq _0811A3AC - ldr r0, _0811A3A8 @ =REG_BG2VOFS - b _0811A3C2 - .align 2, 0 -_0811A3A8: .4byte REG_BG2VOFS -_0811A3AC: - ldr r0, _0811A3B0 @ =REG_BG2HOFS - b _0811A3C2 - .align 2, 0 -_0811A3B0: .4byte REG_BG2HOFS -_0811A3B4: - cmp r2, 0 - beq _0811A3C0 - ldr r0, _0811A3BC @ =REG_BG3VOFS - b _0811A3C2 - .align 2, 0 -_0811A3BC: .4byte REG_BG3VOFS -_0811A3C0: - ldr r0, _0811A3C8 @ =REG_BG3HOFS -_0811A3C2: - strh r1, [r0] -_0811A3C4: - pop {r0} - bx r0 - .align 2, 0 -_0811A3C8: .4byte REG_BG3HOFS - thumb_func_end sub_811A350 - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 872386a69..ebca15811 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -344,8 +344,6 @@ SECTIONS { src/evolution_scene.o(.text); src/roulette.o(.text); src/pokedex_cry_screen.o(.text); - asm/pokedex_cry_screen.o(.text); - src/pokedex_cry_screen.o(.text.ShowPokedexCryScreen); src/coins.o(.text); src/landmark.o(.text); src/fldeff_strength.o(.text); diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c index ef5a5c2fc..4c21a9743 100644 --- a/src/pokedex_cry_screen.c +++ b/src/pokedex_cry_screen.c @@ -44,7 +44,7 @@ void sub_811A124(void); void sub_811A15C(u8); void sub_811A1C8(u8, u8); void sub_811A324(void); -void sub_811A350(u8, u8, u8); +void sub_811A350(u8, u16, u8); void sub_811A6D8(s8); extern u8 gUnknown_03005E98; @@ -653,7 +653,41 @@ NAKED void sub_811A1C8(u8 a0, u8 a1) } #endif // NONMATCHING -asm(".section .text.ShowPokedexCryScreen"); +void sub_811A324(void) +{ + DmaCopy16(3, ePokedexCryScreenGfx.unk0000, VRAM + ePokedexCryScreen.unk0014, 0x1c00); +} + +void sub_811A350(u8 a0, u16 a1, u8 a2) +{ + switch (a0) + { + case 0: + if (a2) + REG_BG0VOFS = a1; + else + REG_BG0HOFS = a1; + break; + case 1: + if (a2) + REG_BG1VOFS = a1; + else + REG_BG1HOFS = a1; + break; + case 2: + if (a2) + REG_BG2VOFS = a1; + else + REG_BG2HOFS = a1; + break; + case 3: + if (a2) + REG_BG3VOFS = a1; + else + REG_BG3HOFS = a1; + break; + } +} u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) { int returnVal = FALSE; |