diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-18 15:52:45 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2020-02-18 15:52:45 -0500 |
commit | f65e07fb1fac3b8092f8ec29c2c9b42fcb80fa60 (patch) | |
tree | a6e679f5d8cd457c6fe09ee55733f9dccae84527 | |
parent | af6f99b9314f75150d9a5681c17ef5f95a9b1269 (diff) |
pokemon_jump_3,4
-rw-r--r-- | asm/pokemon_jump_2.s | 2484 | ||||
-rw-r--r-- | data/pokemon_jump.s | 143 | ||||
-rw-r--r-- | data/strings.s | 18 | ||||
-rw-r--r-- | graphics/link_games/pkmnjump_bg.bin (renamed from graphics/link_games/unk_846BA00.bin) | bin | 1280 -> 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) | bin | 582 -> 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) | bin | 8192 -> 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) | bin | 2401 -> 2401 bytes | |||
-rw-r--r-- | graphics/link_games/pkmnjump_venusaur.bin (renamed from graphics/link_games/unk_846C520.bin) | bin | 4096 -> 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) | bin | 2082 -> 2082 bytes | |||
-rw-r--r-- | include/digit_obj_util.h | 5 | ||||
-rw-r--r-- | include/pokemon_jump.h | 38 | ||||
-rw-r--r-- | include/strings.h | 11 | ||||
-rw-r--r-- | ld_script.txt | 3 | ||||
-rw-r--r-- | src/pokemon_jump_2.c | 62 | ||||
-rw-r--r-- | src/pokemon_jump_3.c | 167 | ||||
-rw-r--r-- | src/pokemon_jump_4.c | 922 | ||||
-rw-r--r-- | sym_ewram.txt | 4 |
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 Binary files differindex 68303ba7e..68303ba7e 100644 --- a/graphics/link_games/unk_846BA00.bin +++ b/graphics/link_games/pkmnjump_bg.bin 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 Binary files differindex ceef49004..ceef49004 100644 --- a/graphics/link_games/unk_846B7D4.png +++ b/graphics/link_games/pkmnjump_bg.png 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 Binary files differindex b17c5052c..b17c5052c 100644 --- a/graphics/link_games/unk_846D3A8.bin +++ b/graphics/link_games/pkmnjump_results.bin 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 Binary files differindex b87d50659..b87d50659 100644 --- a/graphics/link_games/unk_846C8F8.png +++ b/graphics/link_games/pkmnjump_results.png diff --git a/graphics/link_games/unk_846C520.bin b/graphics/link_games/pkmnjump_venusaur.bin Binary files differindex 093c0a5a5..093c0a5a5 100644 --- a/graphics/link_games/unk_846C520.bin +++ b/graphics/link_games/pkmnjump_venusaur.bin 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 Binary files differindex d555d324d..d555d324d 100644 --- a/graphics/link_games/unk_846BBD0.png +++ b/graphics/link_games/pkmnjump_venusaur.png 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 |