summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/pokedex_cry_screen.s1016
-rw-r--r--data/pokedex_cry_screen.s116
-rw-r--r--graphics/pokedex/83FB718.pngbin0 -> 135 bytes
-rw-r--r--include/ewram.h1
-rw-r--r--include/main.h1
-rw-r--r--ld_script.txt5
-rw-r--r--src/main.c2
-rw-r--r--src/pokedex_cry_screen.c896
8 files changed, 890 insertions, 1147 deletions
diff --git a/asm/pokedex_cry_screen.s b/asm/pokedex_cry_screen.s
deleted file mode 100644
index 00f8cfe14..000000000
--- a/asm/pokedex_cry_screen.s
+++ /dev/null
@@ -1,1016 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .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}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r5, r0, 24
- lsrs r4, r5, 24
- lsls r1, 24
- movs r0, 0xFE
- lsls r0, 23
- adds r1, r0
- lsrs r1, 16
- adds r0, r1, 0
- bl __floatsidf
- ldr r3, _0811A280 @ =0x00000000
- ldr r2, _0811A27C @ =0x40920000
- bl __divdf3
- bl __fixunsdfsi
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x37
- bls _0811A1FE
- movs r6, 0x37
-_0811A1FE:
- str r6, [sp]
- movs r7, 0x1
- ands r7, r4
- ldr r0, _0811A284 @ =gSharedMem + 0x1C000
- mov r10, r0
- lsrs r5, 27
- mov r8, r5
- ldr r0, _0811A288 @ =gUnknown_083FB738
- mov r1, r10
- ldrb r1, [r1, 0x12]
- cmp r6, r1
- bls _0811A298
- adds r0, r7, r0
- ldrb r0, [r0]
- mov r9, r0
- movs r2, 0x7
- ands r2, r4
-_0811A220:
- lsls r1, r6, 1
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 4
- adds r1, r0
- ldr r3, _0811A28C @ =gUnknown_083FB274
- adds r1, r3
- mov r3, r8
- lsls r0, r3, 5
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0811A290 @ =gSharedMem
- adds r5, r0, r1
- ldrb r4, [r5]
- mov r3, r9
- ands r4, r3
- strb r4, [r5]
- adds r0, r6, 0
- movs r1, 0x3
- str r2, [sp, 0x8]
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- movs r1, 0xF
- ands r0, r1
- lsls r1, r7, 4
- adds r0, r1
- ldr r1, _0811A294 @ =gUnknown_083FB73A
- adds r0, r1
- ldrb r0, [r0]
- orrs r4, r0
- strb r4, [r5]
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, [sp, 0x8]
- ldr r3, _0811A284 @ =gSharedMem + 0x1C000
- ldrb r3, [r3, 0x12]
- cmp r6, r3
- bhi _0811A220
- b _0811A2FA
- .align 2, 0
-_0811A27C: .4byte 0x40920000
-_0811A280: .4byte 0x00000000
-_0811A284: .4byte gSharedMem + 0x1C000
-_0811A288: .4byte gUnknown_083FB738
-_0811A28C: .4byte gUnknown_083FB274
-_0811A290: .4byte gSharedMem
-_0811A294: .4byte gUnknown_083FB73A
-_0811A298:
- lsls r1, r7, 4
- str r1, [sp, 0x4]
- adds r0, r7, r0
- ldrb r0, [r0]
- mov r9, r0
- movs r7, 0x7
- ands r7, r4
-_0811A2A6:
- lsls r1, r6, 1
- lsls r0, r7, 3
- adds r0, r7
- lsls r0, 4
- adds r1, r0
- ldr r2, _0811A314 @ =gUnknown_083FB274
- adds r1, r2
- mov r3, r8
- lsls r0, r3, 5
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0811A318 @ =gSharedMem
- adds r5, r0, r1
- ldrb r4, [r5]
- mov r2, r9
- ands r4, r2
- strb r4, [r5]
- adds r0, r6, 0
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- movs r1, 0xF
- ands r0, r1
- ldr r3, [sp, 0x4]
- adds r0, r3
- ldr r1, _0811A31C @ =gUnknown_083FB73A
- adds r0, r1
- ldrb r0, [r0]
- orrs r4, r0
- strb r4, [r5]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _0811A320 @ =gSharedMem + 0x1C000
- ldrb r2, [r2, 0x12]
- cmp r6, r2
- bcc _0811A2A6
-_0811A2FA:
- mov r3, sp
- ldrb r0, [r3]
- mov r3, r10
- strb r0, [r3, 0x12]
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A314: .4byte gUnknown_083FB274
-_0811A318: .4byte gSharedMem
-_0811A31C: .4byte gUnknown_083FB73A
-_0811A320: .4byte gSharedMem + 0x1C000
- thumb_func_end sub_811A1C8
-
- 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
-
-.section .text_811A4F8
-
- thumb_func_start DestroyCryMeterNeedleSprite
-DestroyCryMeterNeedleSprite: @ 811A4F8
- push {r4,r5,lr}
- ldr r5, _0811A52C @ =gSprites
- ldr r4, _0811A530 @ =gSharedMem + 0x1C800
- ldrh r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- bl GetSpritePaletteTagByPaletteNum
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- ldrh r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A52C: .4byte gSprites
-_0811A530: .4byte gSharedMem + 0x1C800
- thumb_func_end DestroyCryMeterNeedleSprite
-
- thumb_func_start sub_811A534
-sub_811A534: @ 811A534
- push {r4-r7,lr}
- sub sp, 0x14
- adds r7, r0, 0
- ldr r3, _0811A578 @ =gSprites
- ldr r5, _0811A57C @ =gSharedMem + 0x1C800
- ldrh r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r2
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldrh r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x6]
- ldr r0, _0811A580 @ =0xfffff800
- adds r1, r5, r0
- ldrb r0, [r1, 0x10]
- cmp r0, 0x2
- beq _0811A5AA
- cmp r0, 0x2
- bgt _0811A584
- cmp r0, 0
- beq _0811A58A
- b _0811A5F4
- .align 2, 0
-_0811A578: .4byte gSprites
-_0811A57C: .4byte gSharedMem + 0x1C800
-_0811A580: .4byte 0xfffff800
-_0811A584:
- cmp r0, 0x6
- beq _0811A5E2
- b _0811A5F4
-_0811A58A:
- movs r0, 0x20
- strb r0, [r5, 0x1]
- movs r0, 0
- ldrsb r0, [r5, r0]
- cmp r0, 0
- ble _0811A5A4
- ldrb r0, [r5, 0x2]
- add r4, sp, 0xC
- cmp r0, 0x1
- beq _0811A5F6
- subs r0, 0x1
- strb r0, [r5, 0x2]
- b _0811A5F6
-_0811A5A4:
- movs r0, 0x5
- strb r0, [r5, 0x2]
- b _0811A5F4
-_0811A5AA:
- movs r3, 0
- movs r2, 0
- add r4, sp, 0xC
- adds r5, r1, 0
-_0811A5B2:
- lsls r1, r3, 24
- asrs r1, 24
- adds r0, r2, r5
- ldrb r0, [r0]
- cmp r1, r0
- bge _0811A5C0
- adds r3, r0, 0
-_0811A5C0:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xF
- bls _0811A5B2
- lsls r0, r3, 24
- asrs r0, 24
- movs r1, 0xD0
- muls r0, r1
- cmp r0, 0
- bge _0811A5D8
- adds r0, 0xFF
-_0811A5D8:
- lsls r0, 16
- asrs r0, 24
- bl sub_811A6D8
- b _0811A5F6
-_0811A5E2:
- ldr r1, _0811A620 @ =0xfffff80a
- adds r0, r5, r1
- ldrb r1, [r0]
- movs r0, 0xD0
- muls r0, r1
- lsls r0, 16
- asrs r0, 24
- bl sub_811A6D8
-_0811A5F4:
- add r4, sp, 0xC
-_0811A5F6:
- ldr r0, _0811A624 @ =gSharedMem + 0x1C800
- ldrb r3, [r0]
- movs r2, 0
- ldrsb r2, [r0, r2]
- ldrb r6, [r0, 0x1]
- movs r1, 0x1
- ldrsb r1, [r0, r1]
- adds r5, r0, 0
- cmp r2, r1
- beq _0811A63C
- cmp r2, r1
- bge _0811A628
- ldrb r0, [r5, 0x2]
- adds r0, r3, r0
- strb r0, [r5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, r1
- ble _0811A63C
- b _0811A636
- .align 2, 0
-_0811A620: .4byte 0xfffff80a
-_0811A624: .4byte gSharedMem + 0x1C800
-_0811A628:
- ldrb r0, [r5, 0x2]
- subs r0, r3, r0
- strb r0, [r5]
- lsls r0, 24
- asrs r0, 24
- cmp r0, r1
- bge _0811A63C
-_0811A636:
- strb r6, [r5]
- movs r0, 0
- strb r0, [r5, 0x1]
-_0811A63C:
- ldr r2, _0811A6CC @ =0xffff0000
- ldr r0, [sp, 0x4]
- ands r0, r2
- movs r1, 0x80
- lsls r1, 1
- orrs r0, r1
- ldr r1, _0811A6D0 @ =0x0000ffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 17
- orrs r0, r1
- str r0, [sp, 0x4]
- movs r1, 0
- ldrsb r1, [r5, r1]
- lsls r1, 24
- lsrs r1, 16
- ldr r0, [sp, 0x8]
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x8]
- add r0, sp, 0x4
- adds r1, r4, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ObjAffineSet
- add r0, sp, 0xC
- ldrh r1, [r0]
- ldrh r2, [r4, 0x2]
- ldrh r3, [r4, 0x4]
- ldrh r0, [r4, 0x6]
- str r0, [sp]
- movs r0, 0
- bl SetOamMatrix
- ldr r2, _0811A6D4 @ =gSineTable
- movs r0, 0
- ldrsb r0, [r5, r0]
- adds r0, 0x7F
- movs r1, 0xFF
- ands r0, r1
- lsls r1, r0, 1
- adds r1, r2
- adds r0, 0x40
- lsls r0, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0
- ldrsh r1, [r1, r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- cmp r0, 0
- bge _0811A6AA
- adds r0, 0xFF
-_0811A6AA:
- asrs r0, 8
- strh r0, [r7, 0x24]
- lsls r1, r2, 16
- asrs r1, 16
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- cmp r0, 0
- bge _0811A6BE
- adds r0, 0xFF
-_0811A6BE:
- asrs r0, 8
- strh r0, [r7, 0x26]
- add sp, 0x14
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811A6CC: .4byte 0xffff0000
-_0811A6D0: .4byte 0x0000ffff
-_0811A6D4: .4byte gSineTable
- thumb_func_end sub_811A534
-
- thumb_func_start sub_811A6D8
-sub_811A6D8: @ 811A6D8
- push {lr}
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x20
- subs r2, r1, r0
- movs r0, 0xFF
- ands r2, r0
- adds r0, r2, 0
- subs r0, 0x21
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xBE
- bhi _0811A6F4
- movs r2, 0xE0
-_0811A6F4:
- ldr r1, _0811A700 @ =gSharedMem + 0x1C800
- strb r2, [r1, 0x1]
- movs r0, 0x5
- strb r0, [r1, 0x2]
- pop {r0}
- bx r0
- .align 2, 0
-_0811A700: .4byte gSharedMem + 0x1C800
- thumb_func_end sub_811A6D8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/pokedex_cry_screen.s b/data/pokedex_cry_screen.s
deleted file mode 100644
index 14ea1cfb8..000000000
--- a/data/pokedex_cry_screen.s
+++ /dev/null
@@ -1,116 +0,0 @@
- .include "include/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-CryMeterNeedlePalette: @ 83FA65C
- .incbin "graphics/pokedex/cry_meter_needle.gbapal"
-
- .align 2
-CryMeterNeedleTiles: @ 83FA67C
- .incbin "graphics/pokedex/cry_meter_needle.4bpp"
-
-.ifdef ENGLISH
- .align 1
-gUnknown_083FAE7C:: @ 83FAE7C
- .incbin "graphics/pokedex/cry_meter_map.bin"
-
- .align 1
-gUnknown_083FAF1C:: @ 83FAF1C
- .incbin "graphics/pokedex/cry_meter.gbapal"
-
- .align 2
-gUnknown_083FAF3C:: @ 83FAF3C
- .incbin "graphics/pokedex/cry_meter.4bpp.lz"
-.endif
-
- .align 1
-gUnknown_083FB274:: @ 83FB274
- .2byte 0x0,0x4,0x8,0xC,0x10,0x14,0x18,0x1C,0x400,0x404,0x408,0x40C,0x410,0x414,0x418,0x41C,0x800,0x804,0x808,0x80C,0x810,0x814,0x818,0x81C,0xC00,0xC04,0xC08,0xC0C,0xC10,0xC14,0xC18,0xC1C,0x1000,0x1004,0x1008,0x100C,0x1010,0x1014,0x1018,0x101C,0x1400,0x1404,0x1408,0x140C,0x1410,0x1414,0x1418,0x141C,0x1800,0x1804,0x1808,0x180C,0x1810,0x1814,0x1818,0x181C,0x1C00,0x1C04,0x1C08,0x1C0C,0x1C10,0x1C14,0x1C18,0x1C1C,0x2000,0x2004,0x2008,0x200C,0x2010,0x2014,0x2018,0x201C
- .2byte 0x0,0x4,0x8,0xC,0x10,0x14,0x18,0x1C,0x400,0x404,0x408,0x40C,0x410,0x414,0x418,0x41C,0x800,0x804,0x808,0x80C,0x810,0x814,0x818,0x81C,0xC00,0xC04,0xC08,0xC0C,0xC10,0xC14,0xC18,0xC1C,0x1000,0x1004,0x1008,0x100C,0x1010,0x1014,0x1018,0x101C,0x1400,0x1404,0x1408,0x140C,0x1410,0x1414,0x1418,0x141C,0x1800,0x1804,0x1808,0x180C,0x1810,0x1814,0x1818,0x181C,0x1C00,0x1C04,0x1C08,0x1C0C,0x1C10,0x1C14,0x1C18,0x1C1C,0x2000,0x2004,0x2008,0x200C,0x2010,0x2014,0x2018,0x201C
- .2byte 0x1,0x5,0x9,0xD,0x11,0x15,0x19,0x1D,0x401,0x405,0x409,0x40D,0x411,0x415,0x419,0x41D,0x801,0x805,0x809,0x80D,0x811,0x815,0x819,0x81D,0xC01,0xC05,0xC09,0xC0D,0xC11,0xC15,0xC19,0xC1D,0x1001,0x1005,0x1009,0x100D,0x1011,0x1015,0x1019,0x101D,0x1401,0x1405,0x1409,0x140D,0x1411,0x1415,0x1419,0x141D,0x1801,0x1805,0x1809,0x180D,0x1811,0x1815,0x1819,0x181D,0x1C01,0x1C05,0x1C09,0x1C0D,0x1C11,0x1C15,0x1C19,0x1C1D,0x2001,0x2005,0x2009,0x200D,0x2011,0x2015,0x2019,0x201D
- .2byte 0x1,0x5,0x9,0xD,0x11,0x15,0x19,0x1D,0x401,0x405,0x409,0x40D,0x411,0x415,0x419,0x41D,0x801,0x805,0x809,0x80D,0x811,0x815,0x819,0x81D,0xC01,0xC05,0xC09,0xC0D,0xC11,0xC15,0xC19,0xC1D,0x1001,0x1005,0x1009,0x100D,0x1011,0x1015,0x1019,0x101D,0x1401,0x1405,0x1409,0x140D,0x1411,0x1415,0x1419,0x141D,0x1801,0x1805,0x1809,0x180D,0x1811,0x1815,0x1819,0x181D,0x1C01,0x1C05,0x1C09,0x1C0D,0x1C11,0x1C15,0x1C19,0x1C1D,0x2001,0x2005,0x2009,0x200D,0x2011,0x2015,0x2019,0x201D
- .2byte 0x2,0x6,0xA,0xE,0x12,0x16,0x1A,0x1E,0x402,0x406,0x40A,0x40E,0x412,0x416,0x41A,0x41E,0x802,0x806,0x80A,0x80E,0x812,0x816,0x81A,0x81E,0xC02,0xC06,0xC0A,0xC0E,0xC12,0xC16,0xC1A,0xC1E,0x1002,0x1006,0x100A,0x100E,0x1012,0x1016,0x101A,0x101E,0x1402,0x1406,0x140A,0x140E,0x1412,0x1416,0x141A,0x141E,0x1802,0x1806,0x180A,0x180E,0x1812,0x1816,0x181A,0x181E,0x1C02,0x1C06,0x1C0A,0x1C0E,0x1C12,0x1C16,0x1C1A,0x1C1E,0x2002,0x2006,0x200A,0x200E,0x2012,0x2016,0x201A,0x201E
- .2byte 0x2,0x6,0xA,0xE,0x12,0x16,0x1A,0x1E,0x402,0x406,0x40A,0x40E,0x412,0x416,0x41A,0x41E,0x802,0x806,0x80A,0x80E,0x812,0x816,0x81A,0x81E,0xC02,0xC06,0xC0A,0xC0E,0xC12,0xC16,0xC1A,0xC1E,0x1002,0x1006,0x100A,0x100E,0x1012,0x1016,0x101A,0x101E,0x1402,0x1406,0x140A,0x140E,0x1412,0x1416,0x141A,0x141E,0x1802,0x1806,0x180A,0x180E,0x1812,0x1816,0x181A,0x181E,0x1C02,0x1C06,0x1C0A,0x1C0E,0x1C12,0x1C16,0x1C1A,0x1C1E,0x2002,0x2006,0x200A,0x200E,0x2012,0x2016,0x201A,0x201E
- .2byte 0x3,0x7,0xB,0xF,0x13,0x17,0x1B,0x1F,0x403,0x407,0x40B,0x40F,0x413,0x417,0x41B,0x41F,0x803,0x807,0x80B,0x80F,0x813,0x817,0x81B,0x81F,0xC03,0xC07,0xC0B,0xC0F,0xC13,0xC17,0xC1B,0xC1F,0x1003,0x1007,0x100B,0x100F,0x1013,0x1017,0x101B,0x101F,0x1403,0x1407,0x140B,0x140F,0x1413,0x1417,0x141B,0x141F,0x1803,0x1807,0x180B,0x180F,0x1813,0x1817,0x181B,0x181F,0x1C03,0x1C07,0x1C0B,0x1C0F,0x1C13,0x1C17,0x1C1B,0x1C1F,0x2003,0x2007,0x200B,0x200F,0x2013,0x2017,0x201B,0x201F
- .2byte 0x3,0x7,0xB,0xF,0x13,0x17,0x1B,0x1F,0x403,0x407,0x40B,0x40F,0x413,0x417,0x41B,0x41F,0x803,0x807,0x80B,0x80F,0x813,0x817,0x81B,0x81F,0xC03,0xC07,0xC0B,0xC0F,0xC13,0xC17,0xC1B,0xC1F,0x1003,0x1007,0x100B,0x100F,0x1013,0x1017,0x101B,0x101F,0x1403,0x1407,0x140B,0x140F,0x1413,0x1417,0x141B,0x141F,0x1803,0x1807,0x180B,0x180F,0x1813,0x1817,0x181B,0x181F,0x1C03,0x1C07,0x1C0B,0x1C0F,0x1C13,0x1C17,0x1C1B,0x1C1F,0x2003,0x2007,0x200B,0x200F,0x2013,0x2017,0x201B,0x201F
-
- .align 2
- .4byte gSharedMem + 0x1C000
-
- .align 1
-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
-
-gUnknown_083FB738:: @ 83FB738
- .byte 0xF0, 0x0F
-
-gUnknown_083FB73A:: @ 83FB73A
- .byte 0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F
- .byte 0xF0,0xE0,0xD0,0xC0,0xB0,0xA0,0x90,0x80,0x80,0x90,0xA0,0xB0,0xC0,0xD0,0xE0,0xF0
-
- .byte 0, 0, 0, 200, 1, 2
-
- .align 2
-gSpriteAnim_83FB760:: @ 83FB760
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83FB768:: @ 83FB768
- .4byte gSpriteAnim_83FB760
-
- .align 2
-gOamData_83FB76C:: @ 83FB76C
- .2byte 0x01A0
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteTemplate_83FB774:: @ 83FB774
- spr_template 8192, 8192, gOamData_83FB76C, gSpriteAnimTable_83FB768, NULL, gDummySpriteAffineAnimTable, sub_811A534
-
- .align 2
-gCryMeterNeedleSpriteSheets:: @ 83FB78C
- obj_tiles CryMeterNeedleTiles, 0x800, 8192
- null_obj_tiles
-
- .align 2
-gCryMeterNeedleSpritePalettes:: @ 83FB79C
- obj_pal CryMeterNeedlePalette, 8192
- null_obj_pal
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/ewram.h b/include/ewram.h
index 6b164648b..87af8dd53 100644
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -248,7 +248,6 @@ extern u8 gSharedMem[];
#define ewram1c000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000)) // FIXME, names too similar
#define eHallOfFameMons1 (struct HallofFameMons*)(&gSharedMem[0x1C000])
#define eHOFPCScreenEffect (*(struct PCScreenEffectStruct *)(gSharedMem + 0x1c000))
-#define EWRAM_1C800 (*(struct Unk201C800 *)(gSharedMem + 0x1C800))
#define ewram1D000 ((struct Pokemon *)(gSharedMem + 0x1D000))
#define ewram1D000_2 ((u16 *)(gSharedMem + 0x1D000))
#define ewram1D400 ((u16 *)(gSharedMem + 0x1D400))
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 a0c9a8bb7..dd13b197a 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -343,9 +343,7 @@ 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_811A4F8);
src/coins.o(.text);
src/landmark.o(.text);
src/fldeff_strength.o(.text);
@@ -635,7 +633,8 @@ SECTIONS {
src/pokedex_area_screen.o(.rodata);
src/evolution_scene.o(.rodata);
data/roulette.o(.rodata);
- data/pokedex_cry_screen.o(.rodata);
+ src/pokedex_cry_screen.o(.rodata);
+ src/pokedex_cry_screen.o(.data);
src/landmark.o(.rodata);
src/battle/battle_transition.o(.rodata);
src/battle/battle_controller_linkpartner.o(.rodata);
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 912b9aabd..72972bf06 100644
--- a/src/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
@@ -1,26 +1,200 @@
#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 Unk201C800 {
- u8 unk_0;
- u8 unk_1;
+ s8 unk_0;
+ s8 unk_1;
u8 unk_2;
- u8 filler_3;
u16 unk_4;
};
+struct PokedexCryScreen_201C000
+{
+ u8 unk0000[0x10];
+ u8 unk0010;
+ u8 unk0011;
+ u8 unk0012;
+ u16 unk0014;
+ u8 unk0016;
+ u16 species;
+ u8 unk001A;
+ u8 unk001B;
+};
+
+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, u16, u8);
+void sub_811A534(struct Sprite *);
+void sub_811A6D8(s8);
+
extern u8 gUnknown_03005E98;
// data/pokedex_cry_screen.o
+
+const u16 CryMeterNeedlePalette[] = INCBIN_U16("graphics/pokedex/cry_meter_needle.gbapal");
+const u8 CryMeterNeedleTiles[] = INCBIN_U8("graphics/pokedex/cry_meter_needle.4bpp");
+
+#if ENGLISH
+const u16 gUnknown_083FAE7C[] = INCBIN_U16("graphics/pokedex/cry_meter_map.bin");
+const u16 gUnknown_083FAF1C[] = INCBIN_U16("graphics/pokedex/cry_meter.gbapal");
+const u8 gUnknown_083FAF3C[] = INCBIN_U8("graphics/pokedex/cry_meter.4bpp.lz");
+#else
extern const u16 gUnknown_083FAE7C[];
extern const u16 gUnknown_083FAF1C[];
extern const u8 gUnknown_083FAF3C[];
-extern struct SpriteTemplate gSpriteTemplate_83FB774;
-extern const struct SpriteSheet gCryMeterNeedleSpriteSheets[];
-extern const struct SpritePalette gCryMeterNeedleSpritePalettes[];
+#endif // ENGLISH
+
+const u16 gUnknown_083FB274[][72] = {
+ {
+ 0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C,
+ 0x0400, 0x0404, 0x0408, 0x040C, 0x0410, 0x0414, 0x0418, 0x041C,
+ 0x0800, 0x0804, 0x0808, 0x080C, 0x0810, 0x0814, 0x0818, 0x081C,
+ 0x0C00, 0x0C04, 0x0C08, 0x0C0C, 0x0C10, 0x0C14, 0x0C18, 0x0C1C,
+ 0x1000, 0x1004, 0x1008, 0x100C, 0x1010, 0x1014, 0x1018, 0x101C,
+ 0x1400, 0x1404, 0x1408, 0x140C, 0x1410, 0x1414, 0x1418, 0x141C,
+ 0x1800, 0x1804, 0x1808, 0x180C, 0x1810, 0x1814, 0x1818, 0x181C,
+ 0x1C00, 0x1C04, 0x1C08, 0x1C0C, 0x1C10, 0x1C14, 0x1C18, 0x1C1C,
+ 0x2000, 0x2004, 0x2008, 0x200C, 0x2010, 0x2014, 0x2018, 0x201C
+ }, {
+ 0x0000, 0x0004, 0x0008, 0x000C, 0x0010, 0x0014, 0x0018, 0x001C,
+ 0x0400, 0x0404, 0x0408, 0x040C, 0x0410, 0x0414, 0x0418, 0x041C,
+ 0x0800, 0x0804, 0x0808, 0x080C, 0x0810, 0x0814, 0x0818, 0x081C,
+ 0x0C00, 0x0C04, 0x0C08, 0x0C0C, 0x0C10, 0x0C14, 0x0C18, 0x0C1C,
+ 0x1000, 0x1004, 0x1008, 0x100C, 0x1010, 0x1014, 0x1018, 0x101C,
+ 0x1400, 0x1404, 0x1408, 0x140C, 0x1410, 0x1414, 0x1418, 0x141C,
+ 0x1800, 0x1804, 0x1808, 0x180C, 0x1810, 0x1814, 0x1818, 0x181C,
+ 0x1C00, 0x1C04, 0x1C08, 0x1C0C, 0x1C10, 0x1C14, 0x1C18, 0x1C1C,
+ 0x2000, 0x2004, 0x2008, 0x200C, 0x2010, 0x2014, 0x2018, 0x201C
+ }, {
+ 0x0001, 0x0005, 0x0009, 0x000D, 0x0011, 0x0015, 0x0019, 0x001D,
+ 0x0401, 0x0405, 0x0409, 0x040D, 0x0411, 0x0415, 0x0419, 0x041D,
+ 0x0801, 0x0805, 0x0809, 0x080D, 0x0811, 0x0815, 0x0819, 0x081D,
+ 0x0C01, 0x0C05, 0x0C09, 0x0C0D, 0x0C11, 0x0C15, 0x0C19, 0x0C1D,
+ 0x1001, 0x1005, 0x1009, 0x100D, 0x1011, 0x1015, 0x1019, 0x101D,
+ 0x1401, 0x1405, 0x1409, 0x140D, 0x1411, 0x1415, 0x1419, 0x141D,
+ 0x1801, 0x1805, 0x1809, 0x180D, 0x1811, 0x1815, 0x1819, 0x181D,
+ 0x1C01, 0x1C05, 0x1C09, 0x1C0D, 0x1C11, 0x1C15, 0x1C19, 0x1C1D,
+ 0x2001, 0x2005, 0x2009, 0x200D, 0x2011, 0x2015, 0x2019, 0x201D
+ }, {
+ 0x0001, 0x0005, 0x0009, 0x000D, 0x0011, 0x0015, 0x0019, 0x001D,
+ 0x0401, 0x0405, 0x0409, 0x040D, 0x0411, 0x0415, 0x0419, 0x041D,
+ 0x0801, 0x0805, 0x0809, 0x080D, 0x0811, 0x0815, 0x0819, 0x081D,
+ 0x0C01, 0x0C05, 0x0C09, 0x0C0D, 0x0C11, 0x0C15, 0x0C19, 0x0C1D,
+ 0x1001, 0x1005, 0x1009, 0x100D, 0x1011, 0x1015, 0x1019, 0x101D,
+ 0x1401, 0x1405, 0x1409, 0x140D, 0x1411, 0x1415, 0x1419, 0x141D,
+ 0x1801, 0x1805, 0x1809, 0x180D, 0x1811, 0x1815, 0x1819, 0x181D,
+ 0x1C01, 0x1C05, 0x1C09, 0x1C0D, 0x1C11, 0x1C15, 0x1C19, 0x1C1D,
+ 0x2001, 0x2005, 0x2009, 0x200D, 0x2011, 0x2015, 0x2019, 0x201D
+ }, {
+ 0x0002, 0x0006, 0x000A, 0x000E, 0x0012, 0x0016, 0x001A, 0x001E,
+ 0x0402, 0x0406, 0x040A, 0x040E, 0x0412, 0x0416, 0x041A, 0x041E,
+ 0x0802, 0x0806, 0x080A, 0x080E, 0x0812, 0x0816, 0x081A, 0x081E,
+ 0x0C02, 0x0C06, 0x0C0A, 0x0C0E, 0x0C12, 0x0C16, 0x0C1A, 0x0C1E,
+ 0x1002, 0x1006, 0x100A, 0x100E, 0x1012, 0x1016, 0x101A, 0x101E,
+ 0x1402, 0x1406, 0x140A, 0x140E, 0x1412, 0x1416, 0x141A, 0x141E,
+ 0x1802, 0x1806, 0x180A, 0x180E, 0x1812, 0x1816, 0x181A, 0x181E,
+ 0x1C02, 0x1C06, 0x1C0A, 0x1C0E, 0x1C12, 0x1C16, 0x1C1A, 0x1C1E,
+ 0x2002, 0x2006, 0x200A, 0x200E, 0x2012, 0x2016, 0x201A, 0x201E
+ }, {
+ 0x0002, 0x0006, 0x000A, 0x000E, 0x0012, 0x0016, 0x001A, 0x001E,
+ 0x0402, 0x0406, 0x040A, 0x040E, 0x0412, 0x0416, 0x041A, 0x041E,
+ 0x0802, 0x0806, 0x080A, 0x080E, 0x0812, 0x0816, 0x081A, 0x081E,
+ 0x0C02, 0x0C06, 0x0C0A, 0x0C0E, 0x0C12, 0x0C16, 0x0C1A, 0x0C1E,
+ 0x1002, 0x1006, 0x100A, 0x100E, 0x1012, 0x1016, 0x101A, 0x101E,
+ 0x1402, 0x1406, 0x140A, 0x140E, 0x1412, 0x1416, 0x141A, 0x141E,
+ 0x1802, 0x1806, 0x180A, 0x180E, 0x1812, 0x1816, 0x181A, 0x181E,
+ 0x1C02, 0x1C06, 0x1C0A, 0x1C0E, 0x1C12, 0x1C16, 0x1C1A, 0x1C1E,
+ 0x2002, 0x2006, 0x200A, 0x200E, 0x2012, 0x2016, 0x201A, 0x201E
+ }, {
+ 0x0003, 0x0007, 0x000B, 0x000F, 0x0013, 0x0017, 0x001B, 0x001F,
+ 0x0403, 0x0407, 0x040B, 0x040F, 0x0413, 0x0417, 0x041B, 0x041F,
+ 0x0803, 0x0807, 0x080B, 0x080F, 0x0813, 0x0817, 0x081B, 0x081F,
+ 0x0C03, 0x0C07, 0x0C0B, 0x0C0F, 0x0C13, 0x0C17, 0x0C1B, 0x0C1F,
+ 0x1003, 0x1007, 0x100B, 0x100F, 0x1013, 0x1017, 0x101B, 0x101F,
+ 0x1403, 0x1407, 0x140B, 0x140F, 0x1413, 0x1417, 0x141B, 0x141F,
+ 0x1803, 0x1807, 0x180B, 0x180F, 0x1813, 0x1817, 0x181B, 0x181F,
+ 0x1C03, 0x1C07, 0x1C0B, 0x1C0F, 0x1C13, 0x1C17, 0x1C1B, 0x1C1F,
+ 0x2003, 0x2007, 0x200B, 0x200F, 0x2013, 0x2017, 0x201B, 0x201F
+ }, {
+ 0x0003, 0x0007, 0x000B, 0x000F, 0x0013, 0x0017, 0x001B, 0x001F,
+ 0x0403, 0x0407, 0x040B, 0x040F, 0x0413, 0x0417, 0x041B, 0x041F,
+ 0x0803, 0x0807, 0x080B, 0x080F, 0x0813, 0x0817, 0x081B, 0x081F,
+ 0x0C03, 0x0C07, 0x0C0B, 0x0C0F, 0x0C13, 0x0C17, 0x0C1B, 0x0C1F,
+ 0x1003, 0x1007, 0x100B, 0x100F, 0x1013, 0x1017, 0x101B, 0x101F,
+ 0x1403, 0x1407, 0x140B, 0x140F, 0x1413, 0x1417, 0x141B, 0x141F,
+ 0x1803, 0x1807, 0x180B, 0x180F, 0x1813, 0x1817, 0x181B, 0x181F,
+ 0x1C03, 0x1C07, 0x1C0B, 0x1C0F, 0x1C13, 0x1C17, 0x1C1B, 0x1C1F,
+ 0x2003, 0x2007, 0x200B, 0x200F, 0x2013, 0x2017, 0x201B, 0x201F
+ }
+};
+
+struct PokedexCryScreen_201C000 * const gPokedexCryScreenPtr = (struct PokedexCryScreen_201C000 *)(gSharedMem + 0x1c000);
+
+const u16 gUnknown_083FB6F8[] = INCBIN_U16("graphics/pokedex/83FB6F8.gbapal");
+const u16 gUnknown_083FB718[] = INCBIN_U16("graphics/pokedex/83FB718.4bpp");
+
+const u8 gUnknown_083FB738[] = {0xF0, 0x0F};
+const u8 gUnknown_083FB73A[][16] = {
+ {
+ 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08,
+ 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F
+ }, {
+ 0xF0, 0xE0, 0xD0, 0xC0, 0xB0, 0xA0, 0x90, 0x80,
+ 0x80, 0x90, 0xA0, 0xB0, 0xC0, 0xD0, 0xE0, 0xF0
+ }
+};
+
+struct Unk201C800 * const gPokedexCryScreenPtr2 = (struct Unk201C800 *)(gSharedMem + 0x1c800);
+
+union AnimCmd gSpriteAnim_83FB760[] = {
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+const union AnimCmd * gSpriteAnimTable_83FB768[] = {
+ gSpriteAnim_83FB760
+};
+
+struct OamData gOamData_83FB76C = {
+ .y = 160,
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .size = 3,
+ .priority = 1
+};
+
+struct SpriteTemplate gSpriteTemplate_83FB774 = {
+ 0x2000,
+ 0x2000,
+ &gOamData_83FB76C,
+ gSpriteAnimTable_83FB768,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_811A534
+};
+
+struct SpriteSheet gCryMeterNeedleSpriteSheets[] = {
+ {CryMeterNeedleTiles, 0x800, 0x2000},
+ {}
+};
+
+struct SpritePalette gCryMeterNeedleSpritePalettes[] = {
+ {CryMeterNeedlePalette, 0x2000},
+ {}
+};
#if ENGLISH
#define CRY_METER_MAP_WIDTH 10
@@ -28,6 +202,626 @@ 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:
+ gPokedexCryScreenPtr->unk0014 = cry->unk0;
+ gPokedexCryScreenPtr->unk0016 = cry->yPos;
+ gPokedexCryScreenPtr->unk001A = 0;
+ gPokedexCryScreenPtr->unk001B = 0;
+ gPokedexCryScreenPtr->unk0010 = 0;
+ gPokedexCryScreenPtr->unk0012 = 28;
+ gPokedexCryScreenPtr->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, gSharedMem[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 < gPokedexCryScreenPtr->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 (gPokedexCryScreenPtr->unk001B)
+ gPokedexCryScreenPtr->unk001B--;
+ if (gPokedexCryScreenPtr->unk001A && !--gPokedexCryScreenPtr->unk001A)
+ {
+ sub_811A0A0(gPokedexCryScreenPtr->species);
+ sub_811A124();
+ return;
+ }
+ if (gPokedexCryScreenPtr->unk0010 == 0)
+ {
+ sub_811A124();
+ return;
+ }
+ if (gPokedexCryScreenPtr->unk0010 == 1)
+ {
+ sub_811A0C0();
+ }
+ else if (gPokedexCryScreenPtr->unk0010 > 8)
+ {
+ if (!IsCryPlaying())
+ {
+ sub_811A124();
+ gPokedexCryScreenPtr->unk0010 = 0;
+ return;
+ }
+ sub_811A0C0();
+ gPokedexCryScreenPtr->unk0010 = 1;
+ }
+ r4 = 2 * (gPokedexCryScreenPtr->unk0010 - 1);
+ sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 2, gPokedexCryScreenPtr->unk0000[r4]);
+ sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 1, gPokedexCryScreenPtr->unk0000[r4 + 1]);
+ gPokedexCryScreenPtr->unk0010++;
+}
+
+void sub_811A050(u16 species)
+{
+ if (gMPlay_BGM.status & MUSICPLAYER_STATUS_PAUSE && !gPokedexCryScreenPtr->unk001A)
+ {
+ if (!gPokedexCryScreenPtr->unk001B)
+ {
+ gPokedexCryScreenPtr->unk001B = 4;
+ if (IsCryPlaying() == TRUE)
+ {
+ StopCry();
+ gPokedexCryScreenPtr->species = species;
+ gPokedexCryScreenPtr->unk001A = 2;
+ }
+ else
+ sub_811A0A0(species);
+ }
+ }
+}
+
+void sub_811A0A0(u16 species)
+{
+ PlayCry2(species, 0, 0x7d, 10);
+ gPokedexCryScreenPtr->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++)
+ gPokedexCryScreenPtr->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(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 2, 0);
+ sub_811A1C8(gPokedexCryScreenPtr->unk0016 * 8 + gPokedexCryScreenPtr->unk0011 - 1, 0);
+}
+
+void sub_811A15C(u8 a0)
+{
+ u8 i;
+ u16 r3;
+ sub_811A350(a0, gPokedexCryScreenPtr->unk0011, 0);
+ gPokedexCryScreenPtr->unk0011 += 2;
+ r3 = (gPokedexCryScreenPtr->unk0011 / 8 + gPokedexCryScreenPtr->unk0016 + 1) % 32;
+ for (i = 0; i < 7; i++)
+ {
+ DmaCopy16(3, gUnknown_083FB718, &gSharedMem[32 * (32 * i + r3)], 32);
+ }
+}
+
+#ifdef NONMATCHING
+void sub_811A1C8(u8 a0, u8 a1)
+{
+ u8 sp0;
+ u8 r7;
+ u8 r8;
+ u16 r1 = (a1 + 127) << 8;
+ u8 i = r1 / 1152.0;
+ if (i > 71 - 16)
+ i = 71 - 16;
+ sp0 = i;
+ r7 = a0 % 2;
+ r8 = a0 / 8;
+ if (i > gPokedexCryScreenPtr->unk0012)
+ {
+ do
+ {
+ gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7];
+ gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F];
+ i--;
+ } while (i > gPokedexCryScreenPtr->unk0012);
+ }
+ else
+ {
+ do
+ {
+ gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] &= gUnknown_083FB738[r7];
+ gSharedMem[(u16)(r8 * 32 + gUnknown_083FB274[a0 % 8][i])] |= gUnknown_083FB73A[r7][((i / 3) - 1) & 0x0F];
+ i++;
+ } while (i < gPokedexCryScreenPtr->unk0012);
+ }
+ gPokedexCryScreenPtr->unk0012 = sp0;
+}
+#else
+NAKED void sub_811A1C8(u8 a0, u8 a1)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0xC\n"
+ "\tlsls r5, r0, 24\n"
+ "\tlsrs r4, r5, 24\n"
+ "\tlsls r1, 24\n"
+ "\tmovs r0, 0xFE\n"
+ "\tlsls r0, 23\n"
+ "\tadds r1, r0\n"
+ "\tlsrs r1, 16\n"
+ "\tadds r0, r1, 0\n"
+ "\tbl __floatsidf\n"
+ "\tldr r3, _0811A280 @ =0x00000000\n"
+ "\tldr r2, _0811A27C @ =0x40920000\n"
+ "\tbl __divdf3\n"
+ "\tbl __fixunsdfsi\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tcmp r6, 0x37\n"
+ "\tbls _0811A1FE\n"
+ "\tmovs r6, 0x37\n"
+ "_0811A1FE:\n"
+ "\tstr r6, [sp]\n"
+ "\tmovs r7, 0x1\n"
+ "\tands r7, r4\n"
+ "\tldr r0, _0811A284 @ =gSharedMem + 0x1C000\n"
+ "\tmov r10, r0\n"
+ "\tlsrs r5, 27\n"
+ "\tmov r8, r5\n"
+ "\tldr r0, _0811A288 @ =gUnknown_083FB738\n"
+ "\tmov r1, r10\n"
+ "\tldrb r1, [r1, 0x12]\n"
+ "\tcmp r6, r1\n"
+ "\tbls _0811A298\n"
+ "\tadds r0, r7, r0\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r9, r0\n"
+ "\tmovs r2, 0x7\n"
+ "\tands r2, r4\n"
+ "_0811A220:\n"
+ "\tlsls r1, r6, 1\n"
+ "\tlsls r0, r2, 3\n"
+ "\tadds r0, r2\n"
+ "\tlsls r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tldr r3, _0811A28C @ =gUnknown_083FB274\n"
+ "\tadds r1, r3\n"
+ "\tmov r3, r8\n"
+ "\tlsls r0, r3, 5\n"
+ "\tldrh r1, [r1]\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r1, _0811A290 @ =gSharedMem\n"
+ "\tadds r5, r0, r1\n"
+ "\tldrb r4, [r5]\n"
+ "\tmov r3, r9\n"
+ "\tands r4, r3\n"
+ "\tstrb r4, [r5]\n"
+ "\tadds r0, r6, 0\n"
+ "\tmovs r1, 0x3\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tbl __udivsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tsubs r0, 0x1\n"
+ "\tmovs r1, 0xF\n"
+ "\tands r0, r1\n"
+ "\tlsls r1, r7, 4\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, _0811A294 @ =gUnknown_083FB73A\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\torrs r4, r0\n"
+ "\tstrb r4, [r5]\n"
+ "\tsubs r0, r6, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tldr r3, _0811A284 @ =gSharedMem + 0x1C000\n"
+ "\tldrb r3, [r3, 0x12]\n"
+ "\tcmp r6, r3\n"
+ "\tbhi _0811A220\n"
+ "\tb _0811A2FA\n"
+ "\t.align 2, 0\n"
+ "_0811A27C: .4byte 0x40920000\n"
+ "_0811A280: .4byte 0x00000000\n"
+ "_0811A284: .4byte gSharedMem + 0x1C000\n"
+ "_0811A288: .4byte gUnknown_083FB738\n"
+ "_0811A28C: .4byte gUnknown_083FB274\n"
+ "_0811A290: .4byte gSharedMem\n"
+ "_0811A294: .4byte gUnknown_083FB73A\n"
+ "_0811A298:\n"
+ "\tlsls r1, r7, 4\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tadds r0, r7, r0\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r9, r0\n"
+ "\tmovs r7, 0x7\n"
+ "\tands r7, r4\n"
+ "_0811A2A6:\n"
+ "\tlsls r1, r6, 1\n"
+ "\tlsls r0, r7, 3\n"
+ "\tadds r0, r7\n"
+ "\tlsls r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tldr r2, _0811A314 @ =gUnknown_083FB274\n"
+ "\tadds r1, r2\n"
+ "\tmov r3, r8\n"
+ "\tlsls r0, r3, 5\n"
+ "\tldrh r1, [r1]\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r1, _0811A318 @ =gSharedMem\n"
+ "\tadds r5, r0, r1\n"
+ "\tldrb r4, [r5]\n"
+ "\tmov r2, r9\n"
+ "\tands r4, r2\n"
+ "\tstrb r4, [r5]\n"
+ "\tadds r0, r6, 0\n"
+ "\tmovs r1, 0x3\n"
+ "\tbl __udivsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tsubs r0, 0x1\n"
+ "\tmovs r1, 0xF\n"
+ "\tands r0, r1\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tadds r0, r3\n"
+ "\tldr r1, _0811A31C @ =gUnknown_083FB73A\n"
+ "\tadds r0, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\torrs r4, r0\n"
+ "\tstrb r4, [r5]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tldr r2, _0811A320 @ =gSharedMem + 0x1C000\n"
+ "\tldrb r2, [r2, 0x12]\n"
+ "\tcmp r6, r2\n"
+ "\tbcc _0811A2A6\n"
+ "_0811A2FA:\n"
+ "\tmov r3, sp\n"
+ "\tldrb r0, [r3]\n"
+ "\tmov r3, r10\n"
+ "\tstrb r0, [r3, 0x12]\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0811A314: .4byte gUnknown_083FB274\n"
+ "_0811A318: .4byte gSharedMem\n"
+ "_0811A31C: .4byte gUnknown_083FB73A\n"
+ "_0811A320: .4byte gSharedMem + 0x1C000");
+}
+#endif // NONMATCHING
+
+void sub_811A324(void)
+{
+ DmaCopy16(3, gSharedMem, VRAM + gPokedexCryScreenPtr->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;
@@ -68,10 +862,10 @@ u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
{
LoadSpriteSheets(gCryMeterNeedleSpriteSheets);
LoadSpritePalettes(gCryMeterNeedleSpritePalettes);
- EWRAM_1C800.unk_4 = CreateSprite(&gSpriteTemplate_83FB774, 40 + cry->xPos * 8, 56 + cry->yPos * 8, 1);
- EWRAM_1C800.unk_0 = 0x20;
- EWRAM_1C800.unk_1 = 0x20;
- EWRAM_1C800.unk_2 = 0;
+ gPokedexCryScreenPtr2->unk_4 = CreateSprite(&gSpriteTemplate_83FB774, 40 + cry->xPos * 8, 56 + cry->yPos * 8, 1);
+ gPokedexCryScreenPtr2->unk_0 = 0x20;
+ gPokedexCryScreenPtr2->unk_1 = 0x20;
+ gPokedexCryScreenPtr2->unk_2 = 0;
returnVal = TRUE;
break;
@@ -80,3 +874,85 @@ u8 ShowPokedexCryScreen(struct CryRelatedStruct *cry, u8 arg1) {
return returnVal;
}
+
+void DestroyCryMeterNeedleSprite(void)
+{
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[gPokedexCryScreenPtr2->unk_4].oam.paletteNum));
+ DestroySprite(gSprites + gPokedexCryScreenPtr2->unk_4);
+}
+
+void sub_811A534(struct Sprite * sprite)
+{
+ u16 i;
+ s8 r3;
+ s16 x;
+ s16 y;
+ struct ObjAffineSrcData sp04;
+ struct OamMatrix sp0c;
+ u8 * r0;
+
+ gSprites[gPokedexCryScreenPtr2->unk_4].oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ gSprites[gPokedexCryScreenPtr2->unk_4].oam.affineParam = 0;
+ switch (gPokedexCryScreenPtr->unk0010)
+ {
+ case 0:
+ gPokedexCryScreenPtr2->unk_1 = 0x20;
+ if (gPokedexCryScreenPtr2->unk_0 > 0)
+ {
+ if (gPokedexCryScreenPtr2->unk_2 != 1)
+ gPokedexCryScreenPtr2->unk_2--;
+ }
+ else
+ gPokedexCryScreenPtr2->unk_2 = 5;
+ break;
+ case 2:
+ r3 = 0;
+ for (i = 0; i < 16; i++)
+ {
+ if (r3 < gPokedexCryScreenPtr->unk0000[i])
+ r3 = gPokedexCryScreenPtr->unk0000[i];
+ }
+ sub_811A6D8(r3 * 0xd0 / 0x100);
+ break;
+ case 6:
+ r0 = &gPokedexCryScreenPtr->unk0000[10];
+ sub_811A6D8(*r0 * 0xd0 / 0x100);
+ break;
+ }
+ if (gPokedexCryScreenPtr2->unk_0 == gPokedexCryScreenPtr2->unk_1)
+ ;
+ else if (gPokedexCryScreenPtr2->unk_0 < gPokedexCryScreenPtr2->unk_1)
+ {
+ if ((gPokedexCryScreenPtr2->unk_0 += gPokedexCryScreenPtr2->unk_2) > gPokedexCryScreenPtr2->unk_1)
+ {
+ gPokedexCryScreenPtr2->unk_0 = gPokedexCryScreenPtr2->unk_1;
+ gPokedexCryScreenPtr2->unk_1 = 0;
+ }
+ }
+ else
+ {
+ if ((gPokedexCryScreenPtr2->unk_0 -= gPokedexCryScreenPtr2->unk_2) < gPokedexCryScreenPtr2->unk_1)
+ {
+ gPokedexCryScreenPtr2->unk_0 = gPokedexCryScreenPtr2->unk_1;
+ gPokedexCryScreenPtr2->unk_1 = 0;
+ }
+ }
+ sp04.xScale = 0x100;
+ sp04.yScale = 0x100;
+ sp04.rotation = gPokedexCryScreenPtr2->unk_0 * 256;
+ ObjAffineSet(&sp04, &sp0c, 1, 2);
+ SetOamMatrix(0, sp0c.a, sp0c.b, sp0c.c, sp0c.d);
+ x = gSineTable[((gPokedexCryScreenPtr2->unk_0 + 0x7F) & 0xFF)];
+ y = gSineTable[((gPokedexCryScreenPtr2->unk_0 + 0x7F) & 0xFF) + 0x40];
+ sprite->pos2.x = x * 24 / 256;
+ sprite->pos2.y = y * 24 / 256;
+}
+
+void sub_811A6D8(s8 a0)
+{
+ u16 r2 = (0x20 - a0) & 0xff;
+ if (r2 > 0x20 && r2 < 0xe0)
+ r2 = 0xe0;
+ gPokedexCryScreenPtr2->unk_1 = r2;
+ gPokedexCryScreenPtr2->unk_2 = 5;
+}