From 7d555d133c206a49e7d1ec25d714349c203940f3 Mon Sep 17 00:00:00 2001 From: Eebit <eight_bit_hero@yahoo.ca> Date: Sun, 23 Jun 2024 22:55:14 -0400 Subject: [PATCH 1/3] (sio_uiutils) Decompile --- asm/code_sio_8048260.s | 2048 ---------------------------------------- include/sio.h | 10 +- ldscript.txt | 1 + src/sio_menu.c | 4 + src/sio_teamlist.c | 3 + src/sio_uiutils.c | 1039 ++++++++++++++++++++ 6 files changed, 1052 insertions(+), 2053 deletions(-) create mode 100644 src/sio_uiutils.c diff --git a/asm/code_sio_8048260.s b/asm/code_sio_8048260.s index d24a281f..4dbc5536 100644 --- a/asm/code_sio_8048260.s +++ b/asm/code_sio_8048260.s @@ -2,2054 +2,6 @@ .SYNTAX UNIFIED - THUMB_FUNC_START InitSioBG -InitSioBG: @ 0x0804C33C - push {lr} - sub sp, #0x18 - ldr r1, _0804C394 @ SioDefaultBgConfig - mov r0, sp - movs r2, #0x18 - bl memcpy - mov r0, sp - bl SetupBackgrounds - ldr r3, _0804C398 @ gLCDControlBuffer - ldrb r2, [r3, #0xc] - movs r1, #4 - negs r1, r1 - adds r0, r1, #0 - ands r0, r2 - strb r0, [r3, #0xc] - ldrb r2, [r3, #0x10] - adds r0, r1, #0 - ands r0, r2 - movs r2, #1 - orrs r0, r2 - strb r0, [r3, #0x10] - ldrb r0, [r3, #0x14] - ands r1, r0 - movs r0, #2 - orrs r1, r0 - strb r1, [r3, #0x14] - ldrb r0, [r3, #0x18] - movs r1, #3 - orrs r0, r1 - strb r0, [r3, #0x18] - bl ReadGameSaveCoreGfx - ldr r0, _0804C39C @ Pal_LinkArenaRankIcons - movs r1, #0xc0 - lsls r1, r1, #2 - movs r2, #0x40 - bl CopyToPaletteBuffer - add sp, #0x18 - pop {r0} - bx r0 - .align 2, 0 -_0804C394: .4byte SioDefaultBgConfig -_0804C398: .4byte gLCDControlBuffer -_0804C39C: .4byte Pal_LinkArenaRankIcons - - THUMB_FUNC_END InitSioBG - - THUMB_FUNC_START sub_804C3A0 -sub_804C3A0: @ 0x0804C3A0 - bx lr - - THUMB_FUNC_END sub_804C3A0 - - THUMB_FUNC_START sub_804C3A4 -sub_804C3A4: @ 0x0804C3A4 - bx lr - - THUMB_FUNC_END sub_804C3A4 - - THUMB_FUNC_START nullsub_13 -nullsub_13: @ 0x0804C3A8 - bx lr - - THUMB_FUNC_END nullsub_13 - - THUMB_FUNC_START sub_804C3AC -sub_804C3AC: @ 0x0804C3AC - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - adds r6, r0, #0 - adds r5, r1, #0 - lsls r2, r2, #5 - mov r8, r2 - cmp r3, #0 - ble _0804C3E2 - movs r7, #0x80 - lsls r7, r7, #3 - adds r4, r3, #0 -_0804C3C4: - mov r2, r8 - cmp r2, #0 - bge _0804C3CC - adds r2, #3 -_0804C3CC: - lsls r2, r2, #9 - lsrs r2, r2, #0xb - adds r0, r6, #0 - adds r1, r5, #0 - bl CpuFastSet - adds r6, r6, r7 - adds r5, r5, r7 - subs r4, #1 - cmp r4, #0 - bne _0804C3C4 -_0804C3E2: - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - THUMB_FUNC_END sub_804C3AC - - THUMB_FUNC_START sub_804C3EC -sub_804C3EC: @ 0x0804C3EC - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - mov r8, r0 - ldr r5, [r0, #0x58] - adds r0, r5, #0 - movs r1, #3 - bl __modsi3 - lsls r4, r0, #2 - adds r4, r4, r0 - lsls r4, r4, #6 - adds r0, r5, #0 - movs r1, #3 - bl __divsi3 - adds r5, r0, #0 - lsls r5, r5, #0xb - ldr r0, _0804C464 @ gUnknown_085B0DE8 - mov r2, r8 - ldr r1, [r2, #0x5c] - movs r3, #0xc0 - lsls r3, r3, #0x13 - adds r1, r1, r3 - bl Decompress - ldr r0, _0804C468 @ gUnknown_085AAE0C - ldr r6, _0804C46C @ gGenericBuffer - adds r1, r6, #0 - bl Decompress - adds r4, r4, r5 - adds r4, r4, r6 - ldr r1, _0804C470 @ 0x06014000 - adds r0, r4, #0 - movs r2, #0xa - movs r3, #2 - bl sub_804C3AC - ldr r0, _0804C474 @ gBG2TilemapBuffer - ldr r1, _0804C478 @ gUnknown_085B0F2C - mov r4, r8 - ldr r2, [r4, #0x5c] - lsls r2, r2, #0xf - lsrs r2, r2, #0x14 - movs r4, #0x80 - lsls r4, r4, #5 - adds r3, r4, #0 - orrs r2, r3 - bl CallARM_FillTileRect - movs r0, #4 - bl BG_EnableSyncByMask - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_0804C464: .4byte gUnknown_085B0DE8 -_0804C468: .4byte gUnknown_085AAE0C -_0804C46C: .4byte gGenericBuffer -_0804C470: .4byte 0x06014000 -_0804C474: .4byte gBG2TilemapBuffer -_0804C478: .4byte gUnknown_085B0F2C - - THUMB_FUNC_END sub_804C3EC - - THUMB_FUNC_START sub_804C47C -sub_804C47C: @ 0x0804C47C - push {lr} - sub sp, #4 - ldr r3, _0804C498 @ gUnknown_085AA96C - movs r0, #0 - str r0, [sp] - movs r0, #4 - movs r1, #0x14 - movs r2, #8 - bl PutSpriteExt - add sp, #4 - pop {r0} - bx r0 - .align 2, 0 -_0804C498: .4byte gUnknown_085AA96C - - THUMB_FUNC_END sub_804C47C - - THUMB_FUNC_START NewProc085AA980 -NewProc085AA980: @ 0x0804C49C - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - adds r6, r0, #0 - mov r8, r1 - adds r5, r2, #0 - ldr r4, _0804C4F4 @ ProcScr_085AA980 - adds r0, r4, #0 - bl Proc_EndEach - adds r0, r4, #0 - adds r1, r6, #0 - bl Proc_Start - adds r6, r0, #0 - mov r0, r8 - str r0, [r6, #0x58] - str r5, [r6, #0x5c] - cmp r5, #0 - bne _0804C4CA - movs r0, #0xb8 - lsls r0, r0, #7 - str r0, [r6, #0x5c] -_0804C4CA: - ldr r4, [r6, #0x58] - adds r0, r4, #0 - movs r1, #3 - bl __modsi3 - lsls r1, r0, #2 - adds r1, r1, r0 - lsls r1, r1, #6 - str r1, [r6, #0x2c] - adds r0, r4, #0 - movs r1, #3 - bl __divsi3 - lsls r0, r0, #0xb - str r0, [r6, #0x30] - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_0804C4F4: .4byte ProcScr_085AA980 - - THUMB_FUNC_END NewProc085AA980 - - THUMB_FUNC_START sub_804C4F8 -sub_804C4F8: @ 0x0804C4F8 - push {lr} - ldr r0, _0804C504 @ ProcScr_085AA980 - bl Proc_EndEach - pop {r0} - bx r0 - .align 2, 0 -_0804C504: .4byte ProcScr_085AA980 - - THUMB_FUNC_END sub_804C4F8 - - THUMB_FUNC_START sub_804C508 -sub_804C508: @ 0x0804C508 - push {r4, lr} - sub sp, #4 - movs r0, #1 - movs r1, #0x10 - movs r2, #4 - movs r3, #0 - bl SetBlendConfig - movs r4, #0 - str r4, [sp] - movs r0, #0 - movs r1, #0 - movs r2, #1 - movs r3, #0 - bl SetBlendTargetA - str r4, [sp] - movs r0, #0 - movs r1, #0 - movs r2, #0 - movs r3, #1 - bl SetBlendTargetB - ldr r2, _0804C554 @ gLCDControlBuffer - ldrb r1, [r2, #1] - movs r0, #0x21 - negs r0, r0 - ands r0, r1 - movs r1, #0x41 - negs r1, r1 - ands r0, r1 - movs r1, #0x7f - ands r0, r1 - strb r0, [r2, #1] - add sp, #4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804C554: .4byte gLCDControlBuffer - - THUMB_FUNC_END sub_804C508 - - THUMB_FUNC_START sub_804C558 -sub_804C558: @ 0x0804C558 - push {r4, lr} - sub sp, #4 - movs r0, #1 - movs r1, #0x10 - movs r2, #4 - movs r3, #0 - bl SetBlendConfig - movs r4, #0 - str r4, [sp] - movs r0, #0 - movs r1, #0 - movs r2, #1 - movs r3, #0 - bl SetBlendTargetA - str r4, [sp] - movs r0, #0 - movs r1, #0 - movs r2, #0 - movs r3, #1 - bl SetBlendTargetB - add sp, #4 - pop {r4} - pop {r0} - bx r0 - - THUMB_FUNC_END sub_804C558 - - THUMB_FUNC_START sub_804C590 -sub_804C590: @ 0x0804C590 - push {lr} - movs r0, #0 - movs r1, #0 - movs r2, #0 - movs r3, #0 - bl SetBlendConfig - pop {r0} - bx r0 - - THUMB_FUNC_END sub_804C590 - - THUMB_FUNC_START sub_804C5A4 -sub_804C5A4: @ 0x0804C5A4 - push {r4, lr} - sub sp, #0x20 - lsls r0, r0, #0x18 - lsrs r4, r0, #0x18 - ldr r1, _0804C5E8 @ gUnknown_080DA0DA - mov r0, sp - movs r2, #0x20 - bl memcpy - ldr r0, _0804C5EC @ gUnk_Sio_0203DDDC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0804C5DE - mov r1, sp - adds r0, r1, r4 - ldrb r1, [r0] - adds r1, #0x10 - ldr r3, _0804C5F0 @ gPaletteBuffer - lsls r0, r1, #0xa - lsls r2, r1, #5 - adds r0, r0, r2 - adds r0, r0, r1 - ldr r1, _0804C5F4 @ 0x00000262 - adds r3, r3, r1 - strh r0, [r3] - bl EnablePaletteSync -_0804C5DE: - add sp, #0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804C5E8: .4byte gUnknown_080DA0DA -_0804C5EC: .4byte gUnk_Sio_0203DDDC -_0804C5F0: .4byte gPaletteBuffer -_0804C5F4: .4byte 0x00000262 - - THUMB_FUNC_END sub_804C5A4 - - THUMB_FUNC_START sub_804C5F8 -sub_804C5F8: @ 0x0804C5F8 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - adds r7, r0, #0 - ldr r0, _0804C73C @ 0x000082C8 - mov r8, r0 - movs r2, #0x2a - ldrsh r1, [r7, r2] - movs r3, #0x2c - ldrsh r2, [r7, r3] - ldr r3, _0804C740 @ gUnknown_085AA9A0 - adds r0, r7, #0 - adds r0, #0x2f - ldrb r0, [r0] - lsls r0, r0, #2 - adds r0, r0, r3 - ldr r3, [r0] - ldr r4, _0804C744 @ gUnknown_080DA09C - adds r5, r7, #0 - adds r5, #0x2e - ldrb r0, [r5] - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r0, [r0] - str r0, [sp] - movs r0, #4 - bl PutSprite - ldrb r0, [r5] - cmp r0, #2 - bne _0804C642 - adds r0, r7, #0 - adds r0, #0x30 - ldrb r0, [r0] - bl sub_804C5A4 -_0804C642: - adds r2, r7, #0 - adds r2, #0x30 - ldrb r0, [r2] - adds r0, #1 - movs r1, #0x1f - ands r0, r1 - strb r0, [r2] - ldrh r1, [r7, #0x2e] - movs r0, #0x81 - lsls r0, r0, #1 - cmp r1, r0 - bne _0804C72E - ldrh r1, [r7, #0x3a] - ldrh r2, [r7, #0x36] - adds r0, r1, r2 - strh r0, [r7, #0x36] - ldrh r2, [r7, #0x3c] - ldrh r3, [r7, #0x38] - adds r0, r2, r3 - strh r0, [r7, #0x38] - lsls r0, r1, #0x10 - asrs r0, r0, #0x10 - cmp r0, #4 - ble _0804C676 - subs r0, r1, #1 - strh r0, [r7, #0x3a] -_0804C676: - lsls r0, r2, #0x10 - asrs r0, r0, #0x10 - cmp r0, #4 - ble _0804C682 - subs r0, r2, #1 - strh r0, [r7, #0x3c] -_0804C682: - bl GetGameClock - movs r1, #3 - ands r1, r0 - cmp r1, #0 - bne _0804C6AA - ldrh r1, [r7, #0x32] - movs r2, #0x32 - ldrsh r0, [r7, r2] - cmp r0, #0 - bge _0804C69C - adds r0, r1, #1 - strh r0, [r7, #0x32] -_0804C69C: - ldrh r1, [r7, #0x34] - movs r3, #0x34 - ldrsh r0, [r7, r3] - cmp r0, #0x34 - ble _0804C6AA - subs r0, r1, #1 - strh r0, [r7, #0x34] -_0804C6AA: - movs r0, #0x2a - ldrsh r5, [r7, r0] - movs r1, #0x32 - ldrsh r0, [r7, r1] - adds r0, #0x4b - adds r5, r5, r0 - movs r2, #0x2c - ldrsh r4, [r7, r2] - adds r4, #8 - ldr r6, _0804C748 @ gObject_8x16 - ldrh r0, [r7, #0x36] - lsrs r0, r0, #5 - movs r1, #6 - bl __umodsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - add r0, r8 - str r0, [sp] - movs r0, #0 - adds r1, r5, #0 - adds r2, r4, #0 - adds r3, r6, #0 - bl PutSprite - movs r3, #0x2a - ldrsh r5, [r7, r3] - movs r1, #0x34 - ldrsh r0, [r7, r1] - adds r0, #0x49 - adds r5, r5, r0 - movs r2, #0x2c - ldrsh r4, [r7, r2] - adds r4, #8 - ldr r6, _0804C74C @ gObject_8x16_HFlipped - ldrh r0, [r7, #0x38] - lsrs r0, r0, #5 - movs r1, #6 - bl __umodsi3 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - add r0, r8 - str r0, [sp] - movs r0, #0 - adds r1, r5, #0 - adds r2, r4, #0 - adds r3, r6, #0 - bl PutSprite - movs r3, #0x2a - ldrsh r1, [r7, r3] - adds r1, #0x50 - movs r0, #0x2c - ldrsh r2, [r7, r0] - adds r2, #9 - ldr r3, _0804C750 @ gUnknown_085AA9B4 - ldr r0, _0804C754 @ gLinkArenaSt - ldrb r0, [r0, #5] - lsls r0, r0, #2 - adds r0, r0, r3 - ldr r3, [r0] - movs r0, #0 - str r0, [sp] - bl PutSpriteExt -_0804C72E: - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804C73C: .4byte 0x000082C8 -_0804C740: .4byte gUnknown_085AA9A0 -_0804C744: .4byte gUnknown_080DA09C -_0804C748: .4byte gObject_8x16 -_0804C74C: .4byte gObject_8x16_HFlipped -_0804C750: .4byte gUnknown_085AA9B4 -_0804C754: .4byte gLinkArenaSt - - THUMB_FUNC_END sub_804C5F8 - - THUMB_FUNC_START sub_804C758 -sub_804C758: @ 0x0804C758 - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - sub sp, #4 - mov r8, r0 - adds r4, r1, #0 - adds r5, r2, #0 - adds r2, r3, #0 - ldr r6, [sp, #0x18] - lsls r4, r4, #0x18 - lsrs r4, r4, #0x18 - lsls r5, r5, #0x18 - lsrs r5, r5, #0x18 - lsls r2, r2, #0x18 - lsrs r2, r2, #0x18 - lsls r6, r6, #0x18 - lsrs r6, r6, #0x18 - ldr r0, _0804C7C4 @ gUnknown_085AA9C0 - mov r1, r8 - str r2, [sp] - bl Proc_Start - mov r8, r0 - movs r3, #0 - movs r1, #0 - strh r4, [r0, #0x2a] - strh r5, [r0, #0x2c] - adds r0, #0x2e - strb r6, [r0] - adds r0, #1 - ldr r2, [sp] - strb r2, [r0] - mov r0, r8 - strh r1, [r0, #0x32] - movs r0, #0x34 - mov r2, r8 - strh r0, [r2, #0x34] - strh r1, [r2, #0x38] - strh r1, [r2, #0x36] - movs r0, #4 - strh r0, [r2, #0x3c] - strh r0, [r2, #0x3a] - mov r0, r8 - adds r0, #0x3e - strb r3, [r0] - subs r0, #0xe - strb r3, [r0] - mov r0, r8 - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r1} - bx r1 - .align 2, 0 -_0804C7C4: .4byte gUnknown_085AA9C0 - - THUMB_FUNC_END sub_804C758 - - THUMB_FUNC_START sub_804C7C8 -sub_804C7C8: @ 0x0804C7C8 - push {r4, lr} - ldr r4, [sp, #8] - strh r1, [r0, #0x32] - strh r2, [r0, #0x34] - strh r3, [r0, #0x3a] - strh r4, [r0, #0x3c] - pop {r4} - pop {r0} - bx r0 - - THUMB_FUNC_END sub_804C7C8 - - THUMB_FUNC_START sub_804C7DC -sub_804C7DC: @ 0x0804C7DC - strh r1, [r0, #0x2a] - strh r2, [r0, #0x2c] - bx lr - - THUMB_FUNC_END sub_804C7DC - - THUMB_FUNC_START sub_804C7E4 -sub_804C7E4: @ 0x0804C7E4 - push {r4, lr} - sub sp, #0x20 - ldr r4, _0804C82C @ gUnknown_085ADDE8 - ldr r1, _0804C830 @ gUnknown_080DA102 - mov r0, sp - movs r2, #0x20 - bl memcpy - ldr r0, _0804C834 @ gUnk_Sio_0203DDDC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0804C824 - bl GetGameClock - movs r1, #0x3f - ands r1, r0 - asrs r1, r1, #1 - mov r2, sp - adds r0, r2, r1 - ldrb r0, [r0] - ldr r1, _0804C838 @ gPaletteBuffer - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r0, [r0] - movs r2, #0xc7 - lsls r2, r2, #2 - adds r1, r1, r2 - strh r0, [r1] - bl EnablePaletteSync -_0804C824: - add sp, #0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804C82C: .4byte gUnknown_085ADDE8 -_0804C830: .4byte gUnknown_080DA102 -_0804C834: .4byte gUnk_Sio_0203DDDC -_0804C838: .4byte gPaletteBuffer - - THUMB_FUNC_END sub_804C7E4 - - THUMB_FUNC_START sub_804C83C -sub_804C83C: @ 0x0804C83C - push {r4, lr} - sub sp, #0x20 - ldr r4, _0804C884 @ gUnknown_085ADE48 - ldr r1, _0804C888 @ gUnknown_080DA0DA - mov r0, sp - movs r2, #0x20 - bl memcpy - ldr r0, _0804C88C @ gUnk_Sio_0203DDDC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0804C87C - bl GetGameClock - movs r1, #0x3f - ands r1, r0 - asrs r1, r1, #1 - mov r2, sp - adds r0, r2, r1 - ldrb r0, [r0] - ldr r1, _0804C890 @ gPaletteBuffer - lsls r0, r0, #1 - adds r0, r0, r4 - ldrh r0, [r0] - movs r2, #0x9f - lsls r2, r2, #2 - adds r1, r1, r2 - strh r0, [r1] - bl EnablePaletteSync -_0804C87C: - add sp, #0x20 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804C884: .4byte gUnknown_085ADE48 -_0804C888: .4byte gUnknown_080DA0DA -_0804C88C: .4byte gUnk_Sio_0203DDDC -_0804C890: .4byte gPaletteBuffer - - THUMB_FUNC_END sub_804C83C - - THUMB_FUNC_START sub_804C894 -sub_804C894: @ 0x0804C894 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, r9 - mov r5, r8 - push {r5, r6, r7} - sub sp, #8 - adds r7, r0, #0 - ldr r0, _0804C9E4 @ gLinkArenaSt - ldrb r0, [r0] - cmp r0, #1 - beq _0804C8AC - b _0804CA08 -_0804C8AC: - adds r0, r7, #0 - adds r0, #0x44 - movs r1, #0 - ldrsb r1, [r0, r1] - movs r2, #0xc0 - lsls r2, r2, #4 - mov r8, r2 - str r0, [sp, #4] - cmp r1, #0 - beq _0804C8C6 - movs r0, #0x80 - lsls r0, r0, #3 - mov r8, r0 -_0804C8C6: - ldr r3, _0804C9E8 @ gUnknown_085AA9D8 - movs r0, #0 - str r0, [sp] - movs r1, #0x58 - movs r2, #0x20 - bl PutSprite - movs r6, #0 - ldr r0, [r7, #0x2c] - cmp r6, r0 - bge _0804C92A - movs r5, #0x20 -_0804C8DE: - lsls r1, r6, #1 - adds r0, r7, #0 - adds r0, #0x30 - adds r4, r0, r1 - movs r2, #0 - ldrsh r1, [r4, r2] - adds r1, #6 - movs r0, #0xf - ands r0, r6 - lsls r0, r0, #0xc - add r0, r8 - str r0, [sp] - movs r0, #4 - adds r2, r5, #0 - ldr r3, _0804C9EC @ Sprite_085AAA50 - bl PutSprite - adds r0, r7, #0 - adds r0, #0x3a - adds r0, r0, r6 - ldrb r0, [r0] - cmp r0, #0 - beq _0804C920 - movs r0, #0 - ldrsh r1, [r4, r0] - adds r1, #6 - mov r2, r8 - str r2, [sp] - movs r0, #4 - adds r2, r5, #0 - ldr r3, _0804C9F0 @ gUnknown_085AAA5E - bl PutSprite -_0804C920: - adds r5, #0x18 - adds r6, #1 - ldr r0, [r7, #0x2c] - cmp r6, r0 - blt _0804C8DE -_0804C92A: - ldr r0, [r7, #0x40] - cmp r0, #0 - beq _0804C9DE - ldr r0, _0804C9F4 @ gUnk_Sio_0203DDDC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0804C95C - bl GetGameClock - ldr r2, _0804C9F8 @ gPaletteBuffer - movs r1, #0x3f - ands r1, r0 - lsrs r1, r1, #2 - lsls r1, r1, #1 - ldr r0, _0804C9FC @ gUnknown_08A1BD40 - adds r1, r1, r0 - ldrh r0, [r1] - movs r1, #0xc7 - lsls r1, r1, #2 - adds r2, r2, r1 - strh r0, [r2] - bl EnablePaletteSync -_0804C95C: - ldr r0, [r7, #0x40] - cmp r0, #0xff - bgt _0804C966 - adds r0, #0x10 - str r0, [r7, #0x40] -_0804C966: - ldr r4, _0804CA00 @ gSinLookup - movs r2, #0x80 - adds r2, r2, r4 - mov r9, r2 - movs r1, #0 - ldrsh r0, [r2, r1] - lsls r0, r0, #4 - movs r2, #0x80 - lsls r2, r2, #1 - mov r8, r2 - mov r1, r8 - bl Div - adds r6, r0, #0 - lsls r6, r6, #0x10 - asrs r6, r6, #0x10 - movs r1, #0 - ldrsh r0, [r4, r1] - negs r0, r0 - lsls r0, r0, #4 - ldr r1, [r7, #0x40] - bl Div - adds r5, r0, #0 - lsls r5, r5, #0x10 - asrs r5, r5, #0x10 - movs r2, #0 - ldrsh r0, [r4, r2] - lsls r0, r0, #4 - mov r1, r8 - bl Div - adds r4, r0, #0 - lsls r4, r4, #0x10 - asrs r4, r4, #0x10 - mov r1, r9 - movs r2, #0 - ldrsh r0, [r1, r2] - lsls r0, r0, #4 - ldr r1, [r7, #0x40] - bl Div - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - str r0, [sp] - movs r0, #0 - adds r1, r6, #0 - adds r2, r5, #0 - adds r3, r4, #0 - bl SetObjAffine - ldr r3, _0804CA04 @ gUnknown_080DA0FA - movs r0, #0x80 - lsls r0, r0, #8 - str r0, [sp] - movs r0, #4 - movs r1, #0x78 - movs r2, #0 - bl PutSprite -_0804C9DE: - bl sub_804C83C - b _0804CA96 - .align 2, 0 -_0804C9E4: .4byte gLinkArenaSt -_0804C9E8: .4byte gUnknown_085AA9D8 -_0804C9EC: .4byte Sprite_085AAA50 -_0804C9F0: .4byte gUnknown_085AAA5E -_0804C9F4: .4byte gUnk_Sio_0203DDDC -_0804C9F8: .4byte gPaletteBuffer -_0804C9FC: .4byte gUnknown_08A1BD40 -_0804CA00: .4byte gSinLookup -_0804CA04: .4byte gUnknown_080DA0FA -_0804CA08: - ldr r3, _0804CA70 @ gUnknown_085AA9D8 - movs r0, #0 - str r0, [sp] - movs r0, #0xb - movs r1, #0x58 - movs r2, #0x20 - bl PutSprite - movs r6, #0 - ldr r0, [r7, #0x2c] - adds r1, r7, #0 - adds r1, #0x44 - str r1, [sp, #4] - cmp r6, r0 - bge _0804CA92 - ldr r2, _0804CA74 @ gUnknown_085AAA48 - mov sl, r2 - movs r0, #8 - negs r0, r0 - mov r9, r0 - movs r1, #0x30 - mov r8, r1 -_0804CA34: - lsls r1, r6, #1 - adds r0, r7, #0 - adds r0, #0x30 - adds r5, r0, r1 - movs r2, #0 - ldrsh r1, [r5, r2] - adds r4, r7, #0 - adds r4, #0x3a - adds r4, r4, r6 - ldrb r0, [r4] - lsls r0, r0, #2 - add r0, sl - ldr r3, [r0] - movs r0, #0 - str r0, [sp] - movs r0, #2 - mov r2, r8 - bl PutSprite - ldrb r0, [r4] - cmp r0, #0 - beq _0804CA78 - ldrh r1, [r5] - movs r2, #0 - ldrsh r0, [r5, r2] - cmp r0, #0 - bge _0804CA86 - adds r0, r1, #1 - b _0804CA84 - .align 2, 0 -_0804CA70: .4byte gUnknown_085AA9D8 -_0804CA74: .4byte gUnknown_085AAA48 -_0804CA78: - ldrh r1, [r5] - movs r2, #0 - ldrsh r0, [r5, r2] - cmp r0, r9 - ble _0804CA86 - subs r0, r1, #1 -_0804CA84: - strh r0, [r5] -_0804CA86: - movs r0, #0x10 - add r8, r0 - adds r6, #1 - ldr r0, [r7, #0x2c] - cmp r6, r0 - blt _0804CA34 -_0804CA92: - bl sub_804C7E4 -_0804CA96: - ldr r0, _0804CAE4 @ gLinkArenaSt - ldrb r0, [r0] - movs r1, #0x80 - lsls r1, r1, #4 - mov r8, r1 - cmp r0, #1 - bne _0804CAAA - movs r2, #0x80 - lsls r2, r2, #3 - mov r8, r2 -_0804CAAA: - ldr r1, [sp, #4] - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - beq _0804CABC - movs r0, #0xc0 - movs r1, #0x10 - bl PutLinkArenaButtonSpriteAt -_0804CABC: - ldr r0, [r7, #0x48] - cmp r0, #0 - blt _0804CAD4 - adds r2, r0, #0 - adds r2, #8 - ldr r3, _0804CAE8 @ gUnknown_085AAA0E - mov r0, r8 - str r0, [sp] - movs r0, #4 - movs r1, #0x50 - bl PutSprite -_0804CAD4: - add sp, #8 - pop {r3, r4, r5} - mov r8, r3 - mov r9, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804CAE4: .4byte gLinkArenaSt -_0804CAE8: .4byte gUnknown_085AAA0E - - THUMB_FUNC_END sub_804C894 - - THUMB_FUNC_START sub_804CAEC -sub_804CAEC: @ 0x0804CAEC - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #8 - adds r6, r0, #0 - adds r5, r1, #0 - mov r8, r2 - ldr r4, _0804CB8C @ gUnknown_085AAA78 - adds r0, r4, #0 - bl Proc_EndEach - adds r0, r4, #0 - adds r1, r6, #0 - bl Proc_Start - adds r4, r0, #0 - str r5, [r4, #0x2c] - adds r1, r4, #0 - adds r1, #0x44 - movs r2, #0 - movs r0, #1 - strb r0, [r1] - str r2, [r4, #0x40] - subs r0, #2 - str r0, [r4, #0x48] - movs r3, #0 - adds r5, r4, #0 - adds r5, #0x3a - ldr r0, _0804CB90 @ 0x0000FFF8 - mov ip, r0 - adds r2, r4, #0 - adds r2, #0x30 -_0804CB2C: - adds r0, r5, r3 - mov r7, r8 - adds r1, r7, r3 - ldrb r1, [r1] - strb r1, [r0] - mov r0, ip - strh r0, [r2] - adds r2, #2 - adds r3, #1 - cmp r3, #4 - ble _0804CB2C - ldr r2, [r6, #0x38] - lsls r2, r2, #0x18 - lsrs r2, r2, #0x18 - adds r0, r6, #0 - adds r0, #0x4a - ldrb r0, [r0] - adds r0, #0x28 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - str r0, [sp] - str r4, [sp, #4] - movs r0, #0xe1 - movs r1, #0x28 - movs r3, #6 - bl sub_804D1E0 - adds r0, r6, #0 - adds r0, #0x48 - ldrb r0, [r0] - lsls r0, r0, #4 - movs r1, #0x28 - subs r1, r1, r0 - ldr r0, [r6, #0x38] - str r0, [sp] - str r4, [sp, #4] - movs r0, #0x98 - movs r2, #0x88 - movs r3, #0x27 - bl sub_804CC14 - adds r0, r4, #0 - add sp, #8 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r1} - bx r1 - .align 2, 0 -_0804CB8C: .4byte gUnknown_085AAA78 -_0804CB90: .4byte 0x0000FFF8 - - THUMB_FUNC_END sub_804CAEC - - THUMB_FUNC_START sub_804CB94 -sub_804CB94: @ 0x0804CB94 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, r9 - mov r5, r8 - push {r5, r6, r7} - sub sp, #4 - adds r4, r0, #0 - movs r0, #0 - mov r8, r0 - b _0804CBFC -_0804CBA8: - mov r1, r8 - lsls r0, r1, #4 - ldr r1, [r4, #0x30] - adds r5, r1, r0 - ldr r0, [r4, #0x38] - movs r1, #1 - add r1, r8 - mov sl, r1 - cmp r5, r0 - bge _0804CBFA - ldr r0, [r4, #0x34] - cmp r5, r0 - ble _0804CBFA - movs r6, #0 - mov r0, r8 - lsls r0, r0, #2 - mov r9, r0 - movs r7, #0 -_0804CBCC: - mov r0, r9 - add r0, r8 - adds r0, r0, r6 - adds r0, #1 - bl GetUnit - adds r2, r0, #0 - ldr r0, [r2] - cmp r0, #0 - beq _0804CBF2 - ldr r1, [r4, #0x2c] - adds r1, r1, r7 - str r2, [sp] - movs r0, #4 - adds r2, r5, #0 - movs r3, #0x80 - lsls r3, r3, #3 - bl sub_8027E4C -_0804CBF2: - adds r7, #0xe - adds r6, #1 - cmp r6, #4 - ble _0804CBCC -_0804CBFA: - mov r8, sl -_0804CBFC: - ldr r0, [r4, #0x3c] - cmp r8, r0 - blt _0804CBA8 - add sp, #4 - pop {r3, r4, r5} - mov r8, r3 - mov r9, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - THUMB_FUNC_END sub_804CB94 - - THUMB_FUNC_START sub_804CC14 -sub_804CC14: @ 0x0804CC14 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, r9 - mov r5, r8 - push {r5, r6, r7} - mov r9, r0 - mov sl, r1 - adds r7, r2, #0 - mov r8, r3 - ldr r6, [sp, #0x20] - ldr r5, [sp, #0x24] - ldr r4, _0804CC58 @ gUnknown_085AAA90 - adds r0, r4, #0 - bl Proc_EndEach - adds r0, r4, #0 - adds r1, r5, #0 - bl Proc_Start - str r6, [r0, #0x3c] - mov r1, r9 - str r1, [r0, #0x2c] - mov r1, sl - str r1, [r0, #0x30] - mov r1, r8 - str r1, [r0, #0x34] - str r7, [r0, #0x38] - pop {r3, r4, r5} - mov r8, r3 - mov r9, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804CC58: .4byte gUnknown_085AAA90 - - THUMB_FUNC_END sub_804CC14 - - THUMB_FUNC_START sub_804CC5C -sub_804CC5C: @ 0x0804CC5C - push {r4, lr} - adds r4, r0, #0 - ldr r0, _0804CC74 @ gUnknown_085AAA90 - bl Proc_Find - ldr r1, [r0, #0x30] - adds r1, r1, r4 - str r1, [r0, #0x30] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0804CC74: .4byte gUnknown_085AAA90 - - THUMB_FUNC_END sub_804CC5C - - THUMB_FUNC_START sub_804CC78 -sub_804CC78: @ 0x0804CC78 - push {r4, r5, r6, lr} - ldr r5, _0804CCBC @ gUnknown_085ADE28 - ldr r0, _0804CCC0 @ gUnk_Sio_0203DDDC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0804CCB6 - bl GetGameClock - adds r2, r0, #0 - movs r0, #0x1f - ands r2, r0 - asrs r2, r2, #1 - movs r1, #0 - ldr r0, _0804CCC4 @ gPaletteBuffer - movs r4, #0xf - ldr r6, _0804CCC8 @ 0x00000336 - adds r3, r0, r6 -_0804CC9E: - adds r0, r2, r1 - ands r0, r4 - lsls r0, r0, #1 - adds r0, r0, r5 - ldrh r0, [r0] - strh r0, [r3] - adds r3, #2 - adds r1, #1 - cmp r1, #4 - ble _0804CC9E - bl EnablePaletteSync -_0804CCB6: - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_0804CCBC: .4byte gUnknown_085ADE28 -_0804CCC0: .4byte gUnk_Sio_0203DDDC -_0804CCC4: .4byte gPaletteBuffer -_0804CCC8: .4byte 0x00000336 - - THUMB_FUNC_END sub_804CC78 - - THUMB_FUNC_START sub_804CCCC -sub_804CCCC: @ 0x0804CCCC - push {r4, r5, r6, r7, lr} - sub sp, #4 - adds r7, r0, #0 - ldr r1, [r7, #0x34] - ldr r0, [r7, #0x2c] - adds r1, r1, r0 - asrs r1, r1, #1 - ldr r2, [r7, #0x38] - ldr r0, [r7, #0x30] - adds r2, r2, r0 - asrs r2, r2, #1 - str r1, [r7, #0x2c] - str r2, [r7, #0x30] - ldr r3, _0804CD54 @ gUnknown_085AAAA8 - ldr r0, [r7, #0x3c] - lsls r0, r0, #2 - adds r0, r0, r3 - ldr r3, [r0] - movs r4, #0 - str r4, [sp] - movs r0, #2 - bl PutSprite - ldr r1, [r7, #0x40] - adds r1, #0x60 - ldr r3, _0804CD58 @ gUnknown_080DA132 - str r4, [sp] - movs r0, #2 - movs r2, #0x30 - bl PutSprite - ldr r3, _0804CD5C @ gUnknown_085AA9D8 - str r4, [sp] - movs r0, #2 - movs r1, #0x60 - movs r2, #0x20 - bl PutSprite - ldr r3, _0804CD60 @ Sprite_085AAA50 - movs r0, #0x80 - lsls r0, r0, #4 - str r0, [sp] - movs r0, #4 - movs r1, #0x50 - movs r2, #0x20 - bl PutSprite - movs r4, #3 - ldr r0, _0804CD64 @ gUnknown_085AAAB0 - adds r6, r0, #0 - adds r6, #0xc - movs r5, #0x78 -_0804CD34: - ldr r0, [r7, #0x44] - cmp r0, r4 - bne _0804CD68 - cmp r4, #2 - bgt _0804CD68 - ldr r3, [r6] - movs r0, #0x80 - lsls r0, r0, #7 - str r0, [sp] - movs r0, #4 - movs r1, #0xc4 - adds r2, r5, #0 - bl PutSprite - b _0804CD7A - .align 2, 0 -_0804CD54: .4byte gUnknown_085AAAA8 -_0804CD58: .4byte gUnknown_080DA132 -_0804CD5C: .4byte gUnknown_085AA9D8 -_0804CD60: .4byte Sprite_085AAA50 -_0804CD64: .4byte gUnknown_085AAAB0 -_0804CD68: - ldr r3, [r6] - movs r0, #0x80 - lsls r0, r0, #8 - str r0, [sp] - movs r0, #4 - movs r1, #0xc4 - adds r2, r5, #0 - bl PutSprite -_0804CD7A: - adds r6, #4 - adds r5, #0x10 - adds r4, #1 - cmp r4, #4 - ble _0804CD34 - bl sub_804CC78 - add sp, #4 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - THUMB_FUNC_END sub_804CCCC - - THUMB_FUNC_START NewProc_085AAAC4 -NewProc_085AAAC4: @ 0x0804CD90 - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - adds r6, r0, #0 - adds r5, r1, #0 - mov r8, r2 - ldr r4, _0804CDCC @ Proc_085AAAC4 - adds r0, r4, #0 - bl Proc_EndEach - adds r0, r4, #0 - adds r1, r6, #0 - bl Proc_Start - str r5, [r0, #0x34] - str r5, [r0, #0x2c] - mov r1, r8 - str r1, [r0, #0x38] - str r1, [r0, #0x30] - movs r1, #0 - str r1, [r0, #0x3c] - str r1, [r0, #0x40] - movs r1, #1 - str r1, [r0, #0x44] - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r1} - bx r1 - .align 2, 0 -_0804CDCC: .4byte Proc_085AAAC4 - - THUMB_FUNC_END NewProc_085AAAC4 - - THUMB_FUNC_START sub_804CDD0 -sub_804CDD0: @ 0x0804CDD0 - push {r4, r5, lr} - ldr r4, [sp, #0xc] - ldr r5, [sp, #0x10] - str r1, [r0, #0x34] - str r2, [r0, #0x38] - str r4, [r0, #0x3c] - str r3, [r0, #0x40] - str r5, [r0, #0x44] - pop {r4, r5} - pop {r0} - bx r0 - - THUMB_FUNC_END sub_804CDD0 - - THUMB_FUNC_START sub_804CDE8 -sub_804CDE8: @ 0x0804CDE8 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - adds r5, r0, #0 - movs r0, #0x2c - ldrsh r1, [r5, r0] - movs r2, #0x2a - ldrsh r0, [r5, r2] - adds r1, r1, r0 - lsls r0, r1, #1 - adds r0, r0, r1 - lsls r7, r0, #2 - ldrh r0, [r5, #0x2c] - strh r0, [r5, #0x2a] - ldr r0, _0804CE58 @ gUnknown_085AAADC - mov r8, r0 - movs r6, #0x30 - movs r4, #2 -_0804CE0E: - mov r1, r8 - adds r1, #4 - mov r8, r1 - subs r1, #4 - ldm r1!, {r3} - movs r0, #0 - str r0, [sp] - movs r0, #2 - movs r1, #0x20 - adds r2, r6, #0 - bl PutSprite - adds r6, #0x18 - subs r4, #1 - cmp r4, #0 - bge _0804CE0E - adds r1, r7, #0 - adds r1, #0x30 - movs r0, #0x20 - bl DisplayFrozenUiHand - movs r2, #0x2e - ldrsh r0, [r5, r2] - movs r2, #0x30 - ldrsh r1, [r5, r2] - bl DisplayUiHand - movs r0, #0xc0 - movs r1, #0x10 - bl PutLinkArenaButtonSpriteAt - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804CE58: .4byte gUnknown_085AAADC - - THUMB_FUNC_END sub_804CDE8 - - THUMB_FUNC_START sub_804CE5C -sub_804CE5C: @ 0x0804CE5C - push {r4, r5, r6, lr} - sub sp, #4 - ldr r6, _0804CE88 @ gUnknown_085AAADC - movs r5, #0x30 - movs r4, #2 -_0804CE66: - ldm r6!, {r3} - movs r0, #0 - str r0, [sp] - movs r0, #2 - movs r1, #0x20 - adds r2, r5, #0 - bl PutSprite - adds r5, #0x18 - subs r4, #1 - cmp r4, #0 - bge _0804CE66 - add sp, #4 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_0804CE88: .4byte gUnknown_085AAADC - - THUMB_FUNC_END sub_804CE5C - - THUMB_FUNC_START sub_804CE8C -sub_804CE8C: @ 0x0804CE8C - push {r4, r5, lr} - adds r5, r0, #0 - ldr r4, _0804CEAC @ gUnknown_085AAAE8 - adds r0, r4, #0 - bl Proc_EndEach - adds r0, r4, #0 - adds r1, r5, #0 - bl Proc_Start - movs r1, #0 - strh r1, [r0, #0x2a] - pop {r4, r5} - pop {r1} - bx r1 - .align 2, 0 -_0804CEAC: .4byte gUnknown_085AAAE8 - - THUMB_FUNC_END sub_804CE8C - - THUMB_FUNC_START sub_804CEB0 -sub_804CEB0: @ 0x0804CEB0 - push {lr} - ldr r0, _0804CEC0 @ gUnknown_085AAB00 - movs r1, #3 - bl Proc_Start - pop {r0} - bx r0 - .align 2, 0 -_0804CEC0: .4byte gUnknown_085AAB00 - - THUMB_FUNC_END sub_804CEB0 - - THUMB_FUNC_START sub_804CEC4 -sub_804CEC4: @ 0x0804CEC4 - strh r1, [r0, #0x2c] - strh r2, [r0, #0x2e] - strh r3, [r0, #0x30] - bx lr - - THUMB_FUNC_END sub_804CEC4 - - THUMB_FUNC_START sub_804CECC -sub_804CECC: @ 0x0804CECC - push {lr} - adds r1, r0, #0 - ldr r2, _0804CEF8 @ gUnknown_085ADE28 - ldr r0, _0804CEFC @ gUnk_Sio_0203DDDC - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0 - bne _0804CEF2 - ldr r0, _0804CF00 @ gPaletteBuffer - lsls r1, r1, #1 - adds r1, r1, r2 - ldrh r1, [r1] - movs r2, #0xb7 - lsls r2, r2, #2 - adds r0, r0, r2 - strh r1, [r0] - bl EnablePaletteSync -_0804CEF2: - pop {r0} - bx r0 - .align 2, 0 -_0804CEF8: .4byte gUnknown_085ADE28 -_0804CEFC: .4byte gUnk_Sio_0203DDDC -_0804CF00: .4byte gPaletteBuffer - - THUMB_FUNC_END sub_804CECC - - THUMB_FUNC_START sub_804CF04 -sub_804CF04: @ 0x0804CF04 - push {r4, r5, r6, r7, lr} - mov r7, r8 - push {r7} - sub sp, #4 - adds r7, r0, #0 - movs r0, #0x4c - adds r0, r0, r7 - mov r8, r0 - movs r1, #0 - ldrsh r5, [r0, r1] - lsls r4, r5, #1 - adds r0, r5, #0 - bl sub_804CECC - ldr r0, _0804CFA4 @ gUnknown_080DA1CA - adds r4, #1 - lsls r4, r4, #1 - adds r4, r4, r0 - movs r1, #0 - ldrsh r6, [r4, r1] - ldr r1, [r7, #0x2c] - subs r1, r1, r6 - lsls r5, r5, #2 - adds r5, r5, r0 - movs r0, #0 - ldrsh r5, [r5, r0] - ldr r2, [r7, #0x30] - subs r2, r2, r5 - ldr r3, _0804CFA8 @ gUnknown_080DA17A - movs r4, #0 - str r4, [sp] - movs r0, #2 - bl PutSprite - ldr r1, [r7, #0x2c] - adds r1, r1, r6 - adds r1, #0x10 - ldr r2, [r7, #0x30] - subs r2, r2, r5 - ldr r3, _0804CFAC @ gUnknown_080DA18E - str r4, [sp] - movs r0, #2 - bl PutSprite - ldr r1, [r7, #0x2c] - subs r1, r1, r6 - ldr r2, [r7, #0x30] - adds r2, r2, r5 - ldr r3, _0804CFB0 @ gUnknown_080DA1A2 - str r4, [sp] - movs r0, #2 - bl PutSprite - ldr r1, [r7, #0x2c] - adds r1, r1, r6 - adds r1, #0x10 - ldr r2, [r7, #0x30] - adds r2, r2, r5 - ldr r3, _0804CFB4 @ gUnknown_080DA1B6 - str r4, [sp] - movs r0, #2 - bl PutSprite - mov r1, r8 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xf - bne _0804CF98 - adds r0, r7, #0 - bl Proc_Break -_0804CF98: - add sp, #4 - pop {r3} - mov r8, r3 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804CFA4: .4byte gUnknown_080DA1CA -_0804CFA8: .4byte gUnknown_080DA17A -_0804CFAC: .4byte gUnknown_080DA18E -_0804CFB0: .4byte gUnknown_080DA1A2 -_0804CFB4: .4byte gUnknown_080DA1B6 - - THUMB_FUNC_END sub_804CF04 - - THUMB_FUNC_START sub_804CFB8 -sub_804CFB8: @ 0x0804CFB8 - push {r4, r5, lr} - adds r3, r0, #0 - adds r4, r1, #0 - adds r5, r2, #0 - ldr r0, _0804CFDC @ gUnknown_085AAB18 - adds r1, r3, #0 - bl Proc_Start - adds r1, r0, #0 - str r4, [r1, #0x2c] - str r5, [r1, #0x30] - adds r1, #0x4c - movs r2, #0 - strh r2, [r1] - pop {r4, r5} - pop {r1} - bx r1 - .align 2, 0 -_0804CFDC: .4byte gUnknown_085AAB18 - - THUMB_FUNC_END sub_804CFB8 - - THUMB_FUNC_START sub_804CFE0 -sub_804CFE0: @ 0x0804CFE0 - push {r4, r5, r6, lr} - adds r6, r0, #0 - adds r0, #0x45 - movs r1, #0 - strb r1, [r0] - subs r0, #1 - strb r1, [r0] - subs r0, #7 - ldrb r0, [r0] - ldr r4, [r6, #0x34] - muls r0, r4, r0 - lsls r0, r0, #3 - adds r5, r6, #0 - adds r5, #0x3c - ldrb r1, [r5] - bl __divsi3 - str r0, [r6, #0x38] - lsls r4, r4, #0xb - ldrb r1, [r5] - lsls r1, r1, #4 - adds r0, r4, #0 - bl __divsi3 - adds r1, r6, #0 - adds r1, #0x42 - strh r0, [r1] - pop {r4, r5, r6} - pop {r0} - bx r0 - - THUMB_FUNC_END sub_804CFE0 - - THUMB_FUNC_START sub_804D01C -sub_804D01C: @ 0x0804D01C - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, r9 - mov r5, r8 - push {r5, r6, r7} - sub sp, #0x30 - adds r7, r0, #0 - ldr r0, [r7, #0x2c] - mov r8, r0 - ldr r1, [r7, #0x30] - str r1, [sp, #0xc] - adds r1, #8 - mov sl, r1 - ldr r0, [r7, #0x38] - asrs r2, r0, #3 - str r2, [sp, #0x10] - movs r1, #7 - ands r0, r1 - movs r1, #8 - subs r0, r1, r0 - str r0, [sp, #0x14] - movs r3, #0x3e - ldrsh r1, [r7, r3] - adds r0, r7, #0 - adds r0, #0x42 - ldrh r0, [r0] - muls r0, r1, r0 - asrs r0, r0, #8 - str r0, [sp, #0x18] - movs r0, #0x3c - adds r0, r0, r7 - mov ip, r0 - movs r1, #0x3d - adds r1, r1, r7 - mov r9, r1 - ldrb r0, [r0] - ldrb r2, [r1] - cmp r0, r2 - bhi _0804D06C - b _0804D1C4 -_0804D06C: - adds r5, r7, #0 - adds r5, #0x44 - ldrb r0, [r5] - adds r0, #1 - strb r0, [r5] - adds r4, r7, #0 - adds r4, #0x45 - ldrb r0, [r4] - adds r0, #1 - strb r0, [r4] - adds r0, r7, #0 - adds r0, #0x40 - movs r3, #0x3e - ldrsh r2, [r7, r3] - movs r3, #0 - ldrsh r1, [r0, r3] - adds r3, r5, #0 - str r0, [sp, #0x2c] - cmp r2, r1 - bge _0804D09A - ldrb r0, [r3] - adds r0, #2 - strb r0, [r3] -_0804D09A: - movs r0, #0x3e - ldrsh r1, [r7, r0] - ldr r2, [sp, #0x2c] - movs r3, #0 - ldrsh r0, [r2, r3] - cmp r1, r0 - ble _0804D0AE - ldrb r0, [r4] - adds r0, #2 - strb r0, [r4] -_0804D0AE: - movs r6, #0 - mov r0, ip - str r0, [sp, #0x28] - ldr r1, [sp, #0x18] - add r1, sl - str r1, [sp, #0x1c] - ldr r2, [sp, #0x10] - lsls r2, r2, #3 - str r2, [sp, #0x24] - ldr r3, [sp, #0xc] - str r3, [sp, #0x20] -_0804D0C4: - ldrb r0, [r5] - cmp r0, #0x30 - bls _0804D0CE - movs r0, #0 - strb r0, [r5] -_0804D0CE: - lsls r4, r6, #2 - add r4, sp - adds r4, #4 - ldrb r0, [r5] - lsrs r0, r0, #3 - movs r1, #6 - bl __umodsi3 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - str r0, [r4] - adds r5, #1 - adds r6, #1 - cmp r6, #1 - ble _0804D0C4 - movs r1, #0x3e - ldrsh r0, [r7, r1] - cmp r0, #0 - beq _0804D106 - mov r2, sl - subs r2, #9 - ldr r3, _0804D1D4 @ gUnknown_085AAB38 - ldr r0, [sp, #4] - str r0, [sp] - movs r0, #3 - mov r1, r8 - bl PutSprite -_0804D106: - movs r2, #0x3e - ldrsh r0, [r7, r2] - cmp r0, #0 - bge _0804D110 - adds r0, #0xf -_0804D110: - asrs r0, r0, #4 - mov r3, r9 - ldrb r3, [r3] - adds r0, r0, r3 - ldr r1, [sp, #0x28] - ldrb r1, [r1] - cmp r0, r1 - bge _0804D136 - ldr r2, [r7, #0x34] - lsls r2, r2, #3 - add r2, sl - adds r2, #1 - ldr r3, _0804D1D8 @ gUnknown_085AAB30 - ldr r0, [sp, #8] - str r0, [sp] - movs r0, #3 - mov r1, r8 - bl PutSprite -_0804D136: - movs r6, #0 - ldr r0, [r7, #0x34] - cmp r6, r0 - bge _0804D15A - mov r4, sl - movs r5, #1 -_0804D142: - str r5, [sp] - movs r0, #2 - mov r1, r8 - adds r2, r4, #0 - ldr r3, _0804D1DC @ gUnknown_085AAB40 - bl PutSprite - adds r4, #8 - adds r6, #1 - ldr r0, [r7, #0x34] - cmp r6, r0 - blt _0804D142 -_0804D15A: - ldr r2, [sp, #0x10] - cmp r2, #0 - ble _0804D17C - ldr r4, [sp, #0x1c] - movs r5, #0 - adds r6, r2, #0 -_0804D166: - str r5, [sp] - movs r0, #2 - mov r1, r8 - adds r2, r4, #0 - ldr r3, _0804D1DC @ gUnknown_085AAB40 - bl PutSprite - adds r4, #8 - subs r6, #1 - cmp r6, #0 - bne _0804D166 -_0804D17C: - ldr r3, [sp, #0x1c] - ldr r0, [sp, #0x24] - adds r2, r3, r0 - ldr r1, [sp, #0x14] - subs r2, r2, r1 - ldr r4, _0804D1DC @ gUnknown_085AAB40 - movs r0, #0 - str r0, [sp] - movs r0, #2 - mov r1, r8 - adds r3, r4, #0 - bl PutSprite - movs r5, #2 - str r5, [sp] - movs r0, #2 - mov r1, r8 - ldr r2, [sp, #0x20] - adds r3, r4, #0 - bl PutSprite - movs r1, #0x80 - lsls r1, r1, #6 - add r1, r8 - ldr r2, [r7, #0x34] - lsls r2, r2, #3 - add r2, sl - subs r2, #7 - str r5, [sp] - movs r0, #2 - adds r3, r4, #0 - bl PutSprite - ldrh r0, [r7, #0x3e] - ldr r2, [sp, #0x2c] - strh r0, [r2] -_0804D1C4: - add sp, #0x30 - pop {r3, r4, r5} - mov r8, r3 - mov r9, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804D1D4: .4byte gUnknown_085AAB38 -_0804D1D8: .4byte gUnknown_085AAB30 -_0804D1DC: .4byte gUnknown_085AAB40 - - THUMB_FUNC_END sub_804D01C - - THUMB_FUNC_START sub_804D1E0 -sub_804D1E0: @ 0x0804D1E0 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, r9 - mov r5, r8 - push {r5, r6, r7} - mov r9, r0 - mov sl, r1 - mov r8, r2 - adds r5, r3, #0 - ldr r6, [sp, #0x20] - ldr r7, [sp, #0x24] - mov r0, r8 - lsls r0, r0, #0x18 - lsrs r0, r0, #0x18 - mov r8, r0 - lsls r5, r5, #0x18 - lsrs r5, r5, #0x18 - lsls r6, r6, #0x18 - lsrs r6, r6, #0x18 - ldr r4, _0804D248 @ gUnknown_085AAB48 - adds r0, r4, #0 - bl Proc_EndEach - adds r0, r4, #0 - adds r1, r7, #0 - bl Proc_Start - adds r1, r0, #0 - mov r2, r9 - str r2, [r1, #0x2c] - mov r0, sl - str r0, [r1, #0x30] - lsls r0, r5, #1 - subs r0, #2 - str r0, [r1, #0x34] - adds r0, r1, #0 - adds r0, #0x3c - mov r2, r8 - strb r2, [r0] - adds r0, #1 - strb r5, [r0] - strh r6, [r1, #0x3e] - adds r0, #3 - strh r6, [r0] - pop {r3, r4, r5} - mov r8, r3 - mov r9, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804D248: .4byte gUnknown_085AAB48 - - THUMB_FUNC_END sub_804D1E0 - - THUMB_FUNC_START sub_804D24C -sub_804D24C: @ 0x0804D24C - push {r4, r5, r6, r7, lr} - lsls r0, r0, #0x18 - lsrs r7, r0, #0x18 - lsls r1, r1, #0x10 - lsrs r4, r1, #0x10 - ldr r0, _0804D2A0 @ gUnknown_085AAB48 - bl Proc_Find - adds r6, r0, #0 - cmp r6, #0 - beq _0804D298 - adds r5, r6, #0 - adds r5, #0x3c - strb r7, [r5] - lsls r0, r4, #0x10 - asrs r0, r0, #0x10 - movs r1, #0xff - ands r0, r1 - strh r0, [r6, #0x3e] - adds r0, r6, #0 - adds r0, #0x3d - ldrb r0, [r0] - ldr r4, [r6, #0x34] - muls r0, r4, r0 - lsls r0, r0, #3 - ldrb r1, [r5] - bl __divsi3 - str r0, [r6, #0x38] - lsls r4, r4, #0xb - ldrb r1, [r5] - lsls r1, r1, #4 - adds r0, r4, #0 - bl __divsi3 - adds r1, r6, #0 - adds r1, #0x42 - strh r0, [r1] -_0804D298: - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0804D2A0: .4byte gUnknown_085AAB48 - - THUMB_FUNC_END sub_804D24C - THUMB_FUNC_START sub_804D2A4 sub_804D2A4: @ 0x0804D2A4 push {r4, r5, r6, lr} diff --git a/include/sio.h b/include/sio.h index 80f30885..218f331a 100644 --- a/include/sio.h +++ b/include/sio.h @@ -462,12 +462,12 @@ void sub_804C558(void); // ??? sub_804C5A4(???); // ??? sub_804C5F8(???); ProcPtr sub_804C758(ProcPtr, u8, u8, u8, u8); -void sub_804C7C8(ProcPtr, int, int, int, int); -void sub_804C7DC(ProcPtr, s16, s16); +// void sub_804C7C8(ProcPtr, int, int, int, int); TODO +// void sub_804C7DC(ProcPtr, s16, s16); TODO // ??? sub_804C7E4(???); // ??? sub_804C83C(???); // ??? sub_804C894(???); -ProcPtr sub_804CAEC(ProcPtr, int, u8 *); +// ProcPtr sub_804CAEC(ProcPtr, int, u8 *); TODO // ??? sub_804CB94(???); // ??? sub_804CC14(???); void sub_804CC5C(int);; @@ -482,10 +482,10 @@ ProcPtr sub_804CE8C(ProcPtr); void sub_804CEC4(ProcPtr, s16, s16, s16); // ??? sub_804CECC(???); // ??? sub_804CF04(???); -void sub_804CFB8(ProcPtr, s16, s16); +ProcPtr sub_804CFB8(ProcPtr, int, int); // ??? sub_804CFE0(???); // ??? sub_804D01C(???); -void sub_804D1E0(int, int, int, int, u8, ProcPtr); +void sub_804D1E0(int, int, u8, u8, u8, ProcPtr); void sub_804D24C(u8, s16); // ??? sub_804D2A4(???); // ??? sub_804D37C(???); diff --git a/ldscript.txt b/ldscript.txt index f4586b77..96af4275 100644 --- a/ldscript.txt +++ b/ldscript.txt @@ -397,6 +397,7 @@ SECTIONS src/sio_battlemap.o(.text); src/sio_804B920.o(.text); src/sio_mu.o(.text); + src/sio_uiutils.o(.text); asm/code_sio_8048260.o(.text); src/uiutils.o(.text); src/uimenu.o(.text); diff --git a/src/sio_menu.c b/src/sio_menu.c index 491145bc..e340bb00 100644 --- a/src/sio_menu.c +++ b/src/sio_menu.c @@ -14,6 +14,10 @@ #include "constants/faces.h" +// FIXME +void sub_804C7C8(ProcPtr, int, int, int, int); +void sub_804C7DC(ProcPtr, s16, s16); + //! FE8U = 0x08047A54 int sub_8047A54(struct SioMenuProc * proc, int lineNum) { diff --git a/src/sio_teamlist.c b/src/sio_teamlist.c index 2c1bee16..b7f91bbf 100644 --- a/src/sio_teamlist.c +++ b/src/sio_teamlist.c @@ -15,6 +15,9 @@ #include "sio_core.h" #include "sio.h" +// FIXME +ProcPtr sub_804CAEC(ProcPtr, int, u8 *); + struct SioProc85AAA78 { /* 00 */ PROC_HEADER; diff --git a/src/sio_uiutils.c b/src/sio_uiutils.c new file mode 100644 index 00000000..81ae3fd9 --- /dev/null +++ b/src/sio_uiutils.c @@ -0,0 +1,1039 @@ +#include "global.h" + +#include "hardware.h" +#include "bm.h" +#include "bmlib.h" +#include "ctc.h" +#include "bmunit.h" +#include "bmudisp.h" +#include "uiutils.h" + +#include "sio_core.h" +#include "sio.h" + +/** + * Contains various sprite/palette utility procs used in + * the Link Arena menus. + */ + +extern const u16 SioDefaultBgConfig[]; + +//! FE8U = 0x0804C33C +void InitSioBG(void) +{ + u16 hack[12]; + memcpy(hack, SioDefaultBgConfig, 0x18); + + SetupBackgrounds(hack); + + gLCDControlBuffer.bg0cnt.priority = 0; + gLCDControlBuffer.bg1cnt.priority = 1; + gLCDControlBuffer.bg2cnt.priority = 2; + gLCDControlBuffer.bg3cnt.priority = 3; + + ReadGameSaveCoreGfx(); + + CopyToPaletteBuffer(Pal_LinkArenaRankIcons, 0x300, 0x40); + + return; +} + +//! FE8U = 0x0804C3A0 +void sub_804C3A0(int unusedA, int unusedB) +{ + return; +} + +//! FE8U = 0x0804C3A4 +void sub_804C3A4(int unused) +{ + return; +} + +//! FE8U = 0x0804C3A8 +void nullsub_13(void) +{ + return; +} + +//! FE8U = 0x0804C3AC +void sub_804C3AC(u8 * src, u8 * dst, int c, int d) +{ + int i; + + int r7 = c << 5; + + for (i = 0; i < d; i++) + { + CpuFastCopy(src, dst, (r7 * 0x20) / 0x20); + src += 0x400; + dst += 0x400; + } + + return; +} + +struct SioProc85AA980 +{ + /* 00 */ PROC_HEADER; + /* 2C */ int unk_2c; + /* 30 */ int unk_30; + /* 34 */ STRUCT_PAD(0x34, 0x58); + /* 58 */ int unk_58; + /* 5C */ u32 unk_5c; +}; + +extern u8 gUnknown_085B0DE8[]; +extern u8 gUnknown_085AAE0C[]; + +extern u8 gUnknown_085B0F2C[]; + +//! FE8U = 0x0804C3EC +void sub_804C3EC(struct SioProc85AA980 * proc) +{ + int a = (proc->unk_58 % 3) * 0x140; + int b = (proc->unk_58 / 3) * 0x800; + + Decompress(gUnknown_085B0DE8, (void *)(0x6000000 + proc->unk_5c)); + Decompress(gUnknown_085AAE0C, gGenericBuffer); + + sub_804C3AC(gGenericBuffer + (a + b), (void *)(0x06014000), 10, 2); + + CallARM_FillTileRect(gBG2TilemapBuffer, gUnknown_085B0F2C, (((u16)(proc->unk_5c >> 1) >> 4)) | 0x1000); + BG_EnableSyncByMask(BG2_SYNC_BIT); + + return; +} + +extern u16 gUnknown_085AA96C[]; + +//! FE8U = 0x0804C47C +void sub_804C47C(void) +{ + PutSpriteExt(4, 20, 8, gUnknown_085AA96C, 0); + return; +} + +extern struct ProcCmd ProcScr_085AA980[]; + +//! FE8U = 0x0804C49C +void NewProc085AA980(ProcPtr parent, int b, int chr) +{ + struct SioProc85AA980 * proc; + + Proc_EndEach(ProcScr_085AA980); + proc = Proc_Start(ProcScr_085AA980, parent); + + proc->unk_58 = b; + proc->unk_5c = chr; + + if (chr == 0) + { + proc->unk_5c = 0x5c00; + } + + proc->unk_2c = (proc->unk_58 % 3) * 0x140; + proc->unk_30 = (proc->unk_58 / 3) * 0x800; + + return; +} + +//! FE8U = 0x0804C4F8 +void sub_804C4F8(void) +{ + Proc_EndEach(ProcScr_085AA980); + return; +} + +//! FE8U = 0x0804C508 +void sub_804C508(void) +{ + SetBlendConfig(1, 0x10, 4, 0); + + SetBlendTargetA(0, 0, 1, 0, 0); + SetBlendTargetB(0, 0, 0, 1, 0); + + SetWinEnable(0, 0, 0); + + return; +} + +//! FE8U = 0x0804C558 +void sub_804C558(void) +{ + SetBlendConfig(1, 0x10, 4, 0); + + SetBlendTargetA(0, 0, 1, 0, 0); + SetBlendTargetB(0, 0, 0, 1, 0); + + return; +} + +//! FE8U = 0x0804C590 +void sub_804C590(void) +{ + SetBlendConfig(0, 0, 0, 0); + return; +} + +extern s8 gUnk_Sio_0203DDDC; + +extern const u8 gUnknown_080DA0DA[]; + +//! FE8U = 0x0804C5A4 +void sub_804C5A4(u8 idx) +{ + u8 hack[0x20]; + memcpy(hack, gUnknown_080DA0DA, 0x20); + + if (gUnk_Sio_0203DDDC == 0) + { + int color = hack[idx] + 0x10; + gPaletteBuffer[0x131] = ((color) << 10) + ((color) << 5) + (color); + EnablePaletteSync(); + } + + return; +} + +struct SioProc85AA9C0 +{ + /* 00 */ PROC_HEADER; + /* 2A */ s16 unk_2a; + /* 2C */ s16 unk_2c; + /* 2E */ u8 unk_2e; + /* 2F */ u8 unk_2f; + /* 30 */ u8 unk_30; + /* 32 */ s16 unk_32; + /* 34 */ s16 unk_34; + /* 36 */ u16 unk_36; + /* 38 */ u16 unk_38; + /* 3A */ s16 unk_3a; + /* 3C */ s16 unk_3c; + /* 3E */ u8 unk_3e; +}; + +extern u16 * gUnknown_085AA9A0[]; +extern u16 gUnknown_080DA09C[]; +extern u16 * gUnknown_085AA9B4[]; + +//! FE8U = 0x0804C5F8 +void sub_804C5F8(struct SioProc85AA9C0 * proc) +{ + int oam2 = 0x000082C8; + + PutSprite(4, proc->unk_2a, proc->unk_2c, gUnknown_085AA9A0[proc->unk_2f], gUnknown_080DA09C[proc->unk_2e]); + + if (proc->unk_2e == 2) + { + sub_804C5A4(proc->unk_30); + } + + proc->unk_30 = (proc->unk_30 + 1) & 0x1f; + + if (proc->unk_2e == 2 && proc->unk_2f == 1) + { + proc->unk_36 += proc->unk_3a; + proc->unk_38 += proc->unk_3c; + + if (proc->unk_3a > 4) + { + proc->unk_3a--; + } + + if (proc->unk_3c > 4) + { + proc->unk_3c--; + } + + if ((GetGameClock() & 3) == 0) + { + if (proc->unk_32 < 0) + { + proc->unk_32++; + } + + if (proc->unk_34 > 0x34) + { + proc->unk_34--; + } + } + + PutSprite( + 0, 0x4b + proc->unk_2a + proc->unk_32, proc->unk_2c + 8, gObject_8x16, ((proc->unk_36 >> 5) % 6) + oam2); + PutSprite( + 0, 0x49 + proc->unk_2a + proc->unk_34, proc->unk_2c + 8, gObject_8x16_HFlipped, + ((proc->unk_38 >> 5) % 6) + oam2); + + PutSpriteExt(0, 0x50 + proc->unk_2a, proc->unk_2c + 9, gUnknown_085AA9B4[gLinkArenaSt.unk_05], 0); + } + + return; +} + +extern struct ProcCmd gUnknown_085AA9C0[]; + +//! FE8U = 0x0804C758 +ProcPtr sub_804C758(ProcPtr parent, u8 x1, u8 y1, u8 d, u8 e) +{ + struct SioProc85AA9C0 * proc = Proc_Start(gUnknown_085AA9C0, parent); + + proc->unk_2a = x1; + proc->unk_2c = y1; + proc->unk_2e = e; + proc->unk_2f = d; + proc->unk_32 = 0; + proc->unk_34 = 0x34; + proc->unk_38 = 0; + proc->unk_36 = 0; + proc->unk_3c = 4; + proc->unk_3a = 4; + proc->unk_3e = 0; + proc->unk_30 = 0; + + return proc; +} + +//! FE8U = 0x0804C7C8 +void sub_804C7C8(struct SioProc85AA9C0 * proc, int b, int c, int d, int e) +{ + proc->unk_32 = b; + proc->unk_34 = c; + proc->unk_3a = d; + proc->unk_3c = e; + + return; +} + +//! FE8U = 0x0804C7DC +void sub_804C7DC(struct SioProc85AA9C0 * proc, s16 x, s16 y) +{ + proc->unk_2a = x; + proc->unk_2c = y; + + return; +} + +extern const u8 gUnknown_080DA102[]; + +extern u16 gUnknown_085ADDE8[]; + +//! FE8U = 0x0804C7E4 +void sub_804C7E4(void) +{ + u8 hack[0x20]; + u16 * ptr = gUnknown_085ADDE8; + memcpy(hack, gUnknown_080DA102, 0x20); + + if (gUnk_Sio_0203DDDC == 0) + { + int a = (GetGameClock() % 0x40); + int idx = hack[a / 2]; + + gPaletteBuffer[0x18E] = ptr[idx]; + EnablePaletteSync(); + } + + return; +} + +extern const u8 gUnknown_080DA0DA[]; + +extern u16 gUnknown_085ADE48[]; + +//! FE8U = 0x0804C83C +void sub_804C83C(void) +{ + u8 hack[0x20]; + u16 * ptr = gUnknown_085ADE48; + memcpy(hack, gUnknown_080DA0DA, 0x20); + + if (gUnk_Sio_0203DDDC == 0) + { + int a = (GetGameClock() % 0x40); + int idx = hack[a / 2]; + + gPaletteBuffer[0x13E] = ptr[idx]; + EnablePaletteSync(); + } + + return; +} + +struct SioProc85AAA78 +{ + /* 00 */ PROC_HEADER; + /* 2C */ int unk_2c; + /* 30 */ s16 unk_30[5]; + /* 3A */ u8 unk_3a[5]; + /* 40 */ int unk_40; + /* 44 */ s8 unk_44; + /* 45 */ STRUCT_PAD(0x45, 0x48); + /* 48 */ int unk_48; +}; + +s8 gUnk_Sio_0203DDDC; + +extern u16 gUnknown_085AA9D8[]; +extern u16 gUnknown_085AAA0E[]; +extern u16 Sprite_085AAA50[]; +extern u16 gUnknown_085AAA5E[]; + +extern u16 gUnknown_080DA0FA[]; + +extern u16 gUnknown_08A1BD40[]; + +extern u16 * gUnknown_085AAA48[]; + +void PutLinkArenaButtonSpriteAt(int, int); + +//! FE8U = 0x0804C894 +void sub_804C894(struct SioProc85AAA78 * proc) +{ + int i; + int oam2; + + if (gLinkArenaSt.unk_00 == 1) + { + if (proc->unk_44 != 0) + { + oam2 = 0x400; + } + else + { + oam2 = 0xc00; + } + + PutSprite(0, 0x58, 0x20, gUnknown_085AA9D8, 0); + + for (i = 0; i < proc->unk_2c; i++) + { + PutSprite(4, proc->unk_30[i] + 6, 0x20 + i * 0x18, Sprite_085AAA50, (i & 0xf) * 0x1000 + oam2); + + if (proc->unk_3a[i] != 0) + { + PutSprite(4, proc->unk_30[i] + 6, 0x20 + i * 0x18, gUnknown_085AAA5E, oam2); + } + } + + if (proc->unk_40 != 0) + { + if (gUnk_Sio_0203DDDC == 0) + { + gPaletteBuffer[0x18e] = ((GetGameClock() % 0x40) / 4)[gUnknown_08A1BD40]; + EnablePaletteSync(); + } + + if (proc->unk_40 < 0x100) + { + proc->unk_40 = proc->unk_40 + 0x10; + } + + // clang-format off + SetObjAffine( + 0, + Div(+COS(0) * 16, 0x100), + Div(-SIN(0) * 16, proc->unk_40), + Div(+SIN(0) * 16, 0x100), + Div(+COS(0) * 16, proc->unk_40) + ); + // clang-format on + + PutSprite(4, 0x78, 0, gUnknown_080DA0FA, 0x8000); + } + sub_804C83C(); + } + else + { + PutSprite(0xb, 0x58, 0x20, gUnknown_085AA9D8, 0); + + for (i = 0; i < proc->unk_2c; i++) + { + PutSprite(2, proc->unk_30[i], 0x30 + i * 0x10, gUnknown_085AAA48[proc->unk_3a[i]], 0); + + if (proc->unk_3a[i] != 0) + { + if (proc->unk_30[i] < 0) + { + proc->unk_30[i]++; + } + } + else if (proc->unk_30[i] > -8) + { + proc->unk_30[i]--; + } + } + + sub_804C7E4(); + } + + if (gLinkArenaSt.unk_00 == 1) + { + oam2 = 0x400; + } + else + { + oam2 = 0x800; + } + + if (proc->unk_44 != 0) + { + PutLinkArenaButtonSpriteAt(0xc0, 0x10); + } + + if (proc->unk_48 >= 0) + { + PutSprite(4, 0x50, proc->unk_48 + 8, gUnknown_085AAA0E, oam2); + } + + return; +} + +struct SioTeamListProc +{ + /* 00 */ PROC_HEADER; + /* 2C */ struct SioProc85AAA78 * unk_2c; + /* 30 */ ProcPtr pSioHoldProc; + /* 34 */ int numActiveOptions; + /* 38 */ int unk_38; + /* 3C */ int optionIdx; + /* 40 */ int unk_40; + /* 44 */ int unk_44; + /* 48 */ u8 unk_48; + /* 49 */ STRUCT_PAD(0x49, 0x4A); + /* 4A */ u16 yBg1; + /* 4C */ s8 unk_4c; + /* 4D */ u8 validOptions[5]; + /* 52 */ u8 selectedOption; + /* 53 */ u8 selectedTeam; + /* 54 */ u8 unk_54; + /* 55 */ u8 unk_55; + /* 56 */ STRUCT_PAD(0x56, 0x58); + /* 58 */ int unk_58; + /* 5C */ s8 unk_5c; +}; + +extern struct ProcCmd gUnknown_085AAA78[]; + +void sub_804CC14(int, int, int, int, int, ProcPtr); + +//! FE8U = 0x0804CAEC +ProcPtr sub_804CAEC(struct SioTeamListProc * parent, int b, u8 * buf) +{ + struct SioProc85AAA78 * proc; + int i; + + Proc_EndEach(gUnknown_085AAA78); + proc = Proc_Start(gUnknown_085AAA78, parent); + + proc->unk_2c = b; + proc->unk_44 = 1; + proc->unk_40 = 0; + proc->unk_48 = -1; + + for (i = 0; i < 5; i++) + { + proc->unk_3a[i] = buf[i]; + proc->unk_30[i] = -8; + } + + sub_804D1E0(0xe1, 0x28, parent->unk_38, 6, parent->yBg1 + 40, proc); + sub_804CC14(0x98, 0x28 - parent->unk_48 * 0x10, 0x88, 0x27, parent->unk_38, proc); + + return proc; +} + +struct SioProc85AAA90 +{ + /* 00 */ PROC_HEADER; + /* 2C */ int unk_2c; + /* 30 */ int unk_30; + /* 34 */ int unk_34; + /* 38 */ int unk_38; + /* 3C */ int unk_3c; +}; + +//! FE8U = 0x0804CB94 +void sub_804CB94(struct SioProc85AAA90 * proc) +{ + int i; + int y; + int j; + + for (i = 0; i < proc->unk_3c; i++) + { + y = proc->unk_30 + i * 0x10; + + if (y >= proc->unk_38) + { + continue; + } + + if (y <= proc->unk_34) + { + continue; + } + + for (j = 0; j < 5; j++) + { + struct Unit * unit = GetUnit(i * 5 + j + 1); + + if (unit->pCharacterData == NULL) + { + continue; + } + + sub_8027E4C(4, proc->unk_2c + j * 0xe, y, 0x400, unit); + } + } + + return; +} + +extern struct ProcCmd gUnknown_085AAA90[]; + +//! FE8U = 0x0804CC14 +void sub_804CC14(int x, int y, int upperBound, int lowerBound, int count, ProcPtr parent) +{ + struct SioProc85AAA90 * proc; + + Proc_EndEach(gUnknown_085AAA90); + proc = Proc_Start(gUnknown_085AAA90, parent); + + proc->unk_3c = count; + + proc->unk_2c = x; + proc->unk_30 = y; + + proc->unk_34 = lowerBound; + proc->unk_38 = upperBound; + + return; +} + +//! FE8U = 0x0804CC5C +void sub_804CC5C(int amount) +{ + struct SioProc85AAA90 * proc = Proc_Find(gUnknown_085AAA90); + proc->unk_30 += amount; + + return; +} + +extern u16 gUnknown_085ADE28[]; + +//! FE8U = 0x0804CC78 +void sub_804CC78(void) +{ + int r2; + int i; + + u16 * ptr = gUnknown_085ADE28; + + if (gUnk_Sio_0203DDDC == 0) + { + r2 = (GetGameClock() % 0x20); + r2 = r2 >> 1; + + for (i = 0; i < 5; i++) + { + gPaletteBuffer[0x19B + i] = ptr[((r2 + i) & 0xf)]; + } + + EnablePaletteSync(); + } + + return; +} + +struct SioProc85AAAC4 +{ + /* 00 */ PROC_HEADER; + /* 2C */ int unk_2c; + /* 30 */ int unk_30; + /* 34 */ int unk_34; + /* 38 */ int unk_38; + /* 3C */ int unk_3c; + /* 40 */ int unk_40; + /* 44 */ int unk_44; +}; + +extern u16 * gUnknown_085AAAA8[]; +extern u16 * gUnknown_085AAAB0[]; + +extern u16 gUnknown_080DA132[]; +extern u16 gUnknown_085AA9D8[]; +extern u16 Sprite_085AAA50[]; + +//! FE8U = 0x0804CCCC +void sub_804CCCC(struct SioProc85AAAC4 * proc) +{ + int i; + + int x = (proc->unk_34 + proc->unk_2c) >> 1; + int y = (proc->unk_38 + proc->unk_30) >> 1; + + proc->unk_2c = x; + proc->unk_30 = y; + + PutSprite(2, x, y, gUnknown_085AAAA8[proc->unk_3c], 0); + PutSprite(2, proc->unk_40 + 0x60, 0x30, gUnknown_080DA132, 0); + PutSprite(2, 0x60, 0x20, gUnknown_085AA9D8, 0); + PutSprite(4, 0x50, 0x20, Sprite_085AAA50, 0x800); + + for (i = 3; i < 5; i++) + { + if ((proc->unk_44 == i) && (i < 3)) + { + PutSprite(4, 0xc4, 0x48 + i * 0x10, gUnknown_085AAAB0[i], 0x4000); + } + else + { + PutSprite(4, 0xc4, 0x48 + i * 0x10, gUnknown_085AAAB0[i], 0x8000); + } + } + + sub_804CC78(); + + return; +} + +extern struct ProcCmd Proc_085AAAC4[]; + +//! FE8U = 0x0804CD90 +ProcPtr NewProc_085AAAC4(ProcPtr parent, int x, int y) +{ + struct SioProc85AAAC4 * proc; + + Proc_EndEach(Proc_085AAAC4); + proc = Proc_Start(Proc_085AAAC4, parent); + + proc->unk_34 = x; + proc->unk_2c = x; + + proc->unk_38 = y; + proc->unk_30 = y; + + proc->unk_3c = 0; + proc->unk_40 = 0; + proc->unk_44 = 1; + + return proc; +} + +// FIXME - param +//! FE8U = 0x0804CDD0 +void sub_804CDD0(void * proc, int b, int c, int d, int e, int f) +{ + struct SioProc85AAAC4 * param_1 = proc; + + param_1->unk_34 = b; + param_1->unk_38 = c; + param_1->unk_3c = e; + param_1->unk_40 = d; + param_1->unk_44 = f; + + return; +} + +struct SioProc85AAAE8 +{ + /* 00 */ PROC_HEADER; + /* 2A */ s16 unk_2a; + /* 2C */ s16 unk_2c; + /* 2E */ s16 unk_2e; + /* 30 */ s16 unk_30; +}; + +extern u16 * gUnknown_085AAADC[]; + +//! FE8U = 0x0804CDE8 +void sub_804CDE8(struct SioProc85AAAE8 * proc) +{ + int i; + + int y1 = proc->unk_2c; + int y2 = proc->unk_2a; + int y = (y1 + y2) * 12; + + proc->unk_2a = proc->unk_2c; + + for (i = 0; i < 3; i++) + { + PutSprite(2, 0x20, 0x30 + i * 0x18, gUnknown_085AAADC[i], 0); + } + + DisplayFrozenUiHand(0x20, y + 0x30); + DisplayUiHand(proc->unk_2e, proc->unk_30); + + PutLinkArenaButtonSpriteAt(0xc0, 0x10); + + return; +} + +//! FE8U = 0x0804CE5C +void sub_804CE5C(struct SioProc85AAAE8 * proc) +{ + int i; + + for (i = 0; i < 3; i++) + { + PutSprite(2, 0x20, 0x30 + i * 0x18, gUnknown_085AAADC[i], 0); + } + + return; +} + +extern struct ProcCmd gUnknown_085AAAE8[]; + +//! FE8U = 0x0804CE8C +ProcPtr sub_804CE8C(ProcPtr parent) +{ + struct SioProc85AAAE8 * proc; + + Proc_EndEach(gUnknown_085AAAE8); + proc = Proc_Start(gUnknown_085AAAE8, parent); + + proc->unk_2a = 0; + + return proc; +} + +extern struct ProcCmd gUnknown_085AAB00[]; + +//! FE8U = 0x0804CEB0 +void sub_804CEB0(void) +{ + Proc_Start(gUnknown_085AAB00, PROC_TREE_3); + return; +} + +// FIXME +//! FE8U = 0x0804CEC4 +void sub_804CEC4(ProcPtr proc, s16 b, s16 c, s16 d) +{ + struct SioProc85AAAE8 * param_1 = proc; + + param_1->unk_2c = b; + param_1->unk_2e = c; + param_1->unk_30 = d; + + return; +} + +extern u16 gUnknown_085ADE28[]; + +//! FE8U = 0x0804CECC +void sub_804CECC(int idx) +{ + u16 * ptr = gUnknown_085ADE28; + + if (gUnk_Sio_0203DDDC == 0) + { + gPaletteBuffer[0x16E] = ptr[idx]; + EnablePaletteSync(); + } + + return; +} + +struct SioProc85AAB18 +{ + /* 00 */ PROC_HEADER; + /* 2C */ int unk_2c; + /* 30 */ int unk_30; + /* 34 */ STRUCT_PAD(0x34, 0x4C); + /* 4C */ s16 unk_4c; +}; + +extern s16 gUnknown_080DA1CA[]; + +extern u16 gUnknown_080DA17A[]; +extern u16 gUnknown_080DA18E[]; +extern u16 gUnknown_080DA1A2[]; +extern u16 gUnknown_080DA1B6[]; + +//! FE8U = 0x0804CF04 +void sub_804CF04(struct SioProc85AAB18 * proc) +{ + int idx; + int x; + int y; + int r1; + + idx = proc->unk_4c * 2; + + sub_804CECC(proc->unk_4c); + + x = gUnknown_080DA1CA[idx + 1]; + r1 = proc->unk_2c - x; + + y = gUnknown_080DA1CA[idx + 0]; + + PutSprite(2, r1, proc->unk_30 - y, gUnknown_080DA17A, 0); + PutSprite(2, proc->unk_2c + x + 0x10, proc->unk_30 - y, gUnknown_080DA18E, 0); + PutSprite(2, proc->unk_2c - x, proc->unk_30 + y, gUnknown_080DA1A2, 0); + PutSprite(2, proc->unk_2c + x + 0x10, proc->unk_30 + y, gUnknown_080DA1B6, 0); + + proc->unk_4c++; + + if (proc->unk_4c == 0xf) + { + Proc_Break(proc); + } + + return; +} + +extern struct ProcCmd gUnknown_085AAB18[]; + +//! FE8U = 0x0804CFB8 +ProcPtr sub_804CFB8(ProcPtr parent, int b, int c) +{ + struct SioProc85AAB18 * proc = Proc_Start(gUnknown_085AAB18, parent); + + proc->unk_2c = b; + proc->unk_30 = c; + proc->unk_4c = 0; + + // return proc; // BUG +} + +struct SioProc85AAB48 +{ + /* 00 */ PROC_HEADER; + /* 2C */ int unk_2c; + /* 30 */ int unk_30; + /* 34 */ int unk_34; + /* 38 */ int unk_38; + /* 3C */ u8 unk_3c; + /* 3D */ u8 unk_3d; + /* 3E */ s16 unk_3e; + /* 40 */ s16 unk_40; + /* 42 */ u16 unk_42; + /* 44 */ u8 unk_44[2]; +}; + +//! FE8U = 0x0804CFE0 +void sub_804CFE0(struct SioProc85AAB48 * proc) +{ + proc->unk_44[1] = 0; + proc->unk_44[0] = 0; + + proc->unk_38 = (proc->unk_34 * proc->unk_3d * 8) / proc->unk_3c; + proc->unk_42 = (proc->unk_34 * 0x800) / (proc->unk_3c * 16); + + return; +} + +extern u16 gUnknown_085AAB30[]; +extern u16 gUnknown_085AAB38[]; +extern u16 gUnknown_085AAB40[]; + +//! FE8U = 0x0804D01C +void sub_804D01C(struct SioProc85AAB48 * proc) +{ + int i; + int buf[2]; + + int r8 = proc->unk_2c; + int sl = proc->unk_30 + 8; + int sp_10 = proc->unk_38 >> 3; + int sp_14 = 8 - (proc->unk_38 & 7); + int sp_18 = (proc->unk_3e * proc->unk_42) >> 8; + + if (proc->unk_3c > proc->unk_3d) + { + proc->unk_44[0]++; + proc->unk_44[1]++; + + if (proc->unk_3e < proc->unk_40) + { + proc->unk_44[0] += 2; + } + + if (proc->unk_3e > proc->unk_40) + { + proc->unk_44[1] += 2; + } + + for (i = 0; i < 2; i++) + { + if (proc->unk_44[i] > 0x30) + { + proc->unk_44[i] = 0; + } + + buf[i] = (proc->unk_44[i] / 8) % 6; + } + + if (proc->unk_3e != 0) + { + PutSprite(3, r8, sl - 9, gUnknown_085AAB38, buf[0]); + } + + if (((proc->unk_3e / 16) + proc->unk_3d) < proc->unk_3c) + { + PutSprite(3, r8, proc->unk_34 * 8 + sl + 1, gUnknown_085AAB30, buf[1]); + } + + for (i = 0; i < proc->unk_34; i++) + { + PutSprite(2, r8, sl + i * 8, gUnknown_085AAB40, 1); + } + + for (i = 0; i < sp_10; i++) + { + PutSprite(2, r8, (sl + sp_18) + i * 8, gUnknown_085AAB40, 0); + } + + PutSprite(2, r8, (sl + sp_18) + (sp_10 * 8) - sp_14, gUnknown_085AAB40, 0); + PutSprite(2, r8, sl - 8, gUnknown_085AAB40, 2); + PutSprite(2, r8 + 0x2000, proc->unk_34 * 8 + sl - 7, gUnknown_085AAB40, 2); + + proc->unk_40 = proc->unk_3e; + } + + return; +} + +extern struct ProcCmd gUnknown_085AAB48[]; + +//! FE8U = 0x0804D1E0 +void sub_804D1E0(int a, int b, u8 c, u8 d, u8 e, ProcPtr parent) +{ + struct SioProc85AAB48 * proc; + + Proc_EndEach(gUnknown_085AAB48); + proc = Proc_Start(gUnknown_085AAB48, parent); + + proc->unk_2c = a; + proc->unk_30 = b; + + proc->unk_34 = d * 2 - 2; + + proc->unk_3c = c; + proc->unk_3d = d; + proc->unk_3e = e; + proc->unk_40 = e; + + return; +} + +//! FE8U = 0x0804D24C +void sub_804D24C(u8 a, s16 b) +{ + struct SioProc85AAB48 * proc = Proc_Find(gUnknown_085AAB48); + + if (proc == NULL) + { + return; + } + + proc->unk_3c = a; + proc->unk_3e = b & 0xff; + proc->unk_38 = (proc->unk_34 * proc->unk_3d * 8) / proc->unk_3c; + proc->unk_42 = (proc->unk_34 * 0x800) / (proc->unk_3c * 16); + + return; +} From 7e3bea842702fe66a181bdb5653f8d77e09d629b Mon Sep 17 00:00:00 2001 From: Eebit <eight_bit_hero@yahoo.ca> Date: Mon, 24 Jun 2024 19:05:54 -0400 Subject: [PATCH 2/3] (sio_uiutils) Extract data --- data/const_data_D9FE4.s | 44 ---- data/data_5AA96C.s | 198 --------------- include/sio.h | 2 +- ldscript.txt | 2 + src/sio_uiutils.c | 544 +++++++++++++++++++++++++++++++++++----- 5 files changed, 489 insertions(+), 301 deletions(-) diff --git a/data/const_data_D9FE4.s b/data/const_data_D9FE4.s index cc25e994..5ac9877a 100644 --- a/data/const_data_D9FE4.s +++ b/data/const_data_D9FE4.s @@ -1,49 +1,5 @@ .section .rodata - .global SioDefaultBgConfig -SioDefaultBgConfig: @ 0x080D9FE4 - .incbin "baserom.gba", 0xD9FE4, 0xB8 - - .global gUnknown_080DA09C -gUnknown_080DA09C: @ 0x080DA09C - .incbin "baserom.gba", 0xDA09C, 0x3E - - .global gUnknown_080DA0DA -gUnknown_080DA0DA: @ 0x080DA0DA - .incbin "baserom.gba", 0xDA0DA, 0x20 - - .global gUnknown_080DA0FA -gUnknown_080DA0FA: @ 0x080DA0FA - .incbin "baserom.gba", 0xDA0FA, 0x8 - - .global gUnknown_080DA102 -gUnknown_080DA102: @ 0x080DA102 - .incbin "baserom.gba", 0xDA102, 0x30 - - .global gUnknown_080DA132 -gUnknown_080DA132: @ 0x080DA132 - .incbin "baserom.gba", 0xDA132, 0x48 - - .global gUnknown_080DA17A -gUnknown_080DA17A: @ 0x080DA17A - .incbin "baserom.gba", 0xDA17A, 0x14 - - .global gUnknown_080DA18E -gUnknown_080DA18E: @ 0x080DA18E - .incbin "baserom.gba", 0xDA18E, 0x14 - - .global gUnknown_080DA1A2 -gUnknown_080DA1A2: @ 0x080DA1A2 - .incbin "baserom.gba", 0xDA1A2, 0x14 - - .global gUnknown_080DA1B6 -gUnknown_080DA1B6: @ 0x080DA1B6 - .incbin "baserom.gba", 0xDA1B6, 0x14 - - .global gUnknown_080DA1CA -gUnknown_080DA1CA: @ 0x080DA1CA - .incbin "baserom.gba", 0xDA1CA, 0x42 - .global gUnknown_080DA20C gUnknown_080DA20C: @ 0x080DA20C @ replacing .incbin "baserom.gba", 0x000da20c, 0x10 diff --git a/data/data_5AA96C.s b/data/data_5AA96C.s index 88846ced..a863a9e8 100644 --- a/data/data_5AA96C.s +++ b/data/data_5AA96C.s @@ -1,203 +1,5 @@ .section .data - .global gUnknown_085AA96C -gUnknown_085AA96C: @ 0x085AA96C - .incbin "baserom.gba", 0x5AA96C, 0x14 - - .global ProcScr_085AA980 -ProcScr_085AA980: @ 0x085AA980 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_CALL - .short 0x2, 0x0 - .word sub_804C3EC - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804C47C - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - - - .global gUnknown_085AA9A0 -gUnknown_085AA9A0: @ 0x085AA9A0 -@ replacing .incbin "baserom.gba", 0x005aa9a0, 0x14 -.4byte SioDefaultBgConfig + 0x18 -.4byte SioDefaultBgConfig + 0x38 -.4byte SioDefaultBgConfig + 0x58 -.4byte SioDefaultBgConfig + 0x78 -.4byte SioDefaultBgConfig + 0x98 - - .global gUnknown_085AA9B4 -gUnknown_085AA9B4: @ 0x085AA9B4 -@ replacing .incbin "baserom.gba", 0x005aa9b4, 0xc -.4byte gUnknown_080DA09C + 0x8 -.4byte gUnknown_080DA09C + 0x16 -.4byte gUnknown_080DA09C + 0x2a - - .global gUnknown_085AA9C0 -gUnknown_085AA9C0: @ 0x085AA9C0 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804C5F8 - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - - - .global gUnknown_085AA9D8 -gUnknown_085AA9D8: @ 0x085AA9D8 - .incbin "baserom.gba", 0x5AA9D8, 0x36 - - .global gUnknown_085AAA0E -gUnknown_085AAA0E: @ 0x085AAA0E - .incbin "baserom.gba", 0x5AAA0E, 0x3A - - .global gUnknown_085AAA48 -gUnknown_085AAA48: @ 0x085AAA48 -@ replacing .incbin "baserom.gba", 0x005aaa48, 0x8 -.4byte gUnknown_085AA9D8 + 0xe -.4byte gUnknown_085AA9D8 + 0x22 - - .global Sprite_085AAA50 -Sprite_085AAA50: @ 0x085AAA50 - .incbin "baserom.gba", 0x5AAA50, 0xE - - .global gUnknown_085AAA5E -gUnknown_085AAA5E: @ 0x085AAA5E - .incbin "baserom.gba", 0x5AAA5E, 0x1A - - .global gUnknown_085AAA78 -gUnknown_085AAA78: @ 0x085AAA78 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804C894 - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - - - .global gUnknown_085AAA90 -gUnknown_085AAA90: @ 0x085AAA90 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804CB94 - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - - - .global gUnknown_085AAAA8 -gUnknown_085AAAA8: @ 0x085AAAA8 -@ replacing .incbin "baserom.gba", 0x005aaaa8, 0x8 -.4byte gUnknown_080DA102 + 0x20 -.4byte gUnknown_080DA102 + 0x28 - - .global gUnknown_085AAAB0 -gUnknown_085AAAB0: @ 0x085AAAB0 -@ replacing .incbin "baserom.gba", 0x005aaab0, 0x14 -.4byte gUnknown_080DA132 + 0x20 -.4byte gUnknown_080DA132 + 0x18 -.4byte gUnknown_080DA132 + 0x28 -.4byte gUnknown_080DA132 + 0x10 -.4byte gUnknown_080DA132 + 0x8 - - .global Proc_085AAAC4 -Proc_085AAAC4: @ 0x085AAAC4 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804CCCC - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - - - .global gUnknown_085AAADC -gUnknown_085AAADC: @ 0x085AAADC -@ replacing .incbin "baserom.gba", 0x005aaadc, 0xc -.4byte gUnknown_080DA132 + 0x30 -.4byte gUnknown_080DA132 + 0x38 -.4byte gUnknown_080DA132 + 0x40 - - .global gUnknown_085AAAE8 -gUnknown_085AAAE8: @ 0x085AAAE8 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804CDE8 - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - - - .global gUnknown_085AAB00 -gUnknown_085AAB00: @ 0x085AAB00 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804CE5C - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - - - .global gUnknown_085AAB18 -gUnknown_085AAB18: @ 0x085AAB18 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804CF04 - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - - - .global gUnknown_085AAB30 -gUnknown_085AAB30: @ 0x085AAB30 - .incbin "baserom.gba", 0x5AAB30, 0x8 - - .global gUnknown_085AAB38 -gUnknown_085AAB38: @ 0x085AAB38 - .incbin "baserom.gba", 0x5AAB38, 0x8 - - .global gUnknown_085AAB40 -gUnknown_085AAB40: @ 0x085AAB40 - .incbin "baserom.gba", 0x5AAB40, 0x8 - - .global gUnknown_085AAB48 -gUnknown_085AAB48: @ 0x085AAB48 - @ PROC_YIELD - .short 0xe, 0x0 - .word 0x0 - @ PROC_CALL - .short 0x2, 0x0 - .word sub_804CFE0 - @ PROC_REPEAT - .short 0x3, 0x0 - .word sub_804D01C - @ PROC_END - .short 0x0, 0x0 - .word 0x0 - .global gUnknown_085AAB68 gUnknown_085AAB68: @ 0x085AAB68 @ PROC_CALL diff --git a/include/sio.h b/include/sio.h index 218f331a..66eea762 100644 --- a/include/sio.h +++ b/include/sio.h @@ -443,7 +443,7 @@ void StartLinkArenaMUDeathFade(struct MUProc *); // ??? SioWarpFx_AwaitSioWarp(???); ProcPtr StartSioWarpFx(struct Unit *, struct MUProc *, int, int, int, int, ProcPtr); // ??? sub_804C260(???); -// ??? PutLinkArenaButtonSpriteAt(???); +void PutLinkArenaButtonSpriteAt(int, int); // ??? LAButtonSprites_Loop(???); void StartLinkArenaButtonSpriteDraw(int, int, ProcPtr); // ??? EndLinkArenaButtonSpriteDraw(???); diff --git a/ldscript.txt b/ldscript.txt index 96af4275..2b792059 100644 --- a/ldscript.txt +++ b/ldscript.txt @@ -722,6 +722,7 @@ SECTIONS . = ALIGN(4); src/sio_battlemap.o(.rodata); . = ALIGN(4); data/const_data_D9F18.o(.rodata); . = ALIGN(4); src/sio_mu.o(.rodata); + . = ALIGN(4); src/sio_uiutils.o(.rodata); . = ALIGN(4); data/const_data_D9FE4.o(.rodata); . = ALIGN(4); src/uiutils.o(.rodata); . = ALIGN(4); src/uimenu.o(.rodata); @@ -972,6 +973,7 @@ SECTIONS . = ALIGN(4); data/data_5A9F48.o(.data); . = ALIGN(4); src/sio_804B920.o(.data); . = ALIGN(4); src/sio_mu.o(.data); + . = ALIGN(4); src/sio_uiutils.o(.data); . = ALIGN(4); data/data_5AA96C.o(.data); . = ALIGN(4); src/uiutils.o(.data); . = ALIGN(4); src/uimenu.o(.data); diff --git a/src/sio_uiutils.c b/src/sio_uiutils.c index 81ae3fd9..a1c722b9 100644 --- a/src/sio_uiutils.c +++ b/src/sio_uiutils.c @@ -16,15 +16,22 @@ * the Link Arena menus. */ -extern const u16 SioDefaultBgConfig[]; +extern s8 gUnk_Sio_0203DDDC; //! FE8U = 0x0804C33C void InitSioBG(void) { - u16 hack[12]; - memcpy(hack, SioDefaultBgConfig, 0x18); + // clang-format off + u16 SioDefaultBgConfig[] = + { + 0x0000, 0x6000, 0x0000, + 0x0000, 0x6800, 0x0000, + 0x0000, 0x7000, 0x0000, + 0x8000, 0x7800, 0x0000, + }; + // clang-format on - SetupBackgrounds(hack); + SetupBackgrounds(SioDefaultBgConfig); gLCDControlBuffer.bg0cnt.priority = 0; gLCDControlBuffer.bg1cnt.priority = 1; @@ -105,7 +112,17 @@ void sub_804C3EC(struct SioProc85AA980 * proc) return; } -extern u16 gUnknown_085AA96C[]; +// clang-format off + +u16 CONST_DATA gUnknown_085AA96C[] = +{ + 3, + OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x200) + OAM2_LAYER(1) + OAM2_PAL(8), + OAM0_SHAPE_32x16, OAM1_SIZE_32x16 + OAM1_X(32), OAM2_CHR(0x204) + OAM2_LAYER(1) + OAM2_PAL(8), + OAM0_SHAPE_16x16, OAM1_SIZE_16x16 + OAM1_X(64), OAM2_CHR(0x208) + OAM2_LAYER(1) + OAM2_PAL(8), +}; + +// clang-format on //! FE8U = 0x0804C47C void sub_804C47C(void) @@ -114,7 +131,18 @@ void sub_804C47C(void) return; } -extern struct ProcCmd ProcScr_085AA980[]; +// clang-format off + +struct ProcCmd CONST_DATA ProcScr_085AA980[] = +{ + PROC_YIELD, + PROC_CALL(sub_804C3EC), + PROC_REPEAT(sub_804C47C), + + PROC_END, +}; + +// clang-format on //! FE8U = 0x0804C49C void NewProc085AA980(ProcPtr parent, int b, int chr) @@ -176,19 +204,123 @@ void sub_804C590(void) return; } -extern s8 gUnk_Sio_0203DDDC; +// clang-format off + +const u16 Sprite_080D9FFC[] = +{ + 5, + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x240), + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(40), OAM2_CHR(0x244), + OAM0_SHAPE_16x16 + OAM0_Y(8), OAM1_SIZE_16x16 + OAM1_X(72), OAM2_CHR(0x248), + OAM0_SHAPE_64x32, OAM1_SIZE_64x32, OAM2_CHR(0x294), + OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), +}; + +const u16 Sprite_080DA01C[] = +{ + 5, + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x24A), + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(40), OAM2_CHR(0x24E), + OAM0_SHAPE_16x16 + OAM0_Y(8), OAM1_SIZE_16x16 + OAM1_X(72), OAM2_CHR(0x252), + OAM0_SHAPE_64x32, OAM1_SIZE_64x32, OAM2_CHR(0x294), + OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), +}; + +const u16 Sprite_080DA03C[] = +{ + 5, + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x254), + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(40), OAM2_CHR(0x258), + OAM0_SHAPE_16x16 + OAM0_Y(8), OAM1_SIZE_16x16 + OAM1_X(72), OAM2_CHR(0x25C), + OAM0_SHAPE_64x32, OAM1_SIZE_64x32, OAM2_CHR(0x294), + OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), +}; + +const u16 Sprite_080DA05C[] = +{ + 5, + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x280), + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(40), OAM2_CHR(0x284), + OAM0_SHAPE_16x16 + OAM0_Y(8), OAM1_SIZE_16x16 + OAM1_X(72), OAM2_CHR(0x288), + OAM0_SHAPE_64x32, OAM1_SIZE_64x32, OAM2_CHR(0x294), + OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), +}; + +const u16 Sprite_080DA07C[] = +{ + 5, + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x28A), + OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(40), OAM2_CHR(0x28E), + OAM0_SHAPE_16x16 + OAM0_Y(8), OAM1_SIZE_16x16 + OAM1_X(72), OAM2_CHR(0x292), + OAM0_SHAPE_64x32, OAM1_SIZE_64x32, OAM2_CHR(0x294), + OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), +}; + +const u16 * CONST_DATA gUnknown_085AA9A0[] = +{ + Sprite_080D9FFC, + Sprite_080DA01C, + Sprite_080DA03C, + Sprite_080DA05C, + Sprite_080DA07C, +}; + +const u16 gUnknown_080DA09C[] = +{ + OAM2_LAYER(1) + OAM2_PAL(5), + OAM2_LAYER(1) + OAM2_PAL(4), + OAM2_PAL(3), + OAM2_PAL(4), +}; + +const u16 Sprite_080DA0A4[] = +{ + 2, + OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2C0) + OAM2_PAL(4), + OAM0_SHAPE_16x16, OAM1_SIZE_16x16 + OAM1_X(32), OAM2_CHR(0x2C4) + OAM2_PAL(4), +}; + +const u16 Sprite_080DA0B2[] = +{ + 3, + OAM0_SHAPE_8x16, OAM1_SIZE_8x16, OAM2_CHR(0x2C0) + OAM2_PAL(4), + OAM0_SHAPE_8x16, OAM1_SIZE_8x16 + OAM1_X(8), OAM2_CHR(0x2C6) + OAM2_PAL(4), + OAM0_SHAPE_32x16, OAM1_SIZE_32x16 + OAM1_X(16), OAM2_CHR(0x2C2) + OAM2_PAL(4), +}; + +const u16 Sprite_080DA0C6[] = +{ + 3, + OAM0_SHAPE_8x16, OAM1_SIZE_8x16, OAM2_CHR(0x2C0) + OAM2_PAL(4), + OAM0_SHAPE_8x16, OAM1_SIZE_8x16 + OAM1_X(8), OAM2_CHR(0x2C7) + OAM2_PAL(4), + OAM0_SHAPE_32x16, OAM1_SIZE_32x16 + OAM1_X(16), OAM2_CHR(0x2C2) + OAM2_PAL(4), +}; + +const u16 * CONST_DATA gUnknown_085AA9B4[] = +{ + Sprite_080DA0A4, + Sprite_080DA0B2, + Sprite_080DA0C6, +}; -extern const u8 gUnknown_080DA0DA[]; +// clang-format on //! FE8U = 0x0804C5A4 void sub_804C5A4(u8 idx) { - u8 hack[0x20]; - memcpy(hack, gUnknown_080DA0DA, 0x20); + // clang-format off + const u8 gUnknown_080DA0DA[] = + { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, + 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, + }; + // clang-format on if (gUnk_Sio_0203DDDC == 0) { - int color = hack[idx] + 0x10; + int color = gUnknown_080DA0DA[idx] + 0x10; gPaletteBuffer[0x131] = ((color) << 10) + ((color) << 5) + (color); EnablePaletteSync(); } @@ -213,14 +345,10 @@ struct SioProc85AA9C0 /* 3E */ u8 unk_3e; }; -extern u16 * gUnknown_085AA9A0[]; -extern u16 gUnknown_080DA09C[]; -extern u16 * gUnknown_085AA9B4[]; - //! FE8U = 0x0804C5F8 void sub_804C5F8(struct SioProc85AA9C0 * proc) { - int oam2 = 0x000082C8; + int oam2 = OAM2_CHR(0x2C8) + OAM2_PAL(8); PutSprite(4, proc->unk_2a, proc->unk_2c, gUnknown_085AA9A0[proc->unk_2f], gUnknown_080DA09C[proc->unk_2e]); @@ -271,7 +399,16 @@ void sub_804C5F8(struct SioProc85AA9C0 * proc) return; } -extern struct ProcCmd gUnknown_085AA9C0[]; +// clang-format off + +struct ProcCmd CONST_DATA gUnknown_085AA9C0[] = +{ + PROC_YIELD, + PROC_REPEAT(sub_804C5F8), + PROC_END, +}; + +// clang-format on //! FE8U = 0x0804C758 ProcPtr sub_804C758(ProcPtr parent, u8 x1, u8 y1, u8 d, u8 e) @@ -314,21 +451,37 @@ void sub_804C7DC(struct SioProc85AA9C0 * proc, s16 x, s16 y) return; } -extern const u8 gUnknown_080DA102[]; - extern u16 gUnknown_085ADDE8[]; +// clang-format off + +const u16 gUnknown_080DA0FA[] = +{ + 1, + OAM0_SHAPE_64x32 + OAM0_AFFINE_ENABLE, OAM1_SIZE_64x32, OAM2_CHR(0x300) + OAM2_LAYER(1), +}; + +// clang-format on + //! FE8U = 0x0804C7E4 void sub_804C7E4(void) { - u8 hack[0x20]; u16 * ptr = gUnknown_085ADDE8; - memcpy(hack, gUnknown_080DA102, 0x20); + + // clang-format off + const u8 gUnknown_080DA102[] = + { + 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, + 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + }; + // clang-format on if (gUnk_Sio_0203DDDC == 0) { int a = (GetGameClock() % 0x40); - int idx = hack[a / 2]; + int idx = gUnknown_080DA102[a / 2]; gPaletteBuffer[0x18E] = ptr[idx]; EnablePaletteSync(); @@ -337,21 +490,27 @@ void sub_804C7E4(void) return; } -extern const u8 gUnknown_080DA0DA[]; - extern u16 gUnknown_085ADE48[]; //! FE8U = 0x0804C83C void sub_804C83C(void) { - u8 hack[0x20]; u16 * ptr = gUnknown_085ADE48; - memcpy(hack, gUnknown_080DA0DA, 0x20); + + // clang-format off + const u8 gUnknown_080DA0DA[] = + { + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, + 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, + 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, + }; + // clang-format on if (gUnk_Sio_0203DDDC == 0) { int a = (GetGameClock() % 0x40); - int idx = hack[a / 2]; + int idx = gUnknown_080DA0DA[a / 2]; gPaletteBuffer[0x13E] = ptr[idx]; EnablePaletteSync(); @@ -372,20 +531,70 @@ struct SioProc85AAA78 /* 48 */ int unk_48; }; -s8 gUnk_Sio_0203DDDC; +// clang-format off -extern u16 gUnknown_085AA9D8[]; -extern u16 gUnknown_085AAA0E[]; -extern u16 Sprite_085AAA50[]; -extern u16 gUnknown_085AAA5E[]; +u16 CONST_DATA gUnknown_085AA9D8[] = +{ + 2, + OAM0_SHAPE_32x8, OAM1_SIZE_32x8, OAM2_CHR(0x2B8) + OAM2_PAL(8), + OAM0_SHAPE_32x8, OAM1_SIZE_32x8 + OAM1_X(32), OAM2_CHR(0x2BC) + OAM2_PAL(8), +}; -extern u16 gUnknown_080DA0FA[]; +u16 CONST_DATA Sprite_085AA9E6[] = +{ + 3, + OAM0_SHAPE_32x8, OAM1_SIZE_32x8, OAM2_CHR(0x27B) + OAM2_LAYER(1) + OAM2_PAL(8), + OAM0_SHAPE_32x8, OAM1_SIZE_32x8 + OAM1_X(32), OAM2_CHR(0x27B) + OAM2_LAYER(1) + OAM2_PAL(8), + OAM0_SHAPE_8x8, OAM1_SIZE_8x8 + OAM1_X(64), OAM2_CHR(0x27F) + OAM2_LAYER(1) + OAM2_PAL(8), +}; -extern u16 gUnknown_08A1BD40[]; +u16 CONST_DATA Sprite_085AA9FA[] = +{ + 3, + OAM0_SHAPE_32x8, OAM1_SIZE_32x8, OAM2_CHR(0x29B) + OAM2_LAYER(1) + OAM2_PAL(8), + OAM0_SHAPE_32x8, OAM1_SIZE_32x8 + OAM1_X(32), OAM2_CHR(0x29B) + OAM2_LAYER(1) + OAM2_PAL(8), + OAM0_SHAPE_8x8, OAM1_SIZE_8x8 + OAM1_X(64), OAM2_CHR(0x29F) + OAM2_LAYER(1) + OAM2_PAL(8), +}; + +u16 CONST_DATA gUnknown_085AAA0E[] = +{ + 9, + OAM0_SHAPE_16x8, OAM1_SIZE_16x8, OAM2_CHR(0x277) + OAM2_PAL(3), + OAM0_SHAPE_16x8, OAM1_SIZE_16x8 + OAM1_X(16), OAM2_CHR(0x278) + OAM2_PAL(3), + OAM0_SHAPE_16x8, OAM1_SIZE_16x8 + OAM1_X(32), OAM2_CHR(0x278) + OAM2_PAL(3), + OAM0_SHAPE_16x8, OAM1_SIZE_16x8 + OAM1_X(48), OAM2_CHR(0x278) + OAM2_PAL(3), + OAM0_SHAPE_16x8, OAM1_SIZE_16x8 + OAM1_X(64), OAM2_CHR(0x278) + OAM2_PAL(3), + OAM0_SHAPE_16x8, OAM1_SIZE_16x8 + OAM1_X(80), OAM2_CHR(0x278) + OAM2_PAL(3), + OAM0_SHAPE_16x8, OAM1_SIZE_16x8 + OAM1_X(96), OAM2_CHR(0x278) + OAM2_PAL(3), + OAM0_SHAPE_16x8, OAM1_SIZE_16x8 + OAM1_X(112), OAM2_CHR(0x278) + OAM2_PAL(3), + OAM0_SHAPE_16x8, OAM1_SIZE_16x8 + OAM1_X(128), OAM2_CHR(0x279) + OAM2_PAL(3), +}; + +u16 * CONST_DATA gUnknown_085AAA48[] = +{ + Sprite_085AA9E6, + Sprite_085AA9FA, +}; + +u16 CONST_DATA Sprite_085AAA50[] = +{ + 2, + OAM0_SHAPE_64x32, OAM1_SIZE_64x32, OAM2_CHR(0x240) + OAM2_PAL(3), + OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x248) + OAM2_PAL(3), +}; + +u16 CONST_DATA gUnknown_085AAA5E[] = +{ + 4, + OAM0_SHAPE_32x32, OAM1_SIZE_32x32, OAM2_CHR(0x24C) + OAM2_PAL(3), + OAM0_SHAPE_32x8, OAM1_SIZE_32x8 + OAM1_X(32), OAM2_CHR(0x290) + OAM2_PAL(3), + OAM0_SHAPE_32x8 + OAM0_Y(24), OAM1_SIZE_32x8 + OAM1_X(32), OAM2_CHR(0x2AD) + OAM2_PAL(3), + OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64) + OAM1_HFLIP, OAM2_CHR(0x24C) + OAM2_PAL(3), +}; -extern u16 * gUnknown_085AAA48[]; +// clang-format on -void PutLinkArenaButtonSpriteAt(int, int); +extern u16 gUnknown_08A1BD40[]; //! FE8U = 0x0804C894 void sub_804C894(struct SioProc85AAA78 * proc) @@ -513,7 +722,16 @@ struct SioTeamListProc /* 5C */ s8 unk_5c; }; -extern struct ProcCmd gUnknown_085AAA78[]; +// clang-format off + +struct ProcCmd CONST_DATA gUnknown_085AAA78[] = +{ + PROC_YIELD, + PROC_REPEAT(sub_804C894), + PROC_END, +}; + +// clang-format on void sub_804CC14(int, int, int, int, int, ProcPtr); @@ -583,14 +801,23 @@ void sub_804CB94(struct SioProc85AAA90 * proc) continue; } - sub_8027E4C(4, proc->unk_2c + j * 0xe, y, 0x400, unit); + sub_8027E4C(4, proc->unk_2c + j * 0xe, y, OAM2_LAYER(1), unit); } } return; } -extern struct ProcCmd gUnknown_085AAA90[]; +// clang-format off + +struct ProcCmd CONST_DATA gUnknown_085AAA90[] = +{ + PROC_YIELD, + PROC_REPEAT(sub_804CB94), + PROC_END, +}; + +// clang-format on //! FE8U = 0x0804CC14 void sub_804CC14(int x, int y, int upperBound, int lowerBound, int count, ProcPtr parent) @@ -658,12 +885,72 @@ struct SioProc85AAAC4 /* 44 */ int unk_44; }; -extern u16 * gUnknown_085AAAA8[]; -extern u16 * gUnknown_085AAAB0[]; +// clang-format off -extern u16 gUnknown_080DA132[]; -extern u16 gUnknown_085AA9D8[]; -extern u16 Sprite_085AAA50[]; +const u16 Sprite_080DA122[] = +{ + 1, + OAM0_SHAPE_16x16, OAM1_SIZE_16x16, OAM2_CHR(0x251) + OAM2_LAYER(1) + OAM2_PAL(9), +}; + +const u16 Sprite_080DA12A[] = +{ + 1, + OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x253) + OAM2_LAYER(1) + OAM2_PAL(9), +}; + +const u16 * CONST_DATA gUnknown_085AAAA8[] = +{ + Sprite_080DA122, + Sprite_080DA12A, +}; + +const u16 gUnknown_080DA132[] = +{ + 1, + OAM0_SHAPE_8x8, OAM1_SIZE_8x8, OAM2_CHR(0x29A) + OAM2_LAYER(2) + OAM2_PAL(9), +}; + +const u16 Sprite_080DA13A[] = +{ + 1, + OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2C0) + OAM2_LAYER(1), +}; + +const u16 Sprite_080DA142[] = +{ + 1, + OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2C4) + OAM2_LAYER(1), +}; + +const u16 Sprite_080DA14A[] = +{ + 1, + OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2C8) + OAM2_LAYER(1), +}; + +const u16 Sprite_080DA152[] = +{ + 1, + OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2CC) + OAM2_LAYER(1), +}; + +const u16 Sprite_080DA15A[] = +{ + 1, + OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2D0) + OAM2_LAYER(1), +}; + +const u16 * CONST_DATA gUnknown_085AAAB0[] = +{ + Sprite_080DA152, + Sprite_080DA14A, + Sprite_080DA15A, + Sprite_080DA142, + Sprite_080DA13A, +}; + +// clang-format on //! FE8U = 0x0804CCCC void sub_804CCCC(struct SioProc85AAAC4 * proc) @@ -698,7 +985,16 @@ void sub_804CCCC(struct SioProc85AAAC4 * proc) return; } -extern struct ProcCmd Proc_085AAAC4[]; +// clang-format off + +struct ProcCmd CONST_DATA Proc_085AAAC4[] = +{ + PROC_YIELD, + PROC_REPEAT(sub_804CCCC), + PROC_END, +}; + +// clang-format on //! FE8U = 0x0804CD90 ProcPtr NewProc_085AAAC4(ProcPtr parent, int x, int y) @@ -745,7 +1041,34 @@ struct SioProc85AAAE8 /* 30 */ s16 unk_30; }; -extern u16 * gUnknown_085AAADC[]; +// clang-format off + +const u16 Sprite_080DA162[] = +{ + 1, + OAM0_SHAPE_16x16, OAM1_SIZE_16x16, OAM2_CHR(0x2D4) + OAM2_LAYER(1) + OAM2_PAL(8), +}; + +const u16 Sprite_080DA16A[] = +{ + 1, + OAM0_SHAPE_16x16, OAM1_SIZE_16x16, OAM2_CHR(0x2D6) + OAM2_LAYER(1) + OAM2_PAL(8), +}; + +const u16 Sprite_080DA172[] = +{ + 1, + OAM0_SHAPE_16x16, OAM1_SIZE_16x16, OAM2_CHR(0x2D8) + OAM2_LAYER(1) + OAM2_PAL(8), +}; + +const u16 * CONST_DATA gUnknown_085AAADC[] = +{ + Sprite_080DA162, + Sprite_080DA16A, + Sprite_080DA172, +}; + +// clang-format on //! FE8U = 0x0804CDE8 void sub_804CDE8(struct SioProc85AAAE8 * proc) @@ -784,7 +1107,16 @@ void sub_804CE5C(struct SioProc85AAAE8 * proc) return; } -extern struct ProcCmd gUnknown_085AAAE8[]; +// clang-format off + +struct ProcCmd CONST_DATA gUnknown_085AAAE8[] = +{ + PROC_YIELD, + PROC_REPEAT(sub_804CDE8), + PROC_END, +}; + +// clang-format on //! FE8U = 0x0804CE8C ProcPtr sub_804CE8C(ProcPtr parent) @@ -799,7 +1131,16 @@ ProcPtr sub_804CE8C(ProcPtr parent) return proc; } -extern struct ProcCmd gUnknown_085AAB00[]; +// clang-format off + +struct ProcCmd CONST_DATA gUnknown_085AAB00[] = +{ + PROC_YIELD, + PROC_REPEAT(sub_804CE5C), + PROC_END, +}; + +// clang-format on //! FE8U = 0x0804CEB0 void sub_804CEB0(void) @@ -846,12 +1187,61 @@ struct SioProc85AAB18 /* 4C */ s16 unk_4c; }; -extern s16 gUnknown_080DA1CA[]; +// clang-format off + +const u16 gUnknown_080DA17A[] = +{ + 3, + OAM0_SHAPE_32x8, OAM1_SIZE_32x8, OAM2_CHR(0x2CE) + OAM2_PAL(6), + OAM0_SHAPE_32x8, OAM1_SIZE_32x8 + OAM1_X(32), OAM2_CHR(0x2CF) + OAM2_PAL(6), + OAM0_SHAPE_8x16 + OAM0_Y(8), OAM1_SIZE_8x16, OAM2_CHR(0x2D3) + OAM2_PAL(6), +}; + +const u16 gUnknown_080DA18E[] = +{ + 3, + OAM0_SHAPE_32x8, OAM1_SIZE_32x8 + OAM1_X(16) + OAM1_HFLIP, OAM2_CHR(0x2CF) + OAM2_PAL(6), + OAM0_SHAPE_32x8, OAM1_SIZE_32x8 + OAM1_X(48) + OAM1_HFLIP, OAM2_CHR(0x2CE) + OAM2_PAL(6), + OAM0_SHAPE_8x16 + OAM0_Y(8), OAM1_SIZE_8x16 + OAM1_X(72) + OAM1_HFLIP, OAM2_CHR(0x2D3) + OAM2_PAL(6), +}; + +const u16 gUnknown_080DA1A2[] = +{ + 3, + OAM0_SHAPE_32x8 + OAM0_Y(24), OAM1_SIZE_32x8 + OAM1_VFLIP, OAM2_CHR(0x2CE) + OAM2_PAL(6), + OAM0_SHAPE_32x8 + OAM0_Y(24), OAM1_SIZE_32x8 + OAM1_X(32) + OAM1_VFLIP, OAM2_CHR(0x2CF) + OAM2_PAL(6), + OAM0_SHAPE_8x16 + OAM0_Y(8), OAM1_SIZE_8x16 + OAM1_VFLIP, OAM2_CHR(0x2D3) + OAM2_PAL(6), +}; + +const u16 gUnknown_080DA1B6[] = +{ + 3, + OAM0_SHAPE_32x8 + OAM0_Y(24), OAM1_SIZE_32x8 + OAM1_X(16) + OAM1_HFLIP + OAM1_VFLIP, OAM2_CHR(0x2CF) + OAM2_PAL(6), + OAM0_SHAPE_32x8 + OAM0_Y(24), OAM1_SIZE_32x8 + OAM1_X(48) + OAM1_HFLIP + OAM1_VFLIP, OAM2_CHR(0x2CE) + OAM2_PAL(6), + OAM0_SHAPE_8x16 + OAM0_Y(8), OAM1_SIZE_8x16 + OAM1_X(72) + OAM1_HFLIP + OAM1_VFLIP, OAM2_CHR(0x2D3) + OAM2_PAL(6), +}; + +const s16 gUnknown_080DA1CA[] = +{ + 0x0002, 0x0003, + 0x0002, 0x0006, + 0x0006, 0x0009, + 0x0008, 0x000C, + 0x0007, 0x000B, + 0x0007, 0x000B, + 0x0006, 0x000A, + 0x0006, 0x0009, + 0x0005, 0x0008, + 0x0005, 0x0007, + 0x0004, 0x0006, + 0x0004, 0x0005, + 0x0003, 0x0004, + 0x0002, 0x0003, + 0x0001, 0x0001, + 0x0000, 0x0000, +}; -extern u16 gUnknown_080DA17A[]; -extern u16 gUnknown_080DA18E[]; -extern u16 gUnknown_080DA1A2[]; -extern u16 gUnknown_080DA1B6[]; +// clang-format on //! FE8U = 0x0804CF04 void sub_804CF04(struct SioProc85AAB18 * proc) @@ -885,7 +1275,16 @@ void sub_804CF04(struct SioProc85AAB18 * proc) return; } -extern struct ProcCmd gUnknown_085AAB18[]; +// clang-format off + +struct ProcCmd CONST_DATA gUnknown_085AAB18[] = +{ + PROC_YIELD, + PROC_REPEAT(sub_804CF04), + PROC_END, +}; + +// clang-format on //! FE8U = 0x0804CFB8 ProcPtr sub_804CFB8(ProcPtr parent, int b, int c) @@ -926,9 +1325,27 @@ void sub_804CFE0(struct SioProc85AAB48 * proc) return; } -extern u16 gUnknown_085AAB30[]; -extern u16 gUnknown_085AAB38[]; -extern u16 gUnknown_085AAB40[]; +// clang-format off + +u16 CONST_DATA gUnknown_085AAB30[] = +{ + 1, + OAM0_SHAPE_8x8, OAM1_SIZE_8x8, OAM2_CHR(0x257) + OAM2_LAYER(1) + OAM2_PAL(8), +}; + +u16 CONST_DATA gUnknown_085AAB38[] = +{ + 1, + OAM0_SHAPE_8x8, OAM1_SIZE_8x8 + OAM1_VFLIP, OAM2_CHR(0x257) + OAM2_LAYER(1) + OAM2_PAL(8), +}; + +u16 CONST_DATA gUnknown_085AAB40[] = +{ + 1, + OAM0_SHAPE_8x8, OAM1_SIZE_8x8, OAM2_CHR(0x25D) + OAM2_LAYER(1) + OAM2_PAL(8), +}; + +// clang-format on //! FE8U = 0x0804D01C void sub_804D01C(struct SioProc85AAB48 * proc) @@ -997,7 +1414,18 @@ void sub_804D01C(struct SioProc85AAB48 * proc) return; } -extern struct ProcCmd gUnknown_085AAB48[]; +// clang-format off + +struct ProcCmd CONST_DATA gUnknown_085AAB48[] = +{ + PROC_YIELD, + PROC_CALL(sub_804CFE0), + PROC_REPEAT(sub_804D01C), + + PROC_END, +}; + +// clang-format on //! FE8U = 0x0804D1E0 void sub_804D1E0(int a, int b, u8 c, u8 d, u8 e, ProcPtr parent) From 9d13670932c7fe83e8311d9673d4bb300e364e06 Mon Sep 17 00:00:00 2001 From: Eebit <eight_bit_hero@yahoo.ca> Date: Mon, 24 Jun 2024 22:45:50 -0400 Subject: [PATCH 3/3] (sio_uiutils) Cleanup and renames --- asm/code_sio.s | 8 +- asm/code_sio_8048260.s | 4 +- data/data_5A92E0.s | 2 +- include/sio.h | 122 +++++--- include/variables.h | 40 +-- src/sio_804B920.c | 4 +- src/sio_event.c | 2 +- src/sio_menu.c | 12 +- src/sio_postbattle.c | 4 +- src/sio_result.c | 16 +- src/sio_rulesettings.c | 8 +- src/sio_tactician.c | 6 +- src/sio_teamlist.c | 62 +--- src/sio_uiutils.c | 643 +++++++++++++++++++---------------------- 14 files changed, 448 insertions(+), 485 deletions(-) diff --git a/asm/code_sio.s b/asm/code_sio.s index 05049a95..b61daac7 100644 --- a/asm/code_sio.s +++ b/asm/code_sio.s @@ -687,7 +687,7 @@ _08045E46: adds r1, r1, r2 ldrb r1, [r1] movs r2, #0 - bl NewProc085AA980 + bl StartLinkArenaTitleBanner bl sub_804C508 ldr r0, [r6, #0x30] movs r1, #0xe9 @@ -1912,7 +1912,7 @@ sub_8046838: @ 0x08046838 bl SetTextFont bl ResetTextFont bl sub_8043164 - bl sub_804CEB0 + bl StartRuleSettingSpriteDrawStatic add r0, sp, #4 bl LoadLinkArenaRuleSettings movs r0, #1 @@ -1973,7 +1973,7 @@ _080468D4: ldrb r1, [r0] mov r0, r9 movs r2, #0 - bl NewProc085AA980 + bl StartLinkArenaTitleBanner bl sub_804C508 ldr r0, _080469A8 @ 0x0000074B movs r1, #1 @@ -2334,7 +2334,7 @@ _08046BB0: adds r0, r7, #0 movs r1, #1 movs r2, #0 - bl NewProc085AA980 + bl StartLinkArenaTitleBanner bl sub_804C508 movs r0, #0xf bl BG_EnableSyncByMask diff --git a/asm/code_sio_8048260.s b/asm/code_sio_8048260.s index 4dbc5536..98889383 100644 --- a/asm/code_sio_8048260.s +++ b/asm/code_sio_8048260.s @@ -268,7 +268,7 @@ _0804D494: adds r0, r0, r3 str r0, [sp] movs r0, #4 - ldr r3, _0804D648 @ Sprite_085AAA50 + ldr r3, _0804D648 @ Sprite_LinkArena_NameBanner bl PutSprite ldr r4, _0804D64C @ gSinLookup+0x80 movs r1, #0 @@ -464,7 +464,7 @@ _0804D636: pop {r0} bx r0 .align 2, 0 -_0804D648: .4byte Sprite_085AAA50 +_0804D648: .4byte Sprite_LinkArena_NameBanner _0804D64C: .4byte gSinLookup+0x80 _0804D650: .4byte gSinLookup _0804D654: .4byte 0x0000014F diff --git a/data/data_5A92E0.s b/data/data_5A92E0.s index 08e3882d..e0ebcbee 100644 --- a/data/data_5A92E0.s +++ b/data/data_5A92E0.s @@ -217,7 +217,7 @@ ProcScr_SIOBAT: @ 0x085A9888 .word 0x0 @ PROC_END_EACH .short 0x9, 0x0 - .word gUnknown_085AAB00 + .word ProcScr_RuleSettingSpriteDraw_Static @ PROC_CALL .short 0x2, 0x0 .word nullsub_13 diff --git a/include/sio.h b/include/sio.h index 66eea762..e39b34ac 100644 --- a/include/sio.h +++ b/include/sio.h @@ -134,6 +134,45 @@ void SioPlaySoundEffect(int); // ??? sub_8043244(???); bool IsKeyInputSequenceComplete(const u16 * list); // ??? sub_80432F4(???); + +/* sio_teamlist.c */ + +struct SioProc85AAA78 +{ + /* 00 */ PROC_HEADER; + /* 2C */ int unk_2c; + /* 30 */ s16 unk_30[5]; + /* 3A */ u8 unk_3a[5]; + /* 40 */ int unk_40; + /* 44 */ s8 unk_44; + /* 45 */ STRUCT_PAD(0x45, 0x48); + /* 48 */ int unk_48; +}; + +struct SioTeamListProc +{ + /* 00 */ PROC_HEADER; + /* 2C */ struct SioProc85AAA78 * unk_2c; + /* 30 */ ProcPtr pSioHoldProc; + /* 34 */ int numActiveOptions; + /* 38 */ int unk_38; + /* 3C */ int optionIdx; + /* 40 */ int unk_40; + /* 44 */ int unk_44; + /* 48 */ u8 unk_48; + /* 49 */ STRUCT_PAD(0x49, 0x4A); + /* 4A */ u16 yBg1; + /* 4C */ s8 unk_4c; + /* 4D */ u8 validOptions[5]; + /* 52 */ u8 selectedOption; + /* 53 */ u8 selectedTeam; + /* 54 */ u8 unk_54; + /* 55 */ u8 unk_55; + /* 56 */ STRUCT_PAD(0x56, 0x58); + /* 58 */ int unk_58; + /* 5C */ s8 unk_5c; +}; + // ??? StartLinkArenaTeamList(???); // ??? SioTeamList_Init(???); // ??? CanBuildNewLinkArenaTeam(???); @@ -244,18 +283,27 @@ void DrawLinkArenaModeIcon(u16 *, u32); // ??? SioRuleSettings_Init(???); // ??? SioRuleSettings_Loop_Main(???); -struct Proc85AA9C0 +struct SioProc85AA9C0 { /* 00 */ PROC_HEADER; - /* 2A */ s16 unk_2a; - /* 2C */ s16 unk_2c; - /* 2E */ s8 unk_2e; + /* 2A */ s16 xBase; + /* 2C */ s16 yBase; + /* 2E */ u8 unk_2e; + /* 2F */ u8 unk_2f; + /* 30 */ u8 unk_30; + /* 32 */ s16 unk_32; + /* 34 */ s16 unk_34; + /* 36 */ u16 unk_36; + /* 38 */ u16 unk_38; + /* 3A */ s16 unk_3a; + /* 3C */ s16 unk_3c; + /* 3E */ u8 unk_3e; }; struct SioMenuProc { /* 00 */ PROC_HEADER; - /* 2C */ struct Proc85AA9C0 * unk_2c[5]; + /* 2C */ struct SioProc85AA9C0 * unk_2c[5]; /* 40 */ u8 unk_40[4]; /* 44 */ s8 unk_44; /* 48 */ int unk_48; @@ -452,9 +500,9 @@ void sub_804C3A0(int, int); void sub_804C3A4(int); void nullsub_13(void); // ??? sub_804C3AC(???); -// ??? sub_804C3EC(???); -// ??? sub_804C47C(???); -void NewProc085AA980(ProcPtr parent, int, int); +// ??? LATitleBanner_Init(???); +// ??? LATitleBanner_Loop(???); +void StartLinkArenaTitleBanner(ProcPtr parent, int, int); // ??? sub_804C4F8(???); void sub_804C508(void); void sub_804C558(void); @@ -462,31 +510,31 @@ void sub_804C558(void); // ??? sub_804C5A4(???); // ??? sub_804C5F8(???); ProcPtr sub_804C758(ProcPtr, u8, u8, u8, u8); -// void sub_804C7C8(ProcPtr, int, int, int, int); TODO -// void sub_804C7DC(ProcPtr, s16, s16); TODO +void sub_804C7C8(struct SioProc85AA9C0 * proc, int, int, int, int); +void sub_804C7DC(struct SioProc85AA9C0 * proc, s16 x, s16 y); // ??? sub_804C7E4(???); // ??? sub_804C83C(???); // ??? sub_804C894(???); -// ProcPtr sub_804CAEC(ProcPtr, int, u8 *); TODO -// ??? sub_804CB94(???); -// ??? sub_804CC14(???); -void sub_804CC5C(int);; -// ??? sub_804CC78(???); -// ??? sub_804CCCC(???); -ProcPtr NewProc_085AAAC4(ProcPtr parent, int a, int b); -void sub_804CDD0(void *, int, int, int, int, int); -// ??? sub_804CDE8(???); -// ??? sub_804CE5C(???); -ProcPtr sub_804CE8C(ProcPtr); -// ??? sub_804CEB0(???); -void sub_804CEC4(ProcPtr, s16, s16, s16); -// ??? sub_804CECC(???); -// ??? sub_804CF04(???); -ProcPtr sub_804CFB8(ProcPtr, int, int); -// ??? sub_804CFE0(???); -// ??? sub_804D01C(???); -void sub_804D1E0(int, int, u8, u8, u8, ProcPtr); -void sub_804D24C(u8, s16); +ProcPtr sub_804CAEC(struct SioTeamListProc * parent, int numActiveOptions, u8 * buf); +// ??? LATeamSpriteDraw_Loop(???); +void PutLinkArenaTeamSprites(int x, int y, int upperBound, int lowerBound, int count, ProcPtr parent); +void ScrollMultiArenaTeamSprites(int);; +// ??? UpdateNameEntrySpriteGlow(???); +// ??? NameEntrySpriteDraw_Loop(???); +ProcPtr StartNameEntrySpriteDraw(ProcPtr parent, int a, int b); +void UpdateNameEntrySpriteDraw(void *, int, int, int, int, int); +// ??? RuleSettingSprites_Interactive_Loop(???); +// ??? RuleSettingSprites_Static_Loop(???); +ProcPtr StartRuleSettingSpriteDrawInteractive(ProcPtr); +// ??? StartRuleSettingSpriteDrawStatic(???); +void UpdateRuleSettingSprites(ProcPtr, s16, s16, s16); +// ??? UpdateSioMenuBurstGlow(???); +// ??? SioMenuBurstFx_Loop(???); +ProcPtr StartSioMenuBurstFx(ProcPtr, int, int); +// ??? LinkArenaMenuScroll_Init(???); +// ??? LinkArenaMenuScroll_Loop(???); +void StartLinkArenaMenuScrollBar(int, int, u8, u8, u8, ProcPtr); +void UpdateLinkArenaMenuScrollBar(u8, s16); // ??? sub_804D2A4(???); // ??? sub_804D37C(???); // ??? StopBGM2(???); @@ -550,7 +598,7 @@ extern int gUnk_Sio_0203DD8C; // extern ??? gUnk_Sio_0203DD95 // extern ??? gUnk_Sio_0203DD9A // extern ??? gUnk_Sio_0203DDB4 -// extern ??? gUnk_Sio_0203DDDC +extern s8 gUnk_Sio_0203DDDC; // extern ??? gUnknown_080D8714 extern s16 gUnknown_080D9C9E[]; @@ -593,13 +641,13 @@ extern u16 const Sprite_080D9E0E[]; // extern ??? SioDefaultBgConfig // extern ??? gUnknown_080DA09C // extern ??? gUnknown_080DA0DA -// extern ??? gUnknown_080DA0FA +// extern ??? Sprite_LinkArena_PressStart // extern ??? gUnknown_080DA102 -// extern ??? gUnknown_080DA132 -// extern ??? gUnknown_080DA17A -// extern ??? gUnknown_080DA18E -// extern ??? gUnknown_080DA1A2 -// extern ??? gUnknown_080DA1B6 +// extern ??? Sprite_NameEntry_PositionIndicator +// extern ??? Sprite_SioMenuBurst_TopLeft +// extern ??? Sprite_SioMenuBurst_TopRight +// extern ??? Sprite_SioMenuBurst_BottomLeft +// extern ??? Sprite_SioMenuBurst_BottomRight // extern ??? gUnknown_080DA1CA // extern ??? gUnknown_080DA20C // extern ??? gUnknown_080DA21C diff --git a/include/variables.h b/include/variables.h index c7470cd7..473c8e69 100644 --- a/include/variables.h +++ b/include/variables.h @@ -557,29 +557,29 @@ extern u16 CONST_DATA Pal_EventCursorShinning[]; // extern ??? ProcScr_SIOWARPFX // extern ??? ProcScr_SioWarpFxPartial // extern ??? ProcScr_LAButtonSpriteDraw -// extern ??? gUnknown_085AA96C -// extern ??? ProcScr_085AA980 -// extern ??? gUnknown_085AA9A0 -// extern ??? gUnknown_085AA9B4 -// extern ??? gUnknown_085AA9C0 -// extern ??? gUnknown_085AA9D8 +// extern ??? Sprite_LinkArena_MenuTitle +// extern ??? ProcScr_LinkArenaTitleBanner +// extern ??? SpriteArray_SioMenuItems +// extern ??? SpriteArray_SioMenuTeamCount +// extern ??? ProcScr_085AA9C0 +// extern ??? Sprite_LinkArena_TeamName // extern ??? gUnknown_085AAA0E // extern ??? gUnknown_085AAA48 -extern u16 Sprite_085AAA50[]; // sprite +extern u16 Sprite_LinkArena_NameBanner[]; // sprite // extern ??? gUnknown_085AAA5E -// extern ??? gUnknown_085AAA78 -// extern ??? gUnknown_085AAA90 -// extern ??? gUnknown_085AAAA8 -// extern ??? gUnknown_085AAAB0 -// extern ??? Proc_085AAAC4 -// extern ??? gUnknown_085AAADC -// extern ??? gUnknown_085AAAE8 -// extern ??? gUnknown_085AAB00 -// extern ??? gUnknown_085AAB18 -// extern ??? gUnknown_085AAB30 -// extern ??? gUnknown_085AAB38 -// extern ??? gUnknown_085AAB40 -// extern ??? gUnknown_085AAB48 +// extern ??? ProcScr_085AAA78 +// extern ??? ProcScr_LinkArenaTeamSpriteDraw +// extern ??? SpriteArray_NameEntryCursor +// extern ??? SpriteArray_NameEntryIcons +// extern ??? ProcScr_NameEntrySpriteDraw +// extern ??? SpriteArray_RuleSettingIcons +// extern ??? ProcScr_RuleSettingSpriteDraw_Interactive +// extern ??? ProcScr_RuleSettingSpriteDraw_Static +// extern ??? ProcScr_SioMenuBurstFx +// extern ??? Sprite_LAMenuScrollBar_UpArrow +// extern ??? Sprite_LAMenuScrollBar_DownArrow +// extern ??? Sprite_LinkArenaMenuScrollBar +// extern ??? ProcScr_LinkArenaMenuScrollBar // extern ??? gUnknown_085AABB8 // extern ??? gUnknown_085AABC8 // extern ??? gUnknown_085AABD8 diff --git a/src/sio_804B920.c b/src/sio_804B920.c index eec78977..7f9f7b0d 100644 --- a/src/sio_804B920.c +++ b/src/sio_804B920.c @@ -3,6 +3,8 @@ #include "hardware.h" #include "bmlib.h" +#include "sio.h" + struct SioProc85AA7B4 { /* 00 */ PROC_HEADER; @@ -14,8 +16,6 @@ struct SioProc85AA7B4 extern s16 gUnk_Sio_02000F00[]; -extern u8 gUnk_Sio_0203DDDC; - extern s16 * gUnk_Sio_02001180; extern s16 * gUnk_Sio_02001184; extern s16 * gUnk_Sio_02001188; diff --git a/src/sio_event.c b/src/sio_event.c index e82415e8..131724a6 100644 --- a/src/sio_event.c +++ b/src/sio_event.c @@ -345,7 +345,7 @@ void sub_804879C(void) void sub_80487C0(struct Proc * proc) { int i; - struct Proc85AA9C0 ** iter; + struct SioProc85AA9C0 ** iter; struct SioMenuProc * pSioMenuProc = proc->proc_parent; diff --git a/src/sio_menu.c b/src/sio_menu.c index e340bb00..e1be6d46 100644 --- a/src/sio_menu.c +++ b/src/sio_menu.c @@ -14,10 +14,6 @@ #include "constants/faces.h" -// FIXME -void sub_804C7C8(ProcPtr, int, int, int, int); -void sub_804C7DC(ProcPtr, s16, s16); - //! FE8U = 0x08047A54 int sub_8047A54(struct SioMenuProc * proc, int lineNum) { @@ -153,7 +149,7 @@ void SioMenu_LoadGraphics(struct SioMenuProc * proc) proc->unk_2c[i] = sub_804C758(proc, 0xb0, 0xa0, i, proc->unk_40[i]); } - NewProc085AA980(proc->unk_2c[0], 0, 0); + StartLinkArenaTitleBanner(proc->unk_2c[0], 0, 0); sub_804C508(); SetupFaceGfxData(FaceConfig_085A9E48); @@ -302,7 +298,7 @@ void SioMenu_RestartGraphicsMaybe(struct SioMenuProc * proc) proc->unk_2c[i] = sub_804C758(proc, gUnknown_080D9EF0[idx + 0], gUnknown_080D9EF0[idx + 1], i, proc->unk_40[i]); } - NewProc085AA980(proc->unk_2c[0], 0, 0); + StartLinkArenaTitleBanner(proc->unk_2c[0], 0, 0); sub_804C508(); SetupFaceGfxData(FaceConfig_085A9E68); @@ -382,7 +378,7 @@ void SioMenu_Loop_HandleKeyInput(struct SioMenuProc * proc) if (idx != proc->unk_48) { - struct Proc85AA9C0 * child; + struct SioProc85AA9C0 * child; SioPlaySoundEffect(3); @@ -392,7 +388,7 @@ void SioMenu_Loop_HandleKeyInput(struct SioMenuProc * proc) child = proc->unk_2c[proc->unk_48]; child->unk_2e = 2; - sub_804CFB8(child, child->unk_2a, child->unk_2c); + StartSioMenuBurstFx(child, child->xBase, child->yBase); sub_8043100(sub_8047A54(proc, 0), 0); sub_8043100(sub_8047A54(proc, 1), 1); diff --git a/src/sio_postbattle.c b/src/sio_postbattle.c index 1f500817..fbf162c3 100644 --- a/src/sio_postbattle.c +++ b/src/sio_postbattle.c @@ -131,7 +131,7 @@ void SioPostBattleSprites_Loop_DrawSlideIn(struct SioPostBattleSpritesProc * pro PutSprite(4, proc->x + 72, proc->y - 6, SpriteArray_085A96D4[proc->oam2], 0); PutSprite(4, proc->x + 96, proc->y + 8, Sprite_080D9DE4, 0); PutSprite(4, proc->x + 64, proc->y + 8, Sprite_080D9E06, proc->ranking * 4 + 0x50); - PutSprite(4, -proc->x + 112, proc->y - 8, Sprite_085AAA50, OAM2_PAL(proc->oam2) + 0x400); + PutSprite(4, -proc->x + 112, proc->y - 8, Sprite_LinkArena_NameBanner, OAM2_PAL(proc->oam2) + 0x400); PutSprite(4, -proc->x + 124, proc->y, Sprite_080D9DF2, proc->oam2 == 3 ? 0x40 : proc->oam2 * 9); PutSprite( 5, -proc->x + 208, proc->y - 8, Sprite_080D9E0E, OAM2_PAL(proc->oam2 + 10) + 0x180 + (proc->oam2 << 3)); @@ -147,7 +147,7 @@ void SioPostBattleSprites_Loop_DrawStatic(struct SioPostBattleSpritesProc * proc PutSprite(4, proc->x + 72, proc->y - 6, SpriteArray_085A96D4[proc->oam2], 0); PutSprite(4, proc->x + 96, proc->y + 8, Sprite_080D9DE4, 0); PutSprite(4, proc->x + 64, proc->y + 8, Sprite_080D9E06, proc->ranking * 4 + 0x50); - PutSprite(4, -proc->x + 112, proc->y - 8, Sprite_085AAA50, OAM2_PAL(proc->oam2) + 0x400); + PutSprite(4, -proc->x + 112, proc->y - 8, Sprite_LinkArena_NameBanner, OAM2_PAL(proc->oam2) + 0x400); PutSprite(4, -proc->x + 124, proc->y, Sprite_080D9DF2, proc->oam2 == 3 ? 0x40 : proc->oam2 * 9); PutSprite(5, -proc->x + 208, proc->y - 8, Sprite_080D9E0E, OAM2_PAL(proc->oam2 + 10) + 0x180 + (proc->oam2 << 3)); diff --git a/src/sio_result.c b/src/sio_result.c index 872fb8fb..a77fff0f 100644 --- a/src/sio_result.c +++ b/src/sio_result.c @@ -172,8 +172,8 @@ void SioResult_Init(struct SioResultProc * proc) SetWOutLayers(1, 0, 1, 1, 1); - sub_804D1E0(217, 57, 10, 5, proc->unk_36 + 56, proc); - NewProc085AA980(proc, 5, 0); + StartLinkArenaMenuScrollBar(217, 57, 10, 5, proc->unk_36 + 56, proc); + StartLinkArenaTitleBanner(proc, 5, 0); sub_804C558(); StartLinkArenaButtonSpriteDraw(0xc0, 0x10, proc); @@ -191,7 +191,7 @@ void SioResult_Loop_Main(struct SioResultProc * proc) proc->unk_38--; BG_SetPosition(BG_1, 0, proc->unk_36); - sub_804D24C(10, proc->unk_36 + 56); + UpdateLinkArenaMenuScrollBar(10, proc->unk_36 + 56); return; } @@ -202,7 +202,7 @@ void SioResult_Loop_Main(struct SioResultProc * proc) proc->unk_38++; BG_SetPosition(BG_1, 0, proc->unk_36); - sub_804D24C(10, proc->unk_36 + 56); + UpdateLinkArenaMenuScrollBar(10, proc->unk_36 + 56); return; } @@ -217,7 +217,7 @@ void SioResult_Loop_Main(struct SioResultProc * proc) proc->unk_38 = 3; BG_SetPosition(BG_1, 0, proc->unk_36); - sub_804D24C(10, proc->unk_36 + 56); + UpdateLinkArenaMenuScrollBar(10, proc->unk_36 + 56); } if (((gKeyStatusPtr->repeatedKeys & DPAD_DOWN) != 0) && (proc->unk_34 + 5 < 10)) @@ -230,7 +230,7 @@ void SioResult_Loop_Main(struct SioResultProc * proc) proc->unk_38 = -3; BG_SetPosition(BG_1, 0, proc->unk_36); - sub_804D24C(10, proc->unk_36 + 56); + UpdateLinkArenaMenuScrollBar(10, proc->unk_36 + 56); } if ((gKeyStatusPtr->newKeys & B_BUTTON) != 0) @@ -356,7 +356,7 @@ void SioResult_NewHS_LoopScroll(struct SioResultProc * proc) proc->unk_38--; BG_SetPosition(BG_1, 0, proc->unk_36); - sub_804D24C(10, proc->unk_36 + 56); + UpdateLinkArenaMenuScrollBar(10, proc->unk_36 + 56); otherProc->unk_30 += 2; } @@ -370,7 +370,7 @@ void SioResult_NewHS_LoopScroll(struct SioResultProc * proc) proc->unk_38 = 7; BG_SetPosition(BG_1, 0, proc->unk_36); - sub_804D24C(10, proc->unk_36 + 56); + UpdateLinkArenaMenuScrollBar(10, proc->unk_36 + 56); otherProc->unk_30 += 2; } diff --git a/src/sio_rulesettings.c b/src/sio_rulesettings.c index ded4cd8e..e28d4442 100644 --- a/src/sio_rulesettings.c +++ b/src/sio_rulesettings.c @@ -107,13 +107,13 @@ void SioRuleSettings_Init(struct ProcSioRuleSettings * proc) sub_8043164(); proc->unk_30 = 0; - proc->unk_2c = sub_804CE8C(proc); + proc->unk_2c = StartRuleSettingSpriteDrawInteractive(proc); BG_SetPosition(BG_1, 254, 0); LoadLinkArenaRuleSettings(buf); - sub_804CEC4( + UpdateRuleSettingSprites( proc->unk_2c, proc->unk_30, gLinkArenaRuleData[proc->unk_30].xPos[buf[proc->unk_30]] * 8, ((proc->unk_30 * 3) << 3) + 0x30); @@ -132,7 +132,7 @@ void SioRuleSettings_Init(struct ProcSioRuleSettings * proc) DrawLinkArenaModeIcon(gBG1TilemapBuffer + 0x11E + gLinkArenaRuleData[1].xPos[0], 0); DrawLinkArenaModeIcon(gBG1TilemapBuffer + 0x11E + gLinkArenaRuleData[1].xPos[1], 1); - NewProc085AA980(proc->unk_2c, 6, 0); + StartLinkArenaTitleBanner(proc->unk_2c, 6, 0); sub_804C508(); @@ -196,7 +196,7 @@ void SioRuleSettings_Loop_Main(struct ProcSioRuleSettings * proc) var = -2; } - sub_804CEC4( + UpdateRuleSettingSprites( proc->unk_2c, proc->unk_30, (gLinkArenaRuleData[proc->unk_30].xPos[buf[proc->unk_30]] + var) * 8, ((proc->unk_30 * 3) << 3) + 0x30); diff --git a/src/sio_tactician.c b/src/sio_tactician.c index 3fed9d02..d17404b7 100644 --- a/src/sio_tactician.c +++ b/src/sio_tactician.c @@ -121,14 +121,14 @@ void Tactician_InitScreen(struct ProcTactician * proc) proc->conf_idx = 6; conf = GetTacticianTextConf(6); - proc->child1 = NewProc_085AAAC4(proc, conf->xpos - 4, conf->unk32 + 1); + proc->child1 = StartNameEntrySpriteDraw(proc, conf->xpos - 4, conf->unk32 + 1); proc->unk39 = 0; for (i = 0; i < 10; i++) InitText(Texts_0203DB14 + i, 0x1A); InitText(&Texts_0203DAB0, 0xC); - NewProc085AA980(proc->child1, 3, 0x500); + StartLinkArenaTitleBanner(proc->child1, 3, 0x500); sub_804C508(); gUnk_Sio_0203DD24 = 0; proc->text_idx = 0; @@ -503,7 +503,7 @@ void Tactician_Loop(struct ProcTactician * proc) _cbuf[proc->max_len - 1] = 0; - sub_804CDD0(proc->child1, conf->xpos - 4, conf->unk32 + 1, StrLen(_cbuf) * 7, conf->unk34, (proc->line_idx <= 1) ? proc->line_idx : 2); + UpdateNameEntrySpriteDraw(proc->child1, conf->xpos - 4, conf->unk32 + 1, StrLen(_cbuf) * 7, conf->unk34, (proc->line_idx <= 1) ? proc->line_idx : 2); } extern u8 gUnknown_03001810; diff --git a/src/sio_teamlist.c b/src/sio_teamlist.c index b7f91bbf..da1730eb 100644 --- a/src/sio_teamlist.c +++ b/src/sio_teamlist.c @@ -15,46 +15,6 @@ #include "sio_core.h" #include "sio.h" -// FIXME -ProcPtr sub_804CAEC(ProcPtr, int, u8 *); - -struct SioProc85AAA78 -{ - /* 00 */ PROC_HEADER; - /* 29 */ STRUCT_PAD(0x29, 0x30); - /* 30 */ s16 unk_30[5]; - /* 3A */ u8 unk_3a[2]; - /* 3C */ STRUCT_PAD(0x3c, 0x40); - /* 40 */ int unk_40; - /* 44 */ u8 unk_44; - /* 45 */ STRUCT_PAD(0x45, 0x48); - /* 48 */ int unk_48; -}; - -struct SioTeamListProc -{ - /* 00 */ PROC_HEADER; - /* 2C */ struct SioProc85AAA78 * unk_2c; - /* 30 */ ProcPtr pSioHoldProc; - /* 34 */ int numActiveOptions; - /* 38 */ int unk_38; - /* 3C */ int optionIdx; - /* 40 */ int unk_40; - /* 44 */ int unk_44; - /* 48 */ u8 unk_48; - /* 49 */ STRUCT_PAD(0x49, 0x4A); - /* 4A */ u16 yBg1; - /* 4C */ s8 unk_4c; - /* 4D */ u8 validOptions[5]; - /* 52 */ u8 selectedOption; - /* 53 */ u8 selectedTeam; - /* 54 */ u8 unk_54; - /* 55 */ u8 unk_55; - /* 56 */ STRUCT_PAD(0x56, 0x58); - /* 58 */ int unk_58; - /* 5C */ s8 unk_5c; -}; - extern struct ProcCmd ProcScr_SioTeamList[]; struct LinkArenaTeamEnt @@ -407,7 +367,7 @@ void SioTeamList_EraseTeam(struct SioTeamListProc * proc) sub_80437C0(gLinkArenaSt.unk_00, proc); } - sub_804D24C(proc->unk_38, proc->yBg1 + 40); + UpdateLinkArenaMenuScrollBar(proc->unk_38, proc->yBg1 + 40); BG_EnableSyncByMask(BG1_SYNC_BIT); @@ -451,7 +411,7 @@ void SioTeamList_SwapTeams(struct SioTeamListProc * proc) DrawLinkArenaTeamName(teamB); DrawLinkArenaTeamName(teamA); - sub_804D24C(proc->unk_38, proc->yBg1 + 40); + UpdateLinkArenaMenuScrollBar(proc->unk_38, proc->yBg1 + 40); Proc_End(proc->pSioHoldProc); @@ -598,7 +558,7 @@ void SioTeamList_SetupGfx(struct SioTeamListProc * proc) SetWin1Layers(1, 0, 1, 1, 0); SetWOutLayers(1, 0, 1, 1, 1); - NewProc085AA980(proc->unk_2c, gUnknown_080D9D5E[gLinkArenaSt.unk_00], 0); + StartLinkArenaTitleBanner(proc->unk_2c, gUnknown_080D9D5E[gLinkArenaSt.unk_00], 0); sub_804C558(); sub_8043100(GetLATeamListHelpTextId(proc), 1); @@ -790,10 +750,10 @@ void SioTeamList_8043D8C(struct SioTeamListProc * proc) sub_804303C(proc->pSioHoldProc, +4); } - sub_804CC5C(+4); + ScrollMultiArenaTeamSprites(+4); DisplayUiHand(80, (proc->unk_40 - proc->unk_48) * 16 + 40); - sub_804D24C(proc->unk_38, proc->yBg1 + 40); + UpdateLinkArenaMenuScrollBar(proc->unk_38, proc->yBg1 + 40); return; } @@ -809,10 +769,10 @@ void SioTeamList_8043D8C(struct SioTeamListProc * proc) sub_804303C(proc->pSioHoldProc, -4); } - sub_804CC5C(-4); + ScrollMultiArenaTeamSprites(-4); DisplayUiHand(80, (proc->unk_40 - proc->unk_48) * 16 + 40); - sub_804D24C(proc->unk_38, proc->yBg1 + 40); + UpdateLinkArenaMenuScrollBar(proc->unk_38, proc->yBg1 + 40); return; } @@ -971,7 +931,7 @@ void SioTeamList_8043D8C(struct SioTeamListProc * proc) sub_804303C(proc->pSioHoldProc, +4); } - sub_804CC5C(+4); + ScrollMultiArenaTeamSprites(+4); proc->unk_48--; proc->unk_4c = +3; @@ -979,7 +939,7 @@ void SioTeamList_8043D8C(struct SioTeamListProc * proc) BG_SetPosition(BG_1, 0, proc->yBg1); - sub_804D24C(proc->unk_38, proc->yBg1 + 40); + UpdateLinkArenaMenuScrollBar(proc->unk_38, proc->yBg1 + 40); } else { @@ -1001,7 +961,7 @@ void SioTeamList_8043D8C(struct SioTeamListProc * proc) sub_804303C(proc->pSioHoldProc, -4); } - sub_804CC5C(-4); + ScrollMultiArenaTeamSprites(-4); proc->unk_48++; proc->unk_4c = -3; @@ -1009,7 +969,7 @@ void SioTeamList_8043D8C(struct SioTeamListProc * proc) BG_SetPosition(BG_1, 0, proc->yBg1); - sub_804D24C(proc->unk_38, proc->yBg1 + 40); + UpdateLinkArenaMenuScrollBar(proc->unk_38, proc->yBg1 + 40); } else { diff --git a/src/sio_uiutils.c b/src/sio_uiutils.c index a1c722b9..630ac1a7 100644 --- a/src/sio_uiutils.c +++ b/src/sio_uiutils.c @@ -16,8 +16,6 @@ * the Link Arena menus. */ -extern s8 gUnk_Sio_0203DDDC; - //! FE8U = 0x0804C33C void InitSioBG(void) { @@ -40,7 +38,7 @@ void InitSioBG(void) ReadGameSaveCoreGfx(); - CopyToPaletteBuffer(Pal_LinkArenaRankIcons, 0x300, 0x40); + ApplyPalettes(Pal_LinkArenaRankIcons, 0x18, 2); return; } @@ -80,14 +78,14 @@ void sub_804C3AC(u8 * src, u8 * dst, int c, int d) return; } -struct SioProc85AA980 +struct LinkArenaTitleBannerProc { /* 00 */ PROC_HEADER; /* 2C */ int unk_2c; /* 30 */ int unk_30; /* 34 */ STRUCT_PAD(0x34, 0x58); /* 58 */ int unk_58; - /* 5C */ u32 unk_5c; + /* 5C */ u32 chr; }; extern u8 gUnknown_085B0DE8[]; @@ -96,17 +94,17 @@ extern u8 gUnknown_085AAE0C[]; extern u8 gUnknown_085B0F2C[]; //! FE8U = 0x0804C3EC -void sub_804C3EC(struct SioProc85AA980 * proc) +void LATitleBanner_Init(struct LinkArenaTitleBannerProc * proc) { int a = (proc->unk_58 % 3) * 0x140; int b = (proc->unk_58 / 3) * 0x800; - Decompress(gUnknown_085B0DE8, (void *)(0x6000000 + proc->unk_5c)); + Decompress(gUnknown_085B0DE8, (void *)(0x6000000 + proc->chr)); Decompress(gUnknown_085AAE0C, gGenericBuffer); sub_804C3AC(gGenericBuffer + (a + b), (void *)(0x06014000), 10, 2); - CallARM_FillTileRect(gBG2TilemapBuffer, gUnknown_085B0F2C, (((u16)(proc->unk_5c >> 1) >> 4)) | 0x1000); + CallARM_FillTileRect(gBG2TilemapBuffer, gUnknown_085B0F2C, (((u16)(proc->chr >> 1) >> 4)) | 0x1000); BG_EnableSyncByMask(BG2_SYNC_BIT); return; @@ -114,7 +112,7 @@ void sub_804C3EC(struct SioProc85AA980 * proc) // clang-format off -u16 CONST_DATA gUnknown_085AA96C[] = +u16 CONST_DATA Sprite_LinkArena_MenuTitle[] = { 3, OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x200) + OAM2_LAYER(1) + OAM2_PAL(8), @@ -125,19 +123,19 @@ u16 CONST_DATA gUnknown_085AA96C[] = // clang-format on //! FE8U = 0x0804C47C -void sub_804C47C(void) +void LATitleBanner_Loop(void) { - PutSpriteExt(4, 20, 8, gUnknown_085AA96C, 0); + PutSpriteExt(4, 20, 8, Sprite_LinkArena_MenuTitle, 0); return; } // clang-format off -struct ProcCmd CONST_DATA ProcScr_085AA980[] = +struct ProcCmd CONST_DATA ProcScr_LinkArenaTitleBanner[] = { PROC_YIELD, - PROC_CALL(sub_804C3EC), - PROC_REPEAT(sub_804C47C), + PROC_CALL(LATitleBanner_Init), + PROC_REPEAT(LATitleBanner_Loop), PROC_END, }; @@ -145,19 +143,19 @@ struct ProcCmd CONST_DATA ProcScr_085AA980[] = // clang-format on //! FE8U = 0x0804C49C -void NewProc085AA980(ProcPtr parent, int b, int chr) +void StartLinkArenaTitleBanner(ProcPtr parent, int size, int chr) { - struct SioProc85AA980 * proc; + struct LinkArenaTitleBannerProc * proc; - Proc_EndEach(ProcScr_085AA980); - proc = Proc_Start(ProcScr_085AA980, parent); + Proc_EndEach(ProcScr_LinkArenaTitleBanner); + proc = Proc_Start(ProcScr_LinkArenaTitleBanner, parent); - proc->unk_58 = b; - proc->unk_5c = chr; + proc->unk_58 = size; + proc->chr = chr; if (chr == 0) { - proc->unk_5c = 0x5c00; + proc->chr = 0x5c00; } proc->unk_2c = (proc->unk_58 % 3) * 0x140; @@ -169,14 +167,14 @@ void NewProc085AA980(ProcPtr parent, int b, int chr) //! FE8U = 0x0804C4F8 void sub_804C4F8(void) { - Proc_EndEach(ProcScr_085AA980); + Proc_EndEach(ProcScr_LinkArenaTitleBanner); return; } //! FE8U = 0x0804C508 void sub_804C508(void) { - SetBlendConfig(1, 0x10, 4, 0); + SetBlendAlpha(16, 4); SetBlendTargetA(0, 0, 1, 0, 0); SetBlendTargetB(0, 0, 0, 1, 0); @@ -189,7 +187,7 @@ void sub_804C508(void) //! FE8U = 0x0804C558 void sub_804C558(void) { - SetBlendConfig(1, 0x10, 4, 0); + SetBlendAlpha(16, 4); SetBlendTargetA(0, 0, 1, 0, 0); SetBlendTargetB(0, 0, 0, 1, 0); @@ -206,7 +204,7 @@ void sub_804C590(void) // clang-format off -const u16 Sprite_080D9FFC[] = +const u16 Sprite_SioMenu_EditTeams[] = { 5, OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x240), @@ -216,7 +214,7 @@ const u16 Sprite_080D9FFC[] = OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), }; -const u16 Sprite_080DA01C[] = +const u16 Sprite_SioMenu_Practice[] = { 5, OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x24A), @@ -226,7 +224,7 @@ const u16 Sprite_080DA01C[] = OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), }; -const u16 Sprite_080DA03C[] = +const u16 Sprite_SioMenu_LinkedBattle[] = { 5, OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x254), @@ -236,7 +234,7 @@ const u16 Sprite_080DA03C[] = OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), }; -const u16 Sprite_080DA05C[] = +const u16 Sprite_SioMenu_BattleData[] = { 5, OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x280), @@ -246,7 +244,7 @@ const u16 Sprite_080DA05C[] = OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), }; -const u16 Sprite_080DA07C[] = +const u16 Sprite_SioMenu_RuleSettings[] = { 5, OAM0_SHAPE_32x16 + OAM0_Y(8), OAM1_SIZE_32x16 + OAM1_X(8), OAM2_CHR(0x28A), @@ -256,13 +254,13 @@ const u16 Sprite_080DA07C[] = OAM0_SHAPE_32x32, OAM1_SIZE_32x32 + OAM1_X(64), OAM2_CHR(0x29C), }; -const u16 * CONST_DATA gUnknown_085AA9A0[] = +const u16 * CONST_DATA SpriteArray_SioMenuItems[] = { - Sprite_080D9FFC, - Sprite_080DA01C, - Sprite_080DA03C, - Sprite_080DA05C, - Sprite_080DA07C, + Sprite_SioMenu_EditTeams, + Sprite_SioMenu_Practice, + Sprite_SioMenu_LinkedBattle, + Sprite_SioMenu_BattleData, + Sprite_SioMenu_RuleSettings, }; const u16 gUnknown_080DA09C[] = @@ -273,14 +271,14 @@ const u16 gUnknown_080DA09C[] = OAM2_PAL(4), }; -const u16 Sprite_080DA0A4[] = +const u16 Sprite_SioMenu_2Teams[] = { 2, OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2C0) + OAM2_PAL(4), OAM0_SHAPE_16x16, OAM1_SIZE_16x16 + OAM1_X(32), OAM2_CHR(0x2C4) + OAM2_PAL(4), }; -const u16 Sprite_080DA0B2[] = +const u16 Sprite_SioMenu_3Teams[] = { 3, OAM0_SHAPE_8x16, OAM1_SIZE_8x16, OAM2_CHR(0x2C0) + OAM2_PAL(4), @@ -288,7 +286,7 @@ const u16 Sprite_080DA0B2[] = OAM0_SHAPE_32x16, OAM1_SIZE_32x16 + OAM1_X(16), OAM2_CHR(0x2C2) + OAM2_PAL(4), }; -const u16 Sprite_080DA0C6[] = +const u16 Sprite_SioMenu_4Teams[] = { 3, OAM0_SHAPE_8x16, OAM1_SIZE_8x16, OAM2_CHR(0x2C0) + OAM2_PAL(4), @@ -296,11 +294,11 @@ const u16 Sprite_080DA0C6[] = OAM0_SHAPE_32x16, OAM1_SIZE_32x16 + OAM1_X(16), OAM2_CHR(0x2C2) + OAM2_PAL(4), }; -const u16 * CONST_DATA gUnknown_085AA9B4[] = +const u16 * CONST_DATA SpriteArray_SioMenuTeamCount[] = { - Sprite_080DA0A4, - Sprite_080DA0B2, - Sprite_080DA0C6, + Sprite_SioMenu_2Teams, + Sprite_SioMenu_3Teams, + Sprite_SioMenu_4Teams, }; // clang-format on @@ -321,43 +319,26 @@ void sub_804C5A4(u8 idx) if (gUnk_Sio_0203DDDC == 0) { int color = gUnknown_080DA0DA[idx] + 0x10; - gPaletteBuffer[0x131] = ((color) << 10) + ((color) << 5) + (color); + PAL_OBJ_COLOR(3, 1) = ((color) << 10) + ((color) << 5) + (color); EnablePaletteSync(); } return; } -struct SioProc85AA9C0 -{ - /* 00 */ PROC_HEADER; - /* 2A */ s16 unk_2a; - /* 2C */ s16 unk_2c; - /* 2E */ u8 unk_2e; - /* 2F */ u8 unk_2f; - /* 30 */ u8 unk_30; - /* 32 */ s16 unk_32; - /* 34 */ s16 unk_34; - /* 36 */ u16 unk_36; - /* 38 */ u16 unk_38; - /* 3A */ s16 unk_3a; - /* 3C */ s16 unk_3c; - /* 3E */ u8 unk_3e; -}; - //! FE8U = 0x0804C5F8 void sub_804C5F8(struct SioProc85AA9C0 * proc) { int oam2 = OAM2_CHR(0x2C8) + OAM2_PAL(8); - PutSprite(4, proc->unk_2a, proc->unk_2c, gUnknown_085AA9A0[proc->unk_2f], gUnknown_080DA09C[proc->unk_2e]); + PutSprite(4, proc->xBase, proc->yBase, SpriteArray_SioMenuItems[proc->unk_2f], gUnknown_080DA09C[proc->unk_2e]); if (proc->unk_2e == 2) { sub_804C5A4(proc->unk_30); } - proc->unk_30 = (proc->unk_30 + 1) & 0x1f; + proc->unk_30 = (proc->unk_30 + 1) & 31; if (proc->unk_2e == 2 && proc->unk_2f == 1) { @@ -381,19 +362,20 @@ void sub_804C5F8(struct SioProc85AA9C0 * proc) proc->unk_32++; } - if (proc->unk_34 > 0x34) + if (proc->unk_34 > 52) { proc->unk_34--; } } + // Put golden arrow sprites for increasing/decreasing team count + + PutSprite(0, 75 + proc->xBase + proc->unk_32, proc->yBase + 8, gObject_8x16, ((proc->unk_36 >> 5) % 6) + oam2); PutSprite( - 0, 0x4b + proc->unk_2a + proc->unk_32, proc->unk_2c + 8, gObject_8x16, ((proc->unk_36 >> 5) % 6) + oam2); - PutSprite( - 0, 0x49 + proc->unk_2a + proc->unk_34, proc->unk_2c + 8, gObject_8x16_HFlipped, + 0, 73 + proc->xBase + proc->unk_34, proc->yBase + 8, gObject_8x16_HFlipped, ((proc->unk_38 >> 5) % 6) + oam2); - PutSpriteExt(0, 0x50 + proc->unk_2a, proc->unk_2c + 9, gUnknown_085AA9B4[gLinkArenaSt.unk_05], 0); + PutSpriteExt(0, 80 + proc->xBase, proc->yBase + 9, SpriteArray_SioMenuTeamCount[gLinkArenaSt.unk_05], 0); } return; @@ -401,7 +383,7 @@ void sub_804C5F8(struct SioProc85AA9C0 * proc) // clang-format off -struct ProcCmd CONST_DATA gUnknown_085AA9C0[] = +struct ProcCmd CONST_DATA ProcScr_085AA9C0[] = { PROC_YIELD, PROC_REPEAT(sub_804C5F8), @@ -411,16 +393,16 @@ struct ProcCmd CONST_DATA gUnknown_085AA9C0[] = // clang-format on //! FE8U = 0x0804C758 -ProcPtr sub_804C758(ProcPtr parent, u8 x1, u8 y1, u8 d, u8 e) +ProcPtr sub_804C758(ProcPtr parent, u8 xBase, u8 yBase, u8 d, u8 e) { - struct SioProc85AA9C0 * proc = Proc_Start(gUnknown_085AA9C0, parent); + struct SioProc85AA9C0 * proc = Proc_Start(ProcScr_085AA9C0, parent); - proc->unk_2a = x1; - proc->unk_2c = y1; + proc->xBase = xBase; + proc->yBase = yBase; proc->unk_2e = e; proc->unk_2f = d; proc->unk_32 = 0; - proc->unk_34 = 0x34; + proc->unk_34 = 52; proc->unk_38 = 0; proc->unk_36 = 0; proc->unk_3c = 4; @@ -445,8 +427,8 @@ void sub_804C7C8(struct SioProc85AA9C0 * proc, int b, int c, int d, int e) //! FE8U = 0x0804C7DC void sub_804C7DC(struct SioProc85AA9C0 * proc, s16 x, s16 y) { - proc->unk_2a = x; - proc->unk_2c = y; + proc->xBase = x; + proc->yBase = y; return; } @@ -455,7 +437,7 @@ extern u16 gUnknown_085ADDE8[]; // clang-format off -const u16 gUnknown_080DA0FA[] = +const u16 Sprite_LinkArena_PressStart[] = { 1, OAM0_SHAPE_64x32 + OAM0_AFFINE_ENABLE, OAM1_SIZE_64x32, OAM2_CHR(0x300) + OAM2_LAYER(1), @@ -483,7 +465,7 @@ void sub_804C7E4(void) int a = (GetGameClock() % 0x40); int idx = gUnknown_080DA102[a / 2]; - gPaletteBuffer[0x18E] = ptr[idx]; + PAL_OBJ_COLOR(8, 14) = ptr[idx]; EnablePaletteSync(); } @@ -512,28 +494,16 @@ void sub_804C83C(void) int a = (GetGameClock() % 0x40); int idx = gUnknown_080DA0DA[a / 2]; - gPaletteBuffer[0x13E] = ptr[idx]; + PAL_OBJ_COLOR(3, 14) = ptr[idx]; EnablePaletteSync(); } return; } -struct SioProc85AAA78 -{ - /* 00 */ PROC_HEADER; - /* 2C */ int unk_2c; - /* 30 */ s16 unk_30[5]; - /* 3A */ u8 unk_3a[5]; - /* 40 */ int unk_40; - /* 44 */ s8 unk_44; - /* 45 */ STRUCT_PAD(0x45, 0x48); - /* 48 */ int unk_48; -}; - // clang-format off -u16 CONST_DATA gUnknown_085AA9D8[] = +u16 CONST_DATA Sprite_LinkArena_TeamName[] = { 2, OAM0_SHAPE_32x8, OAM1_SIZE_32x8, OAM2_CHR(0x2B8) + OAM2_PAL(8), @@ -576,7 +546,7 @@ u16 * CONST_DATA gUnknown_085AAA48[] = Sprite_085AA9FA, }; -u16 CONST_DATA Sprite_085AAA50[] = +u16 CONST_DATA Sprite_LinkArena_NameBanner[] = { 2, OAM0_SHAPE_64x32, OAM1_SIZE_64x32, OAM2_CHR(0x240) + OAM2_PAL(3), @@ -606,22 +576,25 @@ void sub_804C894(struct SioProc85AAA78 * proc) { if (proc->unk_44 != 0) { - oam2 = 0x400; + oam2 = OAM2_LAYER(1); } else { - oam2 = 0xc00; + oam2 = OAM2_LAYER(3); } - PutSprite(0, 0x58, 0x20, gUnknown_085AA9D8, 0); + // Put "Team Name" sprite + PutSprite(0, 88, 32, Sprite_LinkArena_TeamName, 0); for (i = 0; i < proc->unk_2c; i++) { - PutSprite(4, proc->unk_30[i] + 6, 0x20 + i * 0x18, Sprite_085AAA50, (i & 0xf) * 0x1000 + oam2); + // Put name banner sprite + PutSprite(4, proc->unk_30[i] + 6, 32 + i * 24, Sprite_LinkArena_NameBanner, OAM2_PAL(i) + oam2); if (proc->unk_3a[i] != 0) { - PutSprite(4, proc->unk_30[i] + 6, 0x20 + i * 0x18, gUnknown_085AAA5E, oam2); + // Put active selection sprite + PutSprite(4, proc->unk_30[i] + 6, 32 + i * 24, gUnknown_085AAA5E, oam2); } } @@ -629,13 +602,13 @@ void sub_804C894(struct SioProc85AAA78 * proc) { if (gUnk_Sio_0203DDDC == 0) { - gPaletteBuffer[0x18e] = ((GetGameClock() % 0x40) / 4)[gUnknown_08A1BD40]; + PAL_OBJ_COLOR(8, 14) = ((GetGameClock() % 0x40) / 4)[gUnknown_08A1BD40]; EnablePaletteSync(); } if (proc->unk_40 < 0x100) { - proc->unk_40 = proc->unk_40 + 0x10; + proc->unk_40 += 0x10; } // clang-format off @@ -648,17 +621,21 @@ void sub_804C894(struct SioProc85AAA78 * proc) ); // clang-format on - PutSprite(4, 0x78, 0, gUnknown_080DA0FA, 0x8000); + // Put "Press Start" sprite + PutSprite(4, 120, 0, Sprite_LinkArena_PressStart, OAM2_PAL(8)); } + sub_804C83C(); } else { - PutSprite(0xb, 0x58, 0x20, gUnknown_085AA9D8, 0); + // Put "Team Name" sprite + PutSprite(0xb, 88, 32, Sprite_LinkArena_TeamName, 0); for (i = 0; i < proc->unk_2c; i++) { - PutSprite(2, proc->unk_30[i], 0x30 + i * 0x10, gUnknown_085AAA48[proc->unk_3a[i]], 0); + // Put side menu item sprite + PutSprite(2, proc->unk_30[i], 48 + i * 16, gUnknown_085AAA48[proc->unk_3a[i]], 0); if (proc->unk_3a[i] != 0) { @@ -678,53 +655,30 @@ void sub_804C894(struct SioProc85AAA78 * proc) if (gLinkArenaSt.unk_00 == 1) { - oam2 = 0x400; + oam2 = OAM2_LAYER(1); } else { - oam2 = 0x800; + oam2 = OAM2_LAYER(2); } if (proc->unk_44 != 0) { - PutLinkArenaButtonSpriteAt(0xc0, 0x10); + PutLinkArenaButtonSpriteAt(192, 16); } if (proc->unk_48 >= 0) { - PutSprite(4, 0x50, proc->unk_48 + 8, gUnknown_085AAA0E, oam2); + // Put team row highlight indicator sprite + PutSprite(4, 80, proc->unk_48 + 8, gUnknown_085AAA0E, oam2); } return; } -struct SioTeamListProc -{ - /* 00 */ PROC_HEADER; - /* 2C */ struct SioProc85AAA78 * unk_2c; - /* 30 */ ProcPtr pSioHoldProc; - /* 34 */ int numActiveOptions; - /* 38 */ int unk_38; - /* 3C */ int optionIdx; - /* 40 */ int unk_40; - /* 44 */ int unk_44; - /* 48 */ u8 unk_48; - /* 49 */ STRUCT_PAD(0x49, 0x4A); - /* 4A */ u16 yBg1; - /* 4C */ s8 unk_4c; - /* 4D */ u8 validOptions[5]; - /* 52 */ u8 selectedOption; - /* 53 */ u8 selectedTeam; - /* 54 */ u8 unk_54; - /* 55 */ u8 unk_55; - /* 56 */ STRUCT_PAD(0x56, 0x58); - /* 58 */ int unk_58; - /* 5C */ s8 unk_5c; -}; - // clang-format off -struct ProcCmd CONST_DATA gUnknown_085AAA78[] = +struct ProcCmd CONST_DATA ProcScr_085AAA78[] = { PROC_YIELD, PROC_REPEAT(sub_804C894), @@ -733,18 +687,16 @@ struct ProcCmd CONST_DATA gUnknown_085AAA78[] = // clang-format on -void sub_804CC14(int, int, int, int, int, ProcPtr); - //! FE8U = 0x0804CAEC -ProcPtr sub_804CAEC(struct SioTeamListProc * parent, int b, u8 * buf) +ProcPtr sub_804CAEC(struct SioTeamListProc * parent, int numActiveOptions, u8 * buf) { struct SioProc85AAA78 * proc; int i; - Proc_EndEach(gUnknown_085AAA78); - proc = Proc_Start(gUnknown_085AAA78, parent); + Proc_EndEach(ProcScr_085AAA78); + proc = Proc_Start(ProcScr_085AAA78, parent); - proc->unk_2c = b; + proc->unk_2c = numActiveOptions; proc->unk_44 = 1; proc->unk_40 = 0; proc->unk_48 = -1; @@ -755,39 +707,38 @@ ProcPtr sub_804CAEC(struct SioTeamListProc * parent, int b, u8 * buf) proc->unk_30[i] = -8; } - sub_804D1E0(0xe1, 0x28, parent->unk_38, 6, parent->yBg1 + 40, proc); - sub_804CC14(0x98, 0x28 - parent->unk_48 * 0x10, 0x88, 0x27, parent->unk_38, proc); + StartLinkArenaMenuScrollBar(225, 40, parent->unk_38, 6, parent->yBg1 + 40, proc); + PutLinkArenaTeamSprites(152, 40 - parent->unk_48 * 16, 136, 39, parent->unk_38, proc); return proc; } -struct SioProc85AAA90 +struct LATeamSpriteDrawProc { /* 00 */ PROC_HEADER; - /* 2C */ int unk_2c; - /* 30 */ int unk_30; - /* 34 */ int unk_34; - /* 38 */ int unk_38; - /* 3C */ int unk_3c; + /* 2C */ int xBase; + /* 30 */ int yBase; + /* 34 */ int yMin; + /* 38 */ int yMax; + /* 3C */ int numTeams; }; //! FE8U = 0x0804CB94 -void sub_804CB94(struct SioProc85AAA90 * proc) +void LATeamSpriteDraw_Loop(struct LATeamSpriteDrawProc * proc) { int i; - int y; int j; - for (i = 0; i < proc->unk_3c; i++) + for (i = 0; i < proc->numTeams; i++) { - y = proc->unk_30 + i * 0x10; + int y = proc->yBase + i * 16; - if (y >= proc->unk_38) + if (y >= proc->yMax) { continue; } - if (y <= proc->unk_34) + if (y <= proc->yMin) { continue; } @@ -801,7 +752,7 @@ void sub_804CB94(struct SioProc85AAA90 * proc) continue; } - sub_8027E4C(4, proc->unk_2c + j * 0xe, y, OAM2_LAYER(1), unit); + sub_8027E4C(4, proc->xBase + j * 14, y, OAM2_LAYER(1), unit); } } @@ -810,39 +761,39 @@ void sub_804CB94(struct SioProc85AAA90 * proc) // clang-format off -struct ProcCmd CONST_DATA gUnknown_085AAA90[] = +struct ProcCmd CONST_DATA ProcScr_LinkArenaTeamSpriteDraw[] = { PROC_YIELD, - PROC_REPEAT(sub_804CB94), + PROC_REPEAT(LATeamSpriteDraw_Loop), PROC_END, }; // clang-format on //! FE8U = 0x0804CC14 -void sub_804CC14(int x, int y, int upperBound, int lowerBound, int count, ProcPtr parent) +void PutLinkArenaTeamSprites(int x, int y, int yMax, int yMin, int count, ProcPtr parent) { - struct SioProc85AAA90 * proc; + struct LATeamSpriteDrawProc * proc; - Proc_EndEach(gUnknown_085AAA90); - proc = Proc_Start(gUnknown_085AAA90, parent); + Proc_EndEach(ProcScr_LinkArenaTeamSpriteDraw); + proc = Proc_Start(ProcScr_LinkArenaTeamSpriteDraw, parent); - proc->unk_3c = count; + proc->numTeams = count; - proc->unk_2c = x; - proc->unk_30 = y; + proc->xBase = x; + proc->yBase = y; - proc->unk_34 = lowerBound; - proc->unk_38 = upperBound; + proc->yMin = yMin; + proc->yMax = yMax; return; } //! FE8U = 0x0804CC5C -void sub_804CC5C(int amount) +void ScrollMultiArenaTeamSprites(int amount) { - struct SioProc85AAA90 * proc = Proc_Find(gUnknown_085AAA90); - proc->unk_30 += amount; + struct LATeamSpriteDrawProc * proc = Proc_Find(ProcScr_LinkArenaTeamSpriteDraw); + proc->yBase += amount; return; } @@ -850,7 +801,7 @@ void sub_804CC5C(int amount) extern u16 gUnknown_085ADE28[]; //! FE8U = 0x0804CC78 -void sub_804CC78(void) +void UpdateNameEntrySpriteGlow(void) { int r2; int i; @@ -864,7 +815,7 @@ void sub_804CC78(void) for (i = 0; i < 5; i++) { - gPaletteBuffer[0x19B + i] = ptr[((r2 + i) & 0xf)]; + PAL_OBJ_COLOR(9, 11 + i) = ptr[(r2 + i) & 0xf]; } EnablePaletteSync(); @@ -873,145 +824,147 @@ void sub_804CC78(void) return; } -struct SioProc85AAAC4 +struct NameEntrySpriteDrawProc { /* 00 */ PROC_HEADER; - /* 2C */ int unk_2c; - /* 30 */ int unk_30; - /* 34 */ int unk_34; - /* 38 */ int unk_38; - /* 3C */ int unk_3c; - /* 40 */ int unk_40; - /* 44 */ int unk_44; + /* 2C */ int xCurrent; + /* 30 */ int yCurrent; + /* 34 */ int xNew; + /* 38 */ int yNew; + /* 3C */ int cursorKind; + /* 40 */ int xPointer; + /* 44 */ int unk_44; // maybe mode (Katakana/Hiragana)? }; // clang-format off -const u16 Sprite_080DA122[] = +const u16 Sprite_NameEntry_CursorSmall[] = { 1, OAM0_SHAPE_16x16, OAM1_SIZE_16x16, OAM2_CHR(0x251) + OAM2_LAYER(1) + OAM2_PAL(9), }; -const u16 Sprite_080DA12A[] = +const u16 Sprite_NameEntry_CursorLarge[] = { 1, OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x253) + OAM2_LAYER(1) + OAM2_PAL(9), }; -const u16 * CONST_DATA gUnknown_085AAAA8[] = +const u16 * CONST_DATA SpriteArray_NameEntryCursor[] = { - Sprite_080DA122, - Sprite_080DA12A, + Sprite_NameEntry_CursorSmall, + Sprite_NameEntry_CursorLarge, }; -const u16 gUnknown_080DA132[] = +// Sprite for the "next letter" position indicator + +const u16 Sprite_NameEntry_PositionIndicator[] = { 1, OAM0_SHAPE_8x8, OAM1_SIZE_8x8, OAM2_CHR(0x29A) + OAM2_LAYER(2) + OAM2_PAL(9), }; -const u16 Sprite_080DA13A[] = +const u16 Sprite_NameEntry_OKIcon[] = { 1, OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2C0) + OAM2_LAYER(1), }; -const u16 Sprite_080DA142[] = +const u16 Sprite_NameEntry_DeleteIcon[] = { 1, OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2C4) + OAM2_LAYER(1), }; -const u16 Sprite_080DA14A[] = +const u16 Sprite_NameEntry_KatakanaIcon[] = { 1, OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2C8) + OAM2_LAYER(1), }; -const u16 Sprite_080DA152[] = +const u16 Sprite_NameEntry_HiraganaIcon[] = { 1, OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2CC) + OAM2_LAYER(1), }; -const u16 Sprite_080DA15A[] = +const u16 Sprite_NameEntry_080DA15A[] = { 1, OAM0_SHAPE_32x16, OAM1_SIZE_32x16, OAM2_CHR(0x2D0) + OAM2_LAYER(1), }; -const u16 * CONST_DATA gUnknown_085AAAB0[] = +const u16 * CONST_DATA SpriteArray_NameEntryIcons[] = { - Sprite_080DA152, - Sprite_080DA14A, - Sprite_080DA15A, - Sprite_080DA142, - Sprite_080DA13A, + Sprite_NameEntry_HiraganaIcon, + Sprite_NameEntry_KatakanaIcon, + Sprite_NameEntry_080DA15A, + Sprite_NameEntry_DeleteIcon, + Sprite_NameEntry_OKIcon, }; // clang-format on //! FE8U = 0x0804CCCC -void sub_804CCCC(struct SioProc85AAAC4 * proc) +void NameEntrySpriteDraw_Loop(struct NameEntrySpriteDrawProc * proc) { int i; - int x = (proc->unk_34 + proc->unk_2c) >> 1; - int y = (proc->unk_38 + proc->unk_30) >> 1; + int x = (proc->xNew + proc->xCurrent) >> 1; + int y = (proc->yNew + proc->yCurrent) >> 1; - proc->unk_2c = x; - proc->unk_30 = y; + proc->xCurrent = x; + proc->yCurrent = y; - PutSprite(2, x, y, gUnknown_085AAAA8[proc->unk_3c], 0); - PutSprite(2, proc->unk_40 + 0x60, 0x30, gUnknown_080DA132, 0); - PutSprite(2, 0x60, 0x20, gUnknown_085AA9D8, 0); - PutSprite(4, 0x50, 0x20, Sprite_085AAA50, 0x800); + PutSprite(2, x, y, SpriteArray_NameEntryCursor[proc->cursorKind], 0); + PutSprite(2, 96 + proc->xPointer, 48, Sprite_NameEntry_PositionIndicator, 0); + PutSprite(2, 96, 32, Sprite_LinkArena_TeamName, 0); + PutSprite(4, 80, 32, Sprite_LinkArena_NameBanner, OAM2_LAYER(2)); for (i = 3; i < 5; i++) { if ((proc->unk_44 == i) && (i < 3)) { - PutSprite(4, 0xc4, 0x48 + i * 0x10, gUnknown_085AAAB0[i], 0x4000); + PutSprite(4, 196, 72 + i * 16, SpriteArray_NameEntryIcons[i], OAM2_PAL(4)); } else { - PutSprite(4, 0xc4, 0x48 + i * 0x10, gUnknown_085AAAB0[i], 0x8000); + PutSprite(4, 196, 72 + i * 16, SpriteArray_NameEntryIcons[i], OAM2_PAL(8)); } } - sub_804CC78(); + UpdateNameEntrySpriteGlow(); return; } // clang-format off -struct ProcCmd CONST_DATA Proc_085AAAC4[] = +struct ProcCmd CONST_DATA ProcScr_NameEntrySpriteDraw[] = { PROC_YIELD, - PROC_REPEAT(sub_804CCCC), + PROC_REPEAT(NameEntrySpriteDraw_Loop), PROC_END, }; // clang-format on //! FE8U = 0x0804CD90 -ProcPtr NewProc_085AAAC4(ProcPtr parent, int x, int y) +ProcPtr StartNameEntrySpriteDraw(ProcPtr parent, int x, int y) { - struct SioProc85AAAC4 * proc; + struct NameEntrySpriteDrawProc * proc; - Proc_EndEach(Proc_085AAAC4); - proc = Proc_Start(Proc_085AAAC4, parent); + Proc_EndEach(ProcScr_NameEntrySpriteDraw); + proc = Proc_Start(ProcScr_NameEntrySpriteDraw, parent); - proc->unk_34 = x; - proc->unk_2c = x; + proc->xNew = x; + proc->xCurrent = x; - proc->unk_38 = y; - proc->unk_30 = y; + proc->yNew = y; + proc->yCurrent = y; - proc->unk_3c = 0; - proc->unk_40 = 0; + proc->cursorKind = 0; + proc->xPointer = 0; proc->unk_44 = 1; return proc; @@ -1019,89 +972,89 @@ ProcPtr NewProc_085AAAC4(ProcPtr parent, int x, int y) // FIXME - param //! FE8U = 0x0804CDD0 -void sub_804CDD0(void * proc, int b, int c, int d, int e, int f) +void UpdateNameEntrySpriteDraw(void * proc, int xNew, int yNew, int xPointer, int cursorKind, int f) { - struct SioProc85AAAC4 * param_1 = proc; + struct NameEntrySpriteDrawProc * param_1 = proc; - param_1->unk_34 = b; - param_1->unk_38 = c; - param_1->unk_3c = e; - param_1->unk_40 = d; + param_1->xNew = xNew; + param_1->yNew = yNew; + param_1->cursorKind = cursorKind; + param_1->xPointer = xPointer; param_1->unk_44 = f; return; } -struct SioProc85AAAE8 +struct RuleSettingSpriteDrawProc { /* 00 */ PROC_HEADER; - /* 2A */ s16 unk_2a; - /* 2C */ s16 unk_2c; - /* 2E */ s16 unk_2e; - /* 30 */ s16 unk_30; + /* 2A */ s16 yPrevious; + /* 2C */ s16 yNew; + /* 2E */ s16 xOption; + /* 30 */ s16 yOption; }; // clang-format off -const u16 Sprite_080DA162[] = +const u16 Sprite_RuleSettings_HideUnitsIcon[] = { 1, OAM0_SHAPE_16x16, OAM1_SIZE_16x16, OAM2_CHR(0x2D4) + OAM2_LAYER(1) + OAM2_PAL(8), }; -const u16 Sprite_080DA16A[] = +const u16 Sprite_RuleSettings_VictoryCondIcon[] = { 1, OAM0_SHAPE_16x16, OAM1_SIZE_16x16, OAM2_CHR(0x2D6) + OAM2_LAYER(1) + OAM2_PAL(8), }; -const u16 Sprite_080DA172[] = +const u16 Sprite_RuleSettings_AutoWeaponIcon[] = { 1, OAM0_SHAPE_16x16, OAM1_SIZE_16x16, OAM2_CHR(0x2D8) + OAM2_LAYER(1) + OAM2_PAL(8), }; -const u16 * CONST_DATA gUnknown_085AAADC[] = +const u16 * CONST_DATA SpriteArray_RuleSettingIcons[] = { - Sprite_080DA162, - Sprite_080DA16A, - Sprite_080DA172, + Sprite_RuleSettings_HideUnitsIcon, + Sprite_RuleSettings_VictoryCondIcon, + Sprite_RuleSettings_AutoWeaponIcon, }; // clang-format on //! FE8U = 0x0804CDE8 -void sub_804CDE8(struct SioProc85AAAE8 * proc) +void RuleSettingSprites_Interactive_Loop(struct RuleSettingSpriteDrawProc * proc) { int i; - int y1 = proc->unk_2c; - int y2 = proc->unk_2a; + int y1 = proc->yNew; + int y2 = proc->yPrevious; int y = (y1 + y2) * 12; - proc->unk_2a = proc->unk_2c; + proc->yPrevious = proc->yNew; for (i = 0; i < 3; i++) { - PutSprite(2, 0x20, 0x30 + i * 0x18, gUnknown_085AAADC[i], 0); + PutSprite(2, 32, 48 + i * 24, SpriteArray_RuleSettingIcons[i], 0); } - DisplayFrozenUiHand(0x20, y + 0x30); - DisplayUiHand(proc->unk_2e, proc->unk_30); + DisplayFrozenUiHand(32, y + 48); + DisplayUiHand(proc->xOption, proc->yOption); - PutLinkArenaButtonSpriteAt(0xc0, 0x10); + PutLinkArenaButtonSpriteAt(192, 16); return; } //! FE8U = 0x0804CE5C -void sub_804CE5C(struct SioProc85AAAE8 * proc) +void RuleSettingSprites_Static_Loop(struct RuleSettingSpriteDrawProc * proc) { int i; for (i = 0; i < 3; i++) { - PutSprite(2, 0x20, 0x30 + i * 0x18, gUnknown_085AAADC[i], 0); + PutSprite(2, 32, 48 + i * 24, SpriteArray_RuleSettingIcons[i], 0); } return; @@ -1109,55 +1062,55 @@ void sub_804CE5C(struct SioProc85AAAE8 * proc) // clang-format off -struct ProcCmd CONST_DATA gUnknown_085AAAE8[] = +struct ProcCmd CONST_DATA ProcScr_RuleSettingSpriteDraw_Interactive[] = { PROC_YIELD, - PROC_REPEAT(sub_804CDE8), + PROC_REPEAT(RuleSettingSprites_Interactive_Loop), PROC_END, }; // clang-format on //! FE8U = 0x0804CE8C -ProcPtr sub_804CE8C(ProcPtr parent) +ProcPtr StartRuleSettingSpriteDrawInteractive(ProcPtr parent) { - struct SioProc85AAAE8 * proc; + struct RuleSettingSpriteDrawProc * proc; - Proc_EndEach(gUnknown_085AAAE8); - proc = Proc_Start(gUnknown_085AAAE8, parent); + Proc_EndEach(ProcScr_RuleSettingSpriteDraw_Interactive); + proc = Proc_Start(ProcScr_RuleSettingSpriteDraw_Interactive, parent); - proc->unk_2a = 0; + proc->yPrevious = 0; return proc; } // clang-format off -struct ProcCmd CONST_DATA gUnknown_085AAB00[] = +struct ProcCmd CONST_DATA ProcScr_RuleSettingSpriteDraw_Static[] = { PROC_YIELD, - PROC_REPEAT(sub_804CE5C), + PROC_REPEAT(RuleSettingSprites_Static_Loop), PROC_END, }; // clang-format on //! FE8U = 0x0804CEB0 -void sub_804CEB0(void) +void StartRuleSettingSpriteDrawStatic(void) { - Proc_Start(gUnknown_085AAB00, PROC_TREE_3); + Proc_Start(ProcScr_RuleSettingSpriteDraw_Static, PROC_TREE_3); return; } // FIXME //! FE8U = 0x0804CEC4 -void sub_804CEC4(ProcPtr proc, s16 b, s16 c, s16 d) +void UpdateRuleSettingSprites(ProcPtr proc, s16 b, s16 xOption, s16 yOption) { - struct SioProc85AAAE8 * param_1 = proc; + struct RuleSettingSpriteDrawProc * param_1 = proc; - param_1->unk_2c = b; - param_1->unk_2e = c; - param_1->unk_30 = d; + param_1->yNew = b; + param_1->xOption = xOption; + param_1->yOption = yOption; return; } @@ -1165,31 +1118,31 @@ void sub_804CEC4(ProcPtr proc, s16 b, s16 c, s16 d) extern u16 gUnknown_085ADE28[]; //! FE8U = 0x0804CECC -void sub_804CECC(int idx) +void UpdateSioMenuBurstGlow(int idx) { u16 * ptr = gUnknown_085ADE28; if (gUnk_Sio_0203DDDC == 0) { - gPaletteBuffer[0x16E] = ptr[idx]; + PAL_OBJ_COLOR(6, 14) = ptr[idx]; EnablePaletteSync(); } return; } -struct SioProc85AAB18 +struct SioMenuBurstFxProc { /* 00 */ PROC_HEADER; - /* 2C */ int unk_2c; - /* 30 */ int unk_30; + /* 2C */ int xBase; + /* 30 */ int yBase; /* 34 */ STRUCT_PAD(0x34, 0x4C); - /* 4C */ s16 unk_4c; + /* 4C */ s16 glowPalIdx; }; // clang-format off -const u16 gUnknown_080DA17A[] = +const u16 Sprite_SioMenuBurst_TopLeft[] = { 3, OAM0_SHAPE_32x8, OAM1_SIZE_32x8, OAM2_CHR(0x2CE) + OAM2_PAL(6), @@ -1197,7 +1150,7 @@ const u16 gUnknown_080DA17A[] = OAM0_SHAPE_8x16 + OAM0_Y(8), OAM1_SIZE_8x16, OAM2_CHR(0x2D3) + OAM2_PAL(6), }; -const u16 gUnknown_080DA18E[] = +const u16 Sprite_SioMenuBurst_TopRight[] = { 3, OAM0_SHAPE_32x8, OAM1_SIZE_32x8 + OAM1_X(16) + OAM1_HFLIP, OAM2_CHR(0x2CF) + OAM2_PAL(6), @@ -1205,7 +1158,7 @@ const u16 gUnknown_080DA18E[] = OAM0_SHAPE_8x16 + OAM0_Y(8), OAM1_SIZE_8x16 + OAM1_X(72) + OAM1_HFLIP, OAM2_CHR(0x2D3) + OAM2_PAL(6), }; -const u16 gUnknown_080DA1A2[] = +const u16 Sprite_SioMenuBurst_BottomLeft[] = { 3, OAM0_SHAPE_32x8 + OAM0_Y(24), OAM1_SIZE_32x8 + OAM1_VFLIP, OAM2_CHR(0x2CE) + OAM2_PAL(6), @@ -1213,7 +1166,7 @@ const u16 gUnknown_080DA1A2[] = OAM0_SHAPE_8x16 + OAM0_Y(8), OAM1_SIZE_8x16 + OAM1_VFLIP, OAM2_CHR(0x2D3) + OAM2_PAL(6), }; -const u16 gUnknown_080DA1B6[] = +const u16 Sprite_SioMenuBurst_BottomRight[] = { 3, OAM0_SHAPE_32x8 + OAM0_Y(24), OAM1_SIZE_32x8 + OAM1_X(16) + OAM1_HFLIP + OAM1_VFLIP, OAM2_CHR(0x2CF) + OAM2_PAL(6), @@ -1223,51 +1176,51 @@ const u16 gUnknown_080DA1B6[] = const s16 gUnknown_080DA1CA[] = { - 0x0002, 0x0003, - 0x0002, 0x0006, - 0x0006, 0x0009, - 0x0008, 0x000C, - 0x0007, 0x000B, - 0x0007, 0x000B, - 0x0006, 0x000A, - 0x0006, 0x0009, - 0x0005, 0x0008, - 0x0005, 0x0007, - 0x0004, 0x0006, - 0x0004, 0x0005, - 0x0003, 0x0004, - 0x0002, 0x0003, - 0x0001, 0x0001, - 0x0000, 0x0000, + 2, 3, + 2, 6, + 6, 9, + 8, 12, + 7, 11, + 7, 11, + 6, 10, + 6, 9, + 5, 8, + 5, 7, + 4, 6, + 4, 5, + 3, 4, + 2, 3, + 1, 1, + 0, 0, }; // clang-format on //! FE8U = 0x0804CF04 -void sub_804CF04(struct SioProc85AAB18 * proc) +void SioMenuBurstFx_Loop(struct SioMenuBurstFxProc * proc) { int idx; int x; int y; int r1; - idx = proc->unk_4c * 2; + idx = proc->glowPalIdx * 2; - sub_804CECC(proc->unk_4c); + UpdateSioMenuBurstGlow(proc->glowPalIdx); x = gUnknown_080DA1CA[idx + 1]; - r1 = proc->unk_2c - x; + r1 = proc->xBase - x; y = gUnknown_080DA1CA[idx + 0]; - PutSprite(2, r1, proc->unk_30 - y, gUnknown_080DA17A, 0); - PutSprite(2, proc->unk_2c + x + 0x10, proc->unk_30 - y, gUnknown_080DA18E, 0); - PutSprite(2, proc->unk_2c - x, proc->unk_30 + y, gUnknown_080DA1A2, 0); - PutSprite(2, proc->unk_2c + x + 0x10, proc->unk_30 + y, gUnknown_080DA1B6, 0); + PutSprite(2, r1, proc->yBase - y, Sprite_SioMenuBurst_TopLeft, 0); + PutSprite(2, proc->xBase + x + 16, proc->yBase - y, Sprite_SioMenuBurst_TopRight, 0); + PutSprite(2, proc->xBase - x, proc->yBase + y, Sprite_SioMenuBurst_BottomLeft, 0); + PutSprite(2, proc->xBase + x + 16, proc->yBase + y, Sprite_SioMenuBurst_BottomRight, 0); - proc->unk_4c++; + proc->glowPalIdx++; - if (proc->unk_4c == 0xf) + if (proc->glowPalIdx == 15) { Proc_Break(proc); } @@ -1277,32 +1230,32 @@ void sub_804CF04(struct SioProc85AAB18 * proc) // clang-format off -struct ProcCmd CONST_DATA gUnknown_085AAB18[] = +struct ProcCmd CONST_DATA ProcScr_SioMenuBurstFx[] = { PROC_YIELD, - PROC_REPEAT(sub_804CF04), + PROC_REPEAT(SioMenuBurstFx_Loop), PROC_END, }; // clang-format on //! FE8U = 0x0804CFB8 -ProcPtr sub_804CFB8(ProcPtr parent, int b, int c) +ProcPtr StartSioMenuBurstFx(ProcPtr parent, int x, int y) { - struct SioProc85AAB18 * proc = Proc_Start(gUnknown_085AAB18, parent); + struct SioMenuBurstFxProc * proc = Proc_Start(ProcScr_SioMenuBurstFx, parent); - proc->unk_2c = b; - proc->unk_30 = c; - proc->unk_4c = 0; + proc->xBase = x; + proc->yBase = y; + proc->glowPalIdx = 0; // return proc; // BUG } -struct SioProc85AAB48 +struct LAMenuScrollBarProc { /* 00 */ PROC_HEADER; - /* 2C */ int unk_2c; - /* 30 */ int unk_30; + /* 2C */ int xBase; + /* 30 */ int yBase; /* 34 */ int unk_34; /* 38 */ int unk_38; /* 3C */ u8 unk_3c; @@ -1310,14 +1263,14 @@ struct SioProc85AAB48 /* 3E */ s16 unk_3e; /* 40 */ s16 unk_40; /* 42 */ u16 unk_42; - /* 44 */ u8 unk_44[2]; + /* 44 */ u8 oam2Arrows[2]; }; //! FE8U = 0x0804CFE0 -void sub_804CFE0(struct SioProc85AAB48 * proc) +void LinkArenaMenuScroll_Init(struct LAMenuScrollBarProc * proc) { - proc->unk_44[1] = 0; - proc->unk_44[0] = 0; + proc->oam2Arrows[1] = 0; + proc->oam2Arrows[0] = 0; proc->unk_38 = (proc->unk_34 * proc->unk_3d * 8) / proc->unk_3c; proc->unk_42 = (proc->unk_34 * 0x800) / (proc->unk_3c * 16); @@ -1327,19 +1280,19 @@ void sub_804CFE0(struct SioProc85AAB48 * proc) // clang-format off -u16 CONST_DATA gUnknown_085AAB30[] = +u16 CONST_DATA Sprite_LAMenuScrollBar_UpArrow[] = { 1, OAM0_SHAPE_8x8, OAM1_SIZE_8x8, OAM2_CHR(0x257) + OAM2_LAYER(1) + OAM2_PAL(8), }; -u16 CONST_DATA gUnknown_085AAB38[] = +u16 CONST_DATA Sprite_LAMenuScrollBar_DownArrow[] = { 1, OAM0_SHAPE_8x8, OAM1_SIZE_8x8 + OAM1_VFLIP, OAM2_CHR(0x257) + OAM2_LAYER(1) + OAM2_PAL(8), }; -u16 CONST_DATA gUnknown_085AAB40[] = +u16 CONST_DATA Sprite_LinkArenaMenuScrollBar[] = { 1, OAM0_SHAPE_8x8, OAM1_SIZE_8x8, OAM2_CHR(0x25D) + OAM2_LAYER(1) + OAM2_PAL(8), @@ -1348,65 +1301,71 @@ u16 CONST_DATA gUnknown_085AAB40[] = // clang-format on //! FE8U = 0x0804D01C -void sub_804D01C(struct SioProc85AAB48 * proc) +void LinkArenaMenuScroll_Loop(struct LAMenuScrollBarProc * proc) { int i; int buf[2]; - int r8 = proc->unk_2c; - int sl = proc->unk_30 + 8; + int r8 = proc->xBase; + int sl = proc->yBase + 8; int sp_10 = proc->unk_38 >> 3; int sp_14 = 8 - (proc->unk_38 & 7); int sp_18 = (proc->unk_3e * proc->unk_42) >> 8; if (proc->unk_3c > proc->unk_3d) { - proc->unk_44[0]++; - proc->unk_44[1]++; + proc->oam2Arrows[0]++; + proc->oam2Arrows[1]++; if (proc->unk_3e < proc->unk_40) { - proc->unk_44[0] += 2; + proc->oam2Arrows[0] += 2; } if (proc->unk_3e > proc->unk_40) { - proc->unk_44[1] += 2; + proc->oam2Arrows[1] += 2; } for (i = 0; i < 2; i++) { - if (proc->unk_44[i] > 0x30) + if (proc->oam2Arrows[i] > 48) { - proc->unk_44[i] = 0; + proc->oam2Arrows[i] = 0; } - buf[i] = (proc->unk_44[i] / 8) % 6; + buf[i] = (proc->oam2Arrows[i] / 8) % 6; } if (proc->unk_3e != 0) { - PutSprite(3, r8, sl - 9, gUnknown_085AAB38, buf[0]); + PutSprite(3, r8, sl - 9, Sprite_LAMenuScrollBar_DownArrow, buf[0]); } if (((proc->unk_3e / 16) + proc->unk_3d) < proc->unk_3c) { - PutSprite(3, r8, proc->unk_34 * 8 + sl + 1, gUnknown_085AAB30, buf[1]); + PutSprite(3, r8, proc->unk_34 * 8 + sl + 1, Sprite_LAMenuScrollBar_UpArrow, buf[1]); } + // Put the "container" of the scroll bar + for (i = 0; i < proc->unk_34; i++) { - PutSprite(2, r8, sl + i * 8, gUnknown_085AAB40, 1); + PutSprite(2, r8, sl + i * 8, Sprite_LinkArenaMenuScrollBar, 1); } + // Put the active scroll bar segments + for (i = 0; i < sp_10; i++) { - PutSprite(2, r8, (sl + sp_18) + i * 8, gUnknown_085AAB40, 0); + PutSprite(2, r8, (sl + sp_18) + i * 8, Sprite_LinkArenaMenuScrollBar, 0); } - PutSprite(2, r8, (sl + sp_18) + (sp_10 * 8) - sp_14, gUnknown_085AAB40, 0); - PutSprite(2, r8, sl - 8, gUnknown_085AAB40, 2); - PutSprite(2, r8 + 0x2000, proc->unk_34 * 8 + sl - 7, gUnknown_085AAB40, 2); + // Put the "cap" of the scroll bar + + PutSprite(2, r8, (sl + sp_18) + (sp_10 * 8) - sp_14, Sprite_LinkArenaMenuScrollBar, 0); + PutSprite(2, r8, sl - 8, Sprite_LinkArenaMenuScrollBar, 2); + PutSprite(2, r8 + OAM1_VFLIP, proc->unk_34 * 8 + sl - 7, Sprite_LinkArenaMenuScrollBar, 2); proc->unk_40 = proc->unk_3e; } @@ -1416,11 +1375,11 @@ void sub_804D01C(struct SioProc85AAB48 * proc) // clang-format off -struct ProcCmd CONST_DATA gUnknown_085AAB48[] = +struct ProcCmd CONST_DATA ProcScr_LinkArenaMenuScrollBar[] = { PROC_YIELD, - PROC_CALL(sub_804CFE0), - PROC_REPEAT(sub_804D01C), + PROC_CALL(LinkArenaMenuScroll_Init), + PROC_REPEAT(LinkArenaMenuScroll_Loop), PROC_END, }; @@ -1428,15 +1387,15 @@ struct ProcCmd CONST_DATA gUnknown_085AAB48[] = // clang-format on //! FE8U = 0x0804D1E0 -void sub_804D1E0(int a, int b, u8 c, u8 d, u8 e, ProcPtr parent) +void StartLinkArenaMenuScrollBar(int xBase, int yBase, u8 c, u8 d, u8 e, ProcPtr parent) { - struct SioProc85AAB48 * proc; + struct LAMenuScrollBarProc * proc; - Proc_EndEach(gUnknown_085AAB48); - proc = Proc_Start(gUnknown_085AAB48, parent); + Proc_EndEach(ProcScr_LinkArenaMenuScrollBar); + proc = Proc_Start(ProcScr_LinkArenaMenuScrollBar, parent); - proc->unk_2c = a; - proc->unk_30 = b; + proc->xBase = xBase; + proc->yBase = yBase; proc->unk_34 = d * 2 - 2; @@ -1449,9 +1408,9 @@ void sub_804D1E0(int a, int b, u8 c, u8 d, u8 e, ProcPtr parent) } //! FE8U = 0x0804D24C -void sub_804D24C(u8 a, s16 b) +void UpdateLinkArenaMenuScrollBar(u8 a, s16 b) { - struct SioProc85AAB48 * proc = Proc_Find(gUnknown_085AAB48); + struct LAMenuScrollBarProc * proc = Proc_Find(ProcScr_LinkArenaMenuScrollBar); if (proc == NULL) {