diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-04-07 21:33:14 -0400 |
---|---|---|
committer | huderlem <huderlem@gmail.com> | 2019-04-08 17:33:35 -0500 |
commit | d4f6f903025d980ce7d6ab99de1495d85f650dc6 (patch) | |
tree | e45d11a32427ff7f0902af0e0155e5927e129db3 | |
parent | 290b2f9eddc554fed50cb397f2a5f22d9627757f (diff) |
nonmatching sub_80C37E4
-rw-r--r-- | asm/contest_link_80C2020.s | 891 | ||||
-rw-r--r-- | include/gba/io_reg.h | 34 | ||||
-rw-r--r-- | include/graphics.h | 2 | ||||
-rw-r--r-- | src/battle/contest_link_80C2020.c | 509 | ||||
-rw-r--r-- | src/pokemon_storage_system_4.c | 4 |
5 files changed, 546 insertions, 894 deletions
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s index af9938e9e..5d8a008cf 100644 --- a/asm/contest_link_80C2020.s +++ b/asm/contest_link_80C2020.s @@ -5,897 +5,6 @@ .text - thumb_func_start sub_80C34CC -sub_80C34CC: @ 80C34CC - push {r4-r6,lr} - mov r6, r8 - push {r6} - ldr r4, _080C3514 @ =gSharedMem + 0x18000 - mov r8, r4 - ldrb r5, [r4] - lsls r4, r5, 4 - adds r4, r5 - lsls r4, 2 - ldr r5, _080C3518 @ =gSprites - adds r4, r5 - movs r6, 0 - movs r5, 0x88 - lsls r5, 1 - strh r5, [r4, 0x20] - strh r1, [r4, 0x22] - strh r6, [r4, 0x24] - strh r6, [r4, 0x26] - lsls r0, 16 - asrs r0, 16 - adds r0, 0x20 - strh r0, [r4, 0x36] - strh r2, [r4, 0x38] - strh r3, [r4, 0x3A] - strh r6, [r4, 0x3C] - ldr r0, _080C351C @ =sub_80C3588 - str r0, [r4, 0x1C] - movs r0, 0x1 - mov r1, r8 - strb r0, [r1, 0x4] - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C3514: .4byte gSharedMem + 0x18000 -_080C3518: .4byte gSprites -_080C351C: .4byte sub_80C3588 - thumb_func_end sub_80C34CC - - thumb_func_start sub_80C3520 -sub_80C3520: @ 80C3520 - push {r4,r5,lr} - ldr r4, _080C3558 @ =gSharedMem + 0x18000 - ldrb r2, [r4] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r2, _080C355C @ =gSprites - adds r1, r2 - ldrh r2, [r1, 0x24] - ldrh r3, [r1, 0x20] - adds r2, r3 - movs r3, 0 - strh r2, [r1, 0x20] - ldrh r2, [r1, 0x26] - ldrh r5, [r1, 0x22] - adds r2, r5 - strh r2, [r1, 0x22] - strh r3, [r1, 0x26] - strh r3, [r1, 0x24] - strh r0, [r1, 0x3A] - strh r3, [r1, 0x3C] - ldr r0, _080C3560 @ =sub_80C3630 - str r0, [r1, 0x1C] - movs r0, 0x3 - strb r0, [r4, 0x4] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C3558: .4byte gSharedMem + 0x18000 -_080C355C: .4byte gSprites -_080C3560: .4byte sub_80C3630 - thumb_func_end sub_80C3520 - - thumb_func_start sub_80C3564 -sub_80C3564: @ 80C3564 - movs r3, 0 - movs r2, 0 - movs r1, 0x88 - lsls r1, 1 - strh r1, [r0, 0x20] - movs r1, 0x90 - strh r1, [r0, 0x22] - strh r2, [r0, 0x26] - strh r2, [r0, 0x24] - ldr r1, _080C3580 @ =SpriteCallbackDummy - str r1, [r0, 0x1C] - ldr r0, _080C3584 @ =gSharedMem + 0x18000 - strb r3, [r0, 0x4] - bx lr - .align 2, 0 -_080C3580: .4byte SpriteCallbackDummy -_080C3584: .4byte gSharedMem + 0x18000 - thumb_func_end sub_80C3564 - - thumb_func_start sub_80C3588 -sub_80C3588: @ 80C3588 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x3A] - ldrh r0, [r3, 0x3C] - adds r2, r0 - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r3, 0x20] - subs r0, r1 - strh r0, [r3, 0x20] - movs r1, 0xFF - ands r2, r1 - strh r2, [r3, 0x3C] - lsls r0, 16 - asrs r0, 16 - ldrh r2, [r3, 0x36] - movs r4, 0x36 - ldrsh r1, [r3, r4] - cmp r0, r1 - bge _080C35B2 - strh r2, [r3, 0x20] -_080C35B2: - movs r4, 0 - ldr r6, _080C35F4 @ =gSprites - movs r5, 0x40 - adds r2, r3, 0 - adds r2, 0x2E -_080C35BC: - movs r7, 0 - ldrsh r0, [r2, r7] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r0, [r3, 0x24] - ldrh r7, [r3, 0x20] - adds r0, r7 - adds r0, r5 - strh r0, [r1, 0x20] - adds r5, 0x40 - adds r2, 0x2 - adds r4, 0x1 - cmp r4, 0x2 - ble _080C35BC - movs r0, 0x20 - ldrsh r1, [r3, r0] - movs r2, 0x36 - ldrsh r0, [r3, r2] - cmp r1, r0 - bne _080C35EC - ldr r0, _080C35F8 @ =sub_80C35FC - str r0, [r3, 0x1C] -_080C35EC: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C35F4: .4byte gSprites -_080C35F8: .4byte sub_80C35FC - thumb_func_end sub_80C3588 - - thumb_func_start sub_80C35FC -sub_80C35FC: @ 80C35FC - push {lr} - adds r2, r0, 0 - ldr r0, _080C3628 @ =gSharedMem + 0x18000 - movs r1, 0x2 - strb r1, [r0, 0x4] - ldrh r3, [r2, 0x38] - ldr r1, _080C362C @ =0xffff0000 - lsrs r0, r1, 16 - cmp r3, r0 - beq _080C3624 - subs r0, r3, 0x1 - strh r0, [r2, 0x38] - lsls r0, 16 - asrs r0, 16 - asrs r1, 16 - cmp r0, r1 - bne _080C3624 - ldrh r0, [r2, 0x3A] - bl sub_80C3520 -_080C3624: - pop {r0} - bx r0 - .align 2, 0 -_080C3628: .4byte gSharedMem + 0x18000 -_080C362C: .4byte 0xffff0000 - thumb_func_end sub_80C35FC - - thumb_func_start sub_80C3630 -sub_80C3630: @ 80C3630 - push {r4-r7,lr} - adds r3, r0, 0 - ldrh r2, [r3, 0x3A] - ldrh r0, [r3, 0x3C] - adds r2, r0 - lsls r1, r2, 16 - asrs r1, 24 - ldrh r0, [r3, 0x20] - subs r0, r1 - strh r0, [r3, 0x20] - movs r0, 0xFF - ands r2, r0 - strh r2, [r3, 0x3C] - movs r4, 0 - ldr r6, _080C3694 @ =gSprites - movs r5, 0x40 - adds r2, r3, 0 - adds r2, 0x2E -_080C3654: - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r0, [r3, 0x24] - ldrh r7, [r3, 0x20] - adds r0, r7 - adds r0, r5 - strh r0, [r1, 0x20] - adds r5, 0x40 - adds r2, 0x2 - adds r4, 0x1 - cmp r4, 0x2 - ble _080C3654 - movs r1, 0x20 - ldrsh r0, [r3, r1] - movs r2, 0x24 - ldrsh r1, [r3, r2] - adds r0, r1 - movs r1, 0xE0 - negs r1, r1 - cmp r0, r1 - bge _080C368C - adds r0, r3, 0 - bl sub_80C3564 -_080C368C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C3694: .4byte gSprites - thumb_func_end sub_80C3630 - - thumb_func_start sub_80C3698 -sub_80C3698: @ 80C3698 - push {r4-r7,lr} - adds r4, r0, 0 - ldr r5, _080C374C @ =gSharedMem + 0x18000 - ldrb r1, [r5, 0x1] - bl sub_80C3158 - adds r0, r4, 0 - bl sub_80C34AC - lsls r0, 16 - lsrs r0, 16 - ldrb r2, [r5, 0x1] - lsls r1, r2, 4 - adds r1, r2 - lsls r1, 2 - ldr r3, _080C3750 @ =gSprites - adds r4, r1, r3 - adds r0, 0x20 - strh r0, [r4, 0x20] - movs r0, 0x50 - strh r0, [r4, 0x22] - adds r5, r4, 0 - adds r5, 0x3E - ldrb r1, [r5] - movs r2, 0x5 - negs r2, r2 - adds r0, r2, 0 - ands r0, r1 - strb r0, [r5] - movs r5, 0 - adds r6, r3, 0 - mov r12, r2 - movs r3, 0x40 -_080C36DA: - lsls r0, r5, 1 - adds r2, r4, 0 - adds r2, 0x2E - adds r2, r0 - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - ldrh r0, [r4, 0x24] - ldrh r7, [r4, 0x20] - adds r0, r7 - adds r0, r3 - strh r0, [r1, 0x20] - movs r0, 0 - ldrsh r1, [r2, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r4, 0x22] - strh r1, [r0, 0x22] - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r6 - adds r1, 0x3E - ldrb r2, [r1] - mov r0, r12 - ands r0, r2 - strb r0, [r1] - adds r3, 0x40 - adds r5, 0x1 - cmp r5, 0x2 - ble _080C36DA - ldr r1, _080C3754 @ =gBattle_WIN0H - movs r0, 0xF0 - strh r0, [r1] - ldr r2, _080C3758 @ =gBattle_WIN0V - ldrh r1, [r4, 0x22] - adds r0, r1, 0 - subs r0, 0x10 - lsls r0, 8 - adds r1, 0x10 - orrs r0, r1 - strh r0, [r2] - ldr r1, _080C375C @ =REG_WININ - ldr r2, _080C3760 @ =0x00003f3e - adds r0, r2, 0 - strh r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C374C: .4byte gSharedMem + 0x18000 -_080C3750: .4byte gSprites -_080C3754: .4byte gBattle_WIN0H -_080C3758: .4byte gBattle_WIN0V -_080C375C: .4byte REG_WININ -_080C3760: .4byte 0x00003f3e - thumb_func_end sub_80C3698 - - thumb_func_start sub_80C3764 -sub_80C3764: @ 80C3764 - push {r4-r7,lr} - ldr r0, _080C37C8 @ =gSharedMem + 0x18000 - ldrb r0, [r0, 0x1] - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - ldr r3, _080C37CC @ =gSprites - adds r2, r3 - movs r0, 0x3E - adds r0, r2 - mov r12, r0 - ldrb r0, [r0] - movs r1, 0x4 - orrs r0, r1 - mov r1, r12 - strb r0, [r1] - ldr r7, _080C37D0 @ =gBattle_WIN0H - ldr r6, _080C37D4 @ =gBattle_WIN0V - adds r5, r3, 0 - movs r4, 0x4 - adds r2, 0x2E - movs r3, 0x2 -_080C3790: - movs r1, 0 - ldrsh r0, [r2, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r5 - adds r1, 0x3E - ldrb r0, [r1] - orrs r0, r4 - strb r0, [r1] - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080C3790 - movs r1, 0 - strh r1, [r7] - strh r1, [r6] - ldr r0, _080C37D8 @ =REG_WIN0H - strh r1, [r0] - adds r0, 0x4 - strh r1, [r0] - ldr r1, _080C37DC @ =REG_WININ - ldr r2, _080C37E0 @ =0x00003f3f - adds r0, r2, 0 - strh r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C37C8: .4byte gSharedMem + 0x18000 -_080C37CC: .4byte gSprites -_080C37D0: .4byte gBattle_WIN0H -_080C37D4: .4byte gBattle_WIN0V -_080C37D8: .4byte REG_WIN0H -_080C37DC: .4byte REG_WININ -_080C37E0: .4byte 0x00003f3f - thumb_func_end sub_80C3764 - -.ifdef ENGLISH - thumb_func_start sub_80C37E4 -sub_80C37E4: @ 80C37E4 - push {r4-r6,lr} - sub sp, 0x10 - movs r5, 0x1 - movs r4, 0 - ldr r0, _080C3808 @ =gIsLinkContest - ldrb r0, [r0] - adds r1, r5, 0 - ands r1, r0 - cmp r1, 0 - beq _080C3814 - ldr r0, _080C380C @ =0x0600e000 - ldr r3, _080C3810 @ =gUnknown_08E964B8 - movs r1, 0x9 - str r1, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - b _080C386A - .align 2, 0 -_080C3808: .4byte gIsLinkContest -_080C380C: .4byte 0x0600e000 -_080C3810: .4byte gUnknown_08E964B8 -_080C3814: - ldr r0, _080C3830 @ =gSpecialVar_ContestRank - ldrh r2, [r0] - cmp r2, 0 - bne _080C383C - movs r4, 0x1 - ldr r0, _080C3834 @ =0x0600e000 - ldr r3, _080C3838 @ =gUnknown_08E964B8 - str r2, [sp] - str r2, [sp, 0x4] - movs r1, 0x9 - str r1, [sp, 0x8] - movs r1, 0x2 - str r1, [sp, 0xC] - b _080C3870 - .align 2, 0 -_080C3830: .4byte gSpecialVar_ContestRank -_080C3834: .4byte 0x0600e000 -_080C3838: .4byte gUnknown_08E964B8 -_080C383C: - cmp r2, 0x1 - bne _080C385C - ldr r0, _080C3854 @ =0x0600e000 - ldr r3, _080C3858 @ =gUnknown_08E964B8 - movs r1, 0x9 - str r1, [sp] - str r4, [sp, 0x4] - movs r1, 0x8 - str r1, [sp, 0x8] - movs r1, 0x2 - str r1, [sp, 0xC] - b _080C3870 - .align 2, 0 -_080C3854: .4byte 0x0600e000 -_080C3858: .4byte gUnknown_08E964B8 -_080C385C: - cmp r2, 0x2 - bne _080C3884 - ldr r0, _080C387C @ =0x0600e000 - ldr r3, _080C3880 @ =gUnknown_08E964B8 - movs r1, 0x11 - str r1, [sp] - str r4, [sp, 0x4] -_080C386A: - movs r1, 0x8 - str r1, [sp, 0x8] - str r2, [sp, 0xC] -_080C3870: - movs r1, 0x5 - movs r2, 0x1 - bl sub_809D104 - b _080C389E - .align 2, 0 -_080C387C: .4byte 0x0600e000 -_080C3880: .4byte gUnknown_08E964B8 -_080C3884: - movs r4, 0x1 - ldr r0, _080C38C0 @ =0x0600e000 - ldr r3, _080C38C4 @ =gUnknown_08E964B8 - str r1, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r1, 0x9 - str r1, [sp, 0x8] - str r2, [sp, 0xC] - movs r1, 0x5 - movs r2, 0x1 - bl sub_809D104 -_080C389E: - adds r4, 0xD - ldr r0, _080C38C8 @ =gSpecialVar_ContestCategory - ldrh r0, [r0] - cmp r0, 0 - bne _080C38CC - movs r6, 0 - ldr r0, _080C38C0 @ =0x0600e000 - ldr r3, _080C38C4 @ =gUnknown_08E964B8 - movs r1, 0x11 - str r1, [sp] - movs r2, 0x2 - str r2, [sp, 0x4] - movs r1, 0xA - str r1, [sp, 0x8] - str r2, [sp, 0xC] - b _080C392A - .align 2, 0 -_080C38C0: .4byte 0x0600e000 -_080C38C4: .4byte gUnknown_08E964B8 -_080C38C8: .4byte gSpecialVar_ContestCategory -_080C38CC: - cmp r0, 0x1 - bne _080C38EC - movs r6, 0x1 - ldr r0, _080C38E4 @ =0x0600e000 - ldr r3, _080C38E8 @ =gUnknown_08E964B8 - movs r1, 0 - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0xB - b _080C3924 - .align 2, 0 -_080C38E4: .4byte 0x0600e000 -_080C38E8: .4byte gUnknown_08E964B8 -_080C38EC: - cmp r0, 0x2 - bne _080C3910 - movs r6, 0x2 - ldr r0, _080C3908 @ =0x0600e000 - ldr r3, _080C390C @ =gUnknown_08E964B8 - movs r1, 0xB - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0xA - str r1, [sp, 0x8] - str r6, [sp, 0xC] - b _080C392A - .align 2, 0 -_080C3908: .4byte 0x0600e000 -_080C390C: .4byte gUnknown_08E964B8 -_080C3910: - cmp r0, 0x3 - bne _080C393C - movs r6, 0x3 - ldr r0, _080C3934 @ =0x0600e000 - ldr r3, _080C3938 @ =gUnknown_08E964B8 - movs r1, 0x15 - str r1, [sp] - movs r1, 0x4 - str r1, [sp, 0x4] - movs r1, 0xA -_080C3924: - str r1, [sp, 0x8] - movs r1, 0x2 - str r1, [sp, 0xC] -_080C392A: - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_809D104 - b _080C395A - .align 2, 0 -_080C3934: .4byte 0x0600e000 -_080C3938: .4byte gUnknown_08E964B8 -_080C393C: - movs r6, 0x4 - ldr r0, _080C3984 @ =0x0600e000 - ldr r3, _080C3988 @ =gUnknown_08E964B8 - movs r1, 0 - str r1, [sp] - movs r1, 0x6 - str r1, [sp, 0x4] - movs r1, 0xA - str r1, [sp, 0x8] - movs r1, 0x2 - str r1, [sp, 0xC] - adds r1, r4, 0 - adds r2, r5, 0 - bl sub_809D104 -_080C395A: - ldr r5, _080C398C @ =0x00000fff - lsls r4, r6, 12 - ldr r2, _080C3984 @ =0x0600e000 - movs r3, 0x7F -_080C3962: - ldrh r1, [r2] - adds r0, r5, 0 - ands r0, r1 - strh r0, [r2] - ldrh r1, [r2] - adds r0, r4, 0 - orrs r0, r1 - strh r0, [r2] - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080C3962 - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080C3984: .4byte 0x0600e000 -_080C3988: .4byte gUnknown_08E964B8 -_080C398C: .4byte 0x00000fff - thumb_func_end sub_80C37E4 -.else - thumb_func_start de_sub_80C39A8 -de_sub_80C39A8: @ 80C39A8 - push {r4,lr} - sub sp, 0x10 - adds r1, r0, 0 - ldr r0, _de_080C39DC @ =gIsLinkContest - ldrb r0, [r0] - movs r4, 0x1 - ands r4, r0 - cmp r4, 0 - beq _de_080C39E8 - ldr r0, _de_080C39E0 @ =0x0600e000 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _de_080C39E4 @ =gUnknown_08E964B8 - movs r2, 0xB - str r2, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - movs r2, 0x8 - str r2, [sp, 0x8] - str r4, [sp, 0xC] - movs r2, 0 - bl sub_809D104 - movs r0, 0x8 - b _de_080C3A74 - .align 2, 0 -_de_080C39DC: .4byte gIsLinkContest -_de_080C39E0: .4byte 0x0600e000 -_de_080C39E4: .4byte gUnknown_08E964B8 -_de_080C39E8: - ldr r0, _de_080C3A08 @ =gSpecialVar_ContestRank - ldrh r0, [r0] - cmp r0, 0 - bne _de_080C3A14 - ldr r0, _de_080C3A0C @ =0x0600e000 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _de_080C3A10 @ =gUnknown_08E964B8 - str r4, [sp] - str r4, [sp, 0x4] - movs r2, 0xB - str r2, [sp, 0x8] - movs r2, 0x3 - str r2, [sp, 0xC] - b _de_080C3A6C - .align 2, 0 -_de_080C3A08: .4byte gSpecialVar_ContestRank -_de_080C3A0C: .4byte 0x0600e000 -_de_080C3A10: .4byte gUnknown_08E964B8 -_de_080C3A14: - cmp r0, 0x1 - bne _de_080C3A2C - ldr r0, _de_080C3A24 @ =0x0600e000 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _de_080C3A28 @ =gUnknown_08E964B8 - movs r2, 0xB - b _de_080C3A3A - .align 2, 0 -_de_080C3A24: .4byte 0x0600e000 -_de_080C3A28: .4byte gUnknown_08E964B8 -_de_080C3A2C: - cmp r0, 0x2 - bne _de_080C3A58 - ldr r0, _de_080C3A50 @ =0x0600e000 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _de_080C3A54 @ =gUnknown_08E964B8 - movs r2, 0x15 -_de_080C3A3A: - str r2, [sp] - str r4, [sp, 0x4] - movs r2, 0xA - str r2, [sp, 0x8] - movs r2, 0x3 - str r2, [sp, 0xC] - movs r2, 0 - bl sub_809D104 - movs r0, 0xA - b _de_080C3A74 - .align 2, 0 -_de_080C3A50: .4byte 0x0600e000 -_de_080C3A54: .4byte gUnknown_08E964B8 -_de_080C3A58: - ldr r0, _de_080C3A7C @ =0x0600e000 - lsls r1, 16 - lsrs r1, 16 - ldr r3, _de_080C3A80 @ =gUnknown_08E964B8 - str r4, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - movs r2, 0xB - str r2, [sp, 0x8] - str r4, [sp, 0xC] -_de_080C3A6C: - movs r2, 0 - bl sub_809D104 - movs r0, 0xB -_de_080C3A74: - add sp, 0x10 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_de_080C3A7C: .4byte 0x0600e000 -_de_080C3A80: .4byte gUnknown_08E964B8 - thumb_func_end de_sub_80C39A8 - - thumb_func_start de_sub_80C3A84 -de_sub_80C3A84: @ 80C3A84 - push {r4,lr} - sub sp, 0x10 - adds r2, r0, 0 - ldr r0, _de_080C3AAC @ =gSpecialVar_ContestCategory - ldrh r4, [r0] - cmp r4, 0 - bne _de_080C3AB8 - str r4, [r1] - ldr r0, _de_080C3AB0 @ =0x0600e000 - lsls r1, r2, 16 - lsrs r1, 16 - ldr r3, _de_080C3AB4 @ =gUnknown_08E964B8 - movs r2, 0x13 - str r2, [sp] - movs r4, 0x3 - str r4, [sp, 0x4] - movs r2, 0x7 - str r2, [sp, 0x8] - str r4, [sp, 0xC] - b _de_080C3AD6 - .align 2, 0 -_de_080C3AAC: .4byte gSpecialVar_ContestCategory -_de_080C3AB0: .4byte 0x0600e000 -_de_080C3AB4: .4byte gUnknown_08E964B8 -_de_080C3AB8: - cmp r4, 0x1 - bne _de_080C3AE8 - str r4, [r1] - ldr r0, _de_080C3AE0 @ =0x0600e000 - lsls r1, r2, 16 - lsrs r1, 16 - ldr r3, _de_080C3AE4 @ =gUnknown_08E964B8 - movs r2, 0 - str r2, [sp] - movs r2, 0x6 - str r2, [sp, 0x4] - movs r2, 0x7 - str r2, [sp, 0x8] - movs r2, 0x3 - str r2, [sp, 0xC] -_de_080C3AD6: - movs r2, 0 - bl sub_809D104 - movs r0, 0x7 - b _de_080C3B68 - .align 2, 0 -_de_080C3AE0: .4byte 0x0600e000 -_de_080C3AE4: .4byte gUnknown_08E964B8 -_de_080C3AE8: - cmp r4, 0x2 - bne _de_080C3B18 - str r4, [r1] - ldr r0, _de_080C3B10 @ =0x0600e000 - lsls r1, r2, 16 - lsrs r1, 16 - ldr r3, _de_080C3B14 @ =gUnknown_08E964B8 - movs r2, 0x7 - str r2, [sp] - movs r2, 0x6 - str r2, [sp, 0x4] - movs r2, 0x4 - str r2, [sp, 0x8] - movs r2, 0x3 - str r2, [sp, 0xC] - movs r2, 0 - bl sub_809D104 - movs r0, 0x4 - b _de_080C3B68 - .align 2, 0 -_de_080C3B10: .4byte 0x0600e000 -_de_080C3B14: .4byte gUnknown_08E964B8 -_de_080C3B18: - cmp r4, 0x3 - bne _de_080C3B44 - str r4, [r1] - ldr r0, _de_080C3B3C @ =0x0600e000 - lsls r1, r2, 16 - lsrs r1, 16 - ldr r3, _de_080C3B40 @ =gUnknown_08E964B8 - movs r2, 0xB - str r2, [sp] - movs r2, 0x6 - str r2, [sp, 0x4] - str r2, [sp, 0x8] - str r4, [sp, 0xC] - movs r2, 0 - bl sub_809D104 - movs r0, 0x6 - b _de_080C3B68 - .align 2, 0 -_de_080C3B3C: .4byte 0x0600e000 -_de_080C3B40: .4byte gUnknown_08E964B8 -_de_080C3B44: - movs r0, 0x4 - str r0, [r1] - ldr r0, _de_080C3B70 @ =0x0600e000 - lsls r1, r2, 16 - lsrs r1, 16 - ldr r3, _de_080C3B74 @ =gUnknown_08E964B8 - movs r2, 0x11 - str r2, [sp] - movs r2, 0x6 - str r2, [sp, 0x4] - movs r2, 0x5 - str r2, [sp, 0x8] - movs r2, 0x3 - str r2, [sp, 0xC] - movs r2, 0 - bl sub_809D104 - movs r0, 0x5 -_de_080C3B68: - add sp, 0x10 - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_de_080C3B70: .4byte 0x0600e000 -_de_080C3B74: .4byte gUnknown_08E964B8 - thumb_func_end de_sub_80C3A84 - - thumb_func_start sub_80C37E4 -sub_80C37E4: @ 80C37E4 - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0x6 - bl de_sub_80C39A8 - lsls r0, 16 - asrs r0, 16 - adds r0, 0x6 - mov r1, sp - bl de_sub_80C3A84 - ldr r5, _080C3824 @ =0x00000fff - ldr r0, [sp] - lsls r4, r0, 12 - ldr r2, _080C3828 @ =0x0600e000 - movs r3, 0x7F -_080C3804: - ldrh r1, [r2] - adds r0, r5, 0 - ands r0, r1 - strh r0, [r2] - ldrh r1, [r2] - adds r0, r4, 0 - orrs r0, r1 - strh r0, [r2] - adds r2, 0x2 - subs r3, 0x1 - cmp r3, 0 - bge _080C3804 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080C3824: .4byte 0x00000fff -_080C3828: .4byte 0x0600e000 - thumb_func_end sub_80C37E4 -.endif - thumb_func_start sub_80C3990 sub_80C3990: @ 80C3990 push {r4,r5,lr} diff --git a/include/gba/io_reg.h b/include/gba/io_reg.h index 4208a7a14..2dda7b5ac 100644 --- a/include/gba/io_reg.h +++ b/include/gba/io_reg.h @@ -538,6 +538,40 @@ #define BGCNT_AFF512x512 0x8000 #define BGCNT_AFF1024x1024 0xC000 +// WININ/OUT +#define WININ_WIN0_BG0 (1 << 0) +#define WININ_WIN0_BG1 (1 << 1) +#define WININ_WIN0_BG2 (1 << 2) +#define WININ_WIN0_BG3 (1 << 3) +#define WININ_WIN0_BG_ALL (WININ_WIN0_BG0 | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3) +#define WININ_WIN0_OBJ (1 << 4) +#define WININ_WIN0_CLR (1 << 5) +#define WININ_WIN1_BG0 (1 << 8) +#define WININ_WIN1_BG1 (1 << 9) +#define WININ_WIN1_BG2 (1 << 10) +#define WININ_WIN1_BG3 (1 << 11) +#define WININ_WIN1_BG_ALL (WININ_WIN1_BG0 | WININ_WIN1_BG1 | WININ_WIN1_BG2 | WININ_WIN1_BG3) +#define WININ_WIN1_OBJ (1 << 12) +#define WININ_WIN1_CLR (1 << 13) + +#define WINOUT_WIN01_BG0 (1 << 0) +#define WINOUT_WIN01_BG1 (1 << 1) +#define WINOUT_WIN01_BG2 (1 << 2) +#define WINOUT_WIN01_BG3 (1 << 3) +#define WINOUT_WIN01_BG_ALL (WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3) +#define WINOUT_WIN01_OBJ (1 << 4) +#define WINOUT_WIN01_CLR (1 << 5) +#define WINOUT_WINOBJ_BG0 (1 << 8) +#define WINOUT_WINOBJ_BG1 (1 << 9) +#define WINOUT_WINOBJ_BG2 (1 << 10) +#define WINOUT_WINOBJ_BG3 (1 << 11) +#define WINOUT_WINOBJ_BG_ALL (WINOUT_WINOBJ_BG0 | WINOUT_WINOBJ_BG1 | WINOUT_WINOBJ_BG2 | WINOUT_WINOBJ_BG3) +#define WINOUT_WINOBJ_OBJ (1 << 12) +#define WINOUT_WINOBJ_CLR (1 << 13) + +#define WIN_RANGE(a, b) (((a) << 8) | (b)) +#define WIN_RANGE2(a, b) ((b) | ((a) << 8)) + // BLDCNT // Bits 0-5 select layers for the 1st target #define BLDCNT_TGT1_BG0 (1 << 0) diff --git a/include/graphics.h b/include/graphics.h index 9934c22a5..c6f77f37d 100644 --- a/include/graphics.h +++ b/include/graphics.h @@ -3422,4 +3422,6 @@ extern const u8 Tiles_D129AC[]; extern const u8 gAreaUnknownTiles[]; extern const u16 gAreaUnknownPalette[]; +extern const u8 gUnknown_08E964B8[]; + #endif // GUARD_GRAPHICS_H diff --git a/src/battle/contest_link_80C2020.c b/src/battle/contest_link_80C2020.c index db1210cdb..43f6b970e 100644 --- a/src/battle/contest_link_80C2020.c +++ b/src/battle/contest_link_80C2020.c @@ -25,6 +25,7 @@ #include "field_specials.h" #include "contest_link_80C857C.h" #include "contest_link_80C2020.h" +#include "pokemon_storage_system.h" #define ABS(x) ((x) < 0 ? -(x) : (x)) @@ -84,8 +85,11 @@ void sub_80C310C(void); void sub_80C3158(const u8 *string, u8 spriteId); void sub_80C33DC(void); u16 sub_80C34AC(const u8 *string); -void sub_80C34CC(s16 data4, s16 pos0y, u16 data5, s16 data6); +void sub_80C34CC(s16 data4, u16 pos0y, u16 data5, u16 data6); void sub_80C3520(u16 a0); +void sub_80C3588(struct Sprite *sprite); +void sub_80C35FC(struct Sprite *sprite); +void sub_80C3630(struct Sprite *sprite); void sub_80C3698(const u8 *string); void sub_80C3764(void); void sub_80C37E4(void); @@ -1252,3 +1256,506 @@ u16 sub_80C34AC(const u8 * string) u8 width = (StringLength(string) * 6); return 0x70 - (width / 2); } + +void sub_80C34CC(s16 arg0, u16 y, u16 arg2, u16 arg3) +{ + struct Sprite *sprite = &gSprites[eContestLink80C2020Struct2018000.unk_00]; + sprite->pos1.x = 272; + sprite->pos1.y = y; + sprite->pos2.x = 0; + sprite->pos2.y = 0; + sprite->data[4] = arg0 + 32; + sprite->data[5] = arg2; + sprite->data[6] = arg3; + sprite->data[7] = 0; + sprite->callback = sub_80C3588; + eContestLink80C2020Struct2018000.unk_04 = 1; +} + +void sub_80C3520(u16 arg0) +{ + struct Sprite *sprite = &gSprites[eContestLink80C2020Struct2018000.unk_00]; + sprite->pos1.x += sprite->pos2.x; + sprite->pos1.y += sprite->pos2.y; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->data[6] = arg0; + sprite->data[7] = 0; + sprite->callback = sub_80C3630; + eContestLink80C2020Struct2018000.unk_04 = 3; +} + +void sub_80C3564(struct Sprite *sprite) +{ + sprite->pos1.x = 272; + sprite->pos1.y = 144; + sprite->pos2.y = 0; + sprite->pos2.x = 0; + sprite->callback = SpriteCallbackDummy; + eContestLink80C2020Struct2018000.unk_04 = 0; +} + + +void sub_80C3588(struct Sprite *sprite) +{ + int i; + s16 var0; + + var0 = (u16)sprite->data[7] + (u16)sprite->data[6]; + sprite->pos1.x -= var0 >> 8; + sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF; + if (sprite->pos1.x < sprite->data[4]) + sprite->pos1.x = sprite->data[4]; + + for (i = 0; i < 3; i++) + { + struct Sprite *sprite2 = &gSprites[sprite->data[i]]; + sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64; + } + + if (sprite->pos1.x == sprite->data[4]) + sprite->callback = sub_80C35FC; +} + +void sub_80C35FC(struct Sprite *sprite) +{ + eContestLink80C2020Struct2018000.unk_04 = 2; + if ((u16)sprite->data[5] != 0xFFFF) + { + if (--sprite->data[5] == -1) + sub_80C3520(sprite->data[6]); + } +} + +void sub_80C3630(struct Sprite *sprite) +{ + int i; + s16 var0; + + var0 = (u16)sprite->data[7] + (u16)sprite->data[6]; + sprite->pos1.x -= var0 >> 8; + sprite->data[7] = (sprite->data[6] + sprite->data[7]) & 0xFF; + for (i = 0; i < 3; i++) + { + struct Sprite *sprite2 = &gSprites[sprite->data[i]]; + sprite2->pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64; + } + + if (sprite->pos1.x + sprite->pos2.x < -224) + sub_80C3564(sprite); +} + +void sub_80C3698(const u8 *text) +{ + int i; + u16 x; + struct Sprite *sprite; + + sub_80C3158(text, eContestLink80C2020Struct2018000.unk_01); + x = sub_80C34AC(text); + sprite = &gSprites[eContestLink80C2020Struct2018000.unk_01]; + sprite->pos1.x = x + 32; + sprite->pos1.y = 80; + sprite->invisible = 0; + for (i = 0; i < 3; i++) + { + gSprites[sprite->data[i]].pos1.x = sprite->pos1.x + sprite->pos2.x + (i + 1) * 64; + gSprites[sprite->data[i]].pos1.y = sprite->pos1.y; + gSprites[sprite->data[i]].invisible = 0; + } + + gBattle_WIN0H = 0x00F0; + gBattle_WIN0V = ((sprite->pos1.y - 16) << 8) | (sprite->pos1.y + 16); + REG_WININ = WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR | WININ_WIN0_BG1 | WININ_WIN0_BG2 | WININ_WIN0_BG3 | WININ_WIN0_OBJ | WININ_WIN0_CLR; +} + +void sub_80C3764(void) +{ + int i; + struct Sprite *sprite; + + sprite = &gSprites[eContestLink80C2020Struct2018000.unk_01]; + sprite->invisible = 1; + for (i = 0; i < 3; i++) + gSprites[sprite->data[i]].invisible = 1; + + gBattle_WIN0H = 0; + gBattle_WIN0V = 0; + REG_WIN0H = gBattle_WIN0H; + REG_WIN0V = gBattle_WIN0V; + REG_WININ = WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR | WININ_WIN1_BG_ALL | WININ_WIN1_OBJ | WININ_WIN1_CLR; +} + +#ifdef ENGLISH +#ifdef NONMATCHING +static inline s32 de_sub_80C39A8(s32 a0) +{ + s32 result = 0; + if (gIsLinkContest & 0x1) + { + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 9, 2, 8, 2); + result = 8; + } + else if (gSpecialVar_ContestRank == 0) + { + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 0, 0, 9, 2); + result = 9; + } + else if (gSpecialVar_ContestRank == 1) + { + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 9, 0, 8, 2); + result = 8; + } + else if (gSpecialVar_ContestRank == 2) + { + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 17, 0, 8, 2); + result = 8; + } + else + { + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 0, 2, 9, 2); + result = 9; + } + return result; +} + +static inline s32 de_sub_80C3A84(s32 a0, s32 * a1) +{ + s32 result; + if (gSpecialVar_ContestCategory == 0) + { + *a1 = 0; + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 17, 2, 10, 2); + result = 10; + } + else if (gSpecialVar_ContestCategory == 1) + { + *a1 = 1; + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 0, 4, 11, 2); + result = 11; + } + else if (gSpecialVar_ContestCategory == 2) + { + *a1 = 2; + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 11, 4, 10, 2); + result = 10; + } + else if (gSpecialVar_ContestCategory == 3) + { + *a1 = 3; + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 21, 4, 10, 2); + result = 10; + } + else + { + *a1 = 4; + sub_809D104((void *)0x0600E000, a0, 1, gUnknown_08E964B8, 0, 6, 10, 2); + result = 10; + } + return result; +} + +void sub_80C37E4(void) +{ + s32 sp0; + s32 i; + de_sub_80C3A84(de_sub_80C39A8(5) + 5, &sp0); + for (i = 0; i < 0x80; i++) + { + ((vu16 *)0x0600E000)[i] &= 0xFFF; + ((vu16 *)0x0600E000)[i] |= sp0 << 12;; + } +} +#else +NAKED +void sub_80C37E4(void) +{ + asm_unified("\tpush {r4-r6,lr}\n" + "\tsub sp, 0x10\n" + "\tmovs r5, 0x1\n" + "\tmovs r4, 0\n" + "\tldr r0, _080C3808 @ =gIsLinkContest\n" + "\tldrb r0, [r0]\n" + "\tadds r1, r5, 0\n" + "\tands r1, r0\n" + "\tcmp r1, 0\n" + "\tbeq _080C3814\n" + "\tldr r0, _080C380C @ =0x0600e000\n" + "\tldr r3, _080C3810 @ =gUnknown_08E964B8\n" + "\tmovs r1, 0x9\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x2\n" + "\tstr r2, [sp, 0x4]\n" + "\tb _080C386A\n" + "\t.align 2, 0\n" + "_080C3808: .4byte gIsLinkContest\n" + "_080C380C: .4byte 0x0600e000\n" + "_080C3810: .4byte gUnknown_08E964B8\n" + "_080C3814:\n" + "\tldr r0, _080C3830 @ =gSpecialVar_ContestRank\n" + "\tldrh r2, [r0]\n" + "\tcmp r2, 0\n" + "\tbne _080C383C\n" + "\tmovs r4, 0x1\n" + "\tldr r0, _080C3834 @ =0x0600e000\n" + "\tldr r3, _080C3838 @ =gUnknown_08E964B8\n" + "\tstr r2, [sp]\n" + "\tstr r2, [sp, 0x4]\n" + "\tmovs r1, 0x9\n" + "\tstr r1, [sp, 0x8]\n" + "\tmovs r1, 0x2\n" + "\tstr r1, [sp, 0xC]\n" + "\tb _080C3870\n" + "\t.align 2, 0\n" + "_080C3830: .4byte gSpecialVar_ContestRank\n" + "_080C3834: .4byte 0x0600e000\n" + "_080C3838: .4byte gUnknown_08E964B8\n" + "_080C383C:\n" + "\tcmp r2, 0x1\n" + "\tbne _080C385C\n" + "\tldr r0, _080C3854 @ =0x0600e000\n" + "\tldr r3, _080C3858 @ =gUnknown_08E964B8\n" + "\tmovs r1, 0x9\n" + "\tstr r1, [sp]\n" + "\tstr r4, [sp, 0x4]\n" + "\tmovs r1, 0x8\n" + "\tstr r1, [sp, 0x8]\n" + "\tmovs r1, 0x2\n" + "\tstr r1, [sp, 0xC]\n" + "\tb _080C3870\n" + "\t.align 2, 0\n" + "_080C3854: .4byte 0x0600e000\n" + "_080C3858: .4byte gUnknown_08E964B8\n" + "_080C385C:\n" + "\tcmp r2, 0x2\n" + "\tbne _080C3884\n" + "\tldr r0, _080C387C @ =0x0600e000\n" + "\tldr r3, _080C3880 @ =gUnknown_08E964B8\n" + "\tmovs r1, 0x11\n" + "\tstr r1, [sp]\n" + "\tstr r4, [sp, 0x4]\n" + "_080C386A:\n" + "\tmovs r1, 0x8\n" + "\tstr r1, [sp, 0x8]\n" + "\tstr r2, [sp, 0xC]\n" + "_080C3870:\n" + "\tmovs r1, 0x5\n" + "\tmovs r2, 0x1\n" + "\tbl sub_809D104\n" + "\tb _080C389E\n" + "\t.align 2, 0\n" + "_080C387C: .4byte 0x0600e000\n" + "_080C3880: .4byte gUnknown_08E964B8\n" + "_080C3884:\n" + "\tmovs r4, 0x1\n" + "\tldr r0, _080C38C0 @ =0x0600e000\n" + "\tldr r3, _080C38C4 @ =gUnknown_08E964B8\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x2\n" + "\tstr r2, [sp, 0x4]\n" + "\tmovs r1, 0x9\n" + "\tstr r1, [sp, 0x8]\n" + "\tstr r2, [sp, 0xC]\n" + "\tmovs r1, 0x5\n" + "\tmovs r2, 0x1\n" + "\tbl sub_809D104\n" + "_080C389E:\n" + "\tadds r4, 0xD\n" + "\tldr r0, _080C38C8 @ =gSpecialVar_ContestCategory\n" + "\tldrh r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _080C38CC\n" + "\tmovs r6, 0\n" + "\tldr r0, _080C38C0 @ =0x0600e000\n" + "\tldr r3, _080C38C4 @ =gUnknown_08E964B8\n" + "\tmovs r1, 0x11\n" + "\tstr r1, [sp]\n" + "\tmovs r2, 0x2\n" + "\tstr r2, [sp, 0x4]\n" + "\tmovs r1, 0xA\n" + "\tstr r1, [sp, 0x8]\n" + "\tstr r2, [sp, 0xC]\n" + "\tb _080C392A\n" + "\t.align 2, 0\n" + "_080C38C0: .4byte 0x0600e000\n" + "_080C38C4: .4byte gUnknown_08E964B8\n" + "_080C38C8: .4byte gSpecialVar_ContestCategory\n" + "_080C38CC:\n" + "\tcmp r0, 0x1\n" + "\tbne _080C38EC\n" + "\tmovs r6, 0x1\n" + "\tldr r0, _080C38E4 @ =0x0600e000\n" + "\tldr r3, _080C38E8 @ =gUnknown_08E964B8\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0x4\n" + "\tstr r1, [sp, 0x4]\n" + "\tmovs r1, 0xB\n" + "\tb _080C3924\n" + "\t.align 2, 0\n" + "_080C38E4: .4byte 0x0600e000\n" + "_080C38E8: .4byte gUnknown_08E964B8\n" + "_080C38EC:\n" + "\tcmp r0, 0x2\n" + "\tbne _080C3910\n" + "\tmovs r6, 0x2\n" + "\tldr r0, _080C3908 @ =0x0600e000\n" + "\tldr r3, _080C390C @ =gUnknown_08E964B8\n" + "\tmovs r1, 0xB\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0x4\n" + "\tstr r1, [sp, 0x4]\n" + "\tmovs r1, 0xA\n" + "\tstr r1, [sp, 0x8]\n" + "\tstr r6, [sp, 0xC]\n" + "\tb _080C392A\n" + "\t.align 2, 0\n" + "_080C3908: .4byte 0x0600e000\n" + "_080C390C: .4byte gUnknown_08E964B8\n" + "_080C3910:\n" + "\tcmp r0, 0x3\n" + "\tbne _080C393C\n" + "\tmovs r6, 0x3\n" + "\tldr r0, _080C3934 @ =0x0600e000\n" + "\tldr r3, _080C3938 @ =gUnknown_08E964B8\n" + "\tmovs r1, 0x15\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0x4\n" + "\tstr r1, [sp, 0x4]\n" + "\tmovs r1, 0xA\n" + "_080C3924:\n" + "\tstr r1, [sp, 0x8]\n" + "\tmovs r1, 0x2\n" + "\tstr r1, [sp, 0xC]\n" + "_080C392A:\n" + "\tadds r1, r4, 0\n" + "\tadds r2, r5, 0\n" + "\tbl sub_809D104\n" + "\tb _080C395A\n" + "\t.align 2, 0\n" + "_080C3934: .4byte 0x0600e000\n" + "_080C3938: .4byte gUnknown_08E964B8\n" + "_080C393C:\n" + "\tmovs r6, 0x4\n" + "\tldr r0, _080C3984 @ =0x0600e000\n" + "\tldr r3, _080C3988 @ =gUnknown_08E964B8\n" + "\tmovs r1, 0\n" + "\tstr r1, [sp]\n" + "\tmovs r1, 0x6\n" + "\tstr r1, [sp, 0x4]\n" + "\tmovs r1, 0xA\n" + "\tstr r1, [sp, 0x8]\n" + "\tmovs r1, 0x2\n" + "\tstr r1, [sp, 0xC]\n" + "\tadds r1, r4, 0\n" + "\tadds r2, r5, 0\n" + "\tbl sub_809D104\n" + "_080C395A:\n" + "\tldr r5, _080C398C @ =0x00000fff\n" + "\tlsls r4, r6, 12\n" + "\tldr r2, _080C3984 @ =0x0600e000\n" + "\tmovs r3, 0x7F\n" + "_080C3962:\n" + "\tldrh r1, [r2]\n" + "\tadds r0, r5, 0\n" + "\tands r0, r1\n" + "\tstrh r0, [r2]\n" + "\tldrh r1, [r2]\n" + "\tadds r0, r4, 0\n" + "\torrs r0, r1\n" + "\tstrh r0, [r2]\n" + "\tadds r2, 0x2\n" + "\tsubs r3, 0x1\n" + "\tcmp r3, 0\n" + "\tbge _080C3962\n" + "\tadd sp, 0x10\n" + "\tpop {r4-r6}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_080C3984: .4byte 0x0600e000\n" + "_080C3988: .4byte gUnknown_08E964B8\n" + "_080C398C: .4byte 0x00000fff"); +} +#endif // NONMATCHING + +#elif defined(GERMAN) +s16 de_sub_80C39A8(s32 a0) +{ + s16 result; + if (gIsLinkContest & 1) + { + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 11, 3, 8, 3); + result = 8; + } + else if (gSpecialVar_ContestRank == 0) + { + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 0, 0, 11, 3); + result = 11; + } + else if (gSpecialVar_ContestRank == 1) + { + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 11, 0, 10, 3); + result = 10; + } + else if (gSpecialVar_ContestRank == 2) + { + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 21, 0, 10, 3); + result = 10; + } + else + { + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 0, 3, 11, 3); + result = 11; + } + return result; +} + +s16 de_sub_80C3A84(s32 a0, s32 * a1) +{ + s16 result; + if (gSpecialVar_ContestCategory == 0) + { + *a1 = 0; + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 19, 3, 7, 3); + result = 7; + } + else if (gSpecialVar_ContestCategory == 1) + { + *a1 = 1; + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 0, 6, 7, 3); + result = 7; + } + else if (gSpecialVar_ContestCategory == 2) + { + *a1 = 2; + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 7, 6, 4, 3); + result = 4; + } + else if (gSpecialVar_ContestCategory == 3) + { + *a1 = 3; + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 11, 6, 6, 3); + result = 6; + } + else + { + *a1 = 4; + sub_809D104((void *)0x0600E000, a0, 0, gUnknown_08E964B8, 17, 6, 5, 3); + result = 5; + } + return result; +} + +void sub_80C37E4(void) +{ + s32 sp0; + s32 i; + de_sub_80C3A84(de_sub_80C39A8(6) + 6, &sp0); + for (i = 0; i < 0x80; i++) + { + ((vu16 *)0x0600E000)[i] &= 0xFFF; + ((vu16 *)0x0600E000)[i] |= sp0 << 12;; + } +} +#endif diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c index fff545492..3640e3961 100644 --- a/src/pokemon_storage_system_4.c +++ b/src/pokemon_storage_system_4.c @@ -3555,7 +3555,7 @@ void sub_809D0BC(struct UnkStruct_2000028 *unkStruct) int width = unkStruct->unk_08; for (i = 0; i < height; i++) { - CpuSet(src, dest, (width / 2) & 0x1FFFFF); + CpuCopy16(src, dest, width); dest += 64; src += 64; } @@ -3569,7 +3569,7 @@ void sub_809D104(u8 *dest, u16 dLeft, u16 dTop, const u8 *src, u16 sLeft, u16 sT int width2 = width * 2; while (to < end) { - CpuSet(from, to, (width2 / 2) & 0x1FFFFF); + CpuCopy16(from, to, width2); to += 64; from += 64; } |