summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-04-28 21:18:01 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-04-28 21:18:01 -0400
commite79f35324a846fa99be5f2a6e368c6fddf34d8a1 (patch)
treee50d3be8f28ddee1d3d161cb1a223807f15cfd74
parentda9b567dfd4ec56b50710ee6617e06e629c80bb3 (diff)
Finish decompilation of pokedex_cry_screen.o(.text)
-rw-r--r--asm/pokedex_cry_screen.s100
-rw-r--r--ld_script.txt2
-rw-r--r--src/pokedex_cry_screen.c38
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;