diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-18 16:39:44 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-18 16:39:44 -0500 |
commit | 5c530e133042af0dfb2341b0dcf18efc9a37aa95 (patch) | |
tree | 681258743049bcbf75c909c8409d72a366ca6ffa | |
parent | f65e07fb1fac3b8092f8ec29c2c9b42fcb80fa60 (diff) |
Finish porting pokemon_jump from Emerald
-rw-r--r-- | asm/pokemon_jump_2.s | 1291 | ||||
-rw-r--r-- | data/pokemon_jump.s | 173 | ||||
-rw-r--r-- | data/strings.s | 8 | ||||
-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) | bin | 284 -> 284 bytes | |||
-rw-r--r-- | graphics/link_games/pkmnjump_rope2.png (renamed from graphics/link_games/unk_846DB44.png) | bin | 322 -> 322 bytes | |||
-rw-r--r-- | graphics/link_games/pkmnjump_rope3.png (renamed from graphics/link_games/unk_846DD18.png) | bin | 338 -> 338 bytes | |||
-rw-r--r-- | graphics/link_games/pkmnjump_rope4.png (renamed from graphics/link_games/unk_846DE48.png) | bin | 256 -> 256 bytes | |||
-rw-r--r-- | graphics/link_games/pkmnjump_star.png (renamed from graphics/link_games/unk_846DF44.png) | bin | 335 -> 335 bytes | |||
-rw-r--r-- | include/global.h | 3 | ||||
-rw-r--r-- | include/minigame_countdown.h | 7 | ||||
-rw-r--r-- | include/pokemon_jump.h | 29 | ||||
-rw-r--r-- | include/strings.h | 4 | ||||
-rw-r--r-- | ld_script.txt | 6 | ||||
-rw-r--r-- | src/minigame_countdown.c | 2 | ||||
-rw-r--r-- | src/pokemon_jump_4.c | 4 | ||||
-rw-r--r-- | src/pokemon_jump_5.c | 637 | ||||
-rw-r--r-- | src/pokemon_jump_6.c | 141 |
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 Binary files differindex 03d2f2778..03d2f2778 100644 --- a/graphics/link_games/unk_846DA24.png +++ b/graphics/link_games/pkmnjump_rope1.png diff --git a/graphics/link_games/unk_846DB44.png b/graphics/link_games/pkmnjump_rope2.png Binary files differindex 6e397966e..6e397966e 100644 --- a/graphics/link_games/unk_846DB44.png +++ b/graphics/link_games/pkmnjump_rope2.png diff --git a/graphics/link_games/unk_846DD18.png b/graphics/link_games/pkmnjump_rope3.png Binary files differindex 907169a4c..907169a4c 100644 --- a/graphics/link_games/unk_846DD18.png +++ b/graphics/link_games/pkmnjump_rope3.png diff --git a/graphics/link_games/unk_846DE48.png b/graphics/link_games/pkmnjump_rope4.png Binary files differindex b238382a0..b238382a0 100644 --- a/graphics/link_games/unk_846DE48.png +++ b/graphics/link_games/pkmnjump_rope4.png diff --git a/graphics/link_games/unk_846DF44.png b/graphics/link_games/pkmnjump_star.png Binary files differindex 96abce388..96abce388 100644 --- a/graphics/link_games/unk_846DF44.png +++ b/graphics/link_games/pkmnjump_star.png 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; + } + } +} |