summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-02-18 16:39:44 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-02-18 16:39:44 -0500
commit5c530e133042af0dfb2341b0dcf18efc9a37aa95 (patch)
tree681258743049bcbf75c909c8409d72a366ca6ffa
parentf65e07fb1fac3b8092f8ec29c2c9b42fcb80fa60 (diff)
Finish porting pokemon_jump from Emerald
-rw-r--r--asm/pokemon_jump_2.s1291
-rw-r--r--data/pokemon_jump.s173
-rw-r--r--data/strings.s8
-rw-r--r--graphics/link_games/pkmnjump_pal1.pal (renamed from graphics/link_games/unk_846D9E4.pal)0
-rw-r--r--graphics/link_games/pkmnjump_pal2.pal (renamed from graphics/link_games/unk_846DA04.pal)0
-rw-r--r--graphics/link_games/pkmnjump_rope1.png (renamed from graphics/link_games/unk_846DA24.png)bin284 -> 284 bytes
-rw-r--r--graphics/link_games/pkmnjump_rope2.png (renamed from graphics/link_games/unk_846DB44.png)bin322 -> 322 bytes
-rw-r--r--graphics/link_games/pkmnjump_rope3.png (renamed from graphics/link_games/unk_846DD18.png)bin338 -> 338 bytes
-rw-r--r--graphics/link_games/pkmnjump_rope4.png (renamed from graphics/link_games/unk_846DE48.png)bin256 -> 256 bytes
-rw-r--r--graphics/link_games/pkmnjump_star.png (renamed from graphics/link_games/unk_846DF44.png)bin335 -> 335 bytes
-rw-r--r--include/global.h3
-rw-r--r--include/minigame_countdown.h7
-rw-r--r--include/pokemon_jump.h29
-rw-r--r--include/strings.h4
-rw-r--r--ld_script.txt6
-rw-r--r--src/minigame_countdown.c2
-rw-r--r--src/pokemon_jump_4.c4
-rw-r--r--src/pokemon_jump_5.c637
-rw-r--r--src/pokemon_jump_6.c141
19 files changed, 805 insertions, 1500 deletions
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
deleted file mode 100644
index bd6f5cdcc..000000000
--- a/asm/pokemon_jump_2.s
+++ /dev/null
@@ -1,1291 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_814AD6C
-sub_814AD6C: @ 814AD6C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r4, 0
- ldr r5, _0814ADAC @ =gUnknown_846E0B0
-_0814AD74:
- adds r0, r5, 0
- bl LoadCompressedSpriteSheet
- adds r5, 0x8
- adds r4, 0x1
- cmp r4, 0x4
- bls _0814AD74
- movs r4, 0
- ldr r5, _0814ADB0 @ =gUnknown_846E0D8
-_0814AD86:
- adds r0, r5, 0
- bl LoadSpritePalette
- adds r5, 0x8
- adds r4, 0x1
- cmp r4, 0x1
- bls _0814AD86
- movs r0, 0x5
- bl IndexOfSpritePaletteTag
- strb r0, [r6, 0xE]
- movs r0, 0x6
- bl IndexOfSpritePaletteTag
- strb r0, [r6, 0xF]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814ADAC: .4byte gUnknown_846E0B0
-_0814ADB0: .4byte gUnknown_846E0D8
- thumb_func_end sub_814AD6C
-
- thumb_func_start sub_814ADB4
-sub_814ADB4: @ 814ADB4
- push {lr}
- movs r2, 0
- movs r1, 0x7
- adds r0, 0x3C
-_0814ADBC:
- strh r2, [r0]
- subs r0, 0x2
- subs r1, 0x1
- cmp r1, 0
- bge _0814ADBC
- pop {r0}
- bx r0
- thumb_func_end sub_814ADB4
-
- thumb_func_start sub_814ADCC
-sub_814ADCC: @ 814ADCC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- mov r9, r0
- adds r7, r1, 0
- ldr r0, [sp, 0x54]
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x28]
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x2C]
- lsls r0, 24
- lsrs r6, r0, 24
- mov r1, sp
- ldr r0, _0814AE20 @ =gUnknown_846E0E8
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r0, 0x80
- lsls r0, 6
- bl Alloc
- mov r8, r0
- movs r0, 0x80
- lsls r0, 4
- bl Alloc
- mov r10, r0
- bl sub_81499B4
- lsls r0, 16
- lsrs r0, 16
- cmp r6, r0
- bne _0814AE24
- movs r0, 0x3
- b _0814AE2A
- .align 2, 0
-_0814AE20: .4byte gUnknown_846E0E8
-_0814AE24:
- adds r0, r6, 0x4
- lsls r0, 24
- lsrs r0, 24
-_0814AE2A:
- str r0, [sp, 0x30]
- mov r1, r8
- cmp r1, 0
- beq _0814AEEC
- mov r2, r10
- cmp r2, 0
- beq _0814AEEC
- ldrh r2, [r7]
- lsls r0, r2, 3
- ldr r1, _0814AED8 @ =gMonFrontPicTable
- adds r0, r1
- ldr r3, [r7, 0x8]
- mov r1, r8
- bl HandleLoadSpecialPokePic
- mov r3, r8
- str r3, [sp, 0x18]
- adds r4, r6, 0
- add r0, sp, 0x18
- ldr r5, _0814AEDC @ =0xffff0000
- lsls r1, r4, 16
- movs r2, 0x80
- lsls r2, 4
- orrs r1, r2
- str r1, [r0, 0x4]
- bl LoadSpriteSheet
- ldrh r0, [r7]
- ldr r1, [r7, 0x4]
- ldr r2, [r7, 0x8]
- bl GetMonSpritePalFromSpeciesAndPersonality
- str r0, [sp, 0x20]
- add r0, sp, 0x20
- ldr r1, [r0, 0x4]
- ands r1, r5
- orrs r1, r4
- str r1, [r0, 0x4]
- bl LoadCompressedSpritePalette
- mov r0, r8
- bl Free
- mov r0, r10
- bl Free
- mov r1, sp
- mov r0, sp
- ldrh r0, [r0]
- adds r0, r6
- strh r0, [r1]
- mov r0, sp
- ldrh r0, [r0, 0x2]
- adds r0, r6
- strh r0, [r1, 0x2]
- ldr r4, [sp, 0x28]
- lsls r1, r4, 16
- asrs r1, 16
- ldr r0, [sp, 0x2C]
- lsls r2, r0, 16
- asrs r2, 16
- mov r0, sp
- ldr r3, [sp, 0x30]
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _0814AEEC
- lsls r0, r6, 2
- ldr r2, _0814AEE0 @ =0x000081a8
- add r2, r9
- adds r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0814AEE4 @ =gSprites
- adds r0, r1
- str r0, [r2]
- ldr r0, _0814AEE8 @ =0x000081fc
- add r0, r9
- adds r0, r6
- add r1, sp, 0x30
- ldrb r1, [r1]
- strb r1, [r0]
- b _0814AEF8
- .align 2, 0
-_0814AED8: .4byte gMonFrontPicTable
-_0814AEDC: .4byte 0xffff0000
-_0814AEE0: .4byte 0x000081a8
-_0814AEE4: .4byte gSprites
-_0814AEE8: .4byte 0x000081fc
-_0814AEEC:
- lsls r0, r6, 2
- ldr r1, _0814AF08 @ =0x000081a8
- add r1, r9
- adds r1, r0
- movs r0, 0
- str r0, [r1]
-_0814AEF8:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814AF08: .4byte 0x000081a8
- thumb_func_end sub_814ADCC
-
- thumb_func_start sub_814AF0C
-sub_814AF0C: @ 814AF0C
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r6, r1, 2
- ldr r0, _0814AF64 @ =0x000081bc
- adds r5, r4, r0
- adds r5, r6
- ldr r0, [r5]
- bl sub_814ADB4
- ldr r2, [r5]
- ldr r0, _0814AF68 @ =0x000081a8
- adds r4, r0
- adds r4, r6
- ldr r1, [r4]
- ldr r0, _0814AF6C @ =gSprites
- subs r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r1, r0, 8
- adds r0, r1
- lsls r1, r0, 16
- adds r0, r1
- negs r0, r0
- asrs r0, 2
- strh r0, [r2, 0x3C]
- ldr r1, [r5]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r5]
- movs r0, 0x60
- strh r0, [r1, 0x22]
- ldr r0, [r5]
- ldr r1, _0814AF70 @ =sub_814AF74
- str r1, [r0, 0x1C]
- movs r1, 0x1
- bl StartSpriteAnim
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814AF64: .4byte 0x000081bc
-_0814AF68: .4byte 0x000081a8
-_0814AF6C: .4byte gSprites
-_0814AF70: .4byte sub_814AF74
- thumb_func_end sub_814AF0C
-
- thumb_func_start sub_814AF74
-sub_814AF74: @ 814AF74
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _0814AFA0
- cmp r0, 0x1
- bgt _0814AF8A
- cmp r0, 0
- beq _0814AF90
- b _0814AFDE
-_0814AF8A:
- cmp r0, 0x2
- beq _0814AFC0
- b _0814AFDE
-_0814AF90:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0814AFDE
- b _0814AFCE
-_0814AFA0:
- ldrh r1, [r2, 0x22]
- subs r1, 0x1
- strh r1, [r2, 0x22]
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x48
- bgt _0814AFDE
- movs r0, 0x48
- strh r0, [r2, 0x22]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- b _0814AFDE
-_0814AFC0:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2F
- ble _0814AFDE
-_0814AFCE:
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldr r0, _0814AFE4 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_0814AFDE:
- pop {r0}
- bx r0
- .align 2, 0
-_0814AFE4: .4byte SpriteCallbackDummy
- thumb_func_end sub_814AF74
-
- thumb_func_start sub_814AFE8
-sub_814AFE8: @ 814AFE8
- push {lr}
- lsls r1, 2
- ldr r2, _0814B008 @ =0x000081a8
- adds r0, r2
- adds r0, r1
- ldr r2, [r0]
- ldr r1, _0814B00C @ =sub_814B038
- str r1, [r2, 0x1C]
- movs r1, 0
- strh r1, [r2, 0x26]
- ldr r0, [r0]
- bl sub_814ADB4
- pop {r0}
- bx r0
- .align 2, 0
-_0814B008: .4byte 0x000081a8
-_0814B00C: .4byte sub_814B038
- thumb_func_end sub_814AFE8
-
- thumb_func_start sub_814B010
-sub_814B010: @ 814B010
- push {lr}
- movs r2, 0
- lsls r1, 2
- ldr r3, _0814B030 @ =0x000081a8
- adds r0, r3
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r0, 0x1C]
- ldr r0, _0814B034 @ =sub_814B038
- cmp r1, r0
- bne _0814B028
- movs r2, 0x1
-_0814B028:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0814B030: .4byte 0x000081a8
-_0814B034: .4byte sub_814B038
- thumb_func_end sub_814B010
-
- thumb_func_start sub_814B038
-sub_814B038: @ 814B038
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _0814B064
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814B05C
- movs r0, 0x2
- b _0814B05E
-_0814B05C:
- ldr r0, _0814B078 @ =0x0000fffe
-_0814B05E:
- strh r0, [r2, 0x26]
- movs r0, 0
- strh r0, [r2, 0x30]
-_0814B064:
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r0, 0xC
- ble _0814B074
- movs r0, 0
- strh r0, [r2, 0x26]
- ldr r0, _0814B07C @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_0814B074:
- pop {r0}
- bx r0
- .align 2, 0
-_0814B078: .4byte 0x0000fffe
-_0814B07C: .4byte SpriteCallbackDummy
- thumb_func_end sub_814B038
-
- thumb_func_start sub_814B080
-sub_814B080: @ 814B080
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 2
- ldr r0, _0814B0A0 @ =0x000081a8
- adds r4, r0
- adds r4, r1
- ldr r0, [r4]
- bl sub_814ADB4
- ldr r1, [r4]
- ldr r0, _0814B0A4 @ =sub_814B100
- str r0, [r1, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B0A0: .4byte 0x000081a8
-_0814B0A4: .4byte sub_814B100
- thumb_func_end sub_814B080
-
- thumb_func_start sub_814B0A8
-sub_814B0A8: @ 814B0A8
- push {r4-r7,lr}
- adds r4, r0, 0
- bl sub_81499A4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _0814B0EC
- movs r1, 0x5
- negs r1, r1
- mov r12, r1
- ldr r1, _0814B0F4 @ =0x000081a8
- adds r3, r4, r1
- ldr r7, _0814B0F8 @ =sub_814B100
- ldr r6, _0814B0FC @ =SpriteCallbackDummy
- movs r5, 0xA
- adds r4, r0, 0
-_0814B0CA:
- ldr r2, [r3]
- ldr r0, [r2, 0x1C]
- cmp r0, r7
- bne _0814B0E4
- adds r2, 0x3E
- ldrb r1, [r2]
- mov r0, r12
- ands r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- str r6, [r0, 0x1C]
- adds r0, 0x43
- strb r5, [r0]
-_0814B0E4:
- adds r3, 0x4
- subs r4, 0x1
- cmp r4, 0
- bne _0814B0CA
-_0814B0EC:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B0F4: .4byte 0x000081a8
-_0814B0F8: .4byte sub_814B100
-_0814B0FC: .4byte SpriteCallbackDummy
- thumb_func_end sub_814B0A8
-
- thumb_func_start sub_814B100
-sub_814B100: @ 814B100
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- adds r0, 0x1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0814B12E
- movs r0, 0
- strh r0, [r3, 0x2E]
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_0814B12E:
- pop {r0}
- bx r0
- thumb_func_end sub_814B100
-
- thumb_func_start sub_814B134
-sub_814B134: @ 814B134
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_81499A4
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- cmp r2, r3
- bge _0814B15E
- ldr r0, _0814B164 @ =0x000081fc
- adds r5, r4, r0
- subs r0, 0x54
- adds r4, r0
-_0814B14E:
- ldm r4!, {r0}
- adds r1, r5, r2
- ldrb r1, [r1]
- adds r0, 0x43
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r3
- blt _0814B14E
-_0814B15E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B164: .4byte 0x000081fc
- thumb_func_end sub_814B134
-
- thumb_func_start sub_814B168
-sub_814B168: @ 814B168
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 2
- ldr r0, _0814B188 @ =0x000081a8
- adds r4, r0
- adds r4, r1
- ldr r0, [r4]
- bl sub_814ADB4
- ldr r1, [r4]
- ldr r0, _0814B18C @ =sub_814B1CC
- str r0, [r1, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B188: .4byte 0x000081a8
-_0814B18C: .4byte sub_814B1CC
- thumb_func_end sub_814B168
-
- thumb_func_start sub_814B190
-sub_814B190: @ 814B190
- push {r4,r5,lr}
- adds r4, r0, 0
- bl sub_81499A4
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- cmp r2, r3
- bge _0814B1C4
- ldr r5, _0814B1B4 @ =sub_814B1CC
- ldr r0, _0814B1B8 @ =0x000081a8
- adds r1, r4, r0
-_0814B1A8:
- ldr r0, [r1]
- ldr r0, [r0, 0x1C]
- cmp r0, r5
- bne _0814B1BC
- movs r0, 0x1
- b _0814B1C6
- .align 2, 0
-_0814B1B4: .4byte sub_814B1CC
-_0814B1B8: .4byte 0x000081a8
-_0814B1BC:
- adds r1, 0x4
- adds r2, 0x1
- cmp r2, r3
- blt _0814B1A8
-_0814B1C4:
- movs r0, 0
-_0814B1C6:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_814B190
-
- thumb_func_start sub_814B1CC
-sub_814B1CC: @ 814B1CC
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0x2E
- ldrsh r4, [r5, r0]
- cmp r4, 0
- beq _0814B1DE
- cmp r4, 0x1
- beq _0814B1EC
- b _0814B234
-_0814B1DE:
- movs r0, 0x1C
- bl PlaySE
- strh r4, [r5, 0x30]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
-_0814B1EC:
- ldrh r0, [r5, 0x30]
- adds r0, 0x4
- strh r0, [r5, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7F
- ble _0814B1FE
- movs r0, 0
- strh r0, [r5, 0x30]
-_0814B1FE:
- ldr r1, _0814B22C @ =gSineTable
- movs r2, 0x30
- ldrsh r0, [r5, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 16
- asrs r0, 19
- negs r0, r0
- strh r0, [r5, 0x26]
- movs r0, 0x30
- ldrsh r1, [r5, r0]
- cmp r1, 0
- bne _0814B234
- ldrh r0, [r5, 0x32]
- adds r0, 0x1
- strh r0, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- bgt _0814B230
- strh r1, [r5, 0x2E]
- b _0814B234
- .align 2, 0
-_0814B22C: .4byte gSineTable
-_0814B230:
- ldr r0, _0814B23C @ =SpriteCallbackDummy
- str r0, [r5, 0x1C]
-_0814B234:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B23C: .4byte SpriteCallbackDummy
- thumb_func_end sub_814B1CC
-
- thumb_func_start sub_814B240
-sub_814B240: @ 814B240
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r3, 24
- lsrs r4, r3, 24
- ldr r0, _0814B288 @ =gUnknown_846E2B4
- lsls r1, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _0814B280
- ldr r0, _0814B28C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r3]
- lsls r2, r4, 2
- ldr r3, _0814B290 @ =0x000081bc
- adds r0, r5, r3
- adds r0, r2
- str r1, [r0]
-_0814B280:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B288: .4byte gUnknown_846E2B4
-_0814B28C: .4byte gSprites
-_0814B290: .4byte 0x000081bc
- thumb_func_end sub_814B240
-
- thumb_func_start sub_814B294
-sub_814B294: @ 814B294
- push {r4-r7,lr}
- adds r7, r0, 0
- movs r5, 0
- movs r4, 0
- ldr r6, _0814B334 @ =gUnknown_846E100
-_0814B29E:
- ldr r1, _0814B338 @ =gUnknown_846E160
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r2, _0814B33C @ =gUnknown_846E150
- lsls r1, r5, 1
- adds r1, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r3, 0
- ldrsh r2, [r6, r3]
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r5, 2
- ldr r3, _0814B340 @ =0x000081d0
- adds r2, r7, r3
- adds r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0814B344 @ =gSprites
- adds r0, r1
- str r0, [r2]
- adds r5, 0x1
- adds r6, 0x14
- adds r4, 0x1
- cmp r4, 0x3
- ble _0814B29E
- movs r4, 0x3
- movs r6, 0x3C
-_0814B2E0:
- ldr r1, _0814B338 @ =gUnknown_846E160
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r2, _0814B33C @ =gUnknown_846E150
- lsls r1, r5, 1
- adds r1, r2
- movs r2, 0
- ldrsh r1, [r1, r2]
- ldr r2, _0814B334 @ =gUnknown_846E100
- adds r2, r6, r2
- movs r3, 0
- ldrsh r2, [r2, r3]
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- lsls r0, r5, 2
- ldr r3, _0814B340 @ =0x000081d0
- adds r2, r7, r3
- adds r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0814B344 @ =gSprites
- adds r0, r1
- str r0, [r2]
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- adds r5, 0x1
- subs r6, 0x14
- subs r4, 0x1
- cmp r4, 0
- bge _0814B2E0
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B334: .4byte gUnknown_846E100
-_0814B338: .4byte gUnknown_846E160
-_0814B33C: .4byte gUnknown_846E150
-_0814B340: .4byte 0x000081d0
-_0814B344: .4byte gSprites
- thumb_func_end sub_814B294
-
- thumb_func_start sub_814B348
-sub_814B348: @ 814B348
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- str r0, [sp, 0x8]
- cmp r1, 0x5
- ble _0814B368
- movs r0, 0xA
- subs r1, r0, r1
- movs r0, 0x3
- str r0, [sp]
- ldr r2, [sp, 0x8]
- ldrb r0, [r2, 0xF]
- b _0814B370
-_0814B368:
- movs r3, 0x2
- str r3, [sp]
- ldr r7, [sp, 0x8]
- ldrb r0, [r7, 0xE]
-_0814B370:
- movs r6, 0
- lsls r2, r1, 1
- str r2, [sp, 0x4]
- lsls r0, 4
- mov r9, r0
- lsls r1, 24
- mov r8, r1
- ldr r0, _0814B434 @ =gUnknown_846E100
- adds r4, r2, r0
- ldr r3, [sp]
- lsls r3, 2
- mov r10, r3
- movs r5, 0x3
-_0814B38A:
- lsls r0, r6, 2
- ldr r7, [sp, 0x8]
- ldr r1, _0814B438 @ =0x000081d0
- adds r2, r7, r1
- adds r2, r0
- ldr r1, [r2]
- ldrh r0, [r4]
- strh r0, [r1, 0x22]
- ldr r3, [r2]
- ldrb r0, [r3, 0x5]
- movs r7, 0xD
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- mov r1, r10
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r3, [r2]
- ldrb r1, [r3, 0x5]
- movs r0, 0xF
- ands r0, r1
- mov r7, r9
- orrs r0, r7
- strb r0, [r3, 0x5]
- ldr r0, [r2]
- mov r2, r8
- lsrs r1, r2, 24
- bl StartSpriteAnim
- adds r6, 0x1
- adds r4, 0x14
- subs r5, 0x1
- cmp r5, 0
- bge _0814B38A
- movs r5, 0x3
- ldr r0, _0814B434 @ =gUnknown_846E100
- ldr r3, [sp, 0x4]
- adds r0, r3, r0
- adds r4, r0, 0
- adds r4, 0x3C
- ldr r7, [sp]
- lsls r7, 2
- mov r10, r7
-_0814B3E0:
- lsls r0, r6, 2
- ldr r1, [sp, 0x8]
- ldr r3, _0814B438 @ =0x000081d0
- adds r2, r1, r3
- adds r2, r0
- ldr r1, [r2]
- ldrh r0, [r4]
- strh r0, [r1, 0x22]
- ldr r3, [r2]
- ldrb r0, [r3, 0x5]
- movs r7, 0xD
- negs r7, r7
- adds r1, r7, 0
- ands r0, r1
- mov r1, r10
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r3, [r2]
- ldrb r1, [r3, 0x5]
- movs r0, 0xF
- ands r0, r1
- mov r7, r9
- orrs r0, r7
- strb r0, [r3, 0x5]
- ldr r0, [r2]
- mov r2, r8
- lsrs r1, r2, 24
- bl StartSpriteAnim
- adds r6, 0x1
- subs r4, 0x14
- subs r5, 0x1
- cmp r5, 0
- bge _0814B3E0
- 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
-_0814B434: .4byte gUnknown_846E100
-_0814B438: .4byte 0x000081d0
- thumb_func_end sub_814B348
-
- thumb_func_start sub_814B43C
-sub_814B43C: @ 814B43C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- movs r1, 0x7
- movs r2, 0x78
- movs r3, 0x50
- bl StartMinigameCountdown
- adds r0, r4, 0
- bl sub_814B134
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_814B43C
-
- thumb_func_start sub_814B460
-sub_814B460: @ 814B460
- push {lr}
- bl IsMinigameCountdownRunning
- pop {r1}
- bx r1
- thumb_func_end sub_814B460
-
- thumb_func_start sub_814B46C
-sub_814B46C: @ 814B46C
- ldr r0, _0814B478 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- movs r1, 0xB0
- lsls r1, 4
- adds r0, r1
- bx lr
- .align 2, 0
-_0814B478: .4byte gSaveBlock2Ptr
- thumb_func_end sub_814B46C
-
- thumb_func_start ResetPokeJumpResults
-ResetPokeJumpResults: @ 814B47C
- push {lr}
- bl sub_814B46C
- movs r1, 0
- strh r1, [r0]
- str r1, [r0, 0xC]
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- str r1, [r0, 0x8]
- strh r1, [r0, 0x2]
- pop {r0}
- bx r0
- thumb_func_end ResetPokeJumpResults
-
- thumb_func_start sub_814B494
-sub_814B494: @ 814B494
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r5, r1, 16
- lsls r2, 16
- lsrs r6, r2, 16
- bl sub_814B46C
- adds r1, r0, 0
- movs r2, 0
- ldr r0, [r1, 0xC]
- cmp r0, r4
- bcs _0814B4B8
- ldr r0, _0814B4E0 @ =0x00018696
- cmp r4, r0
- bhi _0814B4B8
- str r4, [r1, 0xC]
- movs r2, 0x1
-_0814B4B8:
- ldrh r0, [r1]
- cmp r0, r5
- bcs _0814B4C8
- ldr r0, _0814B4E4 @ =0x0000270f
- cmp r5, r0
- bhi _0814B4C8
- strh r5, [r1]
- movs r2, 0x1
-_0814B4C8:
- ldrh r0, [r1, 0x4]
- cmp r0, r6
- bcs _0814B4D8
- ldr r0, _0814B4E4 @ =0x0000270f
- cmp r6, r0
- bhi _0814B4D8
- strh r6, [r1, 0x4]
- movs r2, 0x1
-_0814B4D8:
- adds r0, r2, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0814B4E0: .4byte 0x00018696
-_0814B4E4: .4byte 0x0000270f
- thumb_func_end sub_814B494
-
- thumb_func_start sub_814B4E8
-sub_814B4E8: @ 814B4E8
- push {lr}
- bl sub_814B46C
- adds r2, r0, 0
- ldrh r1, [r2, 0x6]
- ldr r0, _0814B500 @ =0x0000270e
- cmp r1, r0
- bhi _0814B4FC
- adds r0, r1, 0x1
- strh r0, [r2, 0x6]
-_0814B4FC:
- pop {r0}
- bx r0
- .align 2, 0
-_0814B500: .4byte 0x0000270e
- thumb_func_end sub_814B4E8
-
- thumb_func_start ShowPokemonJumpRecords
-ShowPokemonJumpRecords: @ 814B504
- push {r4,lr}
- ldr r4, _0814B520 @ =sub_814B524
- adds r0, r4, 0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B520: .4byte sub_814B524
- thumb_func_end ShowPokemonJumpRecords
-
- thumb_func_start sub_814B524
-sub_814B524: @ 814B524
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0814B548 @ =gTasks+0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0814B570
- cmp r0, 0x1
- bgt _0814B54C
- cmp r0, 0
- beq _0814B556
- b _0814B5BE
- .align 2, 0
-_0814B548: .4byte gTasks+0x8
-_0814B54C:
- cmp r0, 0x2
- beq _0814B57C
- cmp r0, 0x3
- beq _0814B5A4
- b _0814B5BE
-_0814B556:
- ldr r0, _0814B56C @ =gUnknown_846E2CC
- bl AddWindow
- strh r0, [r4, 0x2]
- ldrh r0, [r4, 0x2]
- bl sub_814B5C4
- ldrb r0, [r4, 0x2]
- movs r1, 0x3
- b _0814B592
- .align 2, 0
-_0814B56C: .4byte gUnknown_846E2CC
-_0814B570:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814B5BE
- b _0814B596
-_0814B57C:
- ldr r0, _0814B5A0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0814B5BE
- ldrb r0, [r4, 0x2]
- bl rbox_fill_rectangle
- ldrb r0, [r4, 0x2]
- movs r1, 0x1
-_0814B592:
- bl CopyWindowToVram
-_0814B596:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _0814B5BE
- .align 2, 0
-_0814B5A0: .4byte gMain
-_0814B5A4:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814B5BE
- ldrb r0, [r4, 0x2]
- bl RemoveWindow
- adds r0, r5, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_0814B5BE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_814B524
-
- thumb_func_start sub_814B5C4
-sub_814B5C4: @ 814B5C4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x30
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x28]
- bl sub_814B46C
- ldrh r1, [r0]
- str r1, [sp, 0x14]
- ldr r1, [r0, 0xC]
- str r1, [sp, 0x18]
- ldrh r0, [r0, 0x4]
- str r0, [sp, 0x1C]
- ldr r0, [sp, 0x28]
- lsls r4, r0, 24
- lsrs r4, 24
- ldr r5, _0814B6C8 @ =0x0000021d
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0xD0
- bl TextWindow_SetStdFrame0_WithPal
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0xD
- bl DrawTextBorderOuter
- adds r0, r4, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, _0814B6CC @ =gUnknown_841CB63
- movs r1, 0
- str r1, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r0, 0x1
- str r0, [sp, 0xC]
- str r1, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized5
- movs r7, 0
- mov r8, r4
- movs r1, 0xFF
- mov r10, r1
- movs r6, 0
- mov r0, sp
- adds r0, 0x14
- str r0, [sp, 0x2C]
- movs r1, 0xA0
- lsls r1, 21
- mov r9, r1
- add r5, sp, 0x20
-_0814B63E:
- ldr r1, _0814B6D0 @ =gUnknown_846E2D4
- lsls r0, r7, 2
- adds r0, r1
- ldr r2, [r0]
- mov r0, r9
- lsrs r4, r0, 24
- str r4, [sp]
- mov r1, r10
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r0, 0x1
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- mov r0, r8
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized5
- ldr r0, [sp, 0x2C]
- ldm r0!, {r1}
- str r0, [sp, 0x2C]
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0
- bl sub_814B6D4
- movs r0, 0x2
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- movs r3, 0xDE
- subs r3, r0
- lsls r3, 24
- lsrs r3, 24
- str r4, [sp]
- mov r1, r10
- str r1, [sp, 0x4]
- str r6, [sp, 0x8]
- str r6, [sp, 0xC]
- str r6, [sp, 0x10]
- mov r0, r8
- movs r1, 0x2
- adds r2, r5, 0
- bl AddTextPrinterParameterized5
- movs r0, 0xE0
- lsls r0, 20
- add r9, r0
- adds r7, 0x1
- ldr r1, [sp, 0x28]
- lsls r0, r1, 24
- cmp r7, 0x2
- bls _0814B63E
- lsrs r0, 24
- bl PutWindowTilemap
- add sp, 0x30
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814B6C8: .4byte 0x0000021d
-_0814B6CC: .4byte gUnknown_841CB63
-_0814B6D0: .4byte gUnknown_846E2D4
- thumb_func_end sub_814B5C4
-
- thumb_func_start sub_814B6D4
-sub_814B6D4: @ 814B6D4
- push {lr}
- adds r1, r0, 0
- b _0814B6DC
-_0814B6DA:
- adds r1, 0x1
-_0814B6DC:
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0814B6EA
- cmp r0, 0
- bne _0814B6DA
- movs r0, 0xFF
- strb r0, [r1]
-_0814B6EA:
- pop {r0}
- bx r0
- thumb_func_end sub_814B6D4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/pokemon_jump.s b/data/pokemon_jump.s
deleted file mode 100644
index 432f16d0b..000000000
--- a/data/pokemon_jump.s
+++ /dev/null
@@ -1,173 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_846D9E4:: @ gbapal
- .incbin "graphics/link_games/unk_846D9E4.gbapal"
-
-gUnknown_846DA04:: @ gbapal
- .incbin "graphics/link_games/unk_846DA04.gbapal"
-
-gUnknown_846DA24:: @ 4bpp.lz
- .incbin "graphics/link_games/unk_846DA24.4bpp.lz"
-
-gUnknown_846DB44:: @ 4bpp.lz
- .incbin "graphics/link_games/unk_846DB44.4bpp.lz"
-
-gUnknown_846DD18:: @ 4bpp.lz
- .incbin "graphics/link_games/unk_846DD18.4bpp.lz"
-
-gUnknown_846DE48:: @ 4bpp.lz
- .incbin "graphics/link_games/unk_846DE48.4bpp.lz"
-
-gUnknown_846DF44:: @ 4bpp.lz
- .incbin "graphics/link_games/unk_846DF44.4bpp.lz"
-
-gUnknown_846E0B0:: @ 846E0B0
- obj_tiles gUnknown_846DA24, 0x0600, 5
- obj_tiles gUnknown_846DB44, 0x0c00, 6
- obj_tiles gUnknown_846DD18, 0x0600, 7
- obj_tiles gUnknown_846DE48, 0x0600, 8
- obj_tiles gUnknown_846DF44, 0x0200, 10
-
-gUnknown_846E0D8:: @ 846E0D8
- obj_pal gUnknown_846D9E4, 5
- obj_pal gUnknown_846DA04, 6
-
-gUnknown_846E0E8:: @ 846E0E8
- spr_template 0, 0, gUnknown_846E170, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_846E100:: @ 846E100
- .2byte 0x0060, 0x0060, 0x0060, 0x0072, 0x0078, 0x0078, 0x0078, 0x0072, 0x0060, 0x0060, 0x0046, 0x0050, 0x0060, 0x0072, 0x0078, 0x0080
- .2byte 0x0078, 0x0072, 0x0060, 0x0050, 0x0032, 0x0048, 0x0060, 0x0072, 0x0080, 0x0088, 0x0080, 0x0072, 0x0060, 0x0048, 0x002a, 0x0048
- .2byte 0x0060, 0x0072, 0x0080, 0x0088, 0x0080, 0x0072, 0x0060, 0x0048
-
-gUnknown_846E150:: @ 846E150
- .2byte 0x0010, 0x0028, 0x0048, 0x0068, 0x0088, 0x00a8, 0x00c8, 0x00e0
-
-gUnknown_846E160:: @ 846E160
- .4byte gUnknown_846E220
- .4byte gUnknown_846E238
- .4byte gUnknown_846E250
- .4byte gUnknown_846E268
-
-gUnknown_846E170::
- .4byte 0xc0000000, 0x00000800
-
-gUnknown_846E178::
- .4byte 0x80008000, 0x00000800
-
-gUnknown_846E180::
- .4byte 0x80000000, 0x00000800
-
-gUnknown_846E188::
- .4byte 0x80004000, 0x00000800
-
-gUnknown_846E190::
- obj_image_anim_frame 0x0000, 1
- obj_image_anim_end
-
-gUnknown_846E198::
- obj_image_anim_frame 0x0008, 1
- obj_image_anim_end
-
-gUnknown_846E1A0::
- obj_image_anim_frame 0x0010, 1
- obj_image_anim_end
-
-gUnknown_846E1A8::
- obj_image_anim_frame 0x0018, 1
- obj_image_anim_end
-
-gUnknown_846E1B0::
- obj_image_anim_frame 0x0020, 1
- obj_image_anim_end
-
-gUnknown_846E1B8::
- obj_image_anim_frame 0x0028, 1
- obj_image_anim_end
-
-gUnknown_846E1C0::
- obj_image_anim_frame 0x0000, 1
- obj_image_anim_end
-
-gUnknown_846E1C8::
- obj_image_anim_frame 0x0010, 1
- obj_image_anim_end
-
-gUnknown_846E1D0::
- obj_image_anim_frame 0x0020, 1
- obj_image_anim_end
-
-gUnknown_846E1D8::
- obj_image_anim_frame 0x0030, 1
- obj_image_anim_end
-
-gUnknown_846E1E0::
- obj_image_anim_frame 0x0040, 1
- obj_image_anim_end
-
-gUnknown_846E1E8::
- obj_image_anim_frame 0x0050, 1
- obj_image_anim_end
-
-gUnknown_846E1F0::
- .4byte gUnknown_846E190
- .4byte gUnknown_846E198
- .4byte gUnknown_846E1A0
- .4byte gUnknown_846E1A8
- .4byte gUnknown_846E1B0
- .4byte gUnknown_846E1B8
-
-gUnknown_846E208::
- .4byte gUnknown_846E1C0
- .4byte gUnknown_846E1C8
- .4byte gUnknown_846E1D0
- .4byte gUnknown_846E1D8
- .4byte gUnknown_846E1E0
- .4byte gUnknown_846E1E8
-
-gUnknown_846E220::
- spr_template 5, 5, gUnknown_846E178, gUnknown_846E1F0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_846E238::
- spr_template 6, 5, gUnknown_846E180, gUnknown_846E208, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_846E250::
- spr_template 7, 5, gUnknown_846E188, gUnknown_846E1F0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_846E268::
- spr_template 8, 5, gUnknown_846E188, gUnknown_846E1F0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_846E280::
- .4byte 0x40000000, 0x00000400
-
-gUnknown_846E288::
- obj_image_anim_frame 0x0000, 0
- obj_image_anim_end
-
-gUnknown_846E290::
- obj_image_anim_frame 0x0000, 4
- obj_image_anim_frame 0x0004, 4
- obj_image_anim_frame 0x0008, 4
- obj_image_anim_frame 0x000c, 4
- obj_image_anim_loop 1
- obj_image_anim_frame 0x0000, 4
- obj_image_anim_end
-
-gUnknown_846E2AC::
- .4byte gUnknown_846E288
- .4byte gUnknown_846E290
-
-gUnknown_846E2B4:: @ 846E2B4
- spr_template 10, 5, gUnknown_846E280, gUnknown_846E2AC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_846E2CC:: @ 846E2CC
- .byte 0, 1, 1, 28, 9, 15
- .2byte 0x0001
-
-gUnknown_846E2D4:: @ 846E2D4
- .4byte gUnknown_841CB78
- .4byte gUnknown_841CB88
- .4byte gUnknown_841CB94
diff --git a/data/strings.s b/data/strings.s
index 591c7c7f4..1d56d6be7 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -3295,16 +3295,16 @@ gText_SpacePoints2:: @ 841CB52
gText_SpaceTimes3:: @ 841CB5A
.string " time(s)$"
-gUnknown_841CB63:: @ 841CB63
+gText_PkmnJumpRecords:: @ 841CB63
.string "POKéMON JUMP RECORDS$"
-gUnknown_841CB78::
+gText_JumpsInARow::
.string "Jumps in a row:$"
-gUnknown_841CB88::
+gText_BestScore2::
.string "Best score:$"
-gUnknown_841CB94::
+gText_ExcellentsInARow::
.string "EXCELLENTS in a row:$"
gText_AwesomeWonF701F700:: @ 841CBA9
diff --git a/graphics/link_games/unk_846D9E4.pal b/graphics/link_games/pkmnjump_pal1.pal
index 936a2b39f..936a2b39f 100644
--- a/graphics/link_games/unk_846D9E4.pal
+++ b/graphics/link_games/pkmnjump_pal1.pal
diff --git a/graphics/link_games/unk_846DA04.pal b/graphics/link_games/pkmnjump_pal2.pal
index d7fc1394b..d7fc1394b 100644
--- a/graphics/link_games/unk_846DA04.pal
+++ b/graphics/link_games/pkmnjump_pal2.pal
diff --git a/graphics/link_games/unk_846DA24.png b/graphics/link_games/pkmnjump_rope1.png
index 03d2f2778..03d2f2778 100644
--- a/graphics/link_games/unk_846DA24.png
+++ b/graphics/link_games/pkmnjump_rope1.png
Binary files differ
diff --git a/graphics/link_games/unk_846DB44.png b/graphics/link_games/pkmnjump_rope2.png
index 6e397966e..6e397966e 100644
--- a/graphics/link_games/unk_846DB44.png
+++ b/graphics/link_games/pkmnjump_rope2.png
Binary files differ
diff --git a/graphics/link_games/unk_846DD18.png b/graphics/link_games/pkmnjump_rope3.png
index 907169a4c..907169a4c 100644
--- a/graphics/link_games/unk_846DD18.png
+++ b/graphics/link_games/pkmnjump_rope3.png
Binary files differ
diff --git a/graphics/link_games/unk_846DE48.png b/graphics/link_games/pkmnjump_rope4.png
index b238382a0..b238382a0 100644
--- a/graphics/link_games/unk_846DE48.png
+++ b/graphics/link_games/pkmnjump_rope4.png
Binary files differ
diff --git a/graphics/link_games/unk_846DF44.png b/graphics/link_games/pkmnjump_star.png
index 96abce388..96abce388 100644
--- a/graphics/link_games/unk_846DF44.png
+++ b/graphics/link_games/pkmnjump_star.png
Binary files differ
diff --git a/include/global.h b/include/global.h
index 54d8fdec3..b3fdfe231 100644
--- a/include/global.h
+++ b/include/global.h
@@ -148,8 +148,7 @@ struct PokemonJumpResults // possibly used in the game itself?
u16 field2;
u16 excellentsInRow;
u16 field6;
- u16 field8;
- u16 fieldA;
+ u32 field8;
u32 bestJumpScore;
};
diff --git a/include/minigame_countdown.h b/include/minigame_countdown.h
new file mode 100644
index 000000000..930205218
--- /dev/null
+++ b/include/minigame_countdown.h
@@ -0,0 +1,7 @@
+#ifndef GUARD_MINIGAME_COUNTDOWN_H
+#define GUARD_MINIGAME_COUNTDOWN_H
+
+void StartMinigameCountdown(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriority);
+bool32 IsMinigameCountdownRunning(void);
+
+#endif //GUARD_MINIGAME_COUNTDOWN_H
diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h
index 489b04bb4..2e6de14c7 100644
--- a/include/pokemon_jump.h
+++ b/include/pokemon_jump.h
@@ -179,33 +179,12 @@ void sub_814B348(struct PokemonJump2 *, int);
void sub_814AF0C(struct PokemonJump2 *, int);
void sub_814ADCC(struct PokemonJump2 *, struct PokemonJump1_MonInfo *,s16, s16, u8);
void sub_814B240(struct PokemonJump2 *,s16, s16, u8);
-void sub_814AFE8(struct PokemonJump2 *, u8 multiplayerId);
-void sub_814B080(struct PokemonJump2 *, u8 multiplayerId);
-int sub_814B010(struct PokemonJump2 *, int multiplayerId);
+void sub_814AFE8(struct PokemonJump2 *, int multiplayerId);
+void sub_814B080(struct PokemonJump2 *, int multiplayerId);
+bool32 sub_814B010(struct PokemonJump2 *, int multiplayerId);
void sub_814B0A8(struct PokemonJump2 *);
void sub_814B134(struct PokemonJump2 *);
void sub_814B168(struct PokemonJump2 *, int multiplayerId);
-int sub_814B190(struct PokemonJump2 *);
-
-bool32 sub_802EC98(u8 spriteId);
-bool32 sub_802EE30(u8 spriteId);
-u8 sub_802EFA8(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subpriority);
-void Task_ShowPokemonJumpRecords(u8 taskId);
-void TruncateToFirstWordOnly(u8 *str);
-void sub_802CB7C(struct Sprite *sprite);
-void sub_802CC40(struct Sprite *sprite);
-void sub_802CD08(struct Sprite *sprite);
-void sub_802CDD4(struct Sprite *sprite);
-void sub_802E500(u16 windowId, int width);
-void sub_802E6D0(u8 taskId);
-void sub_802E83C(u8 taskId);
-void sub_802E8C8(u8 taskId);
-void sub_802EA50(u8 taskId);
-void sub_802EAB0(u8 taskId);
-void sub_802EB98(u8 taskId);
-void sub_802EDCC(u8 spriteId1, u8 spriteId2, u8 spriteId3);
-void sub_802EE5C(struct Sprite *sprite);
-void sub_802EF50(u16 tileTag, u16 palTag);
-void sub_802EFFC(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subpriority, s16 *spriteId1, s16 *spriteId2);
+bool32 sub_814B190(struct PokemonJump2 *);
#endif // GUARD_POKEMON_JUMP_H
diff --git a/include/strings.h b/include/strings.h
index bbbe34058..8c19ea5cb 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1136,5 +1136,9 @@ extern const u8 gText_FilledStorageSpace2[];
extern const u8 gText_CantHoldMore[];
extern const u8 gText_SpacePoints2[];
extern const u8 gText_SpaceTimes3[];
+extern const u8 gText_JumpsInARow[];
+extern const u8 gText_BestScore2[];
+extern const u8 gText_ExcellentsInARow[];
+extern const u8 gText_PkmnJumpRecords[];
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 0c3619350..d15778e06 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -278,7 +278,8 @@ SECTIONS {
src/pokemon_jump_2.o(.text);
src/pokemon_jump_3.o(.text);
src/pokemon_jump_4.o(.text);
- asm/pokemon_jump_2.o(.text);
+ src/pokemon_jump_5.o(.text);
+ src/pokemon_jump_6.o(.text);
asm/berry_crush.o(.text);
asm/berry_crush_2.o(.text);
asm/berry_crush_3.o(.text);
@@ -571,7 +572,8 @@ SECTIONS {
src/pokemon_jump.o(.rodata);
src/pokemon_jump_2.o(.rodata);
src/pokemon_jump_4.o(.rodata);
- data/pokemon_jump.o(.rodata);
+ src/pokemon_jump_5.o(.rodata);
+ src/pokemon_jump_6.o(.rodata);
data/berry_crush.o(.rodata);
src/wireless_communication_status_screen.o(.rodata);
src/braille_text.o(.rodata);
diff --git a/src/minigame_countdown.c b/src/minigame_countdown.c
index d100caea1..5911676bb 100644
--- a/src/minigame_countdown.c
+++ b/src/minigame_countdown.c
@@ -34,7 +34,7 @@ void StartMinigameCountdown(u16 tilesTag, u16 palTag, s16 x, s16 y, u8 subpriori
gTasks[taskId].tSubpriority = subpriority;
}
-bool8 IsMinigameCountdownRunning(void)
+bool32 IsMinigameCountdownRunning(void)
{
return FuncIsActiveTask(Task_MinigameCountdown);
}
diff --git a/src/pokemon_jump_4.c b/src/pokemon_jump_4.c
index 134ac21a1..07d410861 100644
--- a/src/pokemon_jump_4.c
+++ b/src/pokemon_jump_4.c
@@ -165,7 +165,7 @@ void sub_8149D40(int arg0)
{
int i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_846D8FC); i++)
+ for (i = 0; i < NELEMS(gUnknown_846D8FC); i++)
{
if (gUnknown_846D8FC[i].id == arg0)
sub_8149D80(gUnknown_846D8FC[i].func);
@@ -200,7 +200,7 @@ static void sub_8149DC8(void)
{
case 0:
ResetBgsAndClearDma3BusyFlags(FALSE);
- InitBgsFromTemplates(0, gUnknown_846D8D4, ARRAY_COUNT(gUnknown_846D8D4));
+ InitBgsFromTemplates(0, gUnknown_846D8D4, NELEMS(gUnknown_846D8D4));
InitWindows(gUnknown_846D8E4);
ResetBgPositions();
ResetTempTileDataBuffers();
diff --git a/src/pokemon_jump_5.c b/src/pokemon_jump_5.c
new file mode 100644
index 000000000..d96c0c00b
--- /dev/null
+++ b/src/pokemon_jump_5.c
@@ -0,0 +1,637 @@
+#include "global.h"
+#include "gflib.h"
+#include "decompress.h"
+#include "minigame_countdown.h"
+#include "pokemon_jump.h"
+#include "data.h"
+#include "trig.h"
+#include "constants/songs.h"
+
+static void sub_814AF74(struct Sprite *sprite);
+static void sub_814B038(struct Sprite *sprite);
+static void sub_814B100(struct Sprite *sprite);
+static void sub_814B1CC(struct Sprite *sprite);
+
+static const u16 gPkmnJumpPal1[] = INCBIN_U16("graphics/link_games/pkmnjump_pal1.gbapal");
+static const u16 gPkmnJumpPal2[] = INCBIN_U16("graphics/link_games/pkmnjump_pal2.gbapal");
+
+static const u32 gPkmnJumpRopeGfx1[] = INCBIN_U32("graphics/link_games/pkmnjump_rope1.4bpp.lz");
+static const u32 gPkmnJumpRopeGfx2[] = INCBIN_U32("graphics/link_games/pkmnjump_rope2.4bpp.lz");
+static const u32 gPkmnJumpRopeGfx3[] = INCBIN_U32("graphics/link_games/pkmnjump_rope3.4bpp.lz");
+static const u32 gPkmnJumpRopeGfx4[] = INCBIN_U32("graphics/link_games/pkmnjump_rope4.4bpp.lz");
+
+static const u32 gPkmnJumpStarGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_star.4bpp.lz");
+
+static const struct CompressedSpriteSheet gUnknown_846E0B0[] =
+{
+ {gPkmnJumpRopeGfx1, 0x600, 5},
+ {gPkmnJumpRopeGfx2, 0x0c00, 6},
+ {gPkmnJumpRopeGfx3, 0x0600, 7},
+ {gPkmnJumpRopeGfx4, 0x0600, 8},
+ {gPkmnJumpStarGfx, 0x0200, 10},
+};
+
+static const struct SpritePalette gUnknown_846E0D8[] =
+{
+ {gPkmnJumpPal1, 5},
+ {gPkmnJumpPal2, 6},
+};
+
+// Forward declarations.
+static const struct OamData gUnknown_846E170;
+static const struct SpriteTemplate gUnknown_846E220;
+static const struct SpriteTemplate gUnknown_846E238;
+static const struct SpriteTemplate gUnknown_846E250;
+static const struct SpriteTemplate gUnknown_846E268;
+
+static const struct SpriteTemplate gUnknown_846E0E8 =
+{
+ .tileTag = 0,
+ .paletteTag = 0,
+ .oam = &gUnknown_846E170,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const s16 gUnknown_846E100[][10] =
+{
+ {0x60, 0x60, 0x60, 0x72, 0x78, 0x78, 0x78, 0x72, 0x60, 0x60},
+ {0x46, 0x50, 0x60, 0x72, 0x78, 0x80, 0x78, 0x72, 0x60, 0x50},
+ {0x32, 0x48, 0x60, 0x72, 0x80, 0x88, 0x80, 0x72, 0x60, 0x48},
+ {0x2a, 0x48, 0x60, 0x72, 0x80, 0x88, 0x80, 0x72, 0x60, 0x48},
+};
+
+static const s16 gUnknown_846E150[] = {0x10, 0x28, 0x48, 0x68, 0x88, 0xa8, 0xc8, 0xe0};
+
+static const struct SpriteTemplate *const gUnknown_846E160[] =
+{
+ &gUnknown_846E220,
+ &gUnknown_846E238,
+ &gUnknown_846E250,
+ &gUnknown_846E268,
+};
+
+static const struct OamData gUnknown_846E170 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(64x64),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(64x64),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gUnknown_846E178 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x32),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gUnknown_846E180 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x32),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x32),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const struct OamData gUnknown_846E188 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(32x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(32x16),
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_82FBEE8[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBEF0[] =
+{
+ ANIMCMD_FRAME(8, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBEF8[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF00[] =
+{
+ ANIMCMD_FRAME(24, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF08[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF10[] =
+{
+ ANIMCMD_FRAME(40, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF18[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF20[] =
+{
+ ANIMCMD_FRAME(16, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF28[] =
+{
+ ANIMCMD_FRAME(32, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF30[] =
+{
+ ANIMCMD_FRAME(48, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF38[] =
+{
+ ANIMCMD_FRAME(64, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBF40[] =
+{
+ ANIMCMD_FRAME(80, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FBF48[] =
+{
+ sSpriteAnim_82FBEE8,
+ sSpriteAnim_82FBEF0,
+ sSpriteAnim_82FBEF8,
+ sSpriteAnim_82FBF00,
+ sSpriteAnim_82FBF08,
+ sSpriteAnim_82FBF10
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FBF60[] =
+{
+ sSpriteAnim_82FBF18,
+ sSpriteAnim_82FBF20,
+ sSpriteAnim_82FBF28,
+ sSpriteAnim_82FBF30,
+ sSpriteAnim_82FBF38,
+ sSpriteAnim_82FBF40
+};
+
+static const struct SpriteTemplate gUnknown_846E220 =
+{
+ .tileTag = 5,
+ .paletteTag = 5,
+ .oam = &gUnknown_846E178,
+ .anims = sSpriteAnimTable_82FBF48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct SpriteTemplate gUnknown_846E238 =
+{
+ .tileTag = 6,
+ .paletteTag = 5,
+ .oam = &gUnknown_846E180,
+ .anims = sSpriteAnimTable_82FBF60,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct SpriteTemplate gUnknown_846E250 =
+{
+ .tileTag = 7,
+ .paletteTag = 5,
+ .oam = &gUnknown_846E188,
+ .anims = sSpriteAnimTable_82FBF48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct SpriteTemplate gUnknown_846E268 =
+{
+ .tileTag = 8,
+ .paletteTag = 5,
+ .oam = &gUnknown_846E188,
+ .anims = sSpriteAnimTable_82FBF48,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static const struct OamData sOamData_82FBFD8 =
+{
+ .y = 0,
+ .affineMode = ST_OAM_AFFINE_OFF,
+ .objMode = ST_OAM_OBJ_NORMAL,
+ .mosaic = 0,
+ .bpp = ST_OAM_4BPP,
+ .shape = SPRITE_SHAPE(16x16),
+ .x = 0,
+ .matrixNum = 0,
+ .size = SPRITE_SIZE(16x16),
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0
+};
+
+static const union AnimCmd sSpriteAnim_82FBFE0[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82FBFE8[] =
+{
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(0, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82FC004[] =
+{
+ sSpriteAnim_82FBFE0,
+ sSpriteAnim_82FBFE8
+};
+
+static const struct SpriteTemplate gUnknown_846E2B4 =
+{
+ .tileTag = 10,
+ .paletteTag = 5,
+ .oam = &sOamData_82FBFD8,
+ .anims = sSpriteAnimTable_82FC004,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+void sub_814AD6C(struct PokemonJump2 *arg0)
+{
+ int i;
+
+ for (i = 0; i < NELEMS(gUnknown_846E0B0); i++)
+ LoadCompressedSpriteSheet(&gUnknown_846E0B0[i]);
+
+ for (i = 0; i < NELEMS(gUnknown_846E0D8); i++)
+ LoadSpritePalette(&gUnknown_846E0D8[i]);
+
+ arg0->unkE = IndexOfSpritePaletteTag(5);
+ arg0->unkF = IndexOfSpritePaletteTag(6);
+}
+
+static void sub_814ADB4(struct Sprite *sprite)
+{
+ int i;
+ for (i = 0; i < 8; i++)
+ sprite->data[i] = 0;
+}
+
+void sub_814ADCC(struct PokemonJump2 *arg0, struct PokemonJump1_MonInfo *jumpMon, s16 x, s16 y, u8 multiplayerId)
+{
+ struct SpriteTemplate spriteTemplate;
+ struct SpriteSheet spriteSheet;
+ struct CompressedSpritePalette spritePalette;
+ u8 *buffer;
+ u8 *unusedBuffer;
+ u8 subpriority;
+ u8 spriteId;
+
+ spriteTemplate = gUnknown_846E0E8;
+ buffer = Alloc(0x2000);
+ unusedBuffer = Alloc(0x800);
+ if (multiplayerId == sub_81499B4())
+ subpriority = 3;
+ else
+ subpriority = multiplayerId + 4;
+
+ if (buffer && unusedBuffer)
+ {
+ HandleLoadSpecialPokePic(
+ &gMonFrontPicTable[jumpMon->species],
+ buffer,
+ jumpMon->species,
+ jumpMon->personality);
+
+ spriteSheet.data = buffer;
+ spriteSheet.tag = multiplayerId;
+ spriteSheet.size = 0x800;
+ LoadSpriteSheet(&spriteSheet);
+
+ spritePalette.data = GetMonSpritePalFromSpeciesAndPersonality(jumpMon->species, jumpMon->otId, jumpMon->personality);
+ spritePalette.tag = multiplayerId;
+ LoadCompressedSpritePalette(&spritePalette);
+
+ Free(buffer);
+ Free(unusedBuffer);
+
+ spriteTemplate.tileTag += multiplayerId;
+ spriteTemplate.paletteTag += multiplayerId;
+ spriteId = CreateSprite(&spriteTemplate, x, y, subpriority);
+ if (spriteId != MAX_SPRITES)
+ {
+ arg0->unk81A8[multiplayerId] = &gSprites[spriteId];
+ arg0->unk81FC[multiplayerId] = subpriority;
+ return;
+ }
+ }
+
+ arg0->unk81A8[multiplayerId] = NULL;
+}
+
+void sub_814AF0C(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ sub_814ADB4(arg0->unk81BC[multiplayerId]);
+ arg0->unk81BC[multiplayerId]->data[7] = arg0->unk81A8[multiplayerId] - gSprites;
+ arg0->unk81BC[multiplayerId]->invisible = 0;
+ arg0->unk81BC[multiplayerId]->pos1.y = 96;
+ arg0->unk81BC[multiplayerId]->callback = sub_814AF74;
+ StartSpriteAnim(arg0->unk81BC[multiplayerId], 1);
+}
+
+static void sub_814AF74(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (sprite->animEnded)
+ {
+ sprite->invisible = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ case 1:
+ sprite->pos1.y--;
+ sprite->data[1]++;
+ if (sprite->pos1.y <= 72)
+ {
+ sprite->pos1.y = 72;
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (++sprite->data[1] >= 48)
+ {
+ sprite->invisible = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ }
+}
+
+void sub_814AFE8(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ arg0->unk81A8[multiplayerId]->callback = sub_814B038;
+ arg0->unk81A8[multiplayerId]->pos2.y = 0;
+ sub_814ADB4(arg0->unk81A8[multiplayerId]);
+}
+
+bool32 sub_814B010(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ return arg0->unk81A8[multiplayerId]->callback == sub_814B038;
+}
+
+static void sub_814B038(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 1)
+ {
+ if (++sprite->data[2] & 1)
+ sprite->pos2.y = 2;
+ else
+ sprite->pos2.y = -2;
+
+ sprite->data[1] = 0;
+ }
+
+ if (sprite->data[2] > 12)
+ {
+ sprite->pos2.y = 0;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+void sub_814B080(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ sub_814ADB4(arg0->unk81A8[multiplayerId]);
+ arg0->unk81A8[multiplayerId]->callback = sub_814B100;
+}
+
+void sub_814B0A8(struct PokemonJump2 *arg0)
+{
+ int i;
+ u16 numPlayers = sub_81499A4();
+ for (i = 0; i < numPlayers; i++)
+ {
+ if (arg0->unk81A8[i]->callback == sub_814B100)
+ {
+ arg0->unk81A8[i]->invisible = 0;
+ arg0->unk81A8[i]->callback = SpriteCallbackDummy;
+ arg0->unk81A8[i]->subpriority = 10;
+ }
+ }
+}
+
+static void sub_814B100(struct Sprite *sprite)
+{
+ if (++sprite->data[0] > 3)
+ {
+ sprite->data[0] = 0;
+ sprite->invisible ^= 1;
+ }
+}
+
+void sub_814B134(struct PokemonJump2 *arg0)
+{
+ int i;
+ u16 numPlayers = sub_81499A4();
+ for (i = 0; i < numPlayers; i++)
+ arg0->unk81A8[i]->subpriority = arg0->unk81FC[i];
+}
+
+void sub_814B168(struct PokemonJump2 *arg0, int multiplayerId)
+{
+ sub_814ADB4(arg0->unk81A8[multiplayerId]);
+ arg0->unk81A8[multiplayerId]->callback = sub_814B1CC;
+}
+
+bool32 sub_814B190(struct PokemonJump2 *arg0)
+{
+ int i;
+ u16 numPlayers = sub_81499A4();
+ for (i = 0; i < numPlayers; i++)
+ {
+ if (arg0->unk81A8[i]->callback == sub_814B1CC)
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void sub_814B1CC(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ PlaySE(SE_JITE_PYOKO);
+ sprite->data[1] = 0;
+ sprite->data[0]++;
+ // fall through
+ case 1:
+ sprite->data[1] += 4;
+ if (sprite->data[1] > 0x7F)
+ sprite->data[1] = 0;
+
+ sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3);
+ if (sprite->data[1] == 0)
+ {
+ if (++sprite->data[2] < 2)
+ sprite->data[0] = 0;
+ else
+ sprite->callback = SpriteCallbackDummy;
+ }
+ break;
+ }
+}
+
+void sub_814B240(struct PokemonJump2 *arg0, s16 x, s16 y, u8 multiplayerId)
+{
+ u8 spriteId = CreateSprite(&gUnknown_846E2B4, x, y, 1);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].invisible = 1;
+ arg0->unk81BC[multiplayerId] = &gSprites[spriteId];
+ }
+}
+
+void sub_814B294(struct PokemonJump2 *arg0)
+{
+ int i;
+ int count;
+ u8 spriteId;
+
+ count = 0;
+ for (i = 0; i < 4; i++)
+ {
+ spriteId = CreateSprite(gUnknown_846E160[i], gUnknown_846E150[count], gUnknown_846E100[i][0], 2);
+ arg0->unk81D0[count] = &gSprites[spriteId];
+ count++;
+ }
+
+ for (i = 3; i >= 0; i--)
+ {
+ spriteId = CreateSprite(gUnknown_846E160[i], gUnknown_846E150[count], gUnknown_846E100[i][0], 2);
+ arg0->unk81D0[count] = &gSprites[spriteId];
+ arg0->unk81D0[count]->hFlip = 1;
+ count++;
+ }
+}
+
+void sub_814B348(struct PokemonJump2 *arg0, int arg1)
+{
+ int i, count, palNum;
+ int priority;
+
+ if (arg1 > 5)
+ {
+ arg1 = 10 - arg1;
+ priority = 3;
+ palNum = arg0->unkF;
+ }
+ else
+ {
+ priority = 2;
+ palNum = arg0->unkE;
+ }
+
+ count = 0;
+ for (i = 0; i < 4; i++)
+ {
+ arg0->unk81D0[count]->pos1.y = gUnknown_846E100[i][arg1];
+ arg0->unk81D0[count]->oam.priority = priority;
+ arg0->unk81D0[count]->oam.paletteNum = palNum;
+ StartSpriteAnim(arg0->unk81D0[count], arg1);
+ count++;
+ }
+
+ for (i = 3; i >= 0; i--)
+ {
+ arg0->unk81D0[count]->pos1.y = gUnknown_846E100[i][arg1];
+ arg0->unk81D0[count]->oam.priority = priority;
+ arg0->unk81D0[count]->oam.paletteNum = palNum;
+ StartSpriteAnim(arg0->unk81D0[count], arg1);
+ count++;
+ }
+}
+
+void sub_814B43C(struct PokemonJump2 *arg0)
+{
+ StartMinigameCountdown(9, 7, 120, 80, 0);
+ sub_814B134(arg0);
+}
+
+bool32 sub_814B460(void)
+{
+ return IsMinigameCountdownRunning();
+}
diff --git a/src/pokemon_jump_6.c b/src/pokemon_jump_6.c
new file mode 100644
index 000000000..f9e3acbd6
--- /dev/null
+++ b/src/pokemon_jump_6.c
@@ -0,0 +1,141 @@
+#include "global.h"
+#include "gflib.h"
+#include "menu.h"
+#include "pokemon_jump.h"
+#include "script.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+
+static void Task_ShowPokemonJumpRecords(u8 taskId);
+static void TruncateToFirstWordOnly(u8 *str);
+static void sub_814B5C4(u16 windowId);
+
+static struct PokemonJumpResults *sub_814B46C(void)
+{
+ return &gSaveBlock2Ptr->pokeJump;
+}
+
+void ResetPokeJumpResults(void)
+{
+ struct PokemonJumpResults *pokeJump = sub_814B46C();
+ pokeJump->jumpsInRow = 0;
+ pokeJump->bestJumpScore = 0;
+ pokeJump->excellentsInRow = 0;
+ pokeJump->field6 = 0;
+ pokeJump->field8 = 0;
+ pokeJump->field2 = 0;
+}
+
+bool32 sub_814B494(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow)
+{
+ struct PokemonJumpResults *pokeJump = sub_814B46C();
+ bool32 ret = FALSE;
+
+ if (pokeJump->bestJumpScore < jumpScore && jumpScore <= 99990)
+ pokeJump->bestJumpScore = jumpScore, ret = TRUE;
+ if (pokeJump->jumpsInRow < jumpsInRow && jumpsInRow <= 9999)
+ pokeJump->jumpsInRow = jumpsInRow, ret = TRUE;
+ if (pokeJump->excellentsInRow < excellentsInRow && excellentsInRow <= 9999)
+ pokeJump->excellentsInRow = excellentsInRow, ret = TRUE;
+
+ return ret;
+}
+
+void sub_814B4E8(void)
+{
+ struct PokemonJumpResults *pokeJump = sub_814B46C();
+ if (pokeJump->field6 < 9999)
+ pokeJump->field6++;
+}
+
+void ShowPokemonJumpRecords(void)
+{
+ u8 taskId = CreateTask(Task_ShowPokemonJumpRecords, 0);
+ Task_ShowPokemonJumpRecords(taskId);
+}
+
+static const struct WindowTemplate gUnknown_846E2CC =
+{
+ .bg = 0,
+ .tilemapLeft = 1,
+ .tilemapTop = 1,
+ .width = 28,
+ .height = 9,
+ .paletteNum = 15,
+ .baseBlock = 0x1,
+};
+
+static const u8 *const gUnknown_846E2D4[] = {gText_JumpsInARow, gText_BestScore2, gText_ExcellentsInARow};
+
+static void Task_ShowPokemonJumpRecords(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[1] = AddWindow(&gUnknown_846E2CC);
+ sub_814B5C4(data[1]);
+ CopyWindowToVram(data[1], 3);
+ data[0]++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ data[0]++;
+ break;
+ case 2:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ rbox_fill_rectangle(data[1]);
+ CopyWindowToVram(data[1], 1);
+ data[0]++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ RemoveWindow(data[1]);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ break;
+ }
+}
+
+static void sub_814B5C4(u16 windowId)
+{
+ int i, x;
+ int results[3];
+ struct PokemonJumpResults *pokeJump = sub_814B46C();
+ u8 strbuf[8];
+ results[0] = pokeJump->jumpsInRow;
+ results[1] = pokeJump->bestJumpScore;
+ results[2] = pokeJump->excellentsInRow;
+
+ TextWindow_SetStdFrame0_WithPal(windowId, 0x21D, 0xD0);
+ DrawTextBorderOuter(windowId, 0x21D, 0xD);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ AddTextPrinterParameterized5(windowId, 2, gText_PkmnJumpRecords, 0, 0, TEXT_SPEED_FF, NULL, 1, 0);
+ for (i = 0; i < NELEMS(gUnknown_846E2D4); i++)
+ {
+ AddTextPrinterParameterized5(windowId, 2, gUnknown_846E2D4[i], 0, 20 + (i * 14), TEXT_SPEED_FF, NULL, 1, 0);
+ ConvertIntToDecimalStringN(strbuf, results[i], STR_CONV_MODE_LEFT_ALIGN, 5);
+ TruncateToFirstWordOnly(strbuf);
+ x = 0xDE - GetStringWidth(2, strbuf, 0);
+ AddTextPrinterParameterized5(windowId, 2, strbuf, x, 20 + (i * 14), TEXT_SPEED_FF, NULL, 0, 0);
+ }
+ PutWindowTilemap(windowId);
+}
+
+static void TruncateToFirstWordOnly(u8 *str)
+{
+ for (;*str != EOS; str++)
+ {
+ if (*str == CHAR_SPACE)
+ {
+ *str = EOS;
+ break;
+ }
+ }
+}