summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-04-28 14:09:33 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-04-28 14:09:33 -0400
commit4f66d1b7f2630aa1b805ac8e848ebae38faaacd3 (patch)
treec487f306b352fee6cab0fabbdda34960a79f929c
parent21415be0d3bcd5edffbd83777660af319a01e51b (diff)
through sub_811A15C (two nonmatching)
-rw-r--r--asm/pokedex_cry_screen.s464
-rw-r--r--data/pokedex_cry_screen.s33
-rw-r--r--graphics/pokedex/83FB718.pngbin0 -> 135 bytes
-rw-r--r--include/main.h1
-rw-r--r--ld_script.txt3
-rw-r--r--src/main.c2
-rw-r--r--src/pokedex_cry_screen.c413
7 files changed, 416 insertions, 500 deletions
diff --git a/asm/pokedex_cry_screen.s b/asm/pokedex_cry_screen.s
index cc9ed7dc3..67b8dc5b1 100644
--- a/asm/pokedex_cry_screen.s
+++ b/asm/pokedex_cry_screen.s
@@ -5,470 +5,6 @@
.text
- thumb_func_start sub_8119E3C
-sub_8119E3C: @ 8119E3C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r2, r1, 24
- movs r0, 0
- mov r9, r0
- ldr r6, _08119E60 @ =gUnknown_03005E98
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _08119EE0
- cmp r0, 0x1
- bgt _08119E64
- cmp r0, 0
- beq _08119E6A
- b _08119F74
- .align 2, 0
-_08119E60: .4byte gUnknown_03005E98
-_08119E64:
- cmp r0, 0x2
- beq _08119F60
- b _08119F74
-_08119E6A:
- ldr r4, _08119ECC @ =gSharedMem + 0x1C000
- ldrh r0, [r5]
- movs r1, 0
- strh r0, [r4, 0x14]
- ldrb r0, [r5, 0x5]
- strb r0, [r4, 0x16]
- strb r1, [r4, 0x1A]
- strb r1, [r4, 0x1B]
- strb r1, [r4, 0x10]
- movs r0, 0x1C
- strb r0, [r4, 0x12]
- strb r1, [r4, 0x11]
- ldrb r1, [r5, 0x4]
- lsls r1, 19
- negs r1, r1
- asrs r1, 16
- adds r0, r2, 0
- movs r2, 0x1
- bl sub_811A350
- movs r0, 0
- mov r12, r6
- ldr r1, _08119ED0 @ =0x040000d4
- ldr r7, _08119ED4 @ =gUnknown_083FB718
- ldr r2, _08119ED8 @ =0xfffe4000
- adds r6, r4, r2
- ldr r5, _08119EDC @ =0x80000010
-_08119EA0:
- movs r3, 0
- adds r4, r0, 0x1
- lsls r2, r0, 5
-_08119EA6:
- str r7, [r1]
- adds r0, r2, r3
- lsls r0, 5
- adds r0, r6
- str r0, [r1, 0x4]
- str r5, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1F
- bls _08119EA6
- lsls r0, r4, 24
- lsrs r0, 24
- cmp r0, 0x6
- bls _08119EA0
- mov r1, r12
- b _08119F50
- .align 2, 0
-_08119ECC: .4byte gSharedMem + 0x1C000
-_08119ED0: .4byte 0x040000d4
-_08119ED4: .4byte gUnknown_083FB718
-_08119ED8: .4byte 0xfffe4000
-_08119EDC: .4byte 0x80000010
-_08119EE0:
- ldrb r0, [r5, 0x2]
- lsls r0, 27
- lsrs r7, r0, 16
- ldrb r1, [r5, 0x3]
- lsls r1, 12
- ldrh r0, [r5]
- lsls r0, 18
- lsrs r0, 23
- adds r1, r0
- lsls r1, 16
- lsrs r6, r1, 16
- movs r0, 0
- ldr r2, _08119F58 @ =gSharedMem + 0x1C000
- mov r8, r2
- movs r1, 0xC0
- lsls r1, 19
- mov r12, r1
-_08119F02:
- movs r3, 0
- adds r4, r0, 0x1
- lsls r5, r0, 6
-_08119F08:
- lsls r1, r3, 1
- adds r1, r5
- adds r1, r7
- add r1, r12
- adds r2, r6, 0
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- strh r2, [r1]
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1F
- bls _08119F08
- lsls r0, r4, 24
- lsrs r0, 24
- cmp r0, 0x6
- bls _08119F02
- mov r2, r8
- ldrb r0, [r2, 0x16]
- movs r4, 0
- cmp r0, 0
- beq _08119F4E
- mov r5, r8
-_08119F38:
- adds r0, r4, 0
- movs r1, 0
- bl sub_811A1C8
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r5, 0x16]
- lsls r0, 3
- cmp r4, r0
- blt _08119F38
-_08119F4E:
- ldr r1, _08119F5C @ =gUnknown_03005E98
-_08119F50:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08119F74
- .align 2, 0
-_08119F58: .4byte gSharedMem + 0x1C000
-_08119F5C: .4byte gUnknown_03005E98
-_08119F60:
- bl sub_811A324
- ldr r0, _08119F84 @ =gUnknown_083FB6F8
- ldrb r1, [r5, 0x3]
- lsls r1, 4
- movs r2, 0x20
- bl LoadPalette
- movs r0, 0x1
- mov r9, r0
-_08119F74:
- mov r0, r9
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08119F84: .4byte gUnknown_083FB6F8
- thumb_func_end sub_8119E3C
-
- thumb_func_start sub_8119F88
-sub_8119F88: @ 8119F88
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_811A324
- adds r0, r4, 0
- bl sub_811A15C
- ldr r1, _08119FC4 @ =gSharedMem + 0x1C000
- ldrb r0, [r1, 0x1B]
- cmp r0, 0
- beq _08119FA6
- subs r0, 0x1
- strb r0, [r1, 0x1B]
-_08119FA6:
- ldrb r0, [r1, 0x1A]
- cmp r0, 0
- beq _08119FC8
- subs r0, 0x1
- strb r0, [r1, 0x1A]
- lsls r0, 24
- cmp r0, 0
- bne _08119FC8
- ldrh r0, [r1, 0x18]
- bl sub_811A0A0
- bl sub_811A124
- b _0811A044
- .align 2, 0
-_08119FC4: .4byte gSharedMem + 0x1C000
-_08119FC8:
- ldr r5, _08119FD8 @ =gSharedMem + 0x1C000
- ldrb r0, [r5, 0x10]
- cmp r0, 0
- bne _08119FDC
- bl sub_811A124
- b _0811A044
- .align 2, 0
-_08119FD8: .4byte gSharedMem + 0x1C000
-_08119FDC:
- cmp r0, 0x1
- bne _08119FE6
- bl sub_811A0C0
- b _0811A006
-_08119FE6:
- cmp r0, 0x8
- bls _0811A006
- bl IsCryPlaying
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08119FFE
- bl sub_811A124
- strb r4, [r5, 0x10]
- b _0811A044
-_08119FFE:
- bl sub_811A0C0
- movs r0, 0x1
- strb r0, [r5, 0x10]
-_0811A006:
- ldr r5, _0811A04C @ =gSharedMem + 0x1C000
- ldrb r4, [r5, 0x10]
- subs r4, 0x1
- lsls r4, 25
- lsrs r4, 24
- ldrb r0, [r5, 0x16]
- lsls r0, 3
- ldrb r1, [r5, 0x11]
- adds r0, r1
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, r5
- ldrb r1, [r1]
- bl sub_811A1C8
- ldrb r0, [r5, 0x16]
- lsls r0, 3
- ldrb r1, [r5, 0x11]
- adds r0, r1
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- adds r4, 0x1
- adds r4, r5
- ldrb r1, [r4]
- bl sub_811A1C8
- ldrb r0, [r5, 0x10]
- adds r0, 0x1
- strb r0, [r5, 0x10]
-_0811A044:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A04C: .4byte gSharedMem + 0x1C000
- thumb_func_end sub_8119F88
-
- thumb_func_start sub_811A050
-sub_811A050: @ 811A050
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- adds r6, r5, 0
- ldr r0, _0811A08C @ =gMPlay_BGM
- ldr r0, [r0, 0x4]
- cmp r0, 0
- bge _0811A09A
- ldr r4, _0811A090 @ =gSharedMem + 0x1C000
- ldrb r0, [r4, 0x1A]
- cmp r0, 0
- bne _0811A09A
- ldrb r0, [r4, 0x1B]
- cmp r0, 0
- bne _0811A09A
- movs r0, 0x4
- strb r0, [r4, 0x1B]
- bl IsCryPlaying
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0811A094
- bl StopCry
- strh r5, [r4, 0x18]
- movs r0, 0x2
- strb r0, [r4, 0x1A]
- b _0811A09A
- .align 2, 0
-_0811A08C: .4byte gMPlay_BGM
-_0811A090: .4byte gSharedMem + 0x1C000
-_0811A094:
- adds r0, r6, 0
- bl sub_811A0A0
-_0811A09A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_811A050
-
- thumb_func_start sub_811A0A0
-sub_811A0A0: @ 811A0A0
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- movs r2, 0x7D
- movs r3, 0xA
- bl PlayCry2
- ldr r1, _0811A0BC @ =gSharedMem + 0x1C000
- movs r0, 0x1
- strb r0, [r1, 0x10]
- pop {r0}
- bx r0
- .align 2, 0
-_0811A0BC: .4byte gSharedMem + 0x1C000
- thumb_func_end sub_811A0A0
-
- thumb_func_start sub_811A0C0
-sub_811A0C0: @ 811A0C0
- push {r4,lr}
- ldr r3, _0811A0D0 @ =gPcmDmaCounter
- movs r0, 0
- ldrsb r0, [r3, r0]
- cmp r0, 0x1
- bgt _0811A0D8
- ldr r0, _0811A0D4 @ =gSoundInfo + 0x350
- b _0811A0F0
- .align 2, 0
-_0811A0D0: .4byte gPcmDmaCounter
-_0811A0D4: .4byte gSoundInfo + 0x350
-_0811A0D8:
- ldr r2, _0811A11C @ =gSoundInfo
- ldrb r1, [r2, 0xB]
- movs r0, 0
- ldrsb r0, [r3, r0]
- subs r0, 0x1
- subs r1, r0
- ldr r0, [r2, 0x10]
- muls r0, r1
- movs r1, 0xD4
- lsls r1, 2
- adds r2, r1
- adds r0, r2
-_0811A0F0:
- movs r1, 0xC6
- lsls r1, 3
- adds r3, r0, r1
- movs r2, 0
- ldr r4, _0811A120 @ =gSharedMem + 0x1C000
-_0811A0FA:
- adds r1, r2, r4
- lsls r0, r2, 1
- adds r0, r3
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- lsls r0, 1
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xF
- bls _0811A0FA
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A11C: .4byte gSoundInfo
-_0811A120: .4byte gSharedMem + 0x1C000
- thumb_func_end sub_811A0C0
-
- thumb_func_start sub_811A124
-sub_811A124: @ 811A124
- push {r4,lr}
- ldr r4, _0811A158 @ =gSharedMem + 0x1C000
- ldrb r0, [r4, 0x16]
- lsls r0, 3
- ldrb r1, [r4, 0x11]
- adds r0, r1
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_811A1C8
- ldrb r0, [r4, 0x16]
- lsls r0, 3
- ldrb r4, [r4, 0x11]
- adds r0, r4
- subs r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_811A1C8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A158: .4byte gSharedMem + 0x1C000
- thumb_func_end sub_811A124
-
- thumb_func_start sub_811A15C
-sub_811A15C: @ 811A15C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _0811A1B4 @ =gSharedMem + 0x1C000
- ldrb r1, [r4, 0x11]
- movs r2, 0
- bl sub_811A350
- ldrb r0, [r4, 0x11]
- adds r0, 0x2
- strb r0, [r4, 0x11]
- ldrb r0, [r4, 0x11]
- lsrs r0, 3
- ldrb r2, [r4, 0x16]
- adds r1, r0, r2
- adds r2, r1, 0x1
- adds r0, r2, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r2, r0
- lsls r0, 16
- lsrs r3, r0, 16
- movs r1, 0
- ldr r2, _0811A1B8 @ =0x040000d4
- ldr r6, _0811A1BC @ =gUnknown_083FB718
- ldr r0, _0811A1C0 @ =0xfffe4000
- adds r5, r4, r0
- ldr r4, _0811A1C4 @ =0x80000010
-_0811A194:
- str r6, [r2]
- lsls r0, r1, 5
- adds r0, r3
- lsls r0, 5
- adds r0, r5
- str r0, [r2, 0x4]
- str r4, [r2, 0x8]
- ldr r0, [r2, 0x8]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x6
- bls _0811A194
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A1B4: .4byte gSharedMem + 0x1C000
-_0811A1B8: .4byte 0x040000d4
-_0811A1BC: .4byte gUnknown_083FB718
-_0811A1C0: .4byte 0xfffe4000
-_0811A1C4: .4byte 0x80000010
- thumb_func_end sub_811A15C
-
thumb_func_start sub_811A1C8
sub_811A1C8: @ 811A1C8
push {r4-r7,lr}
diff --git a/data/pokedex_cry_screen.s b/data/pokedex_cry_screen.s
index 14ea1cfb8..6bb76ce65 100644
--- a/data/pokedex_cry_screen.s
+++ b/data/pokedex_cry_screen.s
@@ -44,38 +44,7 @@ gUnknown_083FB6F8:: @ 83FB6F8
.incbin "graphics/pokedex/83FB6F8.gbapal"
gUnknown_083FB718:: @ 83FB718
- .byte 0x11
- .byte 0x11
- .byte 0x11
- .byte 0x11
- .byte 0x22
- .byte 0x22
- .byte 0x22
- .byte 0x22
- .byte 0x11
- .byte 0x11
- .byte 0x11
- .byte 0x11
- .byte 0x22
- .byte 0x22
- .byte 0x22
- .byte 0x22
- .byte 0x11
- .byte 0x11
- .byte 0x11
- .byte 0x11
- .byte 0x22
- .byte 0x22
- .byte 0x22
- .byte 0x22
- .byte 0x11
- .byte 0x11
- .byte 0x11
- .byte 0x11
- .byte 0x22
- .byte 0x22
- .byte 0x22
- .byte 0x22
+ .incbin "graphics/pokedex/83FB718.4bpp"
gUnknown_083FB738:: @ 83FB738
.byte 0xF0, 0x0F
diff --git a/graphics/pokedex/83FB718.png b/graphics/pokedex/83FB718.png
new file mode 100644
index 000000000..ef52a4138
--- /dev/null
+++ b/graphics/pokedex/83FB718.png
Binary files differ
diff --git a/include/main.h b/include/main.h
index f348e48f8..8a7c4d67c 100644
--- a/include/main.h
+++ b/include/main.h
@@ -65,5 +65,6 @@ void DoSoftReset(void);
void ClearPokemonCrySongs(void);
extern const char BuildDateTime[];
+extern s8 gPcmDmaCounter;
#endif // GUARD_MAIN_H
diff --git a/ld_script.txt b/ld_script.txt
index d7e2a5820..872386a69 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -343,8 +343,9 @@ SECTIONS {
src/pokedex_area_screen.o(.text);
src/evolution_scene.o(.text);
src/roulette.o(.text);
- asm/pokedex_cry_screen.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/main.c b/src/main.c
index 54a443e80..d7ef91df0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -68,7 +68,7 @@ u8 gSoftResetDisabled;
IntrFunc gIntrTable[INTR_COUNT];
bool8 gLinkVSyncDisabled;
u32 IntrMain_Buffer[0x200];
-u8 gPcmDmaCounter;
+s8 gPcmDmaCounter;
EWRAM_DATA u8 gSharedMem[0x20000] = {0};
EWRAM_DATA void (**gFlashTimerIntrFunc)(void) = NULL;
diff --git a/src/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 941218fb0..b6abd436d 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -1,9 +1,19 @@
#include "global.h"
+#include "m4a.h"
+#include "main.h"
#include "pokedex_cry_screen.h"
#include "palette.h"
#include "sprite.h"
#include "ewram.h"
#include "trig.h"
+#include "sound.h"
+
+extern struct SoundInfo gSoundInfo;
+extern struct MusicPlayerInfo gMPlay_BGM;
+
+struct Unk2000000 {
+ u16 unk0000[7 * 32][16];
+};
struct Unk201C800 {
s8 unk_0;
@@ -16,17 +26,32 @@ struct PokedexCryScreen_201C000
{
u8 unk0000[0x10];
u8 unk0010;
- u8 filler_0011[0x7EF];
- struct Unk201C800 unk0800;
+ u8 unk0011;
+ u8 unk0012;
+ u16 unk0014;
+ u8 unk0016;
+ u16 species;
+ u8 unk001A;
+ u8 unk001B;
};
+#define ePokedexCryScreenGfx (*(struct Unk2000000 *)gSharedMem)
#define ePokedexCryScreen (*(struct PokedexCryScreen_201C000 *)(gSharedMem + 0x1C000))
+void sub_811A0A0(u16 species);
+void sub_811A0C0(void);
+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_811A6D8(s8);
extern u8 gUnknown_03005E98;
// data/pokedex_cry_screen.o
+extern const u16 gUnknown_083FB6F8[];
+extern const u16 gUnknown_083FB718[];
extern const u16 gUnknown_083FAE7C[];
extern const u16 gUnknown_083FAF1C[];
extern const u8 gUnknown_083FAF3C[];
@@ -40,6 +65,390 @@ extern const struct SpritePalette gCryMeterNeedleSpritePalettes[];
#define CRY_METER_MAP_WIDTH 32
#endif
+#ifdef NONMATCHING
+u8 sub_8119E3C(struct CryRelatedStruct *cry, u8 arg1)
+{
+ u8 i;
+ u8 j;
+ u16 r6;
+ u16 r7;
+ u8 r9 = FALSE;
+ u32 offset;
+
+ switch (gUnknown_03005E98)
+ {
+ case 0:
+ ePokedexCryScreen.unk0014 = cry->unk0;
+ ePokedexCryScreen.unk0016 = cry->yPos;
+ ePokedexCryScreen.unk001A = 0;
+ ePokedexCryScreen.unk001B = 0;
+ ePokedexCryScreen.unk0010 = 0;
+ ePokedexCryScreen.unk0012 = 28;
+ ePokedexCryScreen.unk0011 = 0;
+ sub_811A350(arg1, -8 * cry->xPos, 0);
+ for (i = 0; i < 7; i++)
+ {
+ for (j = 0; j < 32; j++)
+ {
+ DmaCopy16(3, gUnknown_083FB718, ePokedexCryScreenGfx.unk0000[32 * i + j], 32);
+ }
+ }
+ gUnknown_03005E98++;
+ break;
+ case 1:
+ r7 = cry->unk2 << 11;
+ r6 = (cry->paletteNo << 12) + ((unsigned)(cry->unk0 << 18) >> 23);
+ for (i = 0; i < 7; i++)
+ {
+ for (j = 0; j < 32; j++)
+ {
+ offset = j << 1;
+ offset += i << 6;
+ offset += r7;
+ *((u16 *)(VRAM + offset)) = r6++;
+ }
+ }
+ for (i = 0; i < ePokedexCryScreen.unk0016 * 8; i++)
+ {
+ sub_811A1C8(i, 0);
+ }
+ gUnknown_03005E98++;
+ break;
+ case 2:
+ sub_811A324();
+ LoadPalette(gUnknown_083FB6F8, cry->paletteNo * 16, 32);
+ r9 = TRUE;
+ break;
+ }
+ return r9;
+}
+#else
+NAKED u8 sub_8119E3C(struct CryRelatedStruct *cry, u8 arg1)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r2, r1, 24\n"
+ "\tmovs r0, 0\n"
+ "\tmov r9, r0\n"
+ "\tldr r6, _08119E60 @ =gUnknown_03005E98\n"
+ "\tldrb r0, [r6]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _08119EE0\n"
+ "\tcmp r0, 0x1\n"
+ "\tbgt _08119E64\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119E6A\n"
+ "\tb _08119F74\n"
+ "\t.align 2, 0\n"
+ "_08119E60: .4byte gUnknown_03005E98\n"
+ "_08119E64:\n"
+ "\tcmp r0, 0x2\n"
+ "\tbeq _08119F60\n"
+ "\tb _08119F74\n"
+ "_08119E6A:\n"
+ "\tldr r4, _08119ECC @ =gSharedMem + 0x1C000\n"
+ "\tldrh r0, [r5]\n"
+ "\tmovs r1, 0\n"
+ "\tstrh r0, [r4, 0x14]\n"
+ "\tldrb r0, [r5, 0x5]\n"
+ "\tstrb r0, [r4, 0x16]\n"
+ "\tstrb r1, [r4, 0x1A]\n"
+ "\tstrb r1, [r4, 0x1B]\n"
+ "\tstrb r1, [r4, 0x10]\n"
+ "\tmovs r0, 0x1C\n"
+ "\tstrb r0, [r4, 0x12]\n"
+ "\tstrb r1, [r4, 0x11]\n"
+ "\tldrb r1, [r5, 0x4]\n"
+ "\tlsls r1, 19\n"
+ "\tnegs r1, r1\n"
+ "\tasrs r1, 16\n"
+ "\tadds r0, r2, 0\n"
+ "\tmovs r2, 0x1\n"
+ "\tbl sub_811A350\n"
+ "\tmovs r0, 0\n"
+ "\tmov r12, r6\n"
+ "\tldr r1, _08119ED0 @ =0x040000d4\n"
+ "\tldr r7, _08119ED4 @ =gUnknown_083FB718\n"
+ "\tldr r2, _08119ED8 @ =0xfffe4000\n"
+ "\tadds r6, r4, r2\n"
+ "\tldr r5, _08119EDC @ =0x80000010\n"
+ "_08119EA0:\n"
+ "\tmovs r3, 0\n"
+ "\tadds r4, r0, 0x1\n"
+ "\tlsls r2, r0, 5\n"
+ "_08119EA6:\n"
+ "\tstr r7, [r1]\n"
+ "\tadds r0, r2, r3\n"
+ "\tlsls r0, 5\n"
+ "\tadds r0, r6\n"
+ "\tstr r0, [r1, 0x4]\n"
+ "\tstr r5, [r1, 0x8]\n"
+ "\tldr r0, [r1, 0x8]\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0x1F\n"
+ "\tbls _08119EA6\n"
+ "\tlsls r0, r4, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x6\n"
+ "\tbls _08119EA0\n"
+ "\tmov r1, r12\n"
+ "\tb _08119F50\n"
+ "\t.align 2, 0\n"
+ "_08119ECC: .4byte gSharedMem + 0x1C000\n"
+ "_08119ED0: .4byte 0x040000d4\n"
+ "_08119ED4: .4byte gUnknown_083FB718\n"
+ "_08119ED8: .4byte 0xfffe4000\n"
+ "_08119EDC: .4byte 0x80000010\n"
+ "_08119EE0:\n"
+ "\tldrb r0, [r5, 0x2]\n"
+ "\tlsls r0, 27\n"
+ "\tlsrs r7, r0, 16\n"
+ "\tldrb r1, [r5, 0x3]\n"
+ "\tlsls r1, 12\n"
+ "\tldrh r0, [r5]\n"
+ "\tlsls r0, 18\n"
+ "\tlsrs r0, 23\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r6, r1, 16\n"
+ "\tmovs r0, 0\n"
+ "\tldr r2, _08119F58 @ =gSharedMem + 0x1C000\n"
+ "\tmov r8, r2\n"
+ "\tmovs r1, 0xC0\n"
+ "\tlsls r1, 19\n"
+ "\tmov r12, r1\n"
+ "_08119F02:\n"
+ "\tmovs r3, 0\n"
+ "\tadds r4, r0, 0x1\n"
+ "\tlsls r5, r0, 6\n"
+ "_08119F08:\n"
+ "\tlsls r1, r3, 1\n"
+ "\tadds r1, r5\n"
+ "\tadds r1, r7\n"
+ "\tadd r1, r12\n"
+ "\tadds r2, r6, 0\n"
+ "\tadds r0, r2, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tstrh r2, [r1]\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tcmp r3, 0x1F\n"
+ "\tbls _08119F08\n"
+ "\tlsls r0, r4, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x6\n"
+ "\tbls _08119F02\n"
+ "\tmov r2, r8\n"
+ "\tldrb r0, [r2, 0x16]\n"
+ "\tmovs r4, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119F4E\n"
+ "\tmov r5, r8\n"
+ "_08119F38:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl sub_811A1C8\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tldrb r0, [r5, 0x16]\n"
+ "\tlsls r0, 3\n"
+ "\tcmp r4, r0\n"
+ "\tblt _08119F38\n"
+ "_08119F4E:\n"
+ "\tldr r1, _08119F5C @ =gUnknown_03005E98\n"
+ "_08119F50:\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tb _08119F74\n"
+ "\t.align 2, 0\n"
+ "_08119F58: .4byte gSharedMem + 0x1C000\n"
+ "_08119F5C: .4byte gUnknown_03005E98\n"
+ "_08119F60:\n"
+ "\tbl sub_811A324\n"
+ "\tldr r0, _08119F84 @ =gUnknown_083FB6F8\n"
+ "\tldrb r1, [r5, 0x3]\n"
+ "\tlsls r1, 4\n"
+ "\tmovs r2, 0x20\n"
+ "\tbl LoadPalette\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r9, r0\n"
+ "_08119F74:\n"
+ "\tmov r0, r9\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.align 2, 0\n"
+ "_08119F84: .4byte gUnknown_083FB6F8");
+}
+#endif // NONMATCHING
+
+void sub_8119F88(u8 a0)
+{
+ u8 r4;
+ sub_811A324();
+ sub_811A15C(a0);
+ if (ePokedexCryScreen.unk001B)
+ ePokedexCryScreen.unk001B--;
+ if (ePokedexCryScreen.unk001A && !--ePokedexCryScreen.unk001A)
+ {
+ sub_811A0A0(ePokedexCryScreen.species);
+ sub_811A124();
+ return;
+ }
+ if (ePokedexCryScreen.unk0010 == 0)
+ {
+ sub_811A124();
+ return;
+ }
+ if (ePokedexCryScreen.unk0010 == 1)
+ {
+ sub_811A0C0();
+ }
+ else if (ePokedexCryScreen.unk0010 > 8)
+ {
+ if (!IsCryPlaying())
+ {
+ sub_811A124();
+ ePokedexCryScreen.unk0010 = 0;
+ return;
+ }
+ sub_811A0C0();
+ ePokedexCryScreen.unk0010 = 1;
+ }
+ r4 = 2 * (ePokedexCryScreen.unk0010 - 1);
+ sub_811A1C8(ePokedexCryScreen.unk0016 * 8 + ePokedexCryScreen.unk0011 - 2, ePokedexCryScreen.unk0000[r4]);
+ sub_811A1C8(ePokedexCryScreen.unk0016 * 8 + ePokedexCryScreen.unk0011 - 1, ePokedexCryScreen.unk0000[r4 + 1]);
+ ePokedexCryScreen.unk0010++;
+}
+
+void sub_811A050(u16 species)
+{
+ if (gMPlay_BGM.status & MUSICPLAYER_STATUS_PAUSE && !ePokedexCryScreen.unk001A)
+ {
+ if (!ePokedexCryScreen.unk001B)
+ {
+ ePokedexCryScreen.unk001B = 4;
+ if (IsCryPlaying() == TRUE)
+ {
+ StopCry();
+ ePokedexCryScreen.species = species;
+ ePokedexCryScreen.unk001A = 2;
+ }
+ else
+ sub_811A0A0(species);
+ }
+ }
+}
+
+void sub_811A0A0(u16 species)
+{
+ PlayCry2(species, 0, 0x7d, 10);
+ ePokedexCryScreen.unk0010 = 1;
+}
+
+#ifdef NONMATCHING
+void sub_811A0C0(void)
+{
+ const s8 * src;
+ u8 i;
+ if (gPcmDmaCounter < 2)
+ src = gSoundInfo.pcmBuffer;
+ else
+ src = gSoundInfo.pcmBuffer + (gSoundInfo.pcmDmaPeriod + 1 - gPcmDmaCounter) * gSoundInfo.pcmSamplesPerVBlank;
+ src += PCM_DMA_BUF_SIZE;
+ for (i = 0; i < 16; i++)
+ ePokedexCryScreen.unk0000[i] = src[i * 2] * 2;
+}
+#else
+NAKED void sub_811A0C0(void)
+{
+ asm_unified("\tpush {r4,lr}\n"
+ "\tldr r3, _0811A0D0 @ =gPcmDmaCounter\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbgt _0811A0D8\n"
+ "\tldr r0, _0811A0D4 @ =gSoundInfo + 0x350\n"
+ "\tb _0811A0F0\n"
+ "\t.align 2, 0\n"
+ "_0811A0D0: .4byte gPcmDmaCounter\n"
+ "_0811A0D4: .4byte gSoundInfo + 0x350\n"
+ "_0811A0D8:\n"
+ "\tldr r2, _0811A11C @ =gSoundInfo\n"
+ "\tldrb r1, [r2, 0xB]\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tsubs r0, 0x1\n"
+ "\tsubs r1, r0\n"
+ "\tldr r0, [r2, 0x10]\n"
+ "\tmuls r0, r1\n"
+ "\tmovs r1, 0xD4\n"
+ "\tlsls r1, 2\n"
+ "\tadds r2, r1\n"
+ "\tadds r0, r2\n"
+ "_0811A0F0:\n"
+ "\tmovs r1, 0xC6\n"
+ "\tlsls r1, 3\n"
+ "\tadds r3, r0, r1\n"
+ "\tmovs r2, 0\n"
+ "\tldr r4, _0811A120 @ =gSharedMem + 0x1C000\n"
+ "_0811A0FA:\n"
+ "\tadds r1, r2, r4\n"
+ "\tlsls r0, r2, 1\n"
+ "\tadds r0, r3\n"
+ "\tldrb r0, [r0]\n"
+ "\tlsls r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tlsls r0, 1\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r0, r2, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r2, r0, 24\n"
+ "\tcmp r2, 0xF\n"
+ "\tbls _0811A0FA\n"
+ "\tpop {r4}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0811A11C: .4byte gSoundInfo\n"
+ "_0811A120: .4byte gSharedMem + 0x1C000");
+}
+#endif // NONMATCHING
+
+void sub_811A124(void)
+{
+ sub_811A1C8(ePokedexCryScreen.unk0016 * 8 + ePokedexCryScreen.unk0011 - 2, 0);
+ sub_811A1C8(ePokedexCryScreen.unk0016 * 8 + ePokedexCryScreen.unk0011 - 1, 0);
+}
+
+void sub_811A15C(u8 a0)
+{
+ u8 i;
+ u16 r3;
+ sub_811A350(a0, ePokedexCryScreen.unk0011, 0);
+ ePokedexCryScreen.unk0011 += 2;
+ r3 = (ePokedexCryScreen.unk0011 / 8 + ePokedexCryScreen.unk0016 + 1) % 32;
+ for (i = 0; i < 7; i++)
+ {
+ DmaCopy16(3, gUnknown_083FB718, ePokedexCryScreenGfx.unk0000[32 * i + r3], 32);
+ }
+}
+
+asm(".section .text.ShowPokedexCryScreen");
+
u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
int returnVal = FALSE;