From 2458e6d2b133a56e52611d5a0f8532e95ec3d1bd Mon Sep 17 00:00:00 2001 From: Marcus Huderle Date: Sat, 17 Feb 2024 10:33:40 -0600 Subject: [PATCH] More high scores decomp --- asm/high_scores.s | 1286 ------------------------------------------- include/functions.h | 10 +- include/variables.h | 2 + src/high_scores.c | 937 ++++++++++++++++++++++++++++++- 4 files changed, 941 insertions(+), 1294 deletions(-) diff --git a/asm/high_scores.s b/asm/high_scores.s index 19713f6..53ab047 100644 --- a/asm/high_scores.s +++ b/asm/high_scores.s @@ -4,1292 +4,6 @@ .text - thumb_func_start sub_E464 -sub_E464: @ 0x0800E464 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - ldr r6, _0800E5CC @ =gUnknown_0200B3B8 - adds r4, r6, #0 - movs r0, #0xb8 - adds r0, r0, r6 - mov sl, r0 - mov r5, sl - ldr r0, _0800E5D0 @ =gUnknown_0202BEBC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - movs r2, #0xb8 - adds r1, r0, #0 - muls r1, r2, r1 - movs r3, #0xb8 - lsls r3, r3, #1 - adds r0, r6, r3 - adds r7, r1, r0 - ldr r0, _0800E5D4 @ =gUnknown_02002858 - mov sb, r0 - ldr r1, _0800E5D8 @ =gUnknown_0200287D - movs r0, #0 - ldrsb r0, [r1, r0] - adds r1, r0, #0 - muls r1, r2, r1 - movs r2, #0xa1 - lsls r2, r2, #3 - adds r0, r6, r2 - adds r1, r1, r0 - mov r8, r1 - ldr r0, _0800E5DC @ =gUnknown_02002882 - movs r3, #0 - ldrsh r1, [r0, r3] - cmp r1, #0 - beq _0800E4B4 - b _0800E674 -_0800E4B4: - movs r0, #1 - strh r0, [r6] - strh r1, [r5] - ldr r0, _0800E5E0 @ =gUnknown_0201B178 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - strh r0, [r7] - mov r0, sb - adds r0, #0x26 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - mov r1, r8 - strh r0, [r1] - ldr r0, _0800E5E4 @ =gUnknown_086A7DB0 - movs r1, #9 - adds r2, r6, #0 - bl LoadSpriteSets - movs r0, #0xdc - strh r0, [r6, #2] - movs r0, #0x90 - strh r0, [r6, #4] - adds r4, #8 - ldr r2, _0800E5E8 @ =gOamBuffer - mov sl, r2 - ldrh r2, [r4] - lsls r2, r2, #3 - add r2, sl - mov r3, sb - movs r5, #0x1a - ldrsh r1, [r3, r5] - lsls r1, r1, #1 - adds r1, #2 - ldr r3, _0800E5EC @ =0x000003FF - adds r0, r3, #0 - ands r1, r0 - ldrh r3, [r2, #4] - ldr r0, _0800E5F0 @ =0xFFFFFC00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #4] - ldrh r2, [r4] - lsls r2, r2, #3 - add r2, sl - movs r5, #2 - ldrsh r1, [r4, r5] - movs r3, #2 - ldrsh r0, [r6, r3] - adds r1, r1, r0 - ldr r5, _0800E5F4 @ =0x000001FF - adds r0, r5, #0 - ands r1, r0 - ldrh r3, [r2, #2] - ldr r0, _0800E5F8 @ =0xFFFFFE00 - mov ip, r0 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, sl - ldrb r0, [r6, #4] - ldrb r4, [r4, #4] - adds r0, r0, r4 - strb r0, [r1] - mov r1, r8 - ldrh r0, [r1] - cmp r0, #1 - bne _0800E5AA - movs r0, #0x54 - strh r0, [r1, #2] - movs r0, #0x96 - strh r0, [r1, #4] - ldr r2, _0800E5D8 @ =gUnknown_0200287D - movs r0, #0 - ldrsb r0, [r2, r0] - adds r0, #7 - lsls r0, r0, #2 - ldr r3, _0800E5E4 @ =gUnknown_086A7DB0 - adds r0, r0, r3 - ldr r6, [r0] - movs r5, #0 - ldrh r0, [r6] - cmp r5, r0 - bge _0800E5AA - mov sb, sl - mov sl, ip - mov r4, r8 - adds r4, #8 -_0800E56A: - ldrh r3, [r4] - lsls r3, r3, #3 - add r3, sb - movs r2, #2 - ldrsh r1, [r4, r2] - mov ip, r1 - mov r1, r8 - movs r2, #2 - ldrsh r0, [r1, r2] - mov r2, ip - adds r1, r2, r0 - ldr r2, _0800E5F4 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sl - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, sb - mov r3, r8 - ldrb r0, [r3, #4] - ldrb r2, [r4, #4] - adds r0, r0, r2 - strb r0, [r1] - adds r4, #8 - adds r5, #1 - ldrh r3, [r6] - cmp r5, r3 - blt _0800E56A -_0800E5AA: - ldrh r0, [r7] - cmp r0, #1 - beq _0800E5B2 - b _0800E846 -_0800E5B2: - ldr r0, _0800E5D0 @ =gUnknown_0202BEBC - movs r1, #0 - ldrsb r1, [r0, r1] - adds r2, r0, #0 - cmp r1, #0 - beq _0800E5C2 - cmp r1, #4 - bne _0800E5FC -_0800E5C2: - movs r0, #0x78 - strh r0, [r7, #2] - movs r0, #0x64 - b _0800E602 - .align 2, 0 -_0800E5CC: .4byte gUnknown_0200B3B8 -_0800E5D0: .4byte gUnknown_0202BEBC -_0800E5D4: .4byte gUnknown_02002858 -_0800E5D8: .4byte gUnknown_0200287D -_0800E5DC: .4byte gUnknown_02002882 -_0800E5E0: .4byte gUnknown_0201B178 -_0800E5E4: .4byte gUnknown_086A7DB0 -_0800E5E8: .4byte gOamBuffer -_0800E5EC: .4byte 0x000003FF -_0800E5F0: .4byte 0xFFFFFC00 -_0800E5F4: .4byte 0x000001FF -_0800E5F8: .4byte 0xFFFFFE00 -_0800E5FC: - movs r0, #0x78 - strh r0, [r7, #2] - movs r0, #0x50 -_0800E602: - strh r0, [r7, #4] - ldr r1, _0800E664 @ =gUnknown_086A7DB0 - movs r0, #0 - ldrsb r0, [r2, r0] - adds r0, #2 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r6, [r0] - movs r5, #0 - ldrh r0, [r6] - cmp r5, r0 - blt _0800E61C - b _0800E846 -_0800E61C: - ldr r1, _0800E668 @ =gOamBuffer - mov sb, r1 - ldr r2, _0800E66C @ =0xFFFFFE00 - mov sl, r2 - adds r4, r7, #0 - adds r4, #8 -_0800E628: - ldrh r3, [r4] - lsls r3, r3, #3 - add r3, sb - movs r0, #2 - ldrsh r1, [r4, r0] - movs r2, #2 - ldrsh r0, [r7, r2] - adds r1, r1, r0 - ldr r2, _0800E670 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sl - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, sb - ldrb r0, [r7, #4] - ldrb r3, [r4, #4] - adds r0, r0, r3 - strb r0, [r1] - adds r4, #8 - adds r5, #1 - ldrh r0, [r6] - cmp r5, r0 - blt _0800E628 - b _0800E846 - .align 2, 0 -_0800E664: .4byte gUnknown_086A7DB0 -_0800E668: .4byte gOamBuffer -_0800E66C: .4byte 0xFFFFFE00 -_0800E670: .4byte 0x000001FF -_0800E674: - cmp r1, #0xf0 - beq _0800E67A - b _0800E834 -_0800E67A: - movs r0, #0 - strh r0, [r6] - movs r0, #1 - mov r1, sl - strh r0, [r1] - ldr r0, _0800E79C @ =gUnknown_0201B178 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - strh r0, [r7] - mov r0, sb - adds r0, #0x26 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - mov r2, r8 - strh r0, [r2] - ldr r0, _0800E7A0 @ =gUnknown_086A7DB0 - movs r1, #9 - adds r2, r6, #0 - bl LoadSpriteSets - movs r0, #4 - mov r3, sl - strh r0, [r3, #2] - movs r0, #0x90 - strh r0, [r3, #4] - adds r4, r5, #0 - adds r4, #8 - ldr r5, _0800E7A4 @ =gOamBuffer - mov ip, r5 - ldrh r2, [r4] - lsls r2, r2, #3 - add r2, ip - mov r0, sb - movs r3, #0x1a - ldrsh r1, [r0, r3] - lsls r1, r1, #1 - adds r1, #2 - ldr r5, _0800E7A8 @ =0x000003FF - adds r0, r5, #0 - ands r1, r0 - ldrh r3, [r2, #4] - ldr r0, _0800E7AC @ =0xFFFFFC00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #4] - ldrh r2, [r4] - lsls r2, r2, #3 - add r2, ip - movs r0, #2 - ldrsh r1, [r4, r0] - mov r3, sl - movs r5, #2 - ldrsh r0, [r3, r5] - adds r1, r1, r0 - ldr r3, _0800E7B0 @ =0x000001FF - adds r0, r3, #0 - ands r1, r0 - ldrh r3, [r2, #2] - ldr r0, _0800E7B4 @ =0xFFFFFE00 - ands r0, r3 - orrs r0, r1 - strh r0, [r2, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, ip - mov r5, sl - ldrb r0, [r5, #4] - ldrb r4, [r4, #4] - adds r0, r0, r4 - strb r0, [r1] - mov r1, r8 - ldrh r0, [r1] - cmp r0, #1 - bne _0800E77C - movs r0, #0x54 - strh r0, [r1, #2] - movs r0, #0x96 - strh r0, [r1, #4] - ldr r2, _0800E7B8 @ =gUnknown_0200287D - movs r0, #0 - ldrsb r0, [r2, r0] - adds r0, #7 - lsls r0, r0, #2 - ldr r3, _0800E7A0 @ =gUnknown_086A7DB0 - adds r0, r0, r3 - ldr r6, [r0] - movs r5, #0 - ldrh r0, [r6] - cmp r5, r0 - bge _0800E77C - mov sb, ip - ldr r1, _0800E7B4 @ =0xFFFFFE00 - mov sl, r1 - mov r4, r8 - adds r4, #8 -_0800E73C: - ldrh r3, [r4] - lsls r3, r3, #3 - add r3, sb - movs r0, #2 - ldrsh r2, [r4, r0] - mov ip, r2 - mov r1, r8 - movs r2, #2 - ldrsh r0, [r1, r2] - mov r2, ip - adds r1, r2, r0 - ldr r2, _0800E7B0 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sl - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, sb - mov r3, r8 - ldrb r0, [r3, #4] - ldrb r2, [r4, #4] - adds r0, r0, r2 - strb r0, [r1] - adds r4, #8 - adds r5, #1 - ldrh r3, [r6] - cmp r5, r3 - blt _0800E73C -_0800E77C: - ldrh r0, [r7] - cmp r0, #1 - bne _0800E846 - ldr r0, _0800E7BC @ =gUnknown_0202BEBC - movs r1, #0 - ldrsb r1, [r0, r1] - adds r2, r0, #0 - cmp r1, #0 - beq _0800E792 - cmp r1, #4 - bne _0800E7C0 -_0800E792: - movs r0, #0x78 - strh r0, [r7, #2] - movs r0, #0x64 - b _0800E7C6 - .align 2, 0 -_0800E79C: .4byte gUnknown_0201B178 -_0800E7A0: .4byte gUnknown_086A7DB0 -_0800E7A4: .4byte gOamBuffer -_0800E7A8: .4byte 0x000003FF -_0800E7AC: .4byte 0xFFFFFC00 -_0800E7B0: .4byte 0x000001FF -_0800E7B4: .4byte 0xFFFFFE00 -_0800E7B8: .4byte gUnknown_0200287D -_0800E7BC: .4byte gUnknown_0202BEBC -_0800E7C0: - movs r0, #0x78 - strh r0, [r7, #2] - movs r0, #0x50 -_0800E7C6: - strh r0, [r7, #4] - ldr r1, _0800E824 @ =gUnknown_086A7DB0 - movs r0, #0 - ldrsb r0, [r2, r0] - adds r0, #2 - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r6, [r0] - movs r5, #0 - ldrh r0, [r6] - cmp r5, r0 - bge _0800E846 - ldr r1, _0800E828 @ =gOamBuffer - mov sb, r1 - ldr r2, _0800E82C @ =0xFFFFFE00 - mov sl, r2 - adds r4, r7, #0 - adds r4, #8 -_0800E7EA: - ldrh r3, [r4] - lsls r3, r3, #3 - add r3, sb - movs r0, #2 - ldrsh r1, [r4, r0] - movs r2, #2 - ldrsh r0, [r7, r2] - adds r1, r1, r0 - ldr r2, _0800E830 @ =0x000001FF - adds r0, r2, #0 - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, sl - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - add r1, sb - ldrb r0, [r7, #4] - ldrb r3, [r4, #4] - adds r0, r0, r3 - strb r0, [r1] - adds r4, #8 - adds r5, #1 - ldrh r0, [r6] - cmp r5, r0 - blt _0800E7EA - b _0800E846 - .align 2, 0 -_0800E824: .4byte gUnknown_086A7DB0 -_0800E828: .4byte gOamBuffer -_0800E82C: .4byte 0xFFFFFE00 -_0800E830: .4byte 0x000001FF -_0800E834: - movs r0, #0 - strh r0, [r6] - mov r1, sl - strh r0, [r1] - ldr r0, _0800E85C @ =gUnknown_086A7DB0 - movs r1, #9 - adds r2, r6, #0 - bl LoadSpriteSets -_0800E846: - movs r0, #0 - strh r0, [r7] - mov r2, r8 - strh r0, [r2] - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0800E85C: .4byte gUnknown_086A7DB0 - - thumb_func_start sub_E860 -sub_E860: @ 0x0800E860 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - ldr r0, _0800E8E8 @ =gUnknown_0202C580 - movs r1, #0 - ldrsb r1, [r0, r1] - movs r0, #0xb8 - muls r0, r1, r0 - ldr r2, _0800E8EC @ =gUnknown_0200B3B8 - adds r5, r0, r2 - ldr r0, _0800E8F0 @ =gUnknown_0201C18C - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - strh r0, [r5] - ldr r0, _0800E8F4 @ =gUnknown_086A7DD4 - movs r1, #5 - bl LoadSpriteSets - ldrh r0, [r5] - cmp r0, #1 - bne _0800E8DA - movs r0, #0x78 - strh r0, [r5, #2] - ldr r0, _0800E8F8 @ =gUnknown_0201A4B8 - ldrh r0, [r0] - strh r0, [r5, #4] - ldr r7, _0800E8FC @ =gOamBuffer - ldr r0, _0800E900 @ =0xFFFFFE00 - mov r8, r0 - adds r4, r5, #0 - adds r4, #8 - ldr r2, _0800E904 @ =0x000001FF - mov ip, r2 - movs r6, #3 -_0800E8A6: - ldrh r3, [r4] - lsls r3, r3, #3 - adds r3, r3, r7 - movs r0, #2 - ldrsh r1, [r4, r0] - movs r2, #2 - ldrsh r0, [r5, r2] - adds r1, r1, r0 - mov r0, ip - ands r1, r0 - ldrh r2, [r3, #2] - mov r0, r8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, #2] - ldrh r1, [r4] - lsls r1, r1, #3 - adds r1, r1, r7 - ldrb r0, [r5, #4] - ldrb r2, [r4, #4] - adds r0, r0, r2 - strb r0, [r1] - adds r4, #8 - subs r6, #1 - cmp r6, #0 - bge _0800E8A6 -_0800E8DA: - movs r0, #0 - strh r0, [r5] - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0800E8E8: .4byte gUnknown_0202C580 -_0800E8EC: .4byte gUnknown_0200B3B8 -_0800E8F0: .4byte gUnknown_0201C18C -_0800E8F4: .4byte gUnknown_086A7DD4 -_0800E8F8: .4byte gUnknown_0201A4B8 -_0800E8FC: .4byte gOamBuffer -_0800E900: .4byte 0xFFFFFE00 -_0800E904: .4byte 0x000001FF - - thumb_func_start sub_E908 -sub_E908: @ 0x0800E908 - ldr r1, _0800E92C @ =gUnknown_0202C5F0 - movs r2, #0 - ldr r0, _0800E930 @ =0x0000CFCF - strh r0, [r1] - ldr r0, _0800E934 @ =gUnknown_0201C1B0 - movs r1, #1 - strh r1, [r0] - ldr r0, _0800E938 @ =gUnknown_0202C59C - strh r1, [r0] - ldr r0, _0800E93C @ =gUnknown_0202ADE4 - strb r2, [r0] - ldr r0, _0800E940 @ =gUnknown_0201A4BC - strb r2, [r0] - ldr r0, _0800E944 @ =gUnknown_0202C598 - strb r2, [r0] - ldr r0, _0800E948 @ =gUnknown_0202C54C - strb r2, [r0] - bx lr - .align 2, 0 -_0800E92C: .4byte gUnknown_0202C5F0 -_0800E930: .4byte 0x0000CFCF -_0800E934: .4byte gUnknown_0201C1B0 -_0800E938: .4byte gUnknown_0202C59C -_0800E93C: .4byte gUnknown_0202ADE4 -_0800E940: .4byte gUnknown_0201A4BC -_0800E944: .4byte gUnknown_0202C598 -_0800E948: .4byte gUnknown_0202C54C - - thumb_func_start sub_E94C -sub_E94C: @ 0x0800E94C - push {lr} - ldr r0, _0800E95C @ =gUnknown_0202BF20 - ldrb r0, [r0] - cmp r0, #0 - beq _0800E960 - bl sub_EBEC - b _0800E964 - .align 2, 0 -_0800E95C: .4byte gUnknown_0202BF20 -_0800E960: - bl sub_ED28 -_0800E964: - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - pop {r1} - bx r1 - - thumb_func_start sub_E970 -sub_E970: @ 0x0800E970 - push {lr} - ldr r0, _0800E980 @ =gUnknown_0202BF20 - ldrb r0, [r0] - cmp r0, #0 - beq _0800E984 - bl sub_E994 - b _0800E988 - .align 2, 0 -_0800E980: .4byte gUnknown_0202BF20 -_0800E984: - bl sub_EAC0 -_0800E988: - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - pop {r1} - bx r1 - - thumb_func_start sub_E994 -sub_E994: @ 0x0800E994 - push {r4, r5, lr} - ldr r0, _0800E9B4 @ =gUnknown_0202ADE4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0800EA04 - ldr r0, _0800E9B8 @ =gUnknown_0201A4BC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0800E9BC - cmp r0, #1 - beq _0800E9F4 - b _0800EAB2 - .align 2, 0 -_0800E9B4: .4byte gUnknown_0202ADE4 -_0800E9B8: .4byte gUnknown_0201A4BC -_0800E9BC: - ldr r0, _0800E9D0 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0800E9DC - ldr r1, _0800E9D4 @ =gUnknown_0202C5F0 - ldr r0, _0800E9D8 @ =0x0000DEDE - strh r0, [r1] - b _0800EAB2 - .align 2, 0 -_0800E9D0: .4byte gMain -_0800E9D4: .4byte gUnknown_0202C5F0 -_0800E9D8: .4byte 0x0000DEDE -_0800E9DC: - ldr r1, _0800E9F0 @ =gUnknown_0202C5F0 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xe -_0800E9E4: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _0800E9E4 - b _0800EAB2 - .align 2, 0 -_0800E9F0: .4byte gUnknown_0202C5F0 -_0800E9F4: - ldr r1, _0800E9FC @ =gUnknown_0202C5F0 - ldr r0, _0800EA00 @ =0x0000EDED - strh r0, [r1] - b _0800EAB2 - .align 2, 0 -_0800E9FC: .4byte gUnknown_0202C5F0 -_0800EA00: .4byte 0x0000EDED -_0800EA04: - ldr r0, _0800EA24 @ =gUnknown_0202C59C - ldrh r2, [r0] - adds r1, r2, #0 - adds r5, r0, #0 - cmp r1, #7 - bhi _0800EA30 - ldr r1, _0800EA28 @ =gUnknown_0202C5F0 - ldr r2, _0800EA2C @ =0x0000CFCF - adds r0, r1, #0 - adds r0, #0xe -_0800EA18: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _0800EA18 - b _0800EAAC - .align 2, 0 -_0800EA24: .4byte gUnknown_0202C59C -_0800EA28: .4byte gUnknown_0202C5F0 -_0800EA2C: .4byte 0x0000CFCF -_0800EA30: - cmp r1, #9 - bhi _0800EA9C - adds r0, r2, #0 - subs r0, #8 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - ldr r3, _0800EA94 @ =gUnknown_0202C5F0 - movs r4, #0 - strh r2, [r3] - ldr r1, _0800EA98 @ =gUnknown_0202C610 - mov ip, r1 - lsls r2, r0, #1 - adds r2, r2, r0 - lsls r2, r2, #6 - adds r0, r2, r1 - ldr r1, [r0] - lsls r1, r1, #8 - mov r0, ip - adds r0, #4 - adds r0, r2, r0 - ldr r0, [r0] - orrs r0, r1 - strh r0, [r3, #2] - mov r0, ip - adds r0, #8 - adds r0, r2, r0 - ldr r1, [r0] - lsls r1, r1, #8 - mov r0, ip - adds r0, #0xc - adds r0, r2, r0 - ldr r0, [r0] - orrs r0, r1 - strh r0, [r3, #4] - mov r0, ip - adds r0, #0x10 - adds r0, r2, r0 - ldrh r1, [r0, #2] - strh r1, [r3, #6] - ldr r0, [r0] - strh r0, [r3, #8] - mov r0, ip - adds r0, #0x14 - adds r2, r2, r0 - ldrh r0, [r2, #2] - strh r0, [r3, #0xa] - ldr r0, [r2] - strh r0, [r3, #0xc] - strh r4, [r3, #0xe] - b _0800EAAC - .align 2, 0 -_0800EA94: .4byte gUnknown_0202C5F0 -_0800EA98: .4byte gUnknown_0202C610 -_0800EA9C: - ldr r1, _0800EABC @ =gUnknown_0202C5F0 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xe -_0800EAA4: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _0800EAA4 -_0800EAAC: - ldrh r0, [r5] - adds r0, #1 - strh r0, [r5] -_0800EAB2: - movs r0, #0 - pop {r4, r5} - pop {r1} - bx r1 - .align 2, 0 -_0800EABC: .4byte gUnknown_0202C5F0 - - thumb_func_start sub_EAC0 -sub_EAC0: @ 0x0800EAC0 - push {r4, r5, lr} - ldr r0, _0800EAE0 @ =gUnknown_0202ADE4 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0800EB30 - ldr r0, _0800EAE4 @ =gUnknown_0202C598 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - beq _0800EAE8 - cmp r0, #1 - beq _0800EB20 - b _0800EBDE - .align 2, 0 -_0800EAE0: .4byte gUnknown_0202ADE4 -_0800EAE4: .4byte gUnknown_0202C598 -_0800EAE8: - ldr r0, _0800EAFC @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - beq _0800EB08 - ldr r1, _0800EB00 @ =gUnknown_0202C5F0 - ldr r0, _0800EB04 @ =0x0000DEDE - strh r0, [r1] - b _0800EBDE - .align 2, 0 -_0800EAFC: .4byte gMain -_0800EB00: .4byte gUnknown_0202C5F0 -_0800EB04: .4byte 0x0000DEDE -_0800EB08: - ldr r1, _0800EB1C @ =gUnknown_0202C5F0 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xe -_0800EB10: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _0800EB10 - b _0800EBDE - .align 2, 0 -_0800EB1C: .4byte gUnknown_0202C5F0 -_0800EB20: - ldr r1, _0800EB28 @ =gUnknown_0202C5F0 - ldr r0, _0800EB2C @ =0x0000EDED - strh r0, [r1] - b _0800EBDE - .align 2, 0 -_0800EB28: .4byte gUnknown_0202C5F0 -_0800EB2C: .4byte 0x0000EDED -_0800EB30: - ldr r0, _0800EB50 @ =gUnknown_0202C59C - ldrh r2, [r0] - adds r1, r2, #0 - adds r5, r0, #0 - cmp r1, #7 - bhi _0800EB5C - ldr r1, _0800EB54 @ =gUnknown_0202C5F0 - ldr r2, _0800EB58 @ =0x0000CFCF - adds r0, r1, #0 - adds r0, #0xe -_0800EB44: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _0800EB44 - b _0800EBD8 - .align 2, 0 -_0800EB50: .4byte gUnknown_0202C59C -_0800EB54: .4byte gUnknown_0202C5F0 -_0800EB58: .4byte 0x0000CFCF -_0800EB5C: - cmp r1, #9 - bhi _0800EBC8 - adds r0, r2, #0 - subs r0, #8 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - ldr r3, _0800EBC0 @ =gUnknown_0202C5F0 - movs r4, #0 - strh r2, [r3] - ldr r1, _0800EBC4 @ =gUnknown_0202C610 - mov ip, r1 - lsls r2, r0, #1 - adds r2, r2, r0 - lsls r2, r2, #6 - adds r0, r2, r1 - ldr r1, [r0] - lsls r1, r1, #8 - mov r0, ip - adds r0, #4 - adds r0, r2, r0 - ldr r0, [r0] - orrs r0, r1 - strh r0, [r3, #2] - mov r0, ip - adds r0, #8 - adds r0, r2, r0 - ldr r1, [r0] - lsls r1, r1, #8 - mov r0, ip - adds r0, #0xc - adds r0, r2, r0 - ldr r0, [r0] - orrs r0, r1 - strh r0, [r3, #4] - mov r0, ip - adds r0, #0x10 - adds r0, r2, r0 - ldrh r1, [r0, #2] - strh r1, [r3, #6] - ldr r0, [r0] - strh r0, [r3, #8] - mov r0, ip - adds r0, #0x14 - adds r2, r2, r0 - ldrh r0, [r2, #2] - strh r0, [r3, #0xa] - ldr r0, [r2] - strh r0, [r3, #0xc] - strh r4, [r3, #0xe] - b _0800EBD8 - .align 2, 0 -_0800EBC0: .4byte gUnknown_0202C5F0 -_0800EBC4: .4byte gUnknown_0202C610 -_0800EBC8: - ldr r1, _0800EBE8 @ =gUnknown_0202C5F0 - movs r2, #0 - adds r0, r1, #0 - adds r0, #0xe -_0800EBD0: - strh r2, [r0] - subs r0, #2 - cmp r0, r1 - bge _0800EBD0 -_0800EBD8: - ldrh r0, [r5] - adds r0, #1 - strh r0, [r5] -_0800EBDE: - movs r0, #0 - pop {r4, r5} - pop {r1} - bx r1 - .align 2, 0 -_0800EBE8: .4byte gUnknown_0202C5F0 - - thumb_func_start sub_EBEC -sub_EBEC: @ 0x0800EBEC - push {r4, r5, lr} - ldr r4, _0800EC08 @ =gUnknown_0202ADE4 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - bne _0800EC7C - ldr r3, _0800EC0C @ =gUnknown_0201A4BC - movs r1, #0 - ldrsb r1, [r3, r1] - cmp r1, #0 - beq _0800EC10 - cmp r1, #1 - beq _0800EC30 - b _0800ECFC - .align 2, 0 -_0800EC08: .4byte gUnknown_0202ADE4 -_0800EC0C: .4byte gUnknown_0201A4BC -_0800EC10: - ldr r2, _0800EC28 @ =gUnknown_0201A4D0 - ldrh r0, [r2] - ldr r1, _0800EC2C @ =0x0000DEDE - cmp r0, r1 - beq _0800EC20 - ldrh r0, [r2, #2] - cmp r0, r1 - bne _0800ECFC -_0800EC20: - movs r0, #1 - strb r0, [r3] - b _0800ECFC - .align 2, 0 -_0800EC28: .4byte gUnknown_0201A4D0 -_0800EC2C: .4byte 0x0000DEDE -_0800EC30: - ldr r3, _0800EC54 @ =gUnknown_0201A4D0 - ldrh r2, [r3] - ldr r0, _0800EC58 @ =0x0000EDED - cmp r2, r0 - bne _0800EC64 - ldrh r0, [r3, #2] - cmp r0, r2 - bne _0800EC64 - movs r2, #1 - rsbs r2, r2, #0 - adds r0, r2, #0 - strb r0, [r4] - ldr r0, _0800EC5C @ =gUnknown_0202BEBC - strb r1, [r0] - ldr r0, _0800EC60 @ =gUnknown_0202C59C - strh r1, [r0] - b _0800ECFC - .align 2, 0 -_0800EC54: .4byte gUnknown_0201A4D0 -_0800EC58: .4byte 0x0000EDED -_0800EC5C: .4byte gUnknown_0202BEBC -_0800EC60: .4byte gUnknown_0202C59C -_0800EC64: - ldr r1, _0800EC78 @ =gUnknown_0202C54C - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xa - ble _0800ECFC - movs r0, #1 - b _0800ED1E - .align 2, 0 -_0800EC78: .4byte gUnknown_0202C54C -_0800EC7C: - ldr r4, _0800ECF0 @ =gUnknown_0201A4D0 - ldrh r5, [r4, #2] - adds r0, r5, #0 - subs r0, #8 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - cmp r1, #1 - bhi _0800ED1C - ldr r0, _0800ECF4 @ =gUnknown_0201C1B0 - strh r5, [r0] - ldr r0, _0800ECF8 @ =gUnknown_0202C550 - mov ip, r0 - lsls r3, r1, #1 - adds r3, r3, r1 - lsls r3, r3, #3 - adds r1, r3, r0 - ldrh r0, [r4, #6] - lsrs r0, r0, #8 - str r0, [r1] - mov r0, ip - adds r0, #4 - adds r0, r3, r0 - ldrb r1, [r4, #6] - str r1, [r0] - mov r1, ip - adds r1, #8 - adds r1, r3, r1 - ldrh r0, [r4, #0xa] - lsrs r0, r0, #8 - str r0, [r1] - mov r0, ip - adds r0, #0xc - adds r0, r3, r0 - ldrb r1, [r4, #0xa] - str r1, [r0] - mov r2, ip - adds r2, #0x10 - adds r2, r3, r2 - ldrh r0, [r4, #0xe] - lsls r0, r0, #0x10 - ldrh r1, [r4, #0x12] - orrs r0, r1 - str r0, [r2] - mov r0, ip - adds r0, #0x14 - adds r3, r3, r0 - ldrh r0, [r4, #0x16] - lsls r0, r0, #0x10 - ldrh r1, [r4, #0x1a] - orrs r0, r1 - str r0, [r3] - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #9 - bne _0800ECFC - movs r0, #1 - rsbs r0, r0, #0 - b _0800ED1E - .align 2, 0 -_0800ECF0: .4byte gUnknown_0201A4D0 -_0800ECF4: .4byte gUnknown_0201C1B0 -_0800ECF8: .4byte gUnknown_0202C550 -_0800ECFC: - movs r1, #0 - ldr r4, _0800ED24 @ =gUnknown_0201A4D0 - movs r3, #0 -_0800ED02: - lsls r0, r1, #2 - adds r2, r1, #1 - movs r1, #1 - adds r0, r0, r4 - adds r0, #2 -_0800ED0C: - strh r3, [r0] - subs r0, #2 - subs r1, #1 - cmp r1, #0 - bge _0800ED0C - adds r1, r2, #0 - cmp r1, #7 - ble _0800ED02 -_0800ED1C: - movs r0, #0 -_0800ED1E: - pop {r4, r5} - pop {r1} - bx r1 - .align 2, 0 -_0800ED24: .4byte gUnknown_0201A4D0 - - thumb_func_start sub_ED28 -sub_ED28: @ 0x0800ED28 - push {r4, r5, lr} - ldr r4, _0800ED44 @ =gUnknown_0202ADE4 - movs r0, #0 - ldrsb r0, [r4, r0] - cmp r0, #0 - bne _0800EDB8 - ldr r3, _0800ED48 @ =gUnknown_0202C598 - movs r1, #0 - ldrsb r1, [r3, r1] - cmp r1, #0 - beq _0800ED4C - cmp r1, #1 - beq _0800ED6C - b _0800EE38 - .align 2, 0 -_0800ED44: .4byte gUnknown_0202ADE4 -_0800ED48: .4byte gUnknown_0202C598 -_0800ED4C: - ldr r2, _0800ED64 @ =gUnknown_0201A4D0 - ldrh r0, [r2] - ldr r1, _0800ED68 @ =0x0000DEDE - cmp r0, r1 - beq _0800ED5C - ldrh r0, [r2, #2] - cmp r0, r1 - bne _0800EE38 -_0800ED5C: - movs r0, #1 - strb r0, [r3] - b _0800EE38 - .align 2, 0 -_0800ED64: .4byte gUnknown_0201A4D0 -_0800ED68: .4byte 0x0000DEDE -_0800ED6C: - ldr r3, _0800ED90 @ =gUnknown_0201A4D0 - ldrh r2, [r3] - ldr r0, _0800ED94 @ =0x0000EDED - cmp r2, r0 - bne _0800EDA0 - ldrh r0, [r3, #2] - cmp r0, r2 - bne _0800EDA0 - movs r2, #1 - rsbs r2, r2, #0 - adds r0, r2, #0 - strb r0, [r4] - ldr r0, _0800ED98 @ =gUnknown_0202BEBC - strb r1, [r0] - ldr r0, _0800ED9C @ =gUnknown_0202C59C - strh r1, [r0] - b _0800EE38 - .align 2, 0 -_0800ED90: .4byte gUnknown_0201A4D0 -_0800ED94: .4byte 0x0000EDED -_0800ED98: .4byte gUnknown_0202BEBC -_0800ED9C: .4byte gUnknown_0202C59C -_0800EDA0: - ldr r1, _0800EDB4 @ =gUnknown_0202C54C - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0xa - ble _0800EE38 - movs r0, #1 - b _0800EE5A - .align 2, 0 -_0800EDB4: .4byte gUnknown_0202C54C -_0800EDB8: - ldr r4, _0800EE2C @ =gUnknown_0201A4D0 - ldrh r5, [r4] - adds r0, r5, #0 - subs r0, #8 - lsls r0, r0, #0x10 - lsrs r1, r0, #0x10 - cmp r1, #1 - bhi _0800EE58 - ldr r0, _0800EE30 @ =gUnknown_0201C1B0 - strh r5, [r0] - ldr r0, _0800EE34 @ =gUnknown_0202C550 - mov ip, r0 - lsls r3, r1, #1 - adds r3, r3, r1 - lsls r3, r3, #3 - adds r1, r3, r0 - ldrh r0, [r4, #4] - lsrs r0, r0, #8 - str r0, [r1] - mov r0, ip - adds r0, #4 - adds r0, r3, r0 - ldrb r1, [r4, #4] - str r1, [r0] - mov r1, ip - adds r1, #8 - adds r1, r3, r1 - ldrh r0, [r4, #8] - lsrs r0, r0, #8 - str r0, [r1] - mov r0, ip - adds r0, #0xc - adds r0, r3, r0 - ldrb r1, [r4, #8] - str r1, [r0] - mov r2, ip - adds r2, #0x10 - adds r2, r3, r2 - ldrh r0, [r4, #0xc] - lsls r0, r0, #0x10 - ldrh r1, [r4, #0x10] - orrs r0, r1 - str r0, [r2] - mov r0, ip - adds r0, #0x14 - adds r3, r3, r0 - ldrh r0, [r4, #0x14] - lsls r0, r0, #0x10 - ldrh r1, [r4, #0x18] - orrs r0, r1 - str r0, [r3] - lsls r0, r5, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #9 - bne _0800EE38 - movs r0, #1 - rsbs r0, r0, #0 - b _0800EE5A - .align 2, 0 -_0800EE2C: .4byte gUnknown_0201A4D0 -_0800EE30: .4byte gUnknown_0201C1B0 -_0800EE34: .4byte gUnknown_0202C550 -_0800EE38: - movs r1, #0 - ldr r4, _0800EE60 @ =gUnknown_0201A4D0 - movs r3, #0 -_0800EE3E: - lsls r0, r1, #2 - adds r2, r1, #1 - movs r1, #1 - adds r0, r0, r4 - adds r0, #2 -_0800EE48: - strh r3, [r0] - subs r0, #2 - subs r1, #1 - cmp r1, #0 - bge _0800EE48 - adds r1, r2, #0 - cmp r1, #7 - ble _0800EE3E -_0800EE58: - movs r0, #0 -_0800EE5A: - pop {r4, r5} - pop {r1} - bx r1 - .align 2, 0 -_0800EE60: .4byte gUnknown_0201A4D0 - thumb_func_start sub_EE64 sub_EE64: @ 0x0800EE64 push {r4, r5, r6, r7, lr} diff --git a/include/functions.h b/include/functions.h index 3cd673d..695464c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -146,11 +146,11 @@ extern void sub_E464(void); extern void sub_E860(void); extern void sub_E908(void); extern s16 sub_E94C(void); -extern void sub_E970(void); -//extern ? sub_E994(); -//extern ? sub_EAC0(); -//extern ? sub_EBEC(); -//extern ? sub_ED28(); +extern s16 sub_E970(void); +extern s16 sub_E994(); +extern s16 sub_EAC0(); +extern s16 sub_EBEC(void); +extern s16 sub_ED28(void); extern void sub_EE64(void); //extern ? sub_F21C(); //extern ? sub_F3BC(); diff --git a/include/variables.h b/include/variables.h index 4a79c67..56145c3 100644 --- a/include/variables.h +++ b/include/variables.h @@ -135,6 +135,8 @@ extern const s16 gEReaderAccessButtonSequence[]; extern struct Coord16 gUnknown_086A6B28[]; extern const struct SpriteSet *const gUnknown_086A6AD4[]; extern const struct SpriteSet *const gUnknown_086A7DA8[]; +extern const struct SpriteSet *const gUnknown_086A7DB0[]; +extern const struct SpriteSet *const gUnknown_086A7DD4[]; extern void (*gFieldSelectStateFuncs[])(void); extern u8 gUnknown_080A2400[]; extern u8 gFieldSelectWindow_Gfx[]; diff --git a/src/high_scores.c b/src/high_scores.c index a7b5ab3..3ea2500 100644 --- a/src/high_scores.c +++ b/src/high_scores.c @@ -12,12 +12,17 @@ extern u8 gUnknown_08099FC0[]; extern u8 gUnknown_080957A0[]; extern s16 gUnknown_0202C588; extern u8 gUnknown_0202BEB0; -extern u8 gUnknown_0201C18C; +extern s8 gUnknown_0201C18C; extern s16 gUnknown_0201A4B8; extern s8 gUnknown_0202BED4; extern s8 gUnknown_0202C580; -extern u8 gUnknown_0201B178; +extern s8 gUnknown_0201B178; extern u8 gUnknown_0202BEBC; +extern u16 gUnknown_0201C1B0; +extern u16 gUnknown_0202C59C; +extern s8 gUnknown_0201A4BC; +extern s8 gUnknown_0202C598; +extern s8 gUnknown_0202C54C; extern s16 gUnknown_02002880; extern s16 gUnknown_02002882; @@ -44,7 +49,7 @@ struct unkStruct_2002858 s16 unk22; s8 unk24; u8 unk25; - u8 unk26; + s8 unk26; }; struct unkStruct_2002858 gUnknown_02002858; @@ -1108,3 +1113,929 @@ void sub_E3A8(void) spriteGroup->available = 0; } + +extern s8 gUnknown_0200287D; + + +#ifdef NONMATCHING +static inline void sub_E464_HELPER(int x, struct SpriteGroup *spriteGroup, struct SpriteGroup *spriteGroup4, struct SpriteGroup *spriteGroup3) +{ + int i; + const struct SpriteSet *spriteSet; + register struct OamDataSimple *oamData asm("r4"); + spriteGroup->baseX = x; + spriteGroup->baseY = 144; + oamData = &spriteGroup->oam[0]; + gOamBuffer[oamData->oamId].tileNum = gUnknown_02002858.unk1A * 2 + 2; + gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup->baseX; + gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroup->baseY; +} + +// This one is tough. I think there might be an inline function used for the shared logic +// of the two main if statements. +void sub_E464(void) +{ + int i; + int count; + register struct SpriteGroup *spriteGroups asm("r6"); + register struct SpriteGroup *spriteGroup1 asm("r4"); + struct SpriteGroup *spriteGroup2; + struct SpriteGroup *spriteGroup3; + struct SpriteGroup *spriteGroup4; + struct SpriteGroup *spriteGroup5; + register struct unkStruct_2002858 *var1_02002858 asm("r9"); + const struct SpriteSet *spriteSet; + struct OamDataSimple *oamData; + + spriteGroups = gUnknown_0200B3B8; + spriteGroup1 = spriteGroups; + spriteGroup2 = &spriteGroups[1]; + spriteGroup3 = &spriteGroups[(s8)gUnknown_0202BEBC + 2]; + var1_02002858 = &gUnknown_02002858; + spriteGroup4 = &spriteGroups[gUnknown_0200287D + 7]; + + if (gUnknown_02002882 == 0) + { + spriteGroups->available = 1; + spriteGroup2->available = 0; + spriteGroup3->available = gUnknown_0201B178; + spriteGroup4->available = var1_02002858->unk26; + LoadSpriteSets(gUnknown_086A7DB0, 9, spriteGroups); + sub_E464_HELPER(220, spriteGroup1, spriteGroup4, spriteGroup3); + if (spriteGroup4->available == 1) + { + spriteGroup4->baseX = 84; + spriteGroup4->baseY = 150; + spriteSet = gUnknown_086A7DB0[gUnknown_0200287D + 7]; + for (i = 0; i < spriteSet->count; i++) + { + oamData = &spriteGroup4->oam[i]; + gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup4->baseX; + gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroup4->baseY; + } + } + if (spriteGroup3->available == 1) + { + switch ((s8)gUnknown_0202BEBC) + { + case 0: + case 4: + spriteGroup3->baseX = 120; + spriteGroup3->baseY = 100; + break; + default: + spriteGroup3->baseX = 120; + spriteGroup3->baseY = 80; + break; + } + spriteSet = gUnknown_086A7DB0[(s8)gUnknown_0202BEBC + 2]; + for (i = 0; i < spriteSet->count; i++) + { + oamData = &spriteGroup3->oam[i]; + gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup3->baseX; + gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroup3->baseY; + } + } + } + else if (gUnknown_02002882 == 240) + { + spriteGroup1->available = 0; + spriteGroup2->available = 1; + spriteGroup3->available = gUnknown_0201B178; + spriteGroup4->available = var1_02002858->unk26; + LoadSpriteSets(gUnknown_086A7DB0, 2, gUnknown_0200B3B8); + sub_E464_HELPER(4, spriteGroup2, spriteGroup4, spriteGroup3); + if (spriteGroup4->available == 1) + { + spriteGroup4->baseX = 84; + spriteGroup4->baseY = 150; + spriteSet = gUnknown_086A7DB0[gUnknown_0200287D + 7]; + for (i = 0; i < spriteSet->count; i++) + { + oamData = &spriteGroup4->oam[i]; + gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup4->baseX; + gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroup4->baseY; + } + } + if (spriteGroup3->available == 1) + { + switch ((s8)gUnknown_0202BEBC) + { + case 0: + case 4: + spriteGroup3->baseX = 120; + spriteGroup3->baseY = 100; + break; + default: + spriteGroup3->baseX = 120; + spriteGroup3->baseY = 80; + break; + } + spriteSet = gUnknown_086A7DB0[(s8)gUnknown_0202BEBC + 2]; + for (i = 0; i < spriteSet->count; i++) + { + oamData = &spriteGroup3->oam[i]; + gOamBuffer[oamData->oamId].x = oamData->xOffset + spriteGroup3->baseX; + gOamBuffer[oamData->oamId].y = oamData->yOffset + spriteGroup3->baseY; + } + } + } + else + { + spriteGroup1->available = 0; + spriteGroup2->available = 0; + LoadSpriteSets(gUnknown_086A7DB0, 9, gUnknown_0200B3B8); + } + + spriteGroup3->available = 0; + spriteGroup4->available = 0; +} +#else +NAKED +void sub_E464(void) +{ + asm_unified("\n\ + push {r4, r5, r6, r7, lr}\n\ + mov r7, sl\n\ + mov r6, sb\n\ + mov r5, r8\n\ + push {r5, r6, r7}\n\ + ldr r6, _0800E5CC @ =gUnknown_0200B3B8\n\ + adds r4, r6, #0\n\ + movs r0, #0xb8\n\ + adds r0, r0, r6\n\ + mov sl, r0\n\ + mov r5, sl\n\ + ldr r0, _0800E5D0 @ =gUnknown_0202BEBC\n\ + ldrb r0, [r0]\n\ + lsls r0, r0, #0x18\n\ + asrs r0, r0, #0x18\n\ + movs r2, #0xb8\n\ + adds r1, r0, #0\n\ + muls r1, r2, r1\n\ + movs r3, #0xb8\n\ + lsls r3, r3, #1\n\ + adds r0, r6, r3\n\ + adds r7, r1, r0\n\ + ldr r0, _0800E5D4 @ =gUnknown_02002858\n\ + mov sb, r0\n\ + ldr r1, _0800E5D8 @ =gUnknown_0200287D\n\ + movs r0, #0\n\ + ldrsb r0, [r1, r0]\n\ + adds r1, r0, #0\n\ + muls r1, r2, r1\n\ + movs r2, #0xa1\n\ + lsls r2, r2, #3\n\ + adds r0, r6, r2\n\ + adds r1, r1, r0\n\ + mov r8, r1\n\ + ldr r0, _0800E5DC @ =gUnknown_02002882\n\ + movs r3, #0\n\ + ldrsh r1, [r0, r3]\n\ + cmp r1, #0\n\ + beq _0800E4B4\n\ + b _0800E674\n\ +_0800E4B4:\n\ + movs r0, #1\n\ + strh r0, [r6]\n\ + strh r1, [r5]\n\ + ldr r0, _0800E5E0 @ =gUnknown_0201B178\n\ + ldrb r0, [r0]\n\ + lsls r0, r0, #0x18\n\ + asrs r0, r0, #0x18\n\ + strh r0, [r7]\n\ + mov r0, sb\n\ + adds r0, #0x26\n\ + ldrb r0, [r0]\n\ + lsls r0, r0, #0x18\n\ + asrs r0, r0, #0x18\n\ + mov r1, r8\n\ + strh r0, [r1]\n\ + ldr r0, _0800E5E4 @ =gUnknown_086A7DB0\n\ + movs r1, #9\n\ + adds r2, r6, #0\n\ + bl LoadSpriteSets\n\ + movs r0, #0xdc\n\ + strh r0, [r6, #2]\n\ + movs r0, #0x90\n\ + strh r0, [r6, #4]\n\ + adds r4, #8\n\ + ldr r2, _0800E5E8 @ =gOamBuffer\n\ + mov sl, r2\n\ + ldrh r2, [r4]\n\ + lsls r2, r2, #3\n\ + add r2, sl\n\ + mov r3, sb\n\ + movs r5, #0x1a\n\ + ldrsh r1, [r3, r5]\n\ + lsls r1, r1, #1\n\ + adds r1, #2\n\ + ldr r3, _0800E5EC @ =0x000003FF\n\ + adds r0, r3, #0\n\ + ands r1, r0\n\ + ldrh r3, [r2, #4]\n\ + ldr r0, _0800E5F0 @ =0xFFFFFC00\n\ + ands r0, r3\n\ + orrs r0, r1\n\ + strh r0, [r2, #4]\n\ + ldrh r2, [r4]\n\ + lsls r2, r2, #3\n\ + add r2, sl\n\ + movs r5, #2\n\ + ldrsh r1, [r4, r5]\n\ + movs r3, #2\n\ + ldrsh r0, [r6, r3]\n\ + adds r1, r1, r0\n\ + ldr r5, _0800E5F4 @ =0x000001FF\n\ + adds r0, r5, #0\n\ + ands r1, r0\n\ + ldrh r3, [r2, #2]\n\ + ldr r0, _0800E5F8 @ =0xFFFFFE00\n\ + mov ip, r0\n\ + ands r0, r3\n\ + orrs r0, r1\n\ + strh r0, [r2, #2]\n\ + ldrh r1, [r4]\n\ + lsls r1, r1, #3\n\ + add r1, sl\n\ + ldrb r0, [r6, #4]\n\ + ldrb r4, [r4, #4]\n\ + adds r0, r0, r4\n\ + strb r0, [r1]\n\ + mov r1, r8\n\ + ldrh r0, [r1]\n\ + cmp r0, #1\n\ + bne _0800E5AA\n\ + movs r0, #0x54\n\ + strh r0, [r1, #2]\n\ + movs r0, #0x96\n\ + strh r0, [r1, #4]\n\ + ldr r2, _0800E5D8 @ =gUnknown_0200287D\n\ + movs r0, #0\n\ + ldrsb r0, [r2, r0]\n\ + adds r0, #7\n\ + lsls r0, r0, #2\n\ + ldr r3, _0800E5E4 @ =gUnknown_086A7DB0\n\ + adds r0, r0, r3\n\ + ldr r6, [r0]\n\ + movs r5, #0\n\ + ldrh r0, [r6]\n\ + cmp r5, r0\n\ + bge _0800E5AA\n\ + mov sb, sl\n\ + mov sl, ip\n\ + mov r4, r8\n\ + adds r4, #8\n\ +_0800E56A:\n\ + ldrh r3, [r4]\n\ + lsls r3, r3, #3\n\ + add r3, sb\n\ + movs r2, #2\n\ + ldrsh r1, [r4, r2]\n\ + mov ip, r1\n\ + mov r1, r8\n\ + movs r2, #2\n\ + ldrsh r0, [r1, r2]\n\ + mov r2, ip\n\ + adds r1, r2, r0\n\ + ldr r2, _0800E5F4 @ =0x000001FF\n\ + adds r0, r2, #0\n\ + ands r1, r0\n\ + ldrh r2, [r3, #2]\n\ + mov r0, sl\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strh r0, [r3, #2]\n\ + ldrh r1, [r4]\n\ + lsls r1, r1, #3\n\ + add r1, sb\n\ + mov r3, r8\n\ + ldrb r0, [r3, #4]\n\ + ldrb r2, [r4, #4]\n\ + adds r0, r0, r2\n\ + strb r0, [r1]\n\ + adds r4, #8\n\ + adds r5, #1\n\ + ldrh r3, [r6]\n\ + cmp r5, r3\n\ + blt _0800E56A\n\ +_0800E5AA:\n\ + ldrh r0, [r7]\n\ + cmp r0, #1\n\ + beq _0800E5B2\n\ + b _0800E846\n\ +_0800E5B2:\n\ + ldr r0, _0800E5D0 @ =gUnknown_0202BEBC\n\ + movs r1, #0\n\ + ldrsb r1, [r0, r1]\n\ + adds r2, r0, #0\n\ + cmp r1, #0\n\ + beq _0800E5C2\n\ + cmp r1, #4\n\ + bne _0800E5FC\n\ +_0800E5C2:\n\ + movs r0, #0x78\n\ + strh r0, [r7, #2]\n\ + movs r0, #0x64\n\ + b _0800E602\n\ + .align 2, 0\n\ +_0800E5CC: .4byte gUnknown_0200B3B8\n\ +_0800E5D0: .4byte gUnknown_0202BEBC\n\ +_0800E5D4: .4byte gUnknown_02002858\n\ +_0800E5D8: .4byte gUnknown_0200287D\n\ +_0800E5DC: .4byte gUnknown_02002882\n\ +_0800E5E0: .4byte gUnknown_0201B178\n\ +_0800E5E4: .4byte gUnknown_086A7DB0\n\ +_0800E5E8: .4byte gOamBuffer\n\ +_0800E5EC: .4byte 0x000003FF\n\ +_0800E5F0: .4byte 0xFFFFFC00\n\ +_0800E5F4: .4byte 0x000001FF\n\ +_0800E5F8: .4byte 0xFFFFFE00\n\ +_0800E5FC:\n\ + movs r0, #0x78\n\ + strh r0, [r7, #2]\n\ + movs r0, #0x50\n\ +_0800E602:\n\ + strh r0, [r7, #4]\n\ + ldr r1, _0800E664 @ =gUnknown_086A7DB0\n\ + movs r0, #0\n\ + ldrsb r0, [r2, r0]\n\ + adds r0, #2\n\ + lsls r0, r0, #2\n\ + adds r0, r0, r1\n\ + ldr r6, [r0]\n\ + movs r5, #0\n\ + ldrh r0, [r6]\n\ + cmp r5, r0\n\ + blt _0800E61C\n\ + b _0800E846\n\ +_0800E61C:\n\ + ldr r1, _0800E668 @ =gOamBuffer\n\ + mov sb, r1\n\ + ldr r2, _0800E66C @ =0xFFFFFE00\n\ + mov sl, r2\n\ + adds r4, r7, #0\n\ + adds r4, #8\n\ +_0800E628:\n\ + ldrh r3, [r4]\n\ + lsls r3, r3, #3\n\ + add r3, sb\n\ + movs r0, #2\n\ + ldrsh r1, [r4, r0]\n\ + movs r2, #2\n\ + ldrsh r0, [r7, r2]\n\ + adds r1, r1, r0\n\ + ldr r2, _0800E670 @ =0x000001FF\n\ + adds r0, r2, #0\n\ + ands r1, r0\n\ + ldrh r2, [r3, #2]\n\ + mov r0, sl\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strh r0, [r3, #2]\n\ + ldrh r1, [r4]\n\ + lsls r1, r1, #3\n\ + add r1, sb\n\ + ldrb r0, [r7, #4]\n\ + ldrb r3, [r4, #4]\n\ + adds r0, r0, r3\n\ + strb r0, [r1]\n\ + adds r4, #8\n\ + adds r5, #1\n\ + ldrh r0, [r6]\n\ + cmp r5, r0\n\ + blt _0800E628\n\ + b _0800E846\n\ + .align 2, 0\n\ +_0800E664: .4byte gUnknown_086A7DB0\n\ +_0800E668: .4byte gOamBuffer\n\ +_0800E66C: .4byte 0xFFFFFE00\n\ +_0800E670: .4byte 0x000001FF\n\ +_0800E674:\n\ + cmp r1, #0xf0\n\ + beq _0800E67A\n\ + b _0800E834\n\ +_0800E67A:\n\ + movs r0, #0\n\ + strh r0, [r6]\n\ + movs r0, #1\n\ + mov r1, sl\n\ + strh r0, [r1]\n\ + ldr r0, _0800E79C @ =gUnknown_0201B178\n\ + ldrb r0, [r0]\n\ + lsls r0, r0, #0x18\n\ + asrs r0, r0, #0x18\n\ + strh r0, [r7]\n\ + mov r0, sb\n\ + adds r0, #0x26\n\ + ldrb r0, [r0]\n\ + lsls r0, r0, #0x18\n\ + asrs r0, r0, #0x18\n\ + mov r2, r8\n\ + strh r0, [r2]\n\ + ldr r0, _0800E7A0 @ =gUnknown_086A7DB0\n\ + movs r1, #9\n\ + adds r2, r6, #0\n\ + bl LoadSpriteSets\n\ + movs r0, #4\n\ + mov r3, sl\n\ + strh r0, [r3, #2]\n\ + movs r0, #0x90\n\ + strh r0, [r3, #4]\n\ + adds r4, r5, #0\n\ + adds r4, #8\n\ + ldr r5, _0800E7A4 @ =gOamBuffer\n\ + mov ip, r5\n\ + ldrh r2, [r4]\n\ + lsls r2, r2, #3\n\ + add r2, ip\n\ + mov r0, sb\n\ + movs r3, #0x1a\n\ + ldrsh r1, [r0, r3]\n\ + lsls r1, r1, #1\n\ + adds r1, #2\n\ + ldr r5, _0800E7A8 @ =0x000003FF\n\ + adds r0, r5, #0\n\ + ands r1, r0\n\ + ldrh r3, [r2, #4]\n\ + ldr r0, _0800E7AC @ =0xFFFFFC00\n\ + ands r0, r3\n\ + orrs r0, r1\n\ + strh r0, [r2, #4]\n\ + ldrh r2, [r4]\n\ + lsls r2, r2, #3\n\ + add r2, ip\n\ + movs r0, #2\n\ + ldrsh r1, [r4, r0]\n\ + mov r3, sl\n\ + movs r5, #2\n\ + ldrsh r0, [r3, r5]\n\ + adds r1, r1, r0\n\ + ldr r3, _0800E7B0 @ =0x000001FF\n\ + adds r0, r3, #0\n\ + ands r1, r0\n\ + ldrh r3, [r2, #2]\n\ + ldr r0, _0800E7B4 @ =0xFFFFFE00\n\ + ands r0, r3\n\ + orrs r0, r1\n\ + strh r0, [r2, #2]\n\ + ldrh r1, [r4]\n\ + lsls r1, r1, #3\n\ + add r1, ip\n\ + mov r5, sl\n\ + ldrb r0, [r5, #4]\n\ + ldrb r4, [r4, #4]\n\ + adds r0, r0, r4\n\ + strb r0, [r1]\n\ + mov r1, r8\n\ + ldrh r0, [r1]\n\ + cmp r0, #1\n\ + bne _0800E77C\n\ + movs r0, #0x54\n\ + strh r0, [r1, #2]\n\ + movs r0, #0x96\n\ + strh r0, [r1, #4]\n\ + ldr r2, _0800E7B8 @ =gUnknown_0200287D\n\ + movs r0, #0\n\ + ldrsb r0, [r2, r0]\n\ + adds r0, #7\n\ + lsls r0, r0, #2\n\ + ldr r3, _0800E7A0 @ =gUnknown_086A7DB0\n\ + adds r0, r0, r3\n\ + ldr r6, [r0]\n\ + movs r5, #0\n\ + ldrh r0, [r6]\n\ + cmp r5, r0\n\ + bge _0800E77C\n\ + mov sb, ip\n\ + ldr r1, _0800E7B4 @ =0xFFFFFE00\n\ + mov sl, r1\n\ + mov r4, r8\n\ + adds r4, #8\n\ +_0800E73C:\n\ + ldrh r3, [r4]\n\ + lsls r3, r3, #3\n\ + add r3, sb\n\ + movs r0, #2\n\ + ldrsh r2, [r4, r0]\n\ + mov ip, r2\n\ + mov r1, r8\n\ + movs r2, #2\n\ + ldrsh r0, [r1, r2]\n\ + mov r2, ip\n\ + adds r1, r2, r0\n\ + ldr r2, _0800E7B0 @ =0x000001FF\n\ + adds r0, r2, #0\n\ + ands r1, r0\n\ + ldrh r2, [r3, #2]\n\ + mov r0, sl\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strh r0, [r3, #2]\n\ + ldrh r1, [r4]\n\ + lsls r1, r1, #3\n\ + add r1, sb\n\ + mov r3, r8\n\ + ldrb r0, [r3, #4]\n\ + ldrb r2, [r4, #4]\n\ + adds r0, r0, r2\n\ + strb r0, [r1]\n\ + adds r4, #8\n\ + adds r5, #1\n\ + ldrh r3, [r6]\n\ + cmp r5, r3\n\ + blt _0800E73C\n\ +_0800E77C:\n\ + ldrh r0, [r7]\n\ + cmp r0, #1\n\ + bne _0800E846\n\ + ldr r0, _0800E7BC @ =gUnknown_0202BEBC\n\ + movs r1, #0\n\ + ldrsb r1, [r0, r1]\n\ + adds r2, r0, #0\n\ + cmp r1, #0\n\ + beq _0800E792\n\ + cmp r1, #4\n\ + bne _0800E7C0\n\ +_0800E792:\n\ + movs r0, #0x78\n\ + strh r0, [r7, #2]\n\ + movs r0, #0x64\n\ + b _0800E7C6\n\ + .align 2, 0\n\ +_0800E79C: .4byte gUnknown_0201B178\n\ +_0800E7A0: .4byte gUnknown_086A7DB0\n\ +_0800E7A4: .4byte gOamBuffer\n\ +_0800E7A8: .4byte 0x000003FF\n\ +_0800E7AC: .4byte 0xFFFFFC00\n\ +_0800E7B0: .4byte 0x000001FF\n\ +_0800E7B4: .4byte 0xFFFFFE00\n\ +_0800E7B8: .4byte gUnknown_0200287D\n\ +_0800E7BC: .4byte gUnknown_0202BEBC\n\ +_0800E7C0:\n\ + movs r0, #0x78\n\ + strh r0, [r7, #2]\n\ + movs r0, #0x50\n\ +_0800E7C6:\n\ + strh r0, [r7, #4]\n\ + ldr r1, _0800E824 @ =gUnknown_086A7DB0\n\ + movs r0, #0\n\ + ldrsb r0, [r2, r0]\n\ + adds r0, #2\n\ + lsls r0, r0, #2\n\ + adds r0, r0, r1\n\ + ldr r6, [r0]\n\ + movs r5, #0\n\ + ldrh r0, [r6]\n\ + cmp r5, r0\n\ + bge _0800E846\n\ + ldr r1, _0800E828 @ =gOamBuffer\n\ + mov sb, r1\n\ + ldr r2, _0800E82C @ =0xFFFFFE00\n\ + mov sl, r2\n\ + adds r4, r7, #0\n\ + adds r4, #8\n\ +_0800E7EA:\n\ + ldrh r3, [r4]\n\ + lsls r3, r3, #3\n\ + add r3, sb\n\ + movs r0, #2\n\ + ldrsh r1, [r4, r0]\n\ + movs r2, #2\n\ + ldrsh r0, [r7, r2]\n\ + adds r1, r1, r0\n\ + ldr r2, _0800E830 @ =0x000001FF\n\ + adds r0, r2, #0\n\ + ands r1, r0\n\ + ldrh r2, [r3, #2]\n\ + mov r0, sl\n\ + ands r0, r2\n\ + orrs r0, r1\n\ + strh r0, [r3, #2]\n\ + ldrh r1, [r4]\n\ + lsls r1, r1, #3\n\ + add r1, sb\n\ + ldrb r0, [r7, #4]\n\ + ldrb r3, [r4, #4]\n\ + adds r0, r0, r3\n\ + strb r0, [r1]\n\ + adds r4, #8\n\ + adds r5, #1\n\ + ldrh r0, [r6]\n\ + cmp r5, r0\n\ + blt _0800E7EA\n\ + b _0800E846\n\ + .align 2, 0\n\ +_0800E824: .4byte gUnknown_086A7DB0\n\ +_0800E828: .4byte gOamBuffer\n\ +_0800E82C: .4byte 0xFFFFFE00\n\ +_0800E830: .4byte 0x000001FF\n\ +_0800E834:\n\ + movs r0, #0\n\ + strh r0, [r6]\n\ + mov r1, sl\n\ + strh r0, [r1]\n\ + ldr r0, _0800E85C @ =gUnknown_086A7DB0\n\ + movs r1, #9\n\ + adds r2, r6, #0\n\ + bl LoadSpriteSets\n\ +_0800E846:\n\ + movs r0, #0\n\ + strh r0, [r7]\n\ + mov r2, r8\n\ + strh r0, [r2]\n\ + pop {r3, r4, r5}\n\ + mov r8, r3\n\ + mov sb, r4\n\ + mov sl, r5\n\ + pop {r4, r5, r6, r7}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0800E85C: .4byte gUnknown_086A7DB0\n\ + "); +} +#endif + +void sub_E860(void) +{ + int i; + struct SpriteGroup *spriteGroup; + + spriteGroup = &gUnknown_0200B3B8[gUnknown_0202C580]; + spriteGroup->available = gUnknown_0201C18C; + LoadSpriteSets(gUnknown_086A7DD4, 5, gUnknown_0200B3B8); + if (spriteGroup->available == 1) + { + spriteGroup->baseX = 120; + spriteGroup->baseY = gUnknown_0201A4B8; + for (i = 0; i < 4; i++) + { + gOamBuffer[spriteGroup->oam[i].oamId].x = spriteGroup->oam[i].xOffset + spriteGroup->baseX; + gOamBuffer[spriteGroup->oam[i].oamId].y = spriteGroup->oam[i].yOffset + spriteGroup->baseY; + } + } + + spriteGroup->available = 0; +} + +void sub_E908(void) +{ + gUnknown_0202C5F0[0] = 0xCFCF; + gUnknown_0201C1B0 = 1; + gUnknown_0202C59C = 1; + gUnknown_0202ADE4 = 0; + gUnknown_0201A4BC = 0; + gUnknown_0202C598 = 0; + gUnknown_0202C54C = 0; +} + +extern u8 gUnknown_0202BF20; + +s16 sub_E94C(void) +{ + s16 result; + if (gUnknown_0202BF20 != 0) + result = sub_EBEC(); + else + result = sub_ED28(); + + return result; +} + +s16 sub_E970(void) +{ + s16 result; + if (gUnknown_0202BF20 != 0) + result = sub_E994(); + else + result = sub_EAC0(); + + return result; +} + +s16 sub_E994(void) +{ + int i; + struct HighScoreEntry *topScore; + + if (gUnknown_0202ADE4 == 0) + { + switch (gUnknown_0201A4BC) + { + case 0: + if (gMain.newKeys & A_BUTTON) + { + gUnknown_0202C5F0[0] = 0xDEDE; + } + else + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0; + } + break; + case 1: + gUnknown_0202C5F0[0] = 0xEDED; + break; + } + } + else + { + if (gUnknown_0202C59C < 8) + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0xCFCF; + } + else if (gUnknown_0202C59C < 10) + { + u16 field = gUnknown_0202C59C - 8; + gUnknown_0202C5F0[0] = gUnknown_0202C59C; + gUnknown_0202C5F0[1] = (gUnknown_0202C610[field][0].data.parts.name[0] << 8) | + gUnknown_0202C610[field][0].data.parts.name[1]; + gUnknown_0202C5F0[2] = (gUnknown_0202C610[field][0].data.parts.name[2] << 8) | + gUnknown_0202C610[field][0].data.parts.name[3]; + gUnknown_0202C5F0[3] = gUnknown_0202C610[field][0].data.parts.scoreLo >> 16; + gUnknown_0202C5F0[4] = gUnknown_0202C610[field][0].data.parts.scoreLo; + gUnknown_0202C5F0[5] = gUnknown_0202C610[field][0].data.parts.score100Millions >> 16; + gUnknown_0202C5F0[6] = gUnknown_0202C610[field][0].data.parts.score100Millions; + gUnknown_0202C5F0[7] = 0; + } + else + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0; + } + + gUnknown_0202C59C++; + } + + return 0; +} + +s16 sub_EAC0(void) +{ + int i; + struct HighScoreEntry *topScore; + + if (gUnknown_0202ADE4 == 0) + { + switch (gUnknown_0202C598) + { + case 0: + if (gMain.newKeys & A_BUTTON) + { + gUnknown_0202C5F0[0] = 0xDEDE; + } + else + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0; + } + break; + case 1: + gUnknown_0202C5F0[0] = 0xEDED; + break; + } + } + else + { + if (gUnknown_0202C59C < 8) + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0xCFCF; + } + else if (gUnknown_0202C59C < 10) + { + u16 field = gUnknown_0202C59C - 8; + gUnknown_0202C5F0[0] = gUnknown_0202C59C; + gUnknown_0202C5F0[1] = (gUnknown_0202C610[field][0].data.parts.name[0] << 8) | + gUnknown_0202C610[field][0].data.parts.name[1]; + gUnknown_0202C5F0[2] = (gUnknown_0202C610[field][0].data.parts.name[2] << 8) | + gUnknown_0202C610[field][0].data.parts.name[3]; + gUnknown_0202C5F0[3] = gUnknown_0202C610[field][0].data.parts.scoreLo >> 16; + gUnknown_0202C5F0[4] = gUnknown_0202C610[field][0].data.parts.scoreLo; + gUnknown_0202C5F0[5] = gUnknown_0202C610[field][0].data.parts.score100Millions >> 16; + gUnknown_0202C5F0[6] = gUnknown_0202C610[field][0].data.parts.score100Millions; + gUnknown_0202C5F0[7] = 0; + } + else + { + for (i = 0; i < 8; i++) + gUnknown_0202C5F0[i] = 0; + } + + gUnknown_0202C59C++; + } + + return 0; +} + +s16 sub_EBEC(void) +{ + int i, j; + struct HighScoreEntry *topScore; + u16 field; + + if (gUnknown_0202ADE4 == 0) + { + switch (gUnknown_0201A4BC) + { + case 0: + if (gUnknown_0201A4D0[0][0] == 0xDEDE || gUnknown_0201A4D0[0][1] == 0xDEDE) + gUnknown_0201A4BC = 1; + break; + case 1: + if (gUnknown_0201A4D0[0][0] == 0xEDED && gUnknown_0201A4D0[0][1] == 0xEDED) + { + gUnknown_0202ADE4 = -1; + gUnknown_0202BEBC = 1; + gUnknown_0202C59C = 1; + } + else + { + if (++gUnknown_0202C54C > 10) + return 1; + } + break; + } + } + else + { + field = gUnknown_0201A4D0[0][1] - 8; + if (field > 1) + return 0; + + gUnknown_0201C1B0 = gUnknown_0201A4D0[0][1]; + gUnknown_0202C550[field].data.parts.name[0] = (gUnknown_0201A4D0[1][1] >> 8) & 0xFF; + gUnknown_0202C550[field].data.parts.name[1] = gUnknown_0201A4D0[1][1] & 0xFF; + gUnknown_0202C550[field].data.parts.name[2] = (gUnknown_0201A4D0[2][1] >> 8) & 0xFF; + gUnknown_0202C550[field].data.parts.name[3] = gUnknown_0201A4D0[2][1] & 0xFF; + gUnknown_0202C550[field].data.parts.scoreLo = (gUnknown_0201A4D0[3][1] << 16) | + gUnknown_0201A4D0[4][1]; + gUnknown_0202C550[field].data.parts.score100Millions = (gUnknown_0201A4D0[5][1] << 16) | + gUnknown_0201A4D0[6][1]; + if (gUnknown_0201C1B0 == 9) + return -1; + } + + for (i = 0; i < 8; i++) + for (j = 0; j < 2; j++) + gUnknown_0201A4D0[i][j] = 0; + + return 0; +} + +s16 sub_ED28(void) +{ + int i, j; + struct HighScoreEntry *topScore; + u16 field; + + if (gUnknown_0202ADE4 == 0) + { + switch (gUnknown_0202C598) + { + case 0: + if (gUnknown_0201A4D0[0][0] == 0xDEDE || gUnknown_0201A4D0[0][1] == 0xDEDE) + gUnknown_0202C598 = 1; + break; + case 1: + if (gUnknown_0201A4D0[0][0] == 0xEDED && gUnknown_0201A4D0[0][1] == 0xEDED) + { + gUnknown_0202ADE4 = -1; + gUnknown_0202BEBC = 1; + gUnknown_0202C59C = 1; + } + else + { + if (++gUnknown_0202C54C > 10) + return 1; + } + break; + } + } + else + { + field = gUnknown_0201A4D0[0][0] - 8; + if (field > 1) + return 0; + + gUnknown_0201C1B0 = gUnknown_0201A4D0[0][0]; + gUnknown_0202C550[field].data.parts.name[0] = (gUnknown_0201A4D0[1][0] >> 8) & 0xFF; + gUnknown_0202C550[field].data.parts.name[1] = gUnknown_0201A4D0[1][0] & 0xFF; + gUnknown_0202C550[field].data.parts.name[2] = (gUnknown_0201A4D0[2][0] >> 8) & 0xFF; + gUnknown_0202C550[field].data.parts.name[3] = gUnknown_0201A4D0[2][0] & 0xFF; + gUnknown_0202C550[field].data.parts.scoreLo = (gUnknown_0201A4D0[3][0] << 16) | + gUnknown_0201A4D0[4][0]; + gUnknown_0202C550[field].data.parts.score100Millions = (gUnknown_0201A4D0[5][0] << 16) | + gUnknown_0201A4D0[6][0]; + if (gUnknown_0201C1B0 == 9) + return -1; + } + + for (i = 0; i < 8; i++) + for (j = 0; j < 2; j++) + gUnknown_0201A4D0[i][j] = 0; + + return 0; +}