summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-02-18 15:52:45 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-02-18 15:52:45 -0500
commitf65e07fb1fac3b8092f8ec29c2c9b42fcb80fa60 (patch)
treea6e679f5d8cd457c6fe09ee55733f9dccae84527
parentaf6f99b9314f75150d9a5681c17ef5f95a9b1269 (diff)
pokemon_jump_3,4
-rw-r--r--asm/pokemon_jump_2.s2484
-rw-r--r--data/pokemon_jump.s143
-rw-r--r--data/strings.s18
-rw-r--r--graphics/link_games/pkmnjump_bg.bin (renamed from graphics/link_games/unk_846BA00.bin)bin1280 -> 1280 bytes
-rw-r--r--graphics/link_games/pkmnjump_bg.pal (renamed from graphics/link_games/unk_846B7B4.pal)0
-rw-r--r--graphics/link_games/pkmnjump_bg.png (renamed from graphics/link_games/unk_846B7D4.png)bin582 -> 582 bytes
-rw-r--r--graphics/link_games/pkmnjump_pal3.pal (renamed from graphics/link_games/unk_846B794.pal)0
-rw-r--r--graphics/link_games/pkmnjump_results.bin (renamed from graphics/link_games/unk_846D3A8.bin)bin8192 -> 8192 bytes
-rw-r--r--graphics/link_games/pkmnjump_results.pal (renamed from graphics/link_games/unk_846C8D8.pal)0
-rw-r--r--graphics/link_games/pkmnjump_results.png (renamed from graphics/link_games/unk_846C8F8.png)bin2401 -> 2401 bytes
-rw-r--r--graphics/link_games/pkmnjump_venusaur.bin (renamed from graphics/link_games/unk_846C520.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/link_games/pkmnjump_venusaur.pal (renamed from graphics/link_games/unk_846BBB0.pal)0
-rw-r--r--graphics/link_games/pkmnjump_venusaur.png (renamed from graphics/link_games/unk_846BBD0.png)bin2082 -> 2082 bytes
-rw-r--r--include/digit_obj_util.h5
-rw-r--r--include/pokemon_jump.h38
-rw-r--r--include/strings.h11
-rw-r--r--ld_script.txt3
-rw-r--r--src/pokemon_jump_2.c62
-rw-r--r--src/pokemon_jump_3.c167
-rw-r--r--src/pokemon_jump_4.c922
-rw-r--r--sym_ewram.txt4
21 files changed, 1156 insertions, 2701 deletions
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index 4aef40b7e..bd6f5cdcc 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -5,2490 +5,6 @@
.text
- thumb_func_start sub_8149A6C
-sub_8149A6C: @ 8149A6C
- push {lr}
- sub sp, 0xC
- mov r2, sp
- movs r1, 0x1
- strb r1, [r2]
- ldrh r1, [r0]
- strh r1, [r2, 0x2]
- ldr r1, [r0, 0x4]
- str r1, [sp, 0x8]
- ldr r0, [r0, 0x8]
- str r0, [sp, 0x4]
- mov r0, sp
- bl RfuPrepareSend0x2f00
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_8149A6C
-
- thumb_func_start sub_8149A90
-sub_8149A90: @ 8149A90
- push {r4,lr}
- sub sp, 0xC
- adds r4, r1, 0
- ldr r3, _08149AC4 @ =gRecvCmds
- lsls r2, r0, 4
- adds r0, r2, r3
- ldrh r1, [r0]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- movs r1, 0xBC
- lsls r1, 6
- cmp r0, r1
- bne _08149AC0
- adds r1, r3, 0x2
- adds r1, r2, r1
- mov r0, sp
- movs r2, 0xC
- bl memcpy
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08149AC8
-_08149AC0:
- movs r0, 0
- b _08149AD8
- .align 2, 0
-_08149AC4: .4byte gRecvCmds
-_08149AC8:
- mov r0, sp
- ldrh r0, [r0, 0x2]
- strh r0, [r4]
- ldr r0, [sp, 0x8]
- str r0, [r4, 0x4]
- ldr r0, [sp, 0x4]
- str r0, [r4, 0x8]
- movs r0, 0x1
-_08149AD8:
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8149A90
-
- thumb_func_start sub_8149AE0
-sub_8149AE0: @ 8149AE0
- push {lr}
- sub sp, 0xC
- mov r2, sp
- movs r1, 0x2
- strb r1, [r2]
- str r0, [sp, 0x4]
- mov r0, sp
- bl RfuPrepareSend0x2f00
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_8149AE0
-
- thumb_func_start sub_8149AF8
-sub_8149AF8: @ 8149AF8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- mov r3, sp
- movs r2, 0x3
- strb r2, [r3]
- ldr r3, [r1, 0x8]
- lsls r3, 15
- ldr r2, [sp, 0x8]
- ldr r4, _08149B74 @ =0x00007fff
- mov r8, r4
- ands r2, r4
- orrs r2, r3
- str r2, [sp, 0x8]
- mov r6, sp
- ldrb r2, [r1, 0x1]
- movs r5, 0x1F
- adds r3, r5, 0
- ands r3, r2
- ldrb r4, [r6, 0x3]
- movs r2, 0x20
- negs r2, r2
- ands r2, r4
- orrs r2, r3
- strb r2, [r6, 0x3]
- mov r3, sp
- ldrb r2, [r1]
- strb r2, [r3, 0x1]
- ldrh r2, [r1, 0x2]
- strh r2, [r3, 0x6]
- mov r4, sp
- ldrh r2, [r1, 0x4]
- mov r1, r8
- ands r2, r1
- ldrh r3, [r4, 0x8]
- ldr r1, _08149B78 @ =0xffff8000
- ands r1, r3
- orrs r1, r2
- strh r1, [r4, 0x8]
- mov r2, sp
- ldrh r1, [r0, 0x10]
- strb r1, [r2, 0x2]
- mov r3, sp
- ldr r1, [r0, 0x14]
- lsls r1, 5
- ldrb r2, [r3, 0x3]
- ands r5, r2
- orrs r5, r1
- strb r5, [r3, 0x3]
- mov r1, sp
- ldrh r0, [r0, 0xE]
- strh r0, [r1, 0x4]
- mov r0, sp
- bl RfuPrepareSend0x2f00
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149B74: .4byte 0x00007fff
-_08149B78: .4byte 0xffff8000
- thumb_func_end sub_8149AF8
-
- thumb_func_start sub_8149B7C
-sub_8149B7C: @ 8149B7C
- push {r4,r5,lr}
- sub sp, 0xC
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r2, _08149BE4 @ =gRecvCmds
- ldrh r0, [r2]
- movs r1, 0xFF
- lsls r1, 8
- ands r1, r0
- movs r0, 0xBC
- lsls r0, 6
- cmp r1, r0
- bne _08149BE8
- adds r1, r2, 0x2
- mov r0, sp
- movs r2, 0xC
- bl memcpy
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _08149BE8
- ldr r0, [sp, 0x8]
- lsrs r0, 15
- str r0, [r4, 0x8]
- mov r0, sp
- ldrb r1, [r0, 0x3]
- lsls r0, r1, 27
- lsrs r0, 27
- strb r0, [r4, 0x1]
- mov r0, sp
- ldrb r0, [r0, 0x1]
- strb r0, [r4]
- mov r0, sp
- ldrh r0, [r0, 0x6]
- strh r0, [r4, 0x2]
- mov r0, sp
- ldrh r0, [r0, 0x8]
- lsls r0, 17
- lsrs r0, 17
- strh r0, [r4, 0x4]
- mov r0, sp
- ldrb r0, [r0, 0x2]
- strh r0, [r5, 0x10]
- lsls r1, 24
- lsrs r1, 29
- str r1, [r5, 0x14]
- mov r0, sp
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0xE]
- movs r0, 0x1
- b _08149BEA
- .align 2, 0
-_08149BE4: .4byte gRecvCmds
-_08149BE8:
- movs r0, 0
-_08149BEA:
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8149B7C
-
- thumb_func_start sub_8149BF4
-sub_8149BF4: @ 8149BF4
- push {r4,lr}
- sub sp, 0xC
- mov r4, sp
- movs r3, 0x4
- strb r3, [r4]
- ldrh r3, [r0, 0x10]
- strb r3, [r4, 0x1]
- ldr r3, [r0, 0x14]
- strb r3, [r4, 0x2]
- ldr r3, [r0, 0x18]
- strb r3, [r4, 0x3]
- mov r3, sp
- ldrh r0, [r0, 0xE]
- strh r0, [r3, 0x4]
- mov r0, sp
- strb r1, [r0, 0x6]
- strh r2, [r0, 0x8]
- bl RfuPrepareSend0x2f00
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149BF4
-
- thumb_func_start sub_8149C24
-sub_8149C24: @ 8149C24
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r3, _08149C80 @ =gRecvCmds
- lsls r2, r1, 4
- adds r0, r2, r3
- ldrh r1, [r0]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- movs r1, 0xBC
- lsls r1, 6
- cmp r0, r1
- bne _08149C84
- adds r1, r3, 0x2
- adds r1, r2, r1
- mov r0, sp
- movs r2, 0xC
- bl memcpy
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _08149C84
- mov r0, sp
- ldrb r0, [r0, 0x1]
- strh r0, [r4, 0x10]
- mov r0, sp
- ldrb r0, [r0, 0x2]
- str r0, [r4, 0x14]
- mov r0, sp
- ldrb r0, [r0, 0x3]
- str r0, [r4, 0x18]
- mov r0, sp
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0xE]
- mov r0, sp
- ldrb r0, [r0, 0x6]
- strb r0, [r5]
- mov r0, sp
- ldrh r0, [r0, 0x8]
- strh r0, [r6]
- movs r0, 0x1
- b _08149C86
- .align 2, 0
-_08149C80: .4byte gRecvCmds
-_08149C84:
- movs r0, 0
-_08149C86:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8149C24
-
- thumb_func_start sub_8149C90
-sub_8149C90: @ 8149C90
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r3, _08149CDC @ =gRecvCmds
- lsls r2, r1, 4
- adds r0, r2, r3
- ldrh r1, [r0]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- movs r1, 0xBC
- lsls r1, 6
- cmp r0, r1
- bne _08149CE0
- adds r1, r3, 0x2
- adds r1, r2, r1
- mov r0, sp
- movs r2, 0xC
- bl memcpy
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0x4
- bne _08149CE0
- mov r0, sp
- ldrb r0, [r0, 0x1]
- strh r0, [r4, 0x10]
- mov r0, sp
- ldrb r0, [r0, 0x2]
- str r0, [r4, 0x14]
- mov r0, sp
- ldrb r0, [r0, 0x3]
- str r0, [r4, 0x18]
- mov r0, sp
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0xE]
- movs r0, 0x1
- b _08149CE2
- .align 2, 0
-_08149CDC: .4byte gRecvCmds
-_08149CE0:
- movs r0, 0
-_08149CE2:
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8149C90
-
- thumb_func_start sub_8149CEC
-sub_8149CEC: @ 8149CEC
- push {r4,lr}
- ldr r4, _08149D18 @ =gUnknown_203F3D8
- str r0, [r4]
- bl sub_8149D34
- ldr r0, _08149D1C @ =sub_8149DA4
- movs r1, 0x3
- bl CreateTask
- ldr r1, [r4]
- strb r0, [r1, 0x6]
- ldr r2, [r4]
- ldrb r0, [r2, 0x6]
- movs r1, 0x2
- bl SetWordTaskArg
- ldr r0, _08149D20 @ =sub_8149DC8
- bl sub_8149D80
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149D18: .4byte gUnknown_203F3D8
-_08149D1C: .4byte sub_8149DA4
-_08149D20: .4byte sub_8149DC8
- thumb_func_end sub_8149CEC
-
- thumb_func_start sub_8149D24
-sub_8149D24: @ 8149D24
- push {lr}
- bl FreeAllWindowBuffers
- bl DigitObjUtil_Teardown
- pop {r0}
- bx r0
- thumb_func_end sub_8149D24
-
- thumb_func_start sub_8149D34
-sub_8149D34: @ 8149D34
- movs r1, 0
- strh r1, [r0, 0x4]
- str r1, [r0]
- movs r1, 0xFF
- strh r1, [r0, 0x12]
- bx lr
- thumb_func_end sub_8149D34
-
- thumb_func_start sub_8149D40
-sub_8149D40: @ 8149D40
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r5, 0
- ldr r4, _08149D64 @ =gUnknown_846D8FC
-_08149D48:
- ldr r0, [r4]
- cmp r0, r6
- bne _08149D54
- ldr r0, [r4, 0x4]
- bl sub_8149D80
-_08149D54:
- adds r4, 0x8
- adds r5, 0x1
- cmp r5, 0x9
- bls _08149D48
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149D64: .4byte gUnknown_846D8FC
- thumb_func_end sub_8149D40
-
- thumb_func_start sub_8149D68
-sub_8149D68: @ 8149D68
- ldr r0, _08149D7C @ =gUnknown_203F3D8
- ldr r0, [r0]
- ldr r1, [r0]
- movs r0, 0x1
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bx lr
- .align 2, 0
-_08149D7C: .4byte gUnknown_203F3D8
- thumb_func_end sub_8149D68
-
- thumb_func_start sub_8149D80
-sub_8149D80: @ 8149D80
- push {r4,lr}
- adds r2, r0, 0
- ldr r4, _08149DA0 @ =gUnknown_203F3D8
- ldr r0, [r4]
- ldrb r0, [r0, 0x6]
- movs r1, 0
- bl SetWordTaskArg
- ldr r1, [r4]
- movs r0, 0
- strh r0, [r1, 0x4]
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149DA0: .4byte gUnknown_203F3D8
- thumb_func_end sub_8149D80
-
- thumb_func_start sub_8149DA4
-sub_8149DA4: @ 8149DA4
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _08149DC4 @ =gUnknown_203F3D8
- ldr r0, [r0]
- ldr r0, [r0]
- cmp r0, 0
- bne _08149DC0
- adds r0, r1, 0
- movs r1, 0
- bl GetWordTaskArg
- bl _call_via_r0
-_08149DC0:
- pop {r0}
- bx r0
- .align 2, 0
-_08149DC4: .4byte gUnknown_203F3D8
- thumb_func_end sub_8149DA4
-
- thumb_func_start sub_8149DC8
-sub_8149DC8: @ 8149DC8
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r6, _08149DE4 @ =gUnknown_203F3D8
- ldr r1, [r6]
- ldrh r5, [r1, 0x4]
- cmp r5, 0x1
- bne _08149DD8
- b _08149F18
-_08149DD8:
- cmp r5, 0x1
- bgt _08149DE8
- cmp r5, 0
- beq _08149DF0
- b _08149F5A
- .align 2, 0
-_08149DE4: .4byte gUnknown_203F3D8
-_08149DE8:
- cmp r5, 0x2
- bne _08149DEE
- b _08149F56
-_08149DEE:
- b _08149F5A
-_08149DF0:
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _08149EE8 @ =gUnknown_846D8D4
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r0, _08149EEC @ =gUnknown_846D8E4
- bl InitWindows
- bl ResetBgPositions
- bl ResetTempTileDataBuffers
- ldr r0, [r6]
- bl sub_814AD6C
- bl sub_814A9C8
- ldr r0, _08149EF0 @ =gUnknown_846B7B4
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _08149EF4 @ =gUnknown_846B7D4
- str r5, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r1, _08149EF8 @ =gUnknown_846BA00
- movs r4, 0x1
- str r4, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r0, _08149EFC @ =gUnknown_846BBB0
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _08149F00 @ =gUnknown_846BBD0
- str r5, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r1, _08149F04 @ =gUnknown_846C520
- str r4, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r0, _08149F08 @ =gUnknown_846C8D8
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _08149F0C @ =gUnknown_846C8F8
- str r5, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r1, _08149F10 @ =gUnknown_846D3A8
- str r4, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- ldr r0, _08149F14 @ =gUnknown_846B794
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- ldr r1, [r6]
- movs r0, 0xD3
- lsls r0, 1
- adds r1, r0
- movs r0, 0
- bl SetBgTilemapBuffer
- movs r0, 0x20
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- bl sub_814A84C
- movs r0, 0
- bl sub_814AA24
- movs r0, 0
- movs r1, 0x1
- movs r2, 0xE0
- bl sub_814FDA0
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD0
- bl LoadUserWindowBorderGfx
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _08149F4C
- .align 2, 0
-_08149EE8: .4byte gUnknown_846D8D4
-_08149EEC: .4byte gUnknown_846D8E4
-_08149EF0: .4byte gUnknown_846B7B4
-_08149EF4: .4byte gUnknown_846B7D4
-_08149EF8: .4byte gUnknown_846BA00
-_08149EFC: .4byte gUnknown_846BBB0
-_08149F00: .4byte gUnknown_846BBD0
-_08149F04: .4byte gUnknown_846C520
-_08149F08: .4byte gUnknown_846C8D8
-_08149F0C: .4byte gUnknown_846C8F8
-_08149F10: .4byte gUnknown_846D3A8
-_08149F14: .4byte gUnknown_846B794
-_08149F18:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- cmp r0, 0
- bne _08149F5A
- bl sub_814A8B8
- ldr r0, [r6]
- bl sub_814B294
- ldr r0, [r6]
- movs r1, 0x6
- bl sub_814B348
- movs r0, 0x3
- bl ShowBg
- movs r0, 0
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x1
- bl HideBg
-_08149F4C:
- ldr r1, [r6]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _08149F5A
-_08149F56:
- movs r0, 0x1
- str r0, [r1]
-_08149F5A:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8149DC8
-
- thumb_func_start sub_8149F64
-sub_8149F64: @ 8149F64
- push {r4,lr}
- ldr r4, _08149F7C @ =gUnknown_203F3D8
- ldr r0, [r4]
- ldrh r0, [r0, 0x4]
- cmp r0, 0x1
- beq _08149F90
- cmp r0, 0x1
- bgt _08149F80
- cmp r0, 0
- beq _08149F8A
- b _08149FCA
- .align 2, 0
-_08149F7C: .4byte gUnknown_203F3D8
-_08149F80:
- cmp r0, 0x2
- beq _08149FA2
- cmp r0, 0x3
- beq _08149FBA
- b _08149FCA
-_08149F8A:
- bl sub_814AADC
- b _08149FB0
-_08149F90:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08149FCA
- movs r0, 0
- bl sub_814AC30
- b _08149FB0
-_08149FA2:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08149FCA
- bl sub_814AC94
-_08149FB0:
- ldr r1, [r4]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _08149FCA
-_08149FBA:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _08149FCA
- ldr r1, [r4]
- movs r0, 0x1
- str r0, [r1]
-_08149FCA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149F64
-
- thumb_func_start sub_8149FD0
-sub_8149FD0: @ 8149FD0
- push {r4,lr}
- ldr r4, _08149FE8 @ =gUnknown_203F3D8
- ldr r0, [r4]
- ldrh r0, [r0, 0x4]
- cmp r0, 0x1
- beq _08149FFC
- cmp r0, 0x1
- bgt _08149FEC
- cmp r0, 0
- beq _08149FF6
- b _0814A036
- .align 2, 0
-_08149FE8: .4byte gUnknown_203F3D8
-_08149FEC:
- cmp r0, 0x2
- beq _0814A00E
- cmp r0, 0x3
- beq _0814A026
- b _0814A036
-_08149FF6:
- bl sub_814AADC
- b _0814A01C
-_08149FFC:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A036
- movs r0, 0x1
- bl sub_814AC30
- b _0814A01C
-_0814A00E:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A036
- bl sub_814AC94
-_0814A01C:
- ldr r1, [r4]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _0814A036
-_0814A026:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A036
- ldr r1, [r4]
- movs r0, 0x1
- str r0, [r1]
-_0814A036:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149FD0
-
- thumb_func_start sub_814A03C
-sub_814A03C: @ 814A03C
- push {r4,r5,lr}
- bl sub_81499A4
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _0814A058 @ =gUnknown_203F3D8
- ldr r0, [r0]
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- beq _0814A05C
- cmp r0, 0x1
- beq _0814A090
- b _0814A0BE
- .align 2, 0
-_0814A058: .4byte gUnknown_203F3D8
-_0814A05C:
- movs r4, 0
- cmp r4, r5
- bge _0814A078
-_0814A062:
- ldr r0, _0814A08C @ =gUnknown_203F3D8
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x1C
- adds r0, r1
- ldrb r0, [r0]
- bl ClearWindowTilemap
- adds r4, 0x1
- cmp r4, r5
- blt _0814A062
-_0814A078:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r0, _0814A08C @ =gUnknown_203F3D8
- ldr r1, [r0]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _0814A0BE
- .align 2, 0
-_0814A08C: .4byte gUnknown_203F3D8
-_0814A090:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A0BE
- movs r4, 0
- cmp r4, r5
- bge _0814A0B6
-_0814A0A0:
- ldr r0, _0814A0C4 @ =gUnknown_203F3D8
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x1C
- adds r0, r1
- ldrb r0, [r0]
- bl RemoveWindow
- adds r4, 0x1
- cmp r4, r5
- blt _0814A0A0
-_0814A0B6:
- ldr r0, _0814A0C4 @ =gUnknown_203F3D8
- ldr r1, [r0]
- movs r0, 0x1
- str r0, [r1]
-_0814A0BE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A0C4: .4byte gUnknown_203F3D8
- thumb_func_end sub_814A03C
-
- thumb_func_start sub_814A0C8
-sub_814A0C8: @ 814A0C8
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r5, _0814A0E0 @ =gUnknown_203F3D8
- ldr r0, [r5]
- ldrh r4, [r0, 0x4]
- cmp r4, 0x1
- beq _0814A124
- cmp r4, 0x1
- bgt _0814A0E4
- cmp r4, 0
- beq _0814A0EA
- b _0814A16C
- .align 2, 0
-_0814A0E0: .4byte gUnknown_203F3D8
-_0814A0E4:
- cmp r4, 0x2
- beq _0814A15C
- b _0814A16C
-_0814A0EA:
- movs r0, 0x1
- movs r1, 0x8
- movs r2, 0x14
- movs r3, 0x2
- bl sub_814A754
- ldr r1, [r5]
- strh r0, [r1, 0x12]
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0814A120 @ =gUnknown_841CBFD
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- b _0814A152
- .align 2, 0
-_0814A120: .4byte gUnknown_841CBFD
-_0814A124:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A16C
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- bl PutWindowTilemap
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- movs r1, 0x1
- movs r2, 0xE
- bl DrawTextBorderOuter
- movs r0, 0x17
- movs r1, 0x7
- movs r2, 0
- bl sub_814A7D0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_0814A152:
- ldr r1, [r5]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _0814A16C
-_0814A15C:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A16C
- ldr r1, [r5]
- movs r0, 0x1
- str r0, [r1]
-_0814A16C:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_814A0C8
-
- thumb_func_start sub_814A174
-sub_814A174: @ 814A174
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r5, _0814A18C @ =gUnknown_203F3D8
- ldr r0, [r5]
- ldrh r4, [r0, 0x4]
- cmp r4, 0x1
- beq _0814A1D0
- cmp r4, 0x1
- bgt _0814A190
- cmp r4, 0
- beq _0814A196
- b _0814A20E
- .align 2, 0
-_0814A18C: .4byte gUnknown_203F3D8
-_0814A190:
- cmp r4, 0x2
- beq _0814A1FE
- b _0814A20E
-_0814A196:
- movs r0, 0x2
- movs r1, 0x7
- movs r2, 0x1A
- movs r3, 0x4
- bl sub_814A754
- ldr r1, [r5]
- strh r0, [r1, 0x12]
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0814A1CC @ =gUnknown_841CC42
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- b _0814A1F4
- .align 2, 0
-_0814A1CC: .4byte gUnknown_841CC42
-_0814A1D0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A20E
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- bl PutWindowTilemap
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- movs r1, 0x1
- movs r2, 0xE
- bl DrawTextBorderOuter
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_0814A1F4:
- ldr r1, [r5]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _0814A20E
-_0814A1FE:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A20E
- ldr r1, [r5]
- movs r0, 0x1
- str r0, [r1]
-_0814A20E:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_814A174
-
- thumb_func_start sub_814A218
-sub_814A218: @ 814A218
- push {r4,r5,lr}
- ldr r5, _0814A22C @ =gUnknown_203F3D8
- ldr r0, [r5]
- ldrh r4, [r0, 0x4]
- cmp r4, 0
- beq _0814A230
- cmp r4, 0x1
- beq _0814A248
- b _0814A25E
- .align 2, 0
-_0814A22C: .4byte gUnknown_203F3D8
-_0814A230:
- bl sub_814A6CC
- bl DestroyYesNoMenu
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r5]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _0814A25E
-_0814A248:
- bl sub_814A6FC
- cmp r0, 0
- bne _0814A25E
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A25E
- ldr r0, [r5]
- str r4, [r0]
-_0814A25E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_814A218
-
- thumb_func_start sub_814A264
-sub_814A264: @ 814A264
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r5, _0814A27C @ =gUnknown_203F3D8
- ldr r0, [r5]
- ldrh r4, [r0, 0x4]
- cmp r4, 0x1
- beq _0814A2C0
- cmp r4, 0x1
- bgt _0814A280
- cmp r4, 0
- beq _0814A286
- b _0814A2FE
- .align 2, 0
-_0814A27C: .4byte gUnknown_203F3D8
-_0814A280:
- cmp r4, 0x2
- beq _0814A2EE
- b _0814A2FE
-_0814A286:
- movs r0, 0x2
- movs r1, 0x8
- movs r2, 0x16
- movs r3, 0x4
- bl sub_814A754
- ldr r1, [r5]
- strh r0, [r1, 0x12]
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0814A2BC @ =gUnknown_841CC11
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- b _0814A2E4
- .align 2, 0
-_0814A2BC: .4byte gUnknown_841CC11
-_0814A2C0:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A2FE
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- bl PutWindowTilemap
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- movs r1, 0x1
- movs r2, 0xE
- bl DrawTextBorderOuter
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_0814A2E4:
- ldr r1, [r5]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _0814A2FE
-_0814A2EE:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A2FE
- ldr r1, [r5]
- movs r0, 0x1
- str r0, [r1]
-_0814A2FE:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_814A264
-
- thumb_func_start sub_814A308
-sub_814A308: @ 814A308
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r5, _0814A320 @ =gUnknown_203F3D8
- ldr r0, [r5]
- ldrh r4, [r0, 0x4]
- cmp r4, 0x1
- beq _0814A364
- cmp r4, 0x1
- bgt _0814A324
- cmp r4, 0
- beq _0814A32A
- b _0814A3A2
- .align 2, 0
-_0814A320: .4byte gUnknown_203F3D8
-_0814A324:
- cmp r4, 0x2
- beq _0814A392
- b _0814A3A2
-_0814A32A:
- movs r0, 0x7
- movs r1, 0xA
- movs r2, 0x10
- movs r3, 0x2
- bl sub_814A754
- ldr r1, [r5]
- strh r0, [r1, 0x12]
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0814A360 @ =gUnknown_841CC64
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- b _0814A388
- .align 2, 0
-_0814A360: .4byte gUnknown_841CC64
-_0814A364:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A3A2
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- bl PutWindowTilemap
- ldr r0, [r5]
- ldrb r0, [r0, 0x12]
- movs r1, 0x1
- movs r2, 0xE
- bl DrawTextBorderOuter
- movs r0, 0
- bl CopyBgTilemapBufferToVram
-_0814A388:
- ldr r1, [r5]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _0814A3A2
-_0814A392:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A3A2
- ldr r1, [r5]
- movs r0, 0x1
- str r0, [r1]
-_0814A3A2:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_814A308
-
- thumb_func_start sub_814A3AC
-sub_814A3AC: @ 814A3AC
- push {r4,r5,lr}
- ldr r5, _0814A3C0 @ =gUnknown_203F3D8
- ldr r0, [r5]
- ldrh r4, [r0, 0x4]
- cmp r4, 0
- beq _0814A3C4
- cmp r4, 0x1
- beq _0814A3D2
- b _0814A3DE
- .align 2, 0
-_0814A3C0: .4byte gUnknown_203F3D8
-_0814A3C4:
- bl sub_814B43C
- ldr r1, [r5]
- ldrh r0, [r1, 0x4]
- adds r0, 0x1
- strh r0, [r1, 0x4]
- b _0814A3DE
-_0814A3D2:
- bl sub_814B460
- cmp r0, 0
- bne _0814A3DE
- ldr r0, [r5]
- str r4, [r0]
-_0814A3DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_814A3AC
-
- thumb_func_start sub_814A3E4
-sub_814A3E4: @ 814A3E4
- push {lr}
- ldr r1, _0814A404 @ =gUnknown_203F3D8
- ldr r0, [r1]
- movs r2, 0
- strb r2, [r0, 0xA]
- ldr r0, [r1]
- strb r2, [r0, 0xB]
- ldr r2, [r1]
- movs r0, 0x6
- strb r0, [r2, 0xC]
- ldr r0, [r1]
- ldrb r0, [r0, 0xC]
- bl sub_814A95C
- pop {r0}
- bx r0
- .align 2, 0
-_0814A404: .4byte gUnknown_203F3D8
- thumb_func_end sub_814A3E4
-
- thumb_func_start sub_814A408
-sub_814A408: @ 814A408
- push {r4,lr}
- ldr r0, _0814A41C @ =gUnknown_203F3D8
- ldr r2, [r0]
- ldrb r3, [r2, 0xA]
- adds r4, r0, 0
- cmp r3, 0
- beq _0814A420
- cmp r3, 0x1
- beq _0814A45A
- b _0814A45E
- .align 2, 0
-_0814A41C: .4byte gUnknown_203F3D8
-_0814A420:
- ldrb r0, [r2, 0xB]
- adds r0, 0x1
- strb r0, [r2, 0xB]
- ldr r1, [r4]
- ldrb r0, [r1, 0xB]
- cmp r0, 0xA
- bls _0814A44A
- strb r3, [r1, 0xB]
- ldr r0, [r4]
- ldrb r1, [r0, 0xC]
- adds r1, 0x1
- strb r1, [r0, 0xC]
- ldr r1, [r4]
- ldrb r0, [r1, 0xC]
- cmp r0, 0x9
- bls _0814A44A
- strb r3, [r1, 0xC]
- ldr r1, [r4]
- ldrb r0, [r1, 0xA]
- adds r0, 0x1
- strb r0, [r1, 0xA]
-_0814A44A:
- ldr r0, [r4]
- ldrb r0, [r0, 0xC]
- bl sub_814A95C
- ldr r0, [r4]
- ldrb r0, [r0, 0xC]
- cmp r0, 0x7
- bne _0814A45E
-_0814A45A:
- movs r0, 0
- b _0814A460
-_0814A45E:
- movs r0, 0x1
-_0814A460:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_814A408
-
- thumb_func_start sub_814A468
-sub_814A468: @ 814A468
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r5, _0814A52C @ =gUnknown_203F3D8
- ldr r1, [r5]
- adds r1, 0x26
- adds r0, r4, 0
- bl CopyItemName
- ldr r0, [r5]
- adds r0, 0x66
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- subs r4, 0x85
- lsls r4, 16
- lsrs r4, 16
- cmp r4, 0x29
- bhi _0814A4C2
- cmp r6, 0x1
- bls _0814A4C2
- ldr r0, [r5]
- adds r0, 0x26
- bl StringLength
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _0814A4C2
- ldr r0, [r5]
- adds r0, r1, r0
- adds r0, 0x25
- movs r1, 0xFF
- strb r1, [r0]
- ldr r0, [r5]
- adds r0, 0x26
- ldr r1, _0814A530 @ =gUnknown_846D94C
- bl StringAppend
-_0814A4C2:
- bl DynamicPlaceholderTextUtil_Reset
- ldr r4, _0814A52C @ =gUnknown_203F3D8
- ldr r1, [r4]
- adds r1, 0x26
- movs r0, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- ldr r1, [r4]
- adds r1, 0x66
- movs r0, 0x1
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- ldr r0, [r4]
- adds r0, 0xA6
- ldr r1, _0814A534 @ =gUnknown_841CBA9
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- movs r0, 0x4
- movs r1, 0x8
- movs r2, 0x16
- movs r3, 0x4
- bl sub_814A754
- ldr r2, [r4]
- movs r5, 0
- movs r3, 0
- strh r0, [r2, 0x12]
- lsls r0, 24
- lsrs r0, 24
- adds r2, 0xA6
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- str r3, [sp, 0x8]
- movs r1, 0x2
- bl AddTextPrinterParameterized
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r1, [r4]
- ldr r0, _0814A538 @ =0x00000101
- strh r0, [r1, 0x14]
- strb r5, [r1, 0xD]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A52C: .4byte gUnknown_203F3D8
-_0814A530: .4byte gUnknown_846D94C
-_0814A534: .4byte gUnknown_841CBA9
-_0814A538: .4byte 0x00000101
- thumb_func_end sub_814A468
-
- thumb_func_start sub_814A53C
-sub_814A53C: @ 814A53C
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0814A5AC @ =gUnknown_203F3D8
- ldr r1, [r4]
- adds r1, 0x26
- bl CopyItemName
- bl DynamicPlaceholderTextUtil_Reset
- ldr r1, [r4]
- adds r1, 0x26
- movs r0, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- ldr r0, [r4]
- adds r0, 0xA6
- ldr r1, _0814A5B0 @ =gUnknown_841CBCA
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- movs r0, 0x4
- movs r1, 0x8
- movs r2, 0x16
- movs r3, 0x4
- bl sub_814A754
- ldr r2, [r4]
- movs r6, 0
- movs r5, 0
- strh r0, [r2, 0x12]
- lsls r0, 24
- lsrs r0, 24
- adds r2, 0xA6
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r4]
- strh r5, [r0, 0x14]
- strb r6, [r0, 0xD]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A5AC: .4byte gUnknown_203F3D8
-_0814A5B0: .4byte gUnknown_841CBCA
- thumb_func_end sub_814A53C
-
- thumb_func_start sub_814A5B4
-sub_814A5B4: @ 814A5B4
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0814A624 @ =gUnknown_203F3D8
- ldr r1, [r4]
- adds r1, 0x26
- bl CopyItemName
- bl DynamicPlaceholderTextUtil_Reset
- ldr r1, [r4]
- adds r1, 0x26
- movs r0, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- ldr r0, [r4]
- adds r0, 0xA6
- ldr r1, _0814A628 @ =gUnknown_841CBE4
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- movs r0, 0x4
- movs r1, 0x9
- movs r2, 0x16
- movs r3, 0x2
- bl sub_814A754
- ldr r2, [r4]
- movs r6, 0
- movs r5, 0
- strh r0, [r2, 0x12]
- lsls r0, 24
- lsrs r0, 24
- adds r2, 0xA6
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0xFF
- str r1, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- movs r1, 0x2
- bl CopyWindowToVram
- ldr r0, [r4]
- strh r5, [r0, 0x14]
- strb r6, [r0, 0xD]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A624: .4byte gUnknown_203F3D8
-_0814A628: .4byte gUnknown_841CBE4
- thumb_func_end sub_814A5B4
-
- thumb_func_start sub_814A62C
-sub_814A62C: @ 814A62C
- push {r4,lr}
- ldr r4, _0814A644 @ =gUnknown_203F3D8
- ldr r0, [r4]
- ldrb r0, [r0, 0xD]
- cmp r0, 0x1
- beq _0814A680
- cmp r0, 0x1
- bgt _0814A648
- cmp r0, 0
- beq _0814A652
- b _0814A6C4
- .align 2, 0
-_0814A644: .4byte gUnknown_203F3D8
-_0814A648:
- cmp r0, 0x2
- beq _0814A6A6
- cmp r0, 0x3
- beq _0814A6BA
- b _0814A6C4
-_0814A652:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A6C4
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- bl PutWindowTilemap
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- movs r1, 0x1
- movs r2, 0xE
- bl DrawTextBorderOuter
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [r4]
- ldrb r0, [r1, 0xD]
- adds r0, 0x1
- strb r0, [r1, 0xD]
- b _0814A6C4
-_0814A680:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A6C4
- ldr r1, [r4]
- ldrh r0, [r1, 0x14]
- cmp r0, 0
- bne _0814A698
- ldrb r0, [r1, 0xD]
- adds r0, 0x2
- b _0814A6B8
-_0814A698:
- ldrh r0, [r1, 0x14]
- bl PlayFanfare
- ldr r1, [r4]
- ldrb r0, [r1, 0xD]
- adds r0, 0x1
- strb r0, [r1, 0xD]
-_0814A6A6:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _0814A6C4
- ldr r0, _0814A6C0 @ =gUnknown_203F3D8
- ldr r1, [r0]
- ldrb r0, [r1, 0xD]
- adds r0, 0x1
-_0814A6B8:
- strb r0, [r1, 0xD]
-_0814A6BA:
- movs r0, 0
- b _0814A6C6
- .align 2, 0
-_0814A6C0: .4byte gUnknown_203F3D8
-_0814A6C4:
- movs r0, 0x1
-_0814A6C6:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_814A62C
-
- thumb_func_start sub_814A6CC
-sub_814A6CC: @ 814A6CC
- push {r4,lr}
- ldr r4, _0814A6F8 @ =gUnknown_203F3D8
- ldr r0, [r4]
- ldrh r0, [r0, 0x12]
- cmp r0, 0xFF
- beq _0814A6F0
- lsls r0, 24
- lsrs r0, 24
- bl rbox_fill_rectangle
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- movs r1, 0x1
- bl CopyWindowToVram
- ldr r1, [r4]
- movs r0, 0
- strb r0, [r1, 0xD]
-_0814A6F0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A6F8: .4byte gUnknown_203F3D8
- thumb_func_end sub_814A6CC
-
- thumb_func_start sub_814A6FC
-sub_814A6FC: @ 814A6FC
- push {r4,lr}
- ldr r4, _0814A70C @ =gUnknown_203F3D8
- ldr r1, [r4]
- ldrh r0, [r1, 0x12]
- cmp r0, 0xFF
- bne _0814A710
-_0814A708:
- movs r0, 0
- b _0814A73C
- .align 2, 0
-_0814A70C: .4byte gUnknown_203F3D8
-_0814A710:
- ldrb r0, [r1, 0xD]
- cmp r0, 0
- bne _0814A736
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- cmp r0, 0
- bne _0814A73A
- ldr r0, [r4]
- ldrb r0, [r0, 0x12]
- bl RemoveWindow
- ldr r1, [r4]
- movs r0, 0xFF
- strh r0, [r1, 0x12]
- ldrb r0, [r1, 0xD]
- adds r0, 0x1
- strb r0, [r1, 0xD]
- b _0814A708
-_0814A736:
- cmp r0, 0x1
- beq _0814A708
-_0814A73A:
- movs r0, 0x1
-_0814A73C:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_814A6FC
-
- thumb_func_start sub_814A744
-sub_814A744: @ 814A744
- push {lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_814A744
-
- thumb_func_start sub_814A754
-sub_814A754: @ 814A754
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r6, _0814A7BC @ =0xffffff00
- ldr r4, [sp]
- ands r4, r6
- lsls r0, 24
- lsrs r0, 16
- ldr r5, _0814A7C0 @ =0xffff00ff
- ands r4, r5
- orrs r4, r0
- lsls r1, 24
- lsrs r1, 8
- ldr r0, _0814A7C4 @ =0xff00ffff
- ands r4, r0
- orrs r4, r1
- lsls r2, 24
- ldr r0, _0814A7C8 @ =0x00ffffff
- ands r4, r0
- orrs r4, r2
- str r4, [sp]
- lsls r3, 24
- lsrs r3, 24
- ldr r0, [sp, 0x4]
- ands r0, r6
- orrs r0, r3
- ands r0, r5
- movs r1, 0xF0
- lsls r1, 4
- orrs r0, r1
- ldr r1, _0814A7CC @ =0x0000ffff
- ands r0, r1
- movs r1, 0x86
- lsls r1, 15
- orrs r0, r1
- str r0, [sp, 0x4]
- mov r0, sp
- bl AddWindow
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- add sp, 0x8
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0814A7BC: .4byte 0xffffff00
-_0814A7C0: .4byte 0xffff00ff
-_0814A7C4: .4byte 0xff00ffff
-_0814A7C8: .4byte 0x00ffffff
-_0814A7CC: .4byte 0x0000ffff
- thumb_func_end sub_814A754
-
- thumb_func_start sub_814A7D0
-sub_814A7D0: @ 814A7D0
- push {r4,r5,lr}
- sub sp, 0x14
- lsls r2, 24
- lsrs r2, 24
- ldr r5, _0814A838 @ =0xffffff00
- ldr r3, [sp, 0xC]
- ands r3, r5
- lsls r0, 24
- lsrs r0, 16
- ldr r4, _0814A83C @ =0xffff00ff
- ands r3, r4
- orrs r3, r0
- lsls r1, 24
- lsrs r1, 8
- ldr r0, _0814A840 @ =0xff00ffff
- ands r3, r0
- orrs r3, r1
- ldr r0, _0814A844 @ =0x00ffffff
- ands r3, r0
- movs r0, 0xC0
- lsls r0, 19
- orrs r3, r0
- str r3, [sp, 0xC]
- ldr r0, [sp, 0x10]
- ands r0, r5
- movs r1, 0x4
- orrs r0, r1
- ands r0, r4
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- ldr r1, _0814A848 @ =0x0000ffff
- ands r0, r1
- movs r1, 0xAC
- lsls r1, 14
- orrs r0, r1
- str r0, [sp, 0x10]
- movs r0, 0xA
- str r0, [sp]
- movs r0, 0xD
- str r0, [sp, 0x4]
- str r2, [sp, 0x8]
- add r0, sp, 0xC
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A838: .4byte 0xffffff00
-_0814A83C: .4byte 0xffff00ff
-_0814A840: .4byte 0xff00ffff
-_0814A844: .4byte 0x00ffffff
-_0814A848: .4byte 0x0000ffff
- thumb_func_end sub_814A7D0
-
- thumb_func_start sub_814A84C
-sub_814A84C: @ 814A84C
- push {r4,lr}
- sub sp, 0x10
- ldr r1, _0814A8AC @ =gUnknown_846D950
- add r0, sp, 0xC
- movs r2, 0x3
- bl memcpy
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- movs r0, 0x1
- movs r1, 0
- bl FillWindowPixelBuffer
- add r0, sp, 0xC
- str r0, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r0, _0814A8B0 @ =gUnknown_841CB52
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- add r0, sp, 0xC
- str r0, [sp]
- str r4, [sp, 0x4]
- ldr r0, _0814A8B4 @ =gUnknown_841CB5A
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A8AC: .4byte gUnknown_846D950
-_0814A8B0: .4byte gUnknown_841CB52
-_0814A8B4: .4byte gUnknown_841CB5A
- thumb_func_end sub_814A84C
-
- thumb_func_start sub_814A8B8
-sub_814A8B8: @ 814A8B8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- bl sub_81499A4
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- ldr r1, _0814A934 @ =gUnknown_846D9D4
- subs r0, 0x2
- lsls r0, 2
- adds r0, r1
- ldr r5, [r0]
- movs r6, 0
- cmp r6, r10
- bge _0814A922
- ldr r0, _0814A938 @ =gMonFrontPicCoords
- mov r9, r0
- ldr r1, _0814A93C @ =gUnknown_203F3D8
- mov r8, r1
-_0814A8E6:
- lsls r4, r6, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_81499C0
- adds r1, r0, 0
- ldrh r0, [r1]
- lsls r0, 2
- add r0, r9
- ldrb r3, [r0, 0x1]
- mov r2, r8
- ldr r0, [r2]
- movs r7, 0
- ldrsh r2, [r5, r7]
- adds r3, 0x70
- str r4, [sp]
- bl sub_814ADCC
- mov r1, r8
- ldr r0, [r1]
- movs r2, 0
- ldrsh r1, [r5, r2]
- movs r2, 0x70
- adds r3, r4, 0
- bl sub_814B240
- adds r5, 0x2
- adds r6, 0x1
- cmp r6, r10
- blt _0814A8E6
-_0814A922:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A934: .4byte gUnknown_846D9D4
-_0814A938: .4byte gMonFrontPicCoords
-_0814A93C: .4byte gUnknown_203F3D8
- thumb_func_end sub_814A8B8
-
- thumb_func_start sub_814A940
-sub_814A940: @ 814A940
- ldr r2, _0814A954 @ =gUnknown_203F3D8
- ldr r2, [r2]
- lsls r0, 2
- ldr r3, _0814A958 @ =0x000081a8
- adds r2, r3
- adds r2, r0
- ldr r0, [r2]
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_0814A954: .4byte gUnknown_203F3D8
-_0814A958: .4byte 0x000081a8
- thumb_func_end sub_814A940
-
- thumb_func_start sub_814A95C
-sub_814A95C: @ 814A95C
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0814A984 @ =gUnknown_203F3D8
- ldr r0, [r0]
- adds r1, r4, 0
- bl sub_814B348
- ldr r0, _0814A988 @ =gUnknown_846D953
- adds r4, r0
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 13
- movs r0, 0x2
- movs r2, 0
- bl ChangeBgY
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A984: .4byte gUnknown_203F3D8
-_0814A988: .4byte gUnknown_846D953
- thumb_func_end sub_814A95C
-
- thumb_func_start sub_814A98C
-sub_814A98C: @ 814A98C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r5, 0
- movs r6, 0
-_0814A996:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _0814A9AA
- ldr r0, _0814A9C4 @ =gUnknown_203F3D8
- ldr r0, [r0]
- adds r1, r5, 0
- bl sub_814AF0C
- adds r6, 0x1
-_0814A9AA:
- lsrs r4, 1
- adds r5, 0x1
- cmp r5, 0x4
- ble _0814A996
- subs r0, r6, 0x2
- lsls r0, 24
- lsrs r0, 24
- bl sub_814ACCC
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0814A9C4: .4byte gUnknown_203F3D8
- thumb_func_end sub_814A98C
-
- thumb_func_start sub_814A9C8
-sub_814A9C8: @ 814A9C8
- push {r4,lr}
- sub sp, 0x10
- mov r1, sp
- movs r0, 0x40 @ strConvMode = 0
- @ shape = SPRITE_SHAPE(8x8)
- @ size = SPRITE_SIZE(8x8)
- @ priority = 1
- strb r0, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- movs r0, 0x8
- strb r0, [r1, 0x2]
- movs r0, 0x6C
- strh r0, [r1, 0x4]
- movs r4, 0x6
- strh r4, [r1, 0x6]
- ldr r0, _0814AA1C @ =gUnknown_846D960
- str r0, [sp, 0x8]
- ldr r0, _0814AA20 @ =gUnknown_846D968
- str r0, [sp, 0xC]
- movs r0, 0x2
- bl DigitObjUtil_Init
- movs r0, 0
- movs r1, 0
- mov r2, sp
- bl DigitObjUtil_CreatePrinter
- mov r1, sp
- movs r0, 0x4
- strb r0, [r1, 0x1]
- movs r0, 0x1E
- strh r0, [r1, 0x4]
- mov r0, sp
- strh r4, [r0, 0x6]
- movs r0, 0x1
- movs r1, 0
- mov r2, sp
- bl DigitObjUtil_CreatePrinter
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814AA1C: .4byte gUnknown_846D960
-_0814AA20: .4byte gUnknown_846D968
- thumb_func_end sub_814A9C8
-
- thumb_func_start sub_814AA24
-sub_814AA24: @ 814AA24
- push {lr}
- adds r1, r0, 0
- movs r0, 0
- bl DigitObjUtil_PrintNumOn
- pop {r0}
- bx r0
- thumb_func_end sub_814AA24
-
- thumb_func_start sub_814AA34
-sub_814AA34: @ 814AA34
- push {lr}
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x1
- bl DigitObjUtil_PrintNumOn
- pop {r0}
- bx r0
- thumb_func_end sub_814AA34
-
- thumb_func_start sub_814AA48
-sub_814AA48: @ 814AA48
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0814AA5C @ =gUnknown_203F3D8
- ldr r0, [r0]
- bl sub_814AFE8
- pop {r0}
- bx r0
- .align 2, 0
-_0814AA5C: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AA48
-
- thumb_func_start sub_814AA60
-sub_814AA60: @ 814AA60
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0814AA74 @ =gUnknown_203F3D8
- ldr r0, [r0]
- bl sub_814B080
- pop {r0}
- bx r0
- .align 2, 0
-_0814AA74: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AA60
-
- thumb_func_start sub_814AA78
-sub_814AA78: @ 814AA78
- push {lr}
- adds r1, r0, 0
- ldr r0, _0814AA88 @ =gUnknown_203F3D8
- ldr r0, [r0]
- bl sub_814B010
- pop {r1}
- bx r1
- .align 2, 0
-_0814AA88: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AA78
-
- thumb_func_start sub_814AA8C
-sub_814AA8C: @ 814AA8C
- push {lr}
- ldr r0, _0814AA9C @ =gUnknown_203F3D8
- ldr r0, [r0]
- bl sub_814B0A8
- pop {r0}
- bx r0
- .align 2, 0
-_0814AA9C: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AA8C
-
- thumb_func_start sub_814AAA0
-sub_814AAA0: @ 814AAA0
- push {lr}
- ldr r0, _0814AAB0 @ =gUnknown_203F3D8
- ldr r0, [r0]
- bl sub_814B134
- pop {r0}
- bx r0
- .align 2, 0
-_0814AAB0: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AAA0
-
- thumb_func_start sub_814AAB4
-sub_814AAB4: @ 814AAB4
- push {lr}
- adds r1, r0, 0
- ldr r0, _0814AAC4 @ =gUnknown_203F3D8
- ldr r0, [r0]
- bl sub_814B168
- pop {r0}
- bx r0
- .align 2, 0
-_0814AAC4: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AAB4
-
- thumb_func_start sub_814AAC8
-sub_814AAC8: @ 814AAC8
- push {lr}
- ldr r0, _0814AAD8 @ =gUnknown_203F3D8
- ldr r0, [r0]
- bl sub_814B190
- pop {r1}
- bx r1
- .align 2, 0
-_0814AAD8: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AAC8
-
- thumb_func_start sub_814AADC
-sub_814AADC: @ 814AADC
- push {r4-r7,lr}
- sub sp, 0x8
- bl sub_81499A4
- lsls r0, 16
- lsrs r7, r0, 16
- ldr r1, _0814AB7C @ =gUnknown_846D9A8
- subs r0, r7, 0x2
- lsls r0, 2
- adds r0, r1
- ldr r4, [r0]
- ldr r2, _0814AB80 @ =0xffffff00
- ldr r0, [sp]
- ands r0, r2
- ldr r1, _0814AB84 @ =0x00ffffff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 20
- orrs r0, r1
- str r0, [sp]
- ldr r0, [sp, 0x4]
- ands r0, r2
- movs r1, 0x2
- orrs r0, r1
- ldr r1, _0814AB88 @ =0xffff00ff
- ands r0, r1
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- ldr r1, _0814AB8C @ =0x0000ffff
- ands r0, r1
- movs r1, 0xAC
- lsls r1, 14
- orrs r0, r1
- str r0, [sp, 0x4]
- movs r5, 0
- cmp r5, r7
- bge _0814AB6C
- mov r6, sp
-_0814AB2A:
- ldrb r0, [r4]
- lsls r0, 8
- ldr r2, _0814AB88 @ =0xffff00ff
- ldr r1, [sp]
- ands r1, r2
- orrs r1, r0
- str r1, [sp]
- ldrb r2, [r4, 0x2]
- lsls r2, 16
- ldr r0, _0814AB90 @ =0xff00ffff
- ands r0, r1
- orrs r0, r2
- str r0, [sp]
- mov r0, sp
- bl AddWindow
- ldr r1, _0814AB94 @ =gUnknown_203F3D8
- ldr r1, [r1]
- lsls r2, r5, 1
- adds r1, 0x1C
- adds r1, r2
- strh r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- ldrh r0, [r6, 0x6]
- adds r0, 0x10
- strh r0, [r6, 0x6]
- adds r4, 0x4
- adds r5, 0x1
- cmp r5, r7
- blt _0814AB2A
-_0814AB6C:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814AB7C: .4byte gUnknown_846D9A8
-_0814AB80: .4byte 0xffffff00
-_0814AB84: .4byte 0x00ffffff
-_0814AB88: .4byte 0xffff00ff
-_0814AB8C: .4byte 0x0000ffff
-_0814AB90: .4byte 0xff00ffff
-_0814AB94: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AADC
-
- thumb_func_start sub_814AB98
-sub_814AB98: @ 814AB98
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x10
- adds r5, r0, 0
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- add r0, sp, 0xC
- strb r1, [r0]
- strb r2, [r0, 0x1]
- strb r3, [r0, 0x2]
- ldr r6, _0814AC2C @ =gUnknown_203F3D8
- ldr r0, [r6]
- lsls r1, r5, 1
- mov r8, r1
- adds r0, 0x1C
- add r0, r8
- ldrb r0, [r0]
- movs r1, 0
- bl FillWindowPixelBuffer
- lsls r5, 24
- lsrs r5, 24
- adds r0, r5, 0
- bl sub_81499E0
- adds r1, r0, 0
- movs r2, 0x1
- negs r2, r2
- mov r9, r2
- movs r0, 0
- bl GetStringWidth
- movs r4, 0x40
- subs r4, r0
- lsrs r4, 1
- adds r0, r5, 0
- bl sub_81499E0
- adds r1, r0, 0
- ldr r0, [r6]
- adds r0, 0x1C
- add r0, r8
- ldrb r0, [r0]
- lsls r4, 24
- lsrs r4, 24
- add r2, sp, 0xC
- str r2, [sp]
- mov r2, r9
- str r2, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0x2
- bl AddTextPrinterParameterized3
- ldr r0, [r6]
- adds r0, 0x1C
- add r0, r8
- ldrb r0, [r0]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814AC2C: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AB98
-
- thumb_func_start sub_814AC30
-sub_814AC30: @ 814AC30
- push {r4-r6,lr}
- adds r4, r0, 0
- bl sub_81499A4
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r4, 0
- bne _0814AC5A
- movs r4, 0
- cmp r4, r5
- bge _0814AC8C
-_0814AC46:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x3
- bl sub_814AB98
- adds r4, 0x1
- cmp r4, r5
- blt _0814AC46
- b _0814AC8C
-_0814AC5A:
- bl sub_81499B4
- lsls r0, 16
- lsrs r6, r0, 16
- movs r4, 0
- cmp r4, r5
- bge _0814AC8C
-_0814AC68:
- cmp r6, r4
- beq _0814AC7A
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x2
- movs r3, 0x3
- bl sub_814AB98
- b _0814AC86
-_0814AC7A:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x4
- movs r3, 0x5
- bl sub_814AB98
-_0814AC86:
- adds r4, 0x1
- cmp r4, r5
- blt _0814AC68
-_0814AC8C:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_814AC30
-
- thumb_func_start sub_814AC94
-sub_814AC94: @ 814AC94
- push {r4,r5,lr}
- bl sub_81499A4
- lsls r0, 16
- lsrs r5, r0, 16
- movs r4, 0
- cmp r4, r5
- bge _0814ACBA
-_0814ACA4:
- ldr r0, _0814ACC8 @ =gUnknown_203F3D8
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x1C
- adds r0, r1
- ldrb r0, [r0]
- bl PutWindowTilemap
- adds r4, 0x1
- cmp r4, r5
- blt _0814ACA4
-_0814ACBA:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0814ACC8: .4byte gUnknown_203F3D8
- thumb_func_end sub_814AC94
-
- thumb_func_start sub_814ACCC
-sub_814ACCC: @ 814ACCC
- push {r4,lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r0, _0814AD10 @ =gUnknown_203F3D8
- ldr r2, [r0]
- movs r0, 0
- str r0, [r2, 0x18]
- lsrs r1, 25
- lsls r1, 16
- movs r0, 0x1
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- ands r4, r0
- lsls r4, 8
- subs r4, 0x28
- lsls r4, 8
- adds r1, r4, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- bl ShowBg
- ldr r0, _0814AD14 @ =sub_814AD50
- movs r1, 0x4
- bl CreateTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814AD10: .4byte gUnknown_203F3D8
-_0814AD14: .4byte sub_814AD50
- thumb_func_end sub_814ACCC
-
- thumb_func_start sub_814AD18
-sub_814AD18: @ 814AD18
- push {r4,lr}
- ldr r4, _0814AD28 @ =gUnknown_203F3D8
- ldr r0, [r4]
- ldr r0, [r0, 0x18]
- cmp r0, 0x1F
- bls _0814AD2C
- movs r0, 0
- b _0814AD4A
- .align 2, 0
-_0814AD28: .4byte gUnknown_203F3D8
-_0814AD2C:
- movs r0, 0x1
- movs r1, 0x80
- movs r2, 0x1
- bl ChangeBgY
- ldr r1, [r4]
- ldr r0, [r1, 0x18]
- adds r0, 0x1
- str r0, [r1, 0x18]
- cmp r0, 0x1F
- bls _0814AD48
- movs r0, 0x1
- bl HideBg
-_0814AD48:
- movs r0, 0x1
-_0814AD4A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_814AD18
-
- thumb_func_start sub_814AD50
-sub_814AD50: @ 814AD50
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_814AD18
- cmp r0, 0
- bne _0814AD64
- adds r0, r4, 0
- bl DestroyTask
-_0814AD64:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_814AD50
-
thumb_func_start sub_814AD6C
sub_814AD6C: @ 814AD6C
push {r4-r6,lr}
diff --git a/data/pokemon_jump.s b/data/pokemon_jump.s
index 31a47d788..432f16d0b 100644
--- a/data/pokemon_jump.s
+++ b/data/pokemon_jump.s
@@ -3,149 +3,6 @@
.section .rodata
-gUnknown_846B794:: @ 846B794 gbapal
- .incbin "graphics/link_games/unk_846B794.gbapal"
-
-gUnknown_846B7B4:: @ 846B7B4 gbapal
- .incbin "graphics/link_games/unk_846B7B4.gbapal"
-
-gUnknown_846B7D4:: @ 846B7D4 4bpp.lz
- .incbin "graphics/link_games/unk_846B7D4.4bpp.lz"
-
-gUnknown_846BA00:: @ 846BA00 bin.lz
- .incbin "graphics/link_games/unk_846BA00.bin.lz"
-
-gUnknown_846BBB0:: @ 846BBB0 gbapal
- .incbin "graphics/link_games/unk_846BBB0.gbapal"
-
-gUnknown_846BBD0:: @ 846BBD0 4bpp.lz
- .incbin "graphics/link_games/unk_846BBD0.4bpp.lz"
-
-gUnknown_846C520:: @ 846C520 bin.lz
- .incbin "graphics/link_games/unk_846C520.bin.lz"
-
-gUnknown_846C8D8:: @ 846C8D8 gbapal
- .incbin "graphics/link_games/unk_846C8D8.gbapal"
-
-gUnknown_846C8F8:: @ 846C8F8 4bpp.lz
- .incbin "graphics/link_games/unk_846C8F8.4bpp.lz"
-
-gUnknown_846D3A8:: @ 846D3A8 bin.lz
- .incbin "graphics/link_games/unk_846D3A8.bin.lz"
-
-gUnknown_846D8D4:: @ 846D8D4
- .4byte 0x000001b0
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 27,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000025e6
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 1,
- @ .mapBaseIndex = 30,
- @ .screenSize = 2,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000016c9
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 12,
- @ .screenSize = 3,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x000031df
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 3,
- @ .mapBaseIndex = 29,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0000
- @ }
-
-gUnknown_846D8E4:: @ 846D8E4
- .byte 0, 19, 0, 6, 2, 2
- .2byte 0x0013
- .byte 0, 8, 0, 6, 2, 2
- .2byte 0x001f
- .byte 255, 0, 0, 0, 0, 0
- .2byte 0x0000
-
-gUnknown_846D8FC:: @ 846D8FC
- .4byte 0, sub_8149DC8
- .4byte 1, sub_8149F64
- .4byte 2, sub_8149FD0
- .4byte 3, sub_814A03C
- .4byte 4, sub_814A0C8
- .4byte 5, sub_814A174
- .4byte 6, sub_814A218
- .4byte 7, sub_814A264
- .4byte 9, sub_814A3AC
- .4byte 8, sub_814A308
-
-gUnknown_846D94C:: @ 846D94C
- .string "IES$"
-
-gUnknown_846D950:: @ 846D950
- .byte 0x00, 0x02, 0x03
-
-gUnknown_846D953:: @ 846D953
- .byte 0x02, 0x02, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00
-
-gUnknown_846D960:: @ 846D960
- obj_tiles gUnknown_8479688, 0, 800
-
-gUnknown_846D968:: @ 846D968
- obj_pal gUnknown_8479668, 800
-
-gUnknown_846D970::
- .2byte 0x0006, 0x0008, 0x0010, 0x0008
-
-gUnknown_846D978::
- .2byte 0x0006, 0x0008, 0x000b, 0x0006, 0x0010, 0x0008
-
-gUnknown_846D984::
- .2byte 0x0002, 0x0006, 0x0006, 0x0008, 0x0010, 0x0008, 0x0014, 0x0006
-
-gUnknown_846D994::
- .2byte 0x0002, 0x0006, 0x0006, 0x0008, 0x000b, 0x0006, 0x0010, 0x0008, 0x0014, 0x0006
-
-gUnknown_846D9A8:: @ 846D9A8
- .4byte gUnknown_846D970
- .4byte gUnknown_846D978
- .4byte gUnknown_846D984
- .4byte gUnknown_846D994
-
-gUnknown_846D9B8::
- .2byte 0x0058, 0x0098
-
-gUnknown_846D9BC::
- .2byte 0x0058, 0x0078, 0x0098
-
-gUnknown_846D9C2::
- .2byte 0x0038, 0x0058, 0x0098, 0x00b8
-
-gUnknown_846D9CA::
- .2byte 0x0038, 0x0058, 0x0078, 0x0098, 0x00b8
-
-gUnknown_846D9D4:: @ 846D9D4
- .4byte gUnknown_846D9B8
- .4byte gUnknown_846D9BC
- .4byte gUnknown_846D9C2
- .4byte gUnknown_846D9CA
-
gUnknown_846D9E4:: @ gbapal
.incbin "graphics/link_games/unk_846D9E4.gbapal"
diff --git a/data/strings.s b/data/strings.s
index f595170ff..591c7c7f4 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -3289,10 +3289,10 @@ gString_Help:: @ 841CB49
gString_HelpSystem_ClearTo8:: @ 841CB4E
.string "{CLEAR_TO 8}$"
-gUnknown_841CB52:: @ 841CB52
+gText_SpacePoints2:: @ 841CB52
.string " points$"
-gUnknown_841CB5A:: @ 841CB5A
+gText_SpaceTimes3:: @ 841CB5A
.string " time(s)$"
gUnknown_841CB63:: @ 841CB63
@@ -3307,28 +3307,28 @@ gUnknown_841CB88::
gUnknown_841CB94::
.string "EXCELLENTS in a row:$"
-gUnknown_841CBA9:: @ 841CBA9
+gText_AwesomeWonF701F700:: @ 841CBA9
.string "Awesome score! You've\n"
.string "won {DYNAMIC 01} {DYNAMIC 00}!$"
-gUnknown_841CBCA:: @ 841CBCA
+gText_FilledStorageSpace2:: @ 841CBCA
.string "There's no room left now.$"
-gUnknown_841CBE4:: @ 841CBE4
+gText_CantHoldMore:: @ 841CBE4
.string "You can't hold any more!$"
-gUnknown_841CBFD:: @ 841CBFD
+gText_WantToPlayAgain2:: @ 841CBFD
.string "Want to play again?$"
-gUnknown_841CC11:: @ 841CC11
+gText_SomeoneDroppedOut2:: @ 841CC11
.string "Somebody dropped out.\n"
.string "The link will be canceled.$"
-gUnknown_841CC42:: @ 841CC42
+gText_SavingDontTurnOffPower:: @ 841CC42
.string "SAVING…\n"
.string "DON'T TURN OFF THE POWER.$"
-gUnknown_841CC64:: @ 841CC64
+gText_CommunicationStandby4:: @ 841CC64
.string "Communication standby…$"
.string "SAVING...\n"
diff --git a/graphics/link_games/unk_846BA00.bin b/graphics/link_games/pkmnjump_bg.bin
index 68303ba7e..68303ba7e 100644
--- a/graphics/link_games/unk_846BA00.bin
+++ b/graphics/link_games/pkmnjump_bg.bin
Binary files differ
diff --git a/graphics/link_games/unk_846B7B4.pal b/graphics/link_games/pkmnjump_bg.pal
index aed4bcc8b..aed4bcc8b 100644
--- a/graphics/link_games/unk_846B7B4.pal
+++ b/graphics/link_games/pkmnjump_bg.pal
diff --git a/graphics/link_games/unk_846B7D4.png b/graphics/link_games/pkmnjump_bg.png
index ceef49004..ceef49004 100644
--- a/graphics/link_games/unk_846B7D4.png
+++ b/graphics/link_games/pkmnjump_bg.png
Binary files differ
diff --git a/graphics/link_games/unk_846B794.pal b/graphics/link_games/pkmnjump_pal3.pal
index 6b73be372..6b73be372 100644
--- a/graphics/link_games/unk_846B794.pal
+++ b/graphics/link_games/pkmnjump_pal3.pal
diff --git a/graphics/link_games/unk_846D3A8.bin b/graphics/link_games/pkmnjump_results.bin
index b17c5052c..b17c5052c 100644
--- a/graphics/link_games/unk_846D3A8.bin
+++ b/graphics/link_games/pkmnjump_results.bin
Binary files differ
diff --git a/graphics/link_games/unk_846C8D8.pal b/graphics/link_games/pkmnjump_results.pal
index aca961de3..aca961de3 100644
--- a/graphics/link_games/unk_846C8D8.pal
+++ b/graphics/link_games/pkmnjump_results.pal
diff --git a/graphics/link_games/unk_846C8F8.png b/graphics/link_games/pkmnjump_results.png
index b87d50659..b87d50659 100644
--- a/graphics/link_games/unk_846C8F8.png
+++ b/graphics/link_games/pkmnjump_results.png
Binary files differ
diff --git a/graphics/link_games/unk_846C520.bin b/graphics/link_games/pkmnjump_venusaur.bin
index 093c0a5a5..093c0a5a5 100644
--- a/graphics/link_games/unk_846C520.bin
+++ b/graphics/link_games/pkmnjump_venusaur.bin
Binary files differ
diff --git a/graphics/link_games/unk_846BBB0.pal b/graphics/link_games/pkmnjump_venusaur.pal
index a3514b004..a3514b004 100644
--- a/graphics/link_games/unk_846BBB0.pal
+++ b/graphics/link_games/pkmnjump_venusaur.pal
diff --git a/graphics/link_games/unk_846BBD0.png b/graphics/link_games/pkmnjump_venusaur.png
index d555d324d..d555d324d 100644
--- a/graphics/link_games/unk_846BBD0.png
+++ b/graphics/link_games/pkmnjump_venusaur.png
Binary files differ
diff --git a/include/digit_obj_util.h b/include/digit_obj_util.h
index b2ecd42bc..11d51f1fc 100644
--- a/include/digit_obj_util.h
+++ b/include/digit_obj_util.h
@@ -15,6 +15,11 @@ struct DigitObjUtilTemplate
const struct SpritePalette *spritePal;
};
+extern const u16 gUnknown_8479668[];
+extern const u32 gUnknown_8479688[];
+extern const u32 gUnknown_8479748[];
+
+bool32 DigitObjUtil_Init(u32 count);
void DigitObjUtil_Teardown(void);
bool32 DigitObjUtil_CreatePrinter(u32 id, s32 num, const struct DigitObjUtilTemplate *template);
void DigitObjUtil_PrintNumOn(u32 id, s32 num);
diff --git a/include/pokemon_jump.h b/include/pokemon_jump.h
index 911a40204..489b04bb4 100644
--- a/include/pokemon_jump.h
+++ b/include/pokemon_jump.h
@@ -138,7 +138,6 @@ u8 *sub_81499E0(u8 multiplayerId);
void sub_814A95C(int id);
void sub_8149CEC(struct PokemonJump2 *);
-void sub_802D0BC(struct PokemonJump2 *);
void sub_8149D24(void);
void sub_8149D40(int);
bool32 sub_8149D68(void);
@@ -172,4 +171,41 @@ bool32 sub_8149C90(struct PokemonJump1_82E4 *arg0, int multiplayerId);
bool32 sub_814B494(u32 jumpScore, u16 jumpsInRow, u16 excellentsInRow);
void sub_814B4E8(void);
+void sub_814AD6C(struct PokemonJump2 *);
+void sub_814B294(struct PokemonJump2 *);
+void sub_814B43C(struct PokemonJump2 *);
+bool32 sub_814B460(void);
+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_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);
+
#endif // GUARD_POKEMON_JUMP_H
diff --git a/include/strings.h b/include/strings.h
index d468af4f3..bbbe34058 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -1126,4 +1126,15 @@ extern const u8 gJPText_NewTrainerHasComeToSevii[];
extern const u8 gJPText_PleaseWaitAMoment[];
extern const u8 gJPText_WriteErrorUnableToSaveData[];
+// pokemon_jump
+extern const u8 gText_WantToPlayAgain2[];
+extern const u8 gText_SavingDontTurnOffPower[];
+extern const u8 gText_SomeoneDroppedOut2[];
+extern const u8 gText_CommunicationStandby4[];
+extern const u8 gText_AwesomeWonF701F700[];
+extern const u8 gText_FilledStorageSpace2[];
+extern const u8 gText_CantHoldMore[];
+extern const u8 gText_SpacePoints2[];
+extern const u8 gText_SpaceTimes3[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 70028ba98..0c3619350 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -276,6 +276,8 @@ SECTIONS {
src/seagallop.o(.text);
src/pokemon_jump.o(.text);
src/pokemon_jump_2.o(.text);
+ src/pokemon_jump_3.o(.text);
+ src/pokemon_jump_4.o(.text);
asm/pokemon_jump_2.o(.text);
asm/berry_crush.o(.text);
asm/berry_crush_2.o(.text);
@@ -568,6 +570,7 @@ SECTIONS {
src/seagallop.o(.rodata);
src/pokemon_jump.o(.rodata);
src/pokemon_jump_2.o(.rodata);
+ src/pokemon_jump_4.o(.rodata);
data/pokemon_jump.o(.rodata);
data/berry_crush.o(.rodata);
src/wireless_communication_status_screen.o(.rodata);
diff --git a/src/pokemon_jump_2.c b/src/pokemon_jump_2.c
index d068f449c..c6b881f5b 100644
--- a/src/pokemon_jump_2.c
+++ b/src/pokemon_jump_2.c
@@ -1,27 +1,12 @@
#include "global.h"
-#include "malloc.h"
-#include "battle_anim.h"
-#include "bg.h"
-#include "data.h"
-#include "decompress.h"
-#include "dynamic_placeholder_text_util.h"
+#include "gflib.h"
#include "event_data.h"
#include "item.h"
#include "link_rfu.h"
-#include "main.h"
#include "menu.h"
-#include "palette.h"
#include "random.h"
#include "save.h"
-#include "script.h"
-#include "sound.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "strings.h"
#include "task.h"
-#include "text_window.h"
-#include "trig.h"
-#include "pokemon.h"
#include "pokemon_jump.h"
#include "constants/songs.h"
#include "constants/species.h"
@@ -98,53 +83,8 @@ static void sub_8149900(u16, u16 *, u16 *);
static u16 sub_8149910(void);
static u16 sub_8149930(void);
static u16 sub_8149978(u16 item, u16 quantity);
-static void sub_802CB7C(struct Sprite *sprite);
-static void sub_802CC40(struct Sprite *sprite);
-static void sub_802CD08(struct Sprite *sprite);
-static void sub_802CDD4(struct Sprite *sprite);
-
-static void sub_802D12C(u8 taskId);
-static void sub_802E00C(u8 arg0);
-static void sub_802E090(u8 taskId);
-static void sub_802D150(void);
-static void sub_802DD08(void);
-static void sub_802DB8C(void);
-static void sub_802DBF8(void);
-static void sub_802DE1C(void);
-static void sub_802DFD4(void);
-static void sub_802D108(void (*func)(void));
-static void sub_802DF70(bool32 arg0);
-static u32 sub_802DA9C(u32 left, u32 top, u32 width, u32 height);
-static void sub_802DB18(u16 left, u16 top, u8 cursorPos);
-static void sub_802D150(void);
-static void sub_802D2E4(void);
-static void sub_802D350(void);
-static void sub_802D3BC(void);
-static void sub_802D448(void);
-static void sub_802D4F4(void);
-static void sub_802D598(void);
-static void sub_802D5E4(void);
-static void sub_802D72C(void);
-static void sub_802D688(void);
-static void Task_ShowPokemonJumpRecords(u8 taskId);
-static void sub_802E6D0(u8 taskId);
-static void sub_802EB98(u8 taskId);
-static void sub_802E500(u16 windowId, int width);
-static void TruncateToFirstWordOnly(u8 *str);
-static void sub_802EF50(u16 tileTag, u16 palTag);
-static u8 sub_802EFA8(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subpriority);
-static void sub_802EFFC(u16 tileTag, u16 palTag, s16 x, s16 y, u8 subpriority, s16 *spriteId1, s16 *spriteId2);
-static bool32 sub_802EC98(u8 spriteId);
-static bool32 sub_802EE30(u8 spriteId);
-static void sub_802EDCC(u8 spriteId1, u8 spriteId2, u8 spriteId3);
-static void sub_802EE5C(struct Sprite *sprite);
-static void sub_802E83C(u8 taskId);
-static void sub_802E8C8(u8 taskId);
-static void sub_802EA50(u8 taskId);
-static void sub_802EAB0(u8 taskId);
EWRAM_DATA static struct PokemonJump1 *gUnknown_203F3D4 = NULL;
-// EWRAM_DATA static struct PokemonJump2 *gUnknown_203F3D8 = NULL;
static const struct PokemonJumpMons gPkmnJumpSpecies[] =
{
diff --git a/src/pokemon_jump_3.c b/src/pokemon_jump_3.c
new file mode 100644
index 000000000..4be18e55c
--- /dev/null
+++ b/src/pokemon_jump_3.c
@@ -0,0 +1,167 @@
+#include "global.h"
+#include "link_rfu.h"
+#include "pokemon_jump.h"
+
+struct MonInfoPacket
+{
+ u8 id; // packet id
+ u16 species;
+ u32 personality;
+ u32 otId;
+};
+
+void sub_8149A6C(struct PokemonJump1_MonInfo *arg0)
+{
+ struct MonInfoPacket packet;
+ packet.id = 1,
+ packet.species = arg0->species,
+ packet.otId = arg0->otId,
+ packet.personality = arg0->personality,
+ RfuPrepareSend0x2f00(&packet);
+}
+
+bool32 sub_8149A90(int multiplayerId, struct PokemonJump1_MonInfo *arg0)
+{
+ struct MonInfoPacket packet;
+
+ if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
+ return FALSE;
+
+ memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
+ if (packet.id == 1)
+ {
+ arg0->species = packet.species;
+ arg0->otId = packet.otId;
+ arg0->personality = packet.personality;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+struct UnkPacket2
+{
+ u8 id; // packet id
+ u32 unk4;
+ u32 unk8;
+};
+
+void sub_8149AE0(u32 arg0)
+{
+ struct UnkPacket2 packet;
+ packet.id = 2;
+ packet.unk4 = arg0;
+ RfuPrepareSend0x2f00(&packet);
+}
+
+struct UnkPacket3
+{
+ u8 id; // packet id
+ u8 unk1;
+ u8 unk2;
+ u8 unk3_0:5;
+ u8 unk3_1:3;
+ u16 unk4;
+ u16 unk6;
+ u32 unk8_0:15;
+ u32 unk8_1:17;
+};
+
+void sub_8149AF8(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1)
+{
+ struct UnkPacket3 packet;
+ packet.id = 3;
+ packet.unk8_1 = arg1->unk8;
+ packet.unk3_0 = arg1->unk1;
+ packet.unk1 = arg1->unk0;
+ packet.unk6 = arg1->unk2;
+ packet.unk8_0 = arg1->unk4;
+ packet.unk2 = arg0->unk10;
+ packet.unk3_1 = arg0->unk14;
+ packet.unk4 = arg0->unkE;
+ RfuPrepareSend0x2f00(&packet);
+}
+
+bool32 sub_8149B7C(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1)
+{
+ struct UnkPacket3 packet;
+
+ if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00)
+ return FALSE;
+
+ memcpy(&packet, &gRecvCmds[0][1], sizeof(packet));
+ if (packet.id != 3)
+ return FALSE;
+
+ arg1->unk8 = packet.unk8_1;
+ arg1->unk1 = packet.unk3_0;
+ arg1->unk0 = packet.unk1;
+ arg1->unk2 = packet.unk6;
+ arg1->unk4 = packet.unk8_0;
+ arg0->unk10 = packet.unk2;
+ arg0->unk14 = packet.unk3_1;
+ arg0->unkE = packet.unk4;
+ return TRUE;
+}
+
+struct UnkPacket4
+{
+ u8 id; // packet id
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u16 unk4;
+ u8 unk6;
+ u16 unk8;
+};
+
+void sub_8149BF4(struct PokemonJump1_82E4 *arg0, u8 arg1, u16 arg2)
+{
+ struct UnkPacket4 packet;
+ packet.id = 4;
+ packet.unk1 = arg0->unk10;
+ packet.unk2 = arg0->unk14;
+ packet.unk3 = arg0->unk18;
+ packet.unk4 = arg0->unkE;
+ packet.unk6 = arg1;
+ packet.unk8 = arg2;
+ RfuPrepareSend0x2f00(&packet);
+}
+
+bool32 sub_8149C24(struct PokemonJump1_82E4 *arg0, int multiplayerId, u8 *arg2, u16 *arg3)
+{
+ struct UnkPacket4 packet;
+
+ if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
+ return FALSE;
+
+ memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
+ if (packet.id != 4)
+ return FALSE;
+
+ arg0->unk10 = packet.unk1;
+ arg0->unk14 = packet.unk2;
+ arg0->unk18 = packet.unk3;
+ arg0->unkE = packet.unk4;
+ *arg2 = packet.unk6;
+ *arg3 = packet.unk8;
+ return TRUE;
+}
+
+bool32 sub_8149C90(struct PokemonJump1_82E4 *arg0, int multiplayerId)
+{
+ struct UnkPacket4 packet;
+
+ if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00)
+ return FALSE;
+
+ memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet));
+ if (packet.id != 4)
+ return FALSE;
+
+ arg0->unk10 = packet.unk1;
+ arg0->unk14 = packet.unk2;
+ arg0->unk18 = packet.unk3;
+ arg0->unkE = packet.unk4;
+ return TRUE;
+}
diff --git a/src/pokemon_jump_4.c b/src/pokemon_jump_4.c
new file mode 100644
index 000000000..134ac21a1
--- /dev/null
+++ b/src/pokemon_jump_4.c
@@ -0,0 +1,922 @@
+#include "global.h"
+#include "gflib.h"
+#include "data.h"
+#include "digit_obj_util.h"
+#include "dynamic_placeholder_text_util.h"
+#include "item.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "pokemon_jump.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "constants/songs.h"
+#include "constants/items.h"
+
+EWRAM_DATA static struct PokemonJump2 *gUnknown_203F3D8 = NULL;
+
+static void sub_8149D80(void (*func)(void));
+static void sub_8149DA4(u8 taskId);
+static void sub_8149DC8(void);
+static void sub_8149F64(void);
+static void sub_8149FD0(void);
+static void sub_814A03C(void);
+static void sub_814A0C8(void);
+static void sub_814A174(void);
+static void sub_814A218(void);
+static void sub_814A264(void);
+static void sub_814A308(void);
+static void sub_814A3AC(void);
+static u32 sub_814A754(u32 left, u32 top, u32 width, u32 height);
+static void sub_814A7D0(u16 left, u16 top, u8 cursorPos);
+static void sub_814A84C(void);
+static void sub_814A8B8(void);
+static void sub_814A9C8(void);
+static void sub_814AADC(void);
+static void sub_814AC30(bool32 arg0);
+static void sub_814AC94(void);
+static void sub_814ACCC(u8 arg0);
+static void sub_814AD50(u8 taskId);
+
+static void sub_8149D34(struct PokemonJump2 *);
+
+void sub_8149CEC(struct PokemonJump2 *arg0)
+{
+ u8 taskId;
+
+ gUnknown_203F3D8 = arg0;
+ sub_8149D34(gUnknown_203F3D8);
+ taskId = CreateTask(sub_8149DA4, 3);
+ gUnknown_203F3D8->unk6 = taskId;
+ SetWordTaskArg(gUnknown_203F3D8->unk6, 2, (u32) gUnknown_203F3D8);
+ sub_8149D80(sub_8149DC8);
+}
+
+void sub_8149D24(void)
+{
+ FreeAllWindowBuffers();
+ DigitObjUtil_Teardown();
+}
+
+static void sub_8149D34(struct PokemonJump2 *arg0)
+{
+ arg0->unk4 = 0;
+ arg0->unk0 = 0;
+ arg0->unk12 = 0xFF;
+}
+
+// Gfx
+static const u16 gPkmnJumpPal3[] = INCBIN_U16("graphics/link_games/pkmnjump_pal3.gbapal");
+
+static const u16 gPkmnJumpBgPal[] = INCBIN_U16("graphics/link_games/pkmnjump_bg.gbapal");
+static const u32 gPkmnJumpBgGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_bg.4bpp.lz");
+static const u32 gPkmnJumpBgTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_bg.bin.lz");
+
+static const u16 gPkmnJumpVenusaurPal[] = INCBIN_U16("graphics/link_games/pkmnjump_venusaur.gbapal");
+static const u32 gPkmnJumpVenusaurGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_venusaur.4bpp.lz");
+static const u32 gPkmnJumpVenusaurTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_venusaur.bin.lz");
+
+static const u16 gPkmnJumpResultsPal[] = INCBIN_U16("graphics/link_games/pkmnjump_results.gbapal");
+static const u32 gPkmnJumpResultsGfx[] = INCBIN_U32("graphics/link_games/pkmnjump_results.4bpp.lz");
+static const u32 gPkmnJumpResultsTilemap[] = INCBIN_U32("graphics/link_games/pkmnjump_results.bin.lz");
+
+static const struct BgTemplate gUnknown_846D8D4[] =
+{
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 27,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 30,
+ .screenSize = 2,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+ {
+ .bg = 1,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 12,
+ .screenSize = 3,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 3,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0
+ },
+};
+
+static const struct WindowTemplate gUnknown_846D8E4[] =
+{
+ {
+ .bg = 0,
+ .tilemapLeft = 19,
+ .tilemapTop = 0,
+ .width = 6,
+ .height = 2,
+ .paletteNum = 2,
+ .baseBlock = 0x13,
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 8,
+ .tilemapTop = 0,
+ .width = 6,
+ .height = 2,
+ .paletteNum = 2,
+ .baseBlock = 0x1F,
+ },
+ DUMMY_WIN_TEMPLATE,
+};
+
+struct
+{
+ int id;
+ void (*func)(void);
+} static const gUnknown_846D8FC[] =
+{
+ {0x00, sub_8149DC8},
+ {0x01, sub_8149F64},
+ {0x02, sub_8149FD0},
+ {0x03, sub_814A03C},
+ {0x04, sub_814A0C8},
+ {0x05, sub_814A174},
+ {0x06, sub_814A218},
+ {0x07, sub_814A264},
+ {0x09, sub_814A3AC},
+ {0x08, sub_814A308},
+};
+
+void sub_8149D40(int arg0)
+{
+ int i;
+
+ for (i = 0; i < ARRAY_COUNT(gUnknown_846D8FC); i++)
+ {
+ if (gUnknown_846D8FC[i].id == arg0)
+ sub_8149D80(gUnknown_846D8FC[i].func);
+ }
+}
+
+bool32 sub_8149D68(void)
+{
+ return (gUnknown_203F3D8->unk0 != 1);
+}
+
+static void sub_8149D80(void (*func)(void))
+{
+ SetWordTaskArg(gUnknown_203F3D8->unk6, 0, (u32) func);
+ gUnknown_203F3D8->unk4 = 0;
+ gUnknown_203F3D8->unk0 = 0;
+}
+
+static void sub_8149DA4(u8 taskId)
+{
+ if (!gUnknown_203F3D8->unk0)
+ {
+ void (*func)(void) = (void *)(GetWordTaskArg(taskId, 0));
+
+ func();
+ }
+}
+
+static void sub_8149DC8(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, gUnknown_846D8D4, ARRAY_COUNT(gUnknown_846D8D4));
+ InitWindows(gUnknown_846D8E4);
+ ResetBgPositions();
+ ResetTempTileDataBuffers();
+ sub_814AD6C(gUnknown_203F3D8);
+ sub_814A9C8();
+ LoadPalette(gPkmnJumpBgPal, 0, 0x20);
+ DecompressAndCopyTileDataToVram(3, gPkmnJumpBgGfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(3, gPkmnJumpBgTilemap, 0, 0, 1);
+ LoadPalette(gPkmnJumpVenusaurPal, 0x30, 0x20);
+ DecompressAndCopyTileDataToVram(2, gPkmnJumpVenusaurGfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(2, gPkmnJumpVenusaurTilemap, 0, 0, 1);
+ LoadPalette(gPkmnJumpResultsPal, 0x10, 0x20);
+ DecompressAndCopyTileDataToVram(1, gPkmnJumpResultsGfx, 0, 0, 0);
+ DecompressAndCopyTileDataToVram(1, gPkmnJumpResultsTilemap, 0, 0, 1);
+ LoadPalette(gPkmnJumpPal3, 0x20, 0x20);
+ SetBgTilemapBuffer(0, gUnknown_203F3D8->tilemapBuffer);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x20, 0x20);
+ sub_814A84C();
+ sub_814AA24(0);
+ sub_814FDA0(0, 1, 0xE0);
+ LoadUserWindowBorderGfx(0, 0x00A, 0xD0);
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!FreeTempTileDataBuffersIfPossible())
+ {
+ sub_814A8B8();
+ sub_814B294(gUnknown_203F3D8);
+ sub_814B348(gUnknown_203F3D8, 6);
+ ShowBg(3);
+ ShowBg(0);
+ ShowBg(2);
+ HideBg(1);
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 2:
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_8149F64(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ sub_814AADC();
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_814AC30(FALSE);
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_814AC94();
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_8149FD0(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ sub_814AADC();
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_814AC30(TRUE);
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ sub_814AC94();
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 3:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_814A03C(void)
+{
+ int i, numPlayers;
+
+ numPlayers = sub_81499A4();
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ for (i = 0; i < numPlayers; i++)
+ ClearWindowTilemap(gUnknown_203F3D8->unk1C[i]);
+
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ for (i = 0; i < numPlayers; i++)
+ RemoveWindow(gUnknown_203F3D8->unk1C[i]);
+
+ gUnknown_203F3D8->unk0 = 1;
+ }
+ break;
+ }
+}
+
+static void sub_814A0C8(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ gUnknown_203F3D8->unk12 = sub_814A754(1, 8, 20, 2);
+ AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_WantToPlayAgain2, 0, 2, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_203F3D8->unk12);
+ DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
+ sub_814A7D0(23, 7, 0);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_814A174(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ gUnknown_203F3D8->unk12 = sub_814A754(2, 7, 26, 4);
+ AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_SavingDontTurnOffPower, 0, 2, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_203F3D8->unk12);
+ DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_814A218(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ sub_814A6CC();
+ DestroyYesNoMenu();
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!sub_814A6FC() && !IsDma3ManagerBusyWithBgCopy())
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_814A264(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ gUnknown_203F3D8->unk12 = sub_814A754(2, 8, 22, 4);
+ AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_SomeoneDroppedOut2, 0, 2, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_203F3D8->unk12);
+ DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_814A308(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ gUnknown_203F3D8->unk12 = sub_814A754(7, 10, 16, 2);
+ AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gText_CommunicationStandby4, 0, 2, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_203F3D8->unk12);
+ DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F3D8->unk4++;
+ }
+ break;
+ case 2:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+static void sub_814A3AC(void)
+{
+ switch (gUnknown_203F3D8->unk4)
+ {
+ case 0:
+ sub_814B43C(gUnknown_203F3D8);
+ gUnknown_203F3D8->unk4++;
+ break;
+ case 1:
+ if (!sub_814B460())
+ gUnknown_203F3D8->unk0 = 1;
+ break;
+ }
+}
+
+void sub_814A3E4(void)
+{
+ gUnknown_203F3D8->unkA = 0;
+ gUnknown_203F3D8->unkB = 0;
+ gUnknown_203F3D8->unkC = 6;
+ sub_814A95C(gUnknown_203F3D8->unkC);
+}
+
+bool32 sub_814A408(void)
+{
+ switch (gUnknown_203F3D8->unkA)
+ {
+ case 0:
+ gUnknown_203F3D8->unkB++;
+ if (gUnknown_203F3D8->unkB > 10)
+ {
+ gUnknown_203F3D8->unkB = 0;
+ gUnknown_203F3D8->unkC++;
+ if (gUnknown_203F3D8->unkC >= 10)
+ {
+ gUnknown_203F3D8->unkC = 0;
+ gUnknown_203F3D8->unkA++;
+ }
+ }
+ sub_814A95C(gUnknown_203F3D8->unkC);
+ if (gUnknown_203F3D8->unkC != 7)
+ break;
+ case 1:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+const u8 gUnknown_846D94C[] = _("IES");
+
+void sub_814A468(u16 itemId, u16 quantity)
+{
+ CopyItemName(itemId, gUnknown_203F3D8->txtBuff[0]);
+ ConvertIntToDecimalStringN(gUnknown_203F3D8->txtBuff[1], quantity, STR_CONV_MODE_LEFT_ALIGN, 1);
+ if (itemId >= FIRST_BERRY_INDEX && itemId < LAST_BERRY_INDEX)
+ {
+ if (quantity > 1)
+ {
+ int endi = StringLength(gUnknown_203F3D8->txtBuff[0]);
+ if (endi != 0)
+ {
+ endi--;
+ endi[gUnknown_203F3D8->txtBuff[0]] = EOS;
+ StringAppend(gUnknown_203F3D8->txtBuff[0], gUnknown_846D94C);
+ }
+ }
+ }
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_203F3D8->txtBuff[0]);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_203F3D8->txtBuff[1]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_AwesomeWonF701F700);
+ gUnknown_203F3D8->unk12 = sub_814A754(4, 8, 22, 4);
+ AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
+ gUnknown_203F3D8->unk14 = MUS_FANFA1;
+ gUnknown_203F3D8->unkD = 0;
+}
+
+void sub_814A53C(u16 itemId)
+{
+ CopyItemName(itemId, gUnknown_203F3D8->txtBuff[0]);
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_203F3D8->txtBuff[0]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_FilledStorageSpace2);
+ gUnknown_203F3D8->unk12 = sub_814A754(4, 8, 22, 4);
+ AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
+ gUnknown_203F3D8->unk14 = 0;
+ gUnknown_203F3D8->unkD = 0;
+}
+
+void sub_814A5B4(u16 itemId)
+{
+ CopyItemName(itemId, gUnknown_203F3D8->txtBuff[0]);
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_203F3D8->txtBuff[0]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gUnknown_203F3D8->strBuff, gText_CantHoldMore);
+ gUnknown_203F3D8->unk12 = sub_814A754(4, 9, 22, 2);
+ AddTextPrinterParameterized(gUnknown_203F3D8->unk12, 2, gUnknown_203F3D8->strBuff, 0, 2, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(gUnknown_203F3D8->unk12, 2);
+ gUnknown_203F3D8->unk14 = 0;
+ gUnknown_203F3D8->unkD = 0;
+}
+
+bool32 sub_814A62C(void)
+{
+ switch (gUnknown_203F3D8->unkD)
+ {
+ case 0:
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ PutWindowTilemap(gUnknown_203F3D8->unk12);
+ DrawTextBorderOuter(gUnknown_203F3D8->unk12, 1, 14);
+ CopyBgTilemapBufferToVram(0);
+ gUnknown_203F3D8->unkD++;
+ }
+ break;
+ case 1:
+ if (IsDma3ManagerBusyWithBgCopy())
+ break;
+ if (gUnknown_203F3D8->unk14 == 0)
+ {
+ gUnknown_203F3D8->unkD += 2;
+ return FALSE;
+ }
+ PlayFanfare(gUnknown_203F3D8->unk14);
+ gUnknown_203F3D8->unkD++;
+ case 2:
+ if (!IsFanfareTaskInactive())
+ break;
+ gUnknown_203F3D8->unkD++;
+ case 3:
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+void sub_814A6CC(void)
+{
+ if (gUnknown_203F3D8->unk12 != 0xFF)
+ {
+ rbox_fill_rectangle(gUnknown_203F3D8->unk12);
+ CopyWindowToVram(gUnknown_203F3D8->unk12, 1);
+ gUnknown_203F3D8->unkD = 0;
+ }
+}
+
+// Can't match this without the ugly GOTO, oh well.
+bool32 sub_814A6FC(void)
+{
+ if (gUnknown_203F3D8->unk12 == 0xFF)
+ {
+ RET_FALSE:
+ return FALSE;
+ }
+
+ if (gUnknown_203F3D8->unkD == 0)
+ {
+ if (!IsDma3ManagerBusyWithBgCopy())
+ {
+ RemoveWindow(gUnknown_203F3D8->unk12);
+ gUnknown_203F3D8->unk12 = 0xFF;
+ gUnknown_203F3D8->unkD++;
+ goto RET_FALSE;
+ }
+ }
+ else if (gUnknown_203F3D8->unkD == 1)
+ goto RET_FALSE;
+
+ return TRUE;
+}
+
+s8 sub_814A744(void)
+{
+ return Menu_ProcessInputNoWrapClearOnChoose();
+}
+
+static u32 sub_814A754(u32 left, u32 top, u32 width, u32 height)
+{
+ u32 windowId;
+ struct WindowTemplate window;
+
+ window.bg = 0;
+ window.tilemapLeft = left;
+ window.tilemapTop = top;
+ window.width = width;
+ window.height = height;
+ window.paletteNum = 0xF;
+ window.baseBlock = 0x43;
+
+ windowId = AddWindow(&window);
+ FillWindowPixelBuffer(windowId, 0x11);
+ return windowId;
+}
+
+static void sub_814A7D0(u16 left, u16 top, u8 cursorPos)
+{
+ struct WindowTemplate window;
+ u8 a = cursorPos;
+
+ window.bg = 0;
+ window.tilemapLeft = left;
+ window.tilemapTop = top;
+ window.width = 6;
+ window.height = 4;
+ window.paletteNum = 2;
+ window.baseBlock = 0x2B;
+
+ CreateYesNoMenu(&window, 2, 0, 2, 0x00a, 0xD, a);
+}
+
+static void sub_814A84C(void)
+{
+ u8 color[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY};
+
+ PutWindowTilemap(0);
+ PutWindowTilemap(1);
+ FillWindowPixelBuffer(0, 0);
+ FillWindowPixelBuffer(1, 0);
+ AddTextPrinterParameterized3(0, 0, 0, 2, color, 0, gText_SpacePoints2);
+ AddTextPrinterParameterized3(1, 0, 0, 2, color, 0, gText_SpaceTimes3);
+}
+
+static const u8 gUnknown_846D953[] = {2, 2, 0, 0, 1, 1, 1, 0, 0, 2, 0, 0, 0};
+
+static const struct CompressedSpriteSheet gUnknown_846D960 = {gUnknown_8479688, 0, 0x320};
+static const struct SpritePalette gUnknown_846D968 = {gUnknown_8479668, 0x320};
+
+static const u16 gUnknown_846D970[] = {0x06, 0x08, 0x10, 0x08};
+static const u16 gUnknown_846D978[] = {0x06, 0x08, 0x0b, 0x06, 0x10, 0x08};
+static const u16 gUnknown_846D984[] = {0x02, 0x06, 0x06, 0x08, 0x10, 0x08, 0x14, 0x06};
+static const u16 gUnknown_846D994[] = {0x02, 0x06, 0x06, 0x08, 0x0b, 0x06, 0x10, 0x08, 0x14, 0x06};
+
+static const u16 *const gUnknown_082FE234[] =
+{
+ gUnknown_846D970,
+ gUnknown_846D978,
+ gUnknown_846D984,
+ gUnknown_846D994,
+};
+
+static const s16 gUnknown_846D9B8[] = {0x0058, 0x0098};
+static const s16 gUnknown_846D9BC[] = {0x0058, 0x0078, 0x0098};
+static const s16 gUnknown_846D9C2[] = {0x0038, 0x0058, 0x0098, 0x00b8};
+static const s16 gUnknown_846D9CA[] = {0x0038, 0x0058, 0x0078, 0x0098, 0x00b8};
+
+static const s16 *const gUnknown_846D9D4[] =
+{
+ gUnknown_846D9B8,
+ gUnknown_846D9BC,
+ gUnknown_846D9C2,
+ gUnknown_846D9CA,
+};
+
+static void sub_814A8B8(void)
+{
+ int i, y, playersCount = sub_81499A4();
+ const s16 *xCoords = gUnknown_846D9D4[playersCount - 2];
+
+ for (i = 0; i < playersCount; i++)
+ {
+ struct PokemonJump1_MonInfo *info = sub_81499C0(i);
+
+ y = gMonFrontPicCoords[info->species].y_offset;
+ sub_814ADCC(gUnknown_203F3D8, info, *xCoords, y + 112, i);
+ sub_814B240(gUnknown_203F3D8, *xCoords, 112, i);
+ xCoords++;
+ }
+}
+
+void sub_814A940(u32 id, s16 y)
+{
+ gUnknown_203F3D8->unk81A8[id]->pos2.y = y;
+}
+
+void sub_814A95C(int id)
+{
+ sub_814B348(gUnknown_203F3D8, id);
+ ChangeBgY(2, (gUnknown_846D953[id] * 5) << 0xD, 0);
+}
+
+int sub_814A98C(u8 flags)
+{
+ int i, count;
+
+ for (i = 0, count = 0; i < 5; i++)
+ {
+ if (flags & 1)
+ {
+ sub_814AF0C(gUnknown_203F3D8, i);
+ count++;
+ }
+ flags >>= 1;
+ }
+
+ sub_814ACCC(count - 2);
+ return count;
+}
+
+static void sub_814A9C8(void)
+{
+ struct DigitObjUtilTemplate unkStruct;
+ struct DigitObjUtilTemplate *ptr = &unkStruct; // This temp variable is needed to match, don't ask me why.
+
+ ptr->shape = SPRITE_SHAPE(8x8);
+ ptr->size = SPRITE_SIZE(8x8);
+ ptr->strConvMode = 0;
+ ptr->priority = 1;
+ ptr->oamCount = 5;
+ ptr->xDelta = 8;
+ ptr->x = 108;
+ ptr->y = 6;
+ ptr->spriteSheet = (void*) &gUnknown_846D960;
+ ptr->spritePal = &gUnknown_846D968;
+
+ DigitObjUtil_Init(2);
+ DigitObjUtil_CreatePrinter(0, 0, ptr);
+
+ unkStruct.oamCount = 4;
+ unkStruct.x = 30;
+ unkStruct.y = 6;
+ DigitObjUtil_CreatePrinter(1, 0, &unkStruct);
+}
+
+void sub_814AA24(int arg0)
+{
+ DigitObjUtil_PrintNumOn(0, arg0);
+}
+
+void sub_814AA34(u16 arg0)
+{
+ DigitObjUtil_PrintNumOn(1, arg0);
+}
+
+void sub_814AA48(u8 multiplayerId)
+{
+ sub_814AFE8(gUnknown_203F3D8, multiplayerId);
+}
+
+void sub_814AA60(u8 multiplayerId)
+{
+ sub_814B080(gUnknown_203F3D8, multiplayerId);
+}
+
+int sub_814AA78(int multiplayerId)
+{
+ return sub_814B010(gUnknown_203F3D8, multiplayerId);
+}
+
+void sub_814AA8C(void)
+{
+ sub_814B0A8(gUnknown_203F3D8);
+}
+
+void sub_814AAA0(void)
+{
+ sub_814B134(gUnknown_203F3D8);
+}
+
+void sub_814AAB4(int multiplayerId)
+{
+ sub_814B168(gUnknown_203F3D8, multiplayerId);
+}
+
+int sub_814AAC8(void)
+{
+ return sub_814B190(gUnknown_203F3D8);
+}
+
+static void sub_814AADC(void)
+{
+ struct WindowTemplate window;
+ int i, playersCount = sub_81499A4();
+ const u16 *winCoords = gUnknown_082FE234[playersCount - 2];
+
+ window.bg = 0;
+ window.width = 8;
+ window.height = 2;
+ window.paletteNum = 2;
+ window.baseBlock = 0x2B;
+
+ for (i = 0; i < playersCount; i++)
+ {
+ window.tilemapLeft = winCoords[0];
+ window.tilemapTop = winCoords[1];
+ gUnknown_203F3D8->unk1C[i] = AddWindow(&window);
+ ClearWindowTilemap(gUnknown_203F3D8->unk1C[i]);
+ window.baseBlock += 0x10;
+ winCoords += 2;
+ }
+
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_814AB98(int multiplayerId, u8 clr1, u8 clr2, u8 clr3)
+{
+ u32 x;
+ u8 colors[3] = {clr1, clr2, clr3};
+
+ FillWindowPixelBuffer(gUnknown_203F3D8->unk1C[multiplayerId], 0);
+ x = 64 - GetStringWidth(0, sub_81499E0(multiplayerId), -1);
+ x /= 2;
+ AddTextPrinterParameterized3(gUnknown_203F3D8->unk1C[multiplayerId], 0, x, 2, colors, -1, sub_81499E0(multiplayerId));
+ CopyWindowToVram(gUnknown_203F3D8->unk1C[multiplayerId], 2);
+}
+
+static void sub_814AC30(bool32 arg0)
+{
+ int i, var, playersCount = sub_81499A4();
+
+ if (!arg0)
+ {
+ for (i = 0; i < playersCount; i++)
+ sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
+ }
+ else
+ {
+ var = sub_81499B4();
+ for (i = 0; i < playersCount; i++)
+ {
+ if (var != i)
+ sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, TEXT_COLOR_LIGHT_GREY);
+ else
+ sub_814AB98(i, TEXT_COLOR_TRANSPARENT, TEXT_COLOR_RED, TEXT_COLOR_LIGHT_RED);
+ }
+ }
+}
+
+static void sub_814AC94(void)
+{
+ int i, playersCount = sub_81499A4();
+
+ for (i = 0; i < playersCount; i++)
+ PutWindowTilemap(gUnknown_203F3D8->unk1C[i]);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void sub_814ACCC(u8 arg0)
+{
+ gUnknown_203F3D8->unk18 = 0;
+ ChangeBgX(1, (arg0 / 2) << 16, 0);
+ ChangeBgY(1, (((arg0 % 2) << 8) - 40) << 8, 0);
+ ShowBg(1);
+ CreateTask(sub_814AD50, 4);
+}
+
+static bool32 sub_814AD18(void)
+{
+ if (gUnknown_203F3D8->unk18 >= 32)
+ {
+ return FALSE;
+ }
+ else
+ {
+ ChangeBgY(1, 128, 1);
+ if (++gUnknown_203F3D8->unk18 >= 32)
+ HideBg(1);
+ return TRUE;
+ }
+}
+
+static void sub_814AD50(u8 taskId)
+{
+ if (!sub_814AD18())
+ DestroyTask(taskId);
+}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 49ed5b46b..877a870c5 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -450,10 +450,8 @@ gUnknown_203B170: @ 203B170
.include "src/seagallop.o"
.align 2
.include "src/pokemon_jump_2.o"
-
.align 2
-gUnknown_203F3D8: @ 203F3D8
- .space 0x4
+ .include "src/pokemon_jump_4.o"
gUnknown_203F3DC: @ 203F3DC
.space 0x4