diff --git a/asm/code_800558C.s b/asm/code_800558C.s deleted file mode 100644 index edf18bd86..000000000 --- a/asm/code_800558C.s +++ /dev/null @@ -1,276 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start DoAxFrame_800558C -DoAxFrame_800558C: - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - ldrh r0, [r5] - lsrs r0, 15 - cmp r0, 0 - beq _08005602 - movs r1, 0x20 - ldrsh r0, [r5, r1] - cmp r0, 0 - bge _080055AE - adds r0, r5, 0 - bl sub_80054BC -_080055AE: - ldrh r0, [r5] - lsrs r0, 15 - cmp r0, 0 - beq _08005602 - ldrh r0, [r5, 0xC] - adds r0, r4 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xE] - adds r0, r6 - strh r0, [r5, 0xA] - adds r1, r5, 0 - adds r1, 0x26 - ldr r0, [sp, 0x18] - strb r0, [r1] - strh r7, [r5, 0x1E] - ldr r0, [r5, 0x34] - ldr r1, [r5, 0x38] - adds r2, r5, 0 - adds r2, 0x8 - movs r3, 0x22 - ldrsh r4, [r5, r3] - movs r6, 0x20 - ldrsh r3, [r5, r6] - eors r4, r3 - negs r3, r4 - orrs r3, r4 - lsrs r3, 31 - str r3, [sp] - ldr r3, [sp, 0x1C] - bl sub_800533C - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x22] - ldrh r1, [r5] - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _08005602 - ldr r0, _0800560C - ands r0, r1 - strh r0, [r5] -_08005602: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800560C: .4byte 0x0000f7ff - thumb_func_end DoAxFrame_800558C - - thumb_func_start sub_8005610 -sub_8005610: - push {lr} - ldr r0, [r0, 0x4] - bl sub_800561C - pop {r0} - bx r0 - thumb_func_end sub_8005610 - - thumb_func_start sub_800561C -sub_800561C: - push {r4-r7,lr} - adds r5, r0, 0 - adds r0, r1, 0 - adds r7, r2, 0 - adds r6, r3, 0 - ldr r1, [r5, 0x14] - cmp r1, 0 - beq _0800563A - lsls r0, 5 - ldr r2, _08005664 - adds r0, r2 - ldr r2, [r5, 0x1C] - lsls r2, 5 - bl CpuCopy -_0800563A: - ldr r0, [r5, 0x18] - cmp r0, 0 - beq _0800565C - movs r4, 0 -_08005642: - movs r1, 0xF0 - lsls r1, 1 - adds r0, r4, r1 - lsls r2, r4, 2 - ldr r1, [r5, 0x18] - adds r1, r2 - adds r2, r7, 0 - adds r3, r6, 0 - bl SetBGPaletteBufferColorRGB - adds r4, 0x1 - cmp r4, 0xF - ble _08005642 -_0800565C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005664: .4byte 0x06010000 - thumb_func_end sub_800561C - - thumb_func_start sub_8005668 -sub_8005668: - push {lr} - ldr r0, [r0, 0x4] - bl sub_8005674 - pop {r1} - bx r1 - thumb_func_end sub_8005668 - - thumb_func_start sub_8005674 -sub_8005674: - push {r4,lr} - adds r4, r0, 0 - ldr r3, [r4, 0x14] - cmp r3, 0 - beq _0800568E - lsls r0, r1, 5 - ldr r1, _08005698 - adds r0, r1 - ldr r2, [r4, 0x1C] - lsls r2, 5 - adds r1, r3, 0 - bl CpuCopy -_0800568E: - ldr r0, [r4, 0x18] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08005698: .4byte 0x06010000 - thumb_func_end sub_8005674 - - thumb_func_start sub_800569C -sub_800569C: - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - strh r0, [r3] - strh r0, [r3, 0x2] - ldrh r0, [r4] - lsrs r0, 15 - cmp r0, 0 - beq _080056F8 - cmp r2, 0x3 - bhi _080056F8 - ldr r1, [r4, 0x30] - cmp r1, 0 - beq _080056F2 - movs r5, 0x20 - ldrsh r0, [r4, r5] - lsls r0, 4 - adds r5, r1, r0 - lsls r0, r2, 2 - adds r2, r5, r0 - movs r6, 0 - ldrsh r1, [r2, r6] - cmp r1, 0x63 - bne _080056E0 - movs r6, 0x2 - ldrsh r1, [r2, r6] - cmp r1, 0x63 - bne _080056E0 - strh r1, [r3] - strh r1, [r3, 0x2] - b _080056F8 -_080056E0: - adds r0, r5, r0 - ldrh r1, [r0] - ldrh r2, [r4, 0xC] - adds r1, r2 - strh r1, [r3] - ldrh r0, [r0, 0x2] - ldrh r4, [r4, 0xE] - adds r0, r4 - b _080056F6 -_080056F2: - movs r0, 0x63 - strh r0, [r3] -_080056F6: - strh r0, [r3, 0x2] -_080056F8: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_800569C - - thumb_func_start sub_8005700 -sub_8005700: - push {r4,r5,lr} - adds r3, r0, 0 - ldrh r0, [r1] - lsrs r0, 15 - cmp r0, 0 - beq _0800575C - ldr r2, [r1, 0x30] - cmp r2, 0 - beq _0800574C - movs r4, 0x20 - ldrsh r0, [r1, r4] - lsls r0, 4 - adds r2, r0 - adds r4, r2, 0 - adds r4, 0xC -_0800571E: - movs r5, 0 - ldrsh r0, [r2, r5] - cmp r0, 0x63 - bne _08005732 - movs r5, 0x2 - ldrsh r0, [r2, r5] - cmp r0, 0x63 - bne _08005732 - strh r0, [r3] - b _08005740 -_08005732: - ldrh r0, [r2] - ldrh r5, [r1, 0xC] - adds r0, r5 - strh r0, [r3] - ldrh r0, [r2, 0x2] - ldrh r5, [r1, 0xE] - adds r0, r5 -_08005740: - strh r0, [r3, 0x2] - adds r3, 0x4 - adds r2, 0x4 - cmp r2, r4 - ble _0800571E - b _0800575C -_0800574C: - movs r1, 0x63 - movs r0, 0x3 -_08005750: - strh r1, [r3] - strh r1, [r3, 0x2] - adds r3, 0x4 - subs r0, 0x1 - cmp r0, 0 - bge _08005750 -_0800575C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8005700 - - .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_8005838.s b/asm/code_8005838.s deleted file mode 100644 index 61622f438..000000000 --- a/asm/code_8005838.s +++ /dev/null @@ -1,1129 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_8005838 -sub_8005838: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08005880 - ldrb r0, [r0] - cmp r0, 0 - bne _08005854 - movs r1, 0 -_08005854: - ldr r0, _08005884 - ldr r0, [r0] - ldr r3, _08005888 - cmp r0, 0 - bne _08005860 - ldr r3, _0800588C -_08005860: - ldr r0, _08005890 - ldr r2, [r0] - cmp r2, 0 - bne _0800586A - ldr r2, _08005894 -_0800586A: - ldr r0, _08005898 - str r3, [r0] - cmp r1, 0x5 - bls _08005876 - bl _08006094 -_08005876: - lsls r0, r1, 2 - ldr r1, _0800589C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08005880: .4byte gUnknown_2026E4C -_08005884: .4byte gUnknown_2026E54 -_08005888: .4byte gUnknown_20270E8 -_0800588C: .4byte gUnknown_2026E60 -_08005890: .4byte gUnknown_203B078 -_08005894: .4byte gUnknown_80B83EA -_08005898: .4byte gUnknown_2026E58 -_0800589C: .4byte _080058A0 - .align 2, 0 -_080058A0: - .4byte _080058B8 - .4byte _08005984 - .4byte _08005A98 - .4byte _08005BAC - .4byte _08005D46 - .4byte _08005E58 -_080058B8: - movs r1, 0 - movs r7, 0x9 -_080058BC: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _080058BC - b _08006094 -_08005984: - ldr r1, _08005A94 - movs r7, 0x9 -_08005988: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005A90 - b _08005988 -_08005A90: - b _08006094 - .align 2, 0 -_08005A94: .4byte gUnknown_80B816A -_08005A98: - ldr r1, _08005BA8 - movs r7, 0x9 -_08005A9C: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005BA4 - b _08005A9C -_08005BA4: - b _08006094 - .align 2, 0 -_08005BA8: .4byte gUnknown_80B802A -_08005BAC: - ldr r0, [r5] - mov r10, r0 - cmp r0, 0 - bge _08005BBA - ldr r0, [r5, 0x8] - cmp r0, 0 - blt _08005BDC -_08005BBA: - ldr r1, [r5, 0x4] - cmp r1, 0 - bge _08005BC6 - ldr r0, [r5, 0xC] - cmp r0, 0 - blt _08005BDC -_08005BC6: - mov r4, r10 - cmp r4, 0xEF - ble _08005BD2 - ldr r0, [r5, 0x8] - cmp r0, 0xEF - bgt _08005BDC -_08005BD2: - cmp r1, 0x9F - ble _08005CA8 - ldr r0, [r5, 0xC] - cmp r0, 0x9F - ble _08005CA8 -_08005BDC: - movs r1, 0xF0 - movs r7, 0x9 -_08005BE0: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _08005BE0 - b _08006094 -_08005CA8: - movs r7, 0 - mov r8, r1 - movs r6, 0x80 - lsls r6, 1 - mov r12, r6 - lsls r0, r1, 1 - ldr r1, _08005CCC - subs r6, r1, r0 - mov r9, r10 -_08005CBA: - cmp r8, r7 - ble _08005CD0 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - mov r4, r12 - strh r4, [r3] - b _08005D3A - .align 2, 0 -_08005CCC: .4byte gUnknown_80B8008 -_08005CD0: - ldr r1, [r5, 0xC] - cmp r1, r7 - bgt _08005CE2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - mov r0, r12 - b _08005D38 -_08005CE2: - mov r4, r8 - subs r0, r7, r4 - cmp r0, 0xF - bgt _08005CF0 - movs r0, 0 - ldrsh r1, [r6, r0] - b _08005D00 -_08005CF0: - subs r0, r1, r7 - cmp r0, 0xF - bgt _08005D10 - lsls r0, 1 - ldr r1, _08005D0C - adds r0, r1 - movs r4, 0 - ldrsh r1, [r0, r4] -_08005D00: - mov r0, r9 - adds r4, r0, r1 - ldr r0, [r5, 0x8] - subs r1, r0, r1 - b _08005D14 - .align 2, 0 -_08005D0C: .4byte gUnknown_80B8008 -_08005D10: - mov r4, r10 - ldr r1, [r5, 0x8] -_08005D14: - cmp r4, 0 - bge _08005D1A - movs r4, 0 -_08005D1A: - cmp r4, 0xEF - ble _08005D20 - movs r4, 0xEF -_08005D20: - cmp r1, 0 - bgt _08005D26 - movs r1, 0x1 -_08005D26: - cmp r1, 0xF0 - ble _08005D2C - movs r1, 0xF0 -_08005D2C: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - lsls r0, r1, 8 - orrs r0, r4 -_08005D38: - strh r0, [r3] -_08005D3A: - adds r3, 0x2 - adds r6, 0x2 - adds r7, 0x1 - cmp r7, 0x9F - ble _08005CBA - b _08006094 -_08005D46: - ldr r1, _08005E54 - movs r7, 0xE -_08005D4A: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005E52 - b _08005D4A -_08005E52: - b _08006094 - .align 2, 0 -_08005E54: .4byte gUnknown_80B82AA -_08005E58: - ldr r4, _08005FF4 - ldr r5, _08005FF8 - ldr r6, _08005FFC - movs r0, 0x80 - lsls r0, 1 - adds r1, r0, 0 - movs r7, 0xE -_08005E66: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _08005E66 - ldr r4, [r4] - str r4, [sp] - ldr r5, [r5] - str r5, [sp, 0x4] - ldr r6, [r6] - str r6, [sp, 0x8] - adds r1, r6, 0 - cmp r6, 0 - bge _08005F40 - adds r1, 0xFF -_08005F40: - asrs r1, 8 - adds r1, 0x1 - movs r0, 0x80 - lsls r0, 3 - bl __divsi3 - str r0, [sp, 0xC] - ldr r0, [sp, 0x4] - cmp r0, 0 - bge _08005F56 - adds r0, 0xFF -_08005F56: - asrs r4, r0, 8 - adds r5, r4, 0 - movs r3, 0 - lsls r0, r4, 2 - adds r7, r0, 0x2 - mov r9, r7 -_08005F62: - adds r0, r3, 0 - str r3, [sp, 0x10] - bl sub_8009C7C - ldr r1, [sp, 0x8] - muls r0, r1 - ldr r3, [sp, 0x10] - cmp r0, 0 - bge _08005F76 - adds r0, 0xFF -_08005F76: - asrs r0, 8 - ldr r2, [sp, 0x4] - adds r1, r2, r0 - cmp r1, 0 - bge _08005F82 - adds r1, 0xFF -_08005F82: - asrs r1, 8 - str r1, [sp, 0x14] - ldr r6, [sp, 0x4] - subs r0, r6, r0 - cmp r0, 0 - bge _08005F90 - adds r0, 0xFF -_08005F90: - asrs r0, 8 - mov r8, r0 - ldr r0, [sp, 0x14] - cmp r5, r0 - blt _08005FA4 - ldr r1, [sp, 0xC] - adds r1, r3 - mov r10, r1 - cmp r4, r8 - ble _0800608A -_08005FA4: - adds r0, r3, 0 - str r3, [sp, 0x10] - bl sub_8009D04 - ldr r2, [sp, 0x8] - muls r0, r2 - ldr r3, [sp, 0x10] - cmp r0, 0 - bge _08005FB8 - adds r0, 0xFF -_08005FB8: - asrs r0, 8 - ldr r6, [sp] - subs r1, r6, r0 - cmp r1, 0 - bge _08005FC4 - adds r1, 0xFF -_08005FC4: - asrs r1, 8 - ldr r2, [sp] - adds r0, r2, r0 - cmp r0, 0 - bge _08005FD0 - adds r0, 0xFF -_08005FD0: - asrs r0, 8 - cmp r1, 0 - bge _08005FD8 - movs r1, 0 -_08005FD8: - cmp r0, 0 - bge _08005FDE - movs r0, 0 -_08005FDE: - cmp r1, 0xEF - ble _08005FE4 - movs r1, 0x9F -_08005FE4: - cmp r0, 0xEF - ble _08005FEA - movs r0, 0x9F -_08005FEA: - cmp r1, r0 - ble _08006000 - lsls r2, r1, 8 - orrs r2, r0 - b _08006004 - .align 2, 0 -_08005FF4: .4byte gUnknown_2026E40 -_08005FF8: .4byte gUnknown_2026E44 -_08005FFC: .4byte gUnknown_2026E48 -_08006000: - lsls r2, r0, 8 - orrs r2, r1 -_08006004: - ldr r6, [sp, 0xC] - adds r3, r6 - mov r10, r3 - ldr r0, [sp, 0x14] - cmp r5, r0 - bge _0800604E - ldr r1, _08006030 - mov r12, r1 - ldr r3, _08006034 - add r3, r9 - ldr r1, _08006038 - add r1, r9 -_0800601C: - cmp r5, 0 - blt _0800603E - cmp r5, 0x9F - bgt _0800603E - mov r6, r12 - ldr r0, [r6] - cmp r0, 0 - bne _0800603C - strh r2, [r1] - b _0800603E - .align 2, 0 -_08006030: .4byte gUnknown_2026E54 -_08006034: .4byte gUnknown_20270E8 -_08006038: .4byte gUnknown_2026E60 -_0800603C: - strh r2, [r3] -_0800603E: - adds r3, 0x4 - adds r1, 0x4 - movs r0, 0x4 - add r9, r0 - adds r5, 0x1 - ldr r6, [sp, 0x14] - cmp r5, r6 - blt _0800601C -_0800604E: - cmp r4, r8 - ble _0800608A - ldr r6, _08006070 - ldr r0, _08006074 - adds r3, r7, r0 - ldr r0, _08006078 - adds r1, r7, r0 -_0800605C: - cmp r4, 0 - blt _0800607E - cmp r4, 0x9F - bgt _0800607E - ldr r0, [r6] - cmp r0, 0 - bne _0800607C - strh r2, [r1] - b _0800607E - .align 2, 0 -_08006070: .4byte gUnknown_2026E54 -_08006074: .4byte gUnknown_20270E8 -_08006078: .4byte gUnknown_2026E60 -_0800607C: - strh r2, [r3] -_0800607E: - subs r3, 0x4 - subs r1, 0x4 - subs r7, 0x4 - subs r4, 0x1 - cmp r4, r8 - bgt _0800605C -_0800608A: - mov r3, r10 - ldr r0, _080060A4 - cmp r3, r0 - bgt _08006094 - b _08005F62 -_08006094: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080060A4: .4byte 0x000003ff - thumb_func_end sub_8005838 - - .align 2,0 diff --git a/asm/code_805744C.s b/asm/code_805744C.s deleted file mode 100644 index a64776606..000000000 --- a/asm/code_805744C.s +++ /dev/null @@ -1,97 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start sub_80574C4 -sub_80574C4: - push {r4-r6,lr} - sub sp, 0x104 - adds r4, r0, 0 - adds r5, r1, 0 - movs r3, 0 - movs r2, 0 - ldr r0, [r4] - cmp r0, 0 - beq _08057502 - cmp r0, r5 - beq _080574EA -_080574DA: - lsls r0, r3, 2 - mov r6, sp - adds r1, r6, r0 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - adds r3, 0x1 -_080574EA: - adds r2, 0x1 - cmp r2, 0x40 - bgt _08057502 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - cmp r0, 0 - beq _08057502 - cmp r0, r5 - beq _080574EA - cmp r3, 0x3F - ble _080574DA -_08057502: - movs r2, 0 - ldr r0, [r4] - b _08057524 -_08057508: - lsls r0, r3, 2 - mov r6, sp - adds r1, r6, r0 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] - str r0, [r1] - adds r3, 0x1 -_08057518: - adds r2, 0x1 - cmp r2, 0x40 - bgt _08057530 - lsls r0, r2, 2 - adds r0, r4 - ldr r0, [r0] -_08057524: - cmp r0, 0 - beq _08057530 - cmp r0, r5 - bne _08057518 - cmp r3, 0x3F - ble _08057508 -_08057530: - cmp r3, 0x40 - bgt _08057542 - movs r1, 0 - lsls r0, r3, 2 - add r0, sp -_0805753A: - stm r0!, {r1} - adds r3, 0x1 - cmp r3, 0x40 - ble _0805753A -_08057542: - mov r3, sp - adds r1, r4, 0 - movs r2, 0x40 -_08057548: - ldm r3!, {r0} - stm r1!, {r0} - subs r2, 0x1 - cmp r2, 0 - bge _08057548 - add sp, 0x104 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80574C4 - - .align 2,0 @ Don't pad with nop diff --git a/include/axdata.h b/include/axdata.h index e570f0e9a..34fedd240 100644 --- a/include/axdata.h +++ b/include/axdata.h @@ -62,7 +62,7 @@ struct axdata /* 0x28 */ struct ax_anim *nextAnimData; // next animation data (if flags&0x1000) /* 0x2C */ struct ax_anim *activeAnimData; // current animation data /* 0x30 */ void *paletteData; // ? - /* 0x34 */ struct ax_pose *poseData; + /* 0x34 */ struct ax_pose **poseData; /* 0x38 */ struct UnkSpriteMem **spriteData; }; diff --git a/include/bg.h b/include/bg.h deleted file mode 100644 index 99352c574..000000000 --- a/include/bg.h +++ /dev/null @@ -1,36 +0,0 @@ -#ifndef GUARD_BG_H -#define GUARD_BG_H - -enum -{ - BG0, - BG1, - BG2, - BG3, - NUM_BGS -}; - -struct BGControlStruct -{ - u16 padding; - u16 unk2; - s16 hofs; - s16 vofs; -}; - -extern struct BGControlStruct gBG0Control; -extern struct BGControlStruct gBG1Control; -extern struct BGControlStruct gBG2Control; -extern struct BGControlStruct gBG3Control; - -void SetBG0RegOffsets(s32 xoffset, s32 yoffset); -void SetBG1RegOffsets(s32 xoffset, s32 yoffset); -void SetBG2RegOffsets(s32 xoffset, s32 yoffset); -void SetBG3RegOffsets(s32 xoffset, s32 yoffset); -void SetBGRegOffsets(s32 reg, u32 xoffset, s32 yoffset); -void SetBGRegXOffset(s32 reg, s32 offset); -void SetBGRegYOffset(s32 reg, s32 offset); -void UpdateBGControlRegisters(void); -void SetBGOBJEnableFlags(u32 mask); - -#endif diff --git a/include/bg_control.h b/include/bg_control.h new file mode 100644 index 000000000..122d5e4b1 --- /dev/null +++ b/include/bg_control.h @@ -0,0 +1,35 @@ +#ifndef GUARD_BG_CONTROL_H +#define GUARD_BG_CONTROL_H + +enum +{ + BG0, + BG1, + BG2, + BG3, + NUM_BGS +}; + +struct BGControlStruct +{ + u16 padding; + u16 unk2; + s16 hofs; + s16 vofs; +}; + +extern struct BGControlStruct gBG0Control; +extern struct BGControlStruct gBG1Control; +extern struct BGControlStruct gBG2Control; +extern struct BGControlStruct gBG3Control; +extern u16 gBldAlpha; +extern u16 gBldCnt; +extern bool8 gUnknown_202D7FE; + +void SetBG2RegOffsets(s32, s32); +void SetBG3RegOffsets(s32, s32); +void SetBGOBJEnableFlags(u32); +void SetBldAlphaReg(s32, s32); +void sub_800CD64(s32, bool8); + +#endif // GUARD_BG_CONTROL_H \ No newline at end of file diff --git a/include/code_800558C.h b/include/code_800558C.h index a01943c12..19ca43e4d 100644 --- a/include/code_800558C.h +++ b/include/code_800558C.h @@ -1,7 +1,28 @@ #ifndef GUARD_CODE_800558C_H #define GUARD_CODE_800558C_H -extern void *gUnknown_203B078; +#include "file_system.h" + +// size: ? 0x20 for now +struct unkStructFor800561C +{ + u8 fill0[0x14 - 0x0]; + void *unk14; + s32 *unk18; + s32 unk1C; +}; + +extern s16 *gUnknown_203B078; + +void nullsub_7(s16 *); +void nullsub_9(void); +void nullsub_10(bool8); +void nullsub_12(void); +void nullsub_13(void); +void nullsub_14(void); +void sub_8005610(struct OpenedFile *, s32, s32, u8 *); +void sub_8005770(s32, u8 *, s32, u8 *); +void sub_80057E8(void); void sub_80060EC(void); -#endif //GUARD_CODE_800558C_H +#endif // GUARD_CODE_800558C_H \ No newline at end of file diff --git a/include/code_800558C_1.h b/include/code_800558C_1.h deleted file mode 100644 index 2e058ebb0..000000000 --- a/include/code_800558C_1.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef GUARD_CODE_800558C_1_H -#define GUARD_CODE_800558C_1_H - -void nullsub_7(s16 *); -void nullsub_9(void); -void nullsub_10(bool8); -void nullsub_12(void); -void nullsub_13(void); -void nullsub_14(void); -void sub_8005770(s32, u8 *, s32, u8 *); -void sub_80057E8(void); - -#endif // GUARD_CODE_800558C_1_H \ No newline at end of file diff --git a/include/cpu.h b/include/cpu.h index f24489097..4d3459db4 100644 --- a/include/cpu.h +++ b/include/cpu.h @@ -4,7 +4,7 @@ void CpuClear(void *, s32); void CpuCopy(void *, void *, s32); void nullsub_23(bool8); -void SetWindowTitle(char *); +void SetWindowTitle(u8 *); void sub_800CDA8(u32); u32 sub_800CDC8(void); void VBlank_CB(void); diff --git a/include/reg_control.h b/include/reg_control.h index 9276eb8c6..b351e792b 100644 --- a/include/reg_control.h +++ b/include/reg_control.h @@ -18,5 +18,6 @@ extern s16 gUnknown_203B0AE; void nullsub_17(void); void xxx_update_bg_sound_input(void); +void sub_800BA5C(void); #endif // GUARD_CODE_800B5F0_H \ No newline at end of file diff --git a/include/sprite.h b/include/sprite.h index 1e217b36e..f4e4ce738 100644 --- a/include/sprite.h +++ b/include/sprite.h @@ -83,6 +83,7 @@ void SetSavingIconCoords(struct Position *); void sub_8004E8C(struct unkStruct_2039DB0 *); void sub_8005180(void); void sub_8005304(void); +void sub_800533C(struct ax_pose **, struct UnkSpriteMem **, struct axdata1 *, u16 *, bool8); void sub_80053AC(struct EntitySpriteInfo *, struct OpenedFile *, u32, u32, u32, u32, bool8); void sub_80053D0(struct EntitySpriteInfo *, struct Dungeon_ax *, u32, u32, u32, u32, bool8); void sub_800543C(struct EntitySpriteInfo *, struct OpenedFile *, u32, u32, u32, bool8); diff --git a/ld_script.txt b/ld_script.txt index 0767a1bc8..26656e082 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -61,9 +61,6 @@ SECTIONS { src/input.o(.text); src/code_8004AA0.o(.text); src/sprite.o(.text); - asm/code_800558C.o(.text); - src/code_800558C_1.o(.text); - asm/code_8005838.o(.text); src/code_800558C.o(.text); src/random.o(.text); src/text1.o(.text); @@ -190,7 +187,6 @@ SECTIONS { asm/code_80521D0.o(.text); src/charge_move.o(.text); src/move_util.o(.text); - asm/code_805744C.o(.text); src/code_8057824.o(.text); asm/code_8057824.o(.text); src/code_805A120.o(.text); diff --git a/src/bg_control.c b/src/bg_control.c index afec0db32..a262e34b0 100644 --- a/src/bg_control.c +++ b/src/bg_control.c @@ -1,51 +1,42 @@ #include "global.h" +#include "bg_control.h" #include "input.h" -#include "bg.h" EWRAM_DATA struct BGControlStruct gBG0Control = {0}; EWRAM_DATA struct BGControlStruct gBG1Control = {0}; EWRAM_DATA struct BGControlStruct gBG2Control = {0}; EWRAM_DATA struct BGControlStruct gBG3Control = {0}; -EWRAM_DATA u8 gBldAlpha_CoeffA = {0}; -EWRAM_DATA u8 gBldAlpha_CoeffB = {0}; - +static EWRAM_DATA u8 sBldAlpha_CoeffA = {0}; +static EWRAM_DATA u8 sBldAlpha_CoeffB = {0}; EWRAM_DATA u16 gBldAlpha; EWRAM_DATA u16 gBldCnt; -EWRAM_DATA u8 gUnknown_202D7FE; +EWRAM_DATA bool8 gUnknown_202D7FE; void SetBldAlphaReg(s32 lowAlpha, s32 highAlpha) { - if(lowAlpha < 0) - { + if (lowAlpha < 0) lowAlpha = 0; - } - else if(lowAlpha > 16) - { + else if (lowAlpha > 16) lowAlpha = 16; - } - if(highAlpha < 0) - { + if (highAlpha < 0) highAlpha = 0; - } - else if(highAlpha > 16) - { + else if (highAlpha > 16) highAlpha = 16; - } - gBldAlpha_CoeffA = lowAlpha; - gBldAlpha_CoeffB = highAlpha; + sBldAlpha_CoeffA = lowAlpha; + sBldAlpha_CoeffB = highAlpha; - gBldAlpha = BLDALPHA_BLEND1(gBldAlpha_CoeffA, gBldAlpha_CoeffB); + gBldAlpha = BLDALPHA_BLEND1(sBldAlpha_CoeffA, sBldAlpha_CoeffB); } -void SetBG0RegOffsets(s32 xoffset, s32 yoffset) +static void SetBG0RegOffsets(s32 xoffset, s32 yoffset) { gBG0Control.hofs = xoffset; gBG0Control.vofs = yoffset; } -void SetBG1RegOffsets(s32 xoffset, s32 yoffset) +static void SetBG1RegOffsets(s32 xoffset, s32 yoffset) { gBG1Control.hofs = xoffset; gBG1Control.vofs = yoffset; @@ -63,7 +54,7 @@ void SetBG3RegOffsets(s32 xoffset, s32 yoffset) gBG3Control.vofs = yoffset; } -void SetBGRegOffsets(s32 reg, u32 xoffset, s32 yoffset) +UNUSED static void SetBGRegOffsets(s32 reg, u32 xoffset, s32 yoffset) { switch (reg) { default: @@ -74,7 +65,7 @@ void SetBGRegOffsets(s32 reg, u32 xoffset, s32 yoffset) } } -void SetBGRegXOffset(s32 reg, s32 offset) +UNUSED static void SetBGRegXOffset(s32 reg, s32 offset) { switch (reg) { default: @@ -93,7 +84,7 @@ void SetBGRegXOffset(s32 reg, s32 offset) } } -void SetBGRegYOffset(s32 reg, s32 offset) +UNUSED static void SetBGRegYOffset(s32 reg, s32 offset) { switch (reg) { default: @@ -112,14 +103,13 @@ void SetBGRegYOffset(s32 reg, s32 offset) } } -void sub_800CD64(s32 r0, u8 r1) +void sub_800CD64(s32 r0, bool8 r1) { gUnknown_202D7FE = r1; - gBG2Control.unk2 = r0 ? 0x8000 : 0; + gBG2Control.unk2 = r0 ? 0x8000 : 0; } void SetBGOBJEnableFlags(u32 mask) { - REG_DISPCNT = (REG_DISPCNT & 0xe0ff) | (~(mask << 8) & (DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON)); -} - + REG_DISPCNT = (REG_DISPCNT & 0xE0FF) | (~(mask << 8) & (DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON)); +} \ No newline at end of file diff --git a/src/code_2.c b/src/code_2.c index 0278f7008..4a5e6a291 100644 --- a/src/code_2.c +++ b/src/code_2.c @@ -1,5 +1,5 @@ #include "global.h" -#include "bg.h" +#include "bg_control.h" #include "constants/bg_music.h" #include "debug.h" #include "file_system.h" @@ -30,7 +30,6 @@ extern void LoadGameOptions(void); extern void SetWindowBGColor(void); extern void LoadItemParameters(void); extern void LoadMailInfo(void); -extern void sub_800CD64(u32, u32); extern void sub_800DAAC(void); extern void sub_800135C(void); extern void xxx_script_related_8001334(u32); @@ -88,7 +87,7 @@ void GameLoop(void) LoadWazaParameters(); sub_80950BC(); LoadMailInfo(); - sub_800CD64(0x8000, 0); + sub_800CD64(0x8000, FALSE); sub_8012284(); InitializeGameOptions(TRUE); SetWindowTitle(gPMDBuildVersion); diff --git a/src/code_800558C.c b/src/code_800558C.c index df3fd3881..e81b8e0fc 100644 --- a/src/code_800558C.c +++ b/src/code_800558C.c @@ -1,19 +1,1771 @@ #include "global.h" +#include "bg_control.h" +#include "bg_palette_buffer.h" #include "code_800558C.h" +#include "cpu.h" +#include "sprite.h" extern u8 gUnknown_2026E38; -extern u32 gUnknown_2026E3C; +extern u32 *gUnknown_2026E3C; +extern s32 gUnknown_2026E40; +extern s32 gUnknown_2026E44; +extern s32 gUnknown_2026E48; +extern bool8 gUnknown_2026E4C; extern u16 gUnknown_2026E4E; extern bool32 gUnknown_2026E50; extern bool32 gUnknown_2026E54; -extern u32 gUnknown_2026E58; +extern u32 *gUnknown_2026E58; +extern s16 gUnknown_2026E60[]; +extern s16 gUnknown_20270E8[]; -extern void SetBldAlphaReg(s32 r0, s32 r1); +extern s16 *gUnknown_203B078; -// Unused -void sub_80060A8(void) +// data.s +extern const u16 gUnknown_80B8008[17]; +extern const s16 gUnknown_80B802A[16 * 10]; +extern const s16 gUnknown_80B816A[16 * 10]; +extern const s16 gUnknown_80B82AA[16 * 10]; +extern const s16 gUnknown_80B83EA[16 * 10]; + +// code_8009804.s +extern s32 sub_8009C7C(s32); +extern s32 sub_8009D04(s32); + +static void sub_800561C(struct unkStructFor800561C *, s32, s32, u8 *); +s32 *sub_8005674(struct unkStructFor800561C *, s32); + +void DoAxFrame_800558C(struct axPokemon *a0, s32 spriteX, s32 spriteY, u32 a3, u32 paletteNum, u16 *spriteMasks) { + if (!(a0->axdata.flags >> 15)) + return; + if (a0->axdata.sub1.poseId < 0) + sub_80054BC(a0); + + if (!(a0->axdata.flags >> 15)) + return; + + a0->axdata.sub1.xPos = a0->axdata.sub1.xOffset + spriteX; + a0->axdata.sub1.yPos = a0->axdata.sub1.yOffset + spriteY; + a0->axdata.sub1.paletteNum = paletteNum; + a0->axdata.sub1.unk16 = a3; + sub_800533C(a0->axdata.poseData, a0->axdata.spriteData, &a0->axdata.sub1, spriteMasks, !!(a0->axdata.sub1.lastPoseId ^ a0->axdata.sub1.poseId)); + a0->axdata.sub1.lastPoseId = a0->axdata.sub1.poseId; + + if (a0->axdata.flags & 0x800) + a0->axdata.flags &= 0xF7FF; +} + +void sub_8005610(struct OpenedFile *a0, s32 a1, s32 a2, u8 *a3) +{ + sub_800561C((struct unkStructFor800561C *)a0->data, a1, a2, a3); +} + +static void sub_800561C(struct unkStructFor800561C *a0, s32 a1, s32 a2, u8 *a3) +{ + s32 i; + + if (a0->unk14 != NULL) + CpuCopy(OBJ_VRAM0 + a1 * 0x20, a0->unk14, a0->unk1C << 5); + + if (a0->unk18 != NULL) { + for (i = 0; i < 16; i++) + SetBGPaletteBufferColorRGB(i + 480, (u8 *)&a0->unk18[i], a2, a3); + } +} + +UNUSED static s32 *sub_8005668(struct OpenedFile *a0, s32 a1) +{ + return sub_8005674((struct unkStructFor800561C *)a0->data, a1); +} + +s32 *sub_8005674(struct unkStructFor800561C *a0, s32 a1) +{ + if (a0->unk14 != NULL) + CpuCopy(OBJ_VRAM0 + a1 * 0x20, a0->unk14, a0->unk1C << 5); + + return a0->unk18; +} + +// a0 is an s16[2] and a1 is not confirmed to be (struct axPokemon *) yet +void sub_800569C(s16 *a0, struct axPokemon *a1, u8 a2) +{ + s16 *ptr; + s16 *ptr2; + s16 *ptr3; + + a0[0] = 0; + a0[1] = 0; + + if (!(a1->axdata.flags >> 15) || a2 >= 4) + return; + + if (a1->axdata.paletteData != NULL) { + ptr = (s16 *)a1->axdata.paletteData; + ptr += a1->axdata.sub1.poseId * 8; + ptr2 = ptr + (a2 * 2); + if (ptr2[0] == 99 && ptr2[1] == 99) { + a0[0] = 99; + a0[1] = 99; + } + else { + ptr3 = ptr + (a2 * 2); + a0[0] = a1->axdata.sub1.xOffset + ptr3[0]; + a0[1] = a1->axdata.sub1.yOffset + ptr3[1]; + } + } + else { + a0[0] = 99; + a0[1] = 99; + } +} + +// a0 is an s16[12] and a1 is not confirmed to be (struct axPokemon *) yet +void sub_8005700(s16 *a0, struct axPokemon *a1) +{ + s32 i; + s16 *ptr; + + if (!(a1->axdata.flags >> 15)) + return; + + if (a1->axdata.paletteData != NULL) { + ptr = (s16 *)a1->axdata.paletteData; + ptr += a1->axdata.sub1.poseId * 8; + for (i = 0; i <= 6; i += 2) { + if (ptr[i] == 99 && ptr[i + 1] == 99) { + a0[0] = 99; + a0[1] = 99; + } + else { + a0[0] = a1->axdata.sub1.xOffset + ptr[i]; + a0[1] = a1->axdata.sub1.yOffset + ptr[i + 1]; + } + a0 += 2; + } + } + else { + for (i = 0; i < 4; i++) { + a0[0] = 99; + a0[1] = 99; + a0 += 2; + } + } +} + +UNUSED static void sub_8005764(s32 a0, struct OpenedFile *file, s32 a2, u8 *a3) +{ + sub_8005770(a0, file->data, a2, a3); +} + +void sub_8005770(s32 param_1, u8 *RGBArray, s32 a1, u8 *a2) +{ + s32 i; + + for (i = 0; i < 16; i++) + SetBGPaletteBufferColorRGB((param_1 + 0x10) * 0x10 + i, &RGBArray[i * 4], a1, a2); +} + +// Maybe struct Position +void nullsub_7(s16 *a0) +{} + +void nullsub_8(void) +{} + +void nullsub_9(void) +{} + +void nullsub_10(bool8 a0) +{} + +UNUSED static void nullsub_144(void) +{} + +void nullsub_11(void) +{} + +void nullsub_12(void) +{} + +void nullsub_13(void) +{} + +UNUSED static void nullsub_145(void) +{} + +void nullsub_14(void) +{} + +UNUSED static void nullsub_146(void) +{} + +UNUSED static void nullsub_147(void) +{} + +UNUSED static void nullsub_148(void) +{} + +UNUSED static void nullsub_149(void) +{} + +UNUSED static bool8 sub_80057D8(void) +{ + return FALSE; +} + +UNUSED static bool8 sub_80057DC(void) +{ + return FALSE; +} + +UNUSED static void nullsub_150(void) +{} + +UNUSED static void nullsub_151(void) +{} + +void sub_80057E8(void) +{ + gUnknown_2026E4C = TRUE; + gUnknown_2026E54 = FALSE; + gUnknown_2026E50 = 1; + gUnknown_2026E58 = NULL; + gUnknown_2026E3C = NULL; + gUnknown_2026E38 = 0; + gUnknown_2026E4E = 0x60C; + gUnknown_203B078 = NULL; +} + +#ifdef NONMATCHING // Not enough dopamine reward for this one. 86.61% https://decomp.me/scratch/Hj8Tn +void sub_8005838(s32 *a0, u8 a1) +{ + u8 kind; + s16 *r1; + s16 *r2; + s16 *r3; + s32 i; +s32 *case5r4; +s32 *iStack00000004; +s32 *iStack00000008; + + kind = a1; + if (!gUnknown_2026E4C) + kind = 0; + + r3 = !gUnknown_2026E54 ? &gUnknown_2026E60 : &gUnknown_20270E8; + + r2 = gUnknown_203B078; + if (r2 == NULL) + r2 = &gUnknown_80B83EA; + + gUnknown_2026E58 = r3; + + switch (kind) { + case 0: + for (i = 0; i < 10; i++) { + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + *r3++ = *r2++; + *r3++ = 0; + } + break; + case 1: + r1 = gUnknown_80B816A; + for (i = 0; i < 10; i++) { + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + } + break; + case 2: + r1 = gUnknown_80B802A; + for (i = 0; i < 10; i++) { + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + } + break; + case 3: + if ((a0[0] < 0 && a0[2] < 0) + || (a0[1] < 0 && a0[3] < 0) + || (a0[0] >= 240 && a0[2] >= 240) + || (a0[1] >= 160 && a0[3] >= 160)) { + for (i = 0; i < 10; i++) { + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + *r3++ = *r2++; + *r3++ = 240; + } + } + else { + s32 iVar5; + s32 r4; + s32 ip; + for (i = 0, ip = 256, r1 = &gUnknown_80B8008[-a0[1]]; i < 160; r1++, i++) { + if (a0[1] > i) { + *r3++ = *r2++; + *r3++ = ip; + } + else { + if (a0[3] <= i) { + *r3++ = *r2++; + *r3++ = ip; + } + else { + if (i - a0[1] < 16) { + iVar5 = a0[2] - *r1; + r4 = a0[0] + *r1; + } + else { + if (a0[3] - i < 16) { + iVar5 = a0[2] - gUnknown_80B8008[r4]; + r4 = a0[0] + gUnknown_80B8008[r4]; + } + else { + iVar5 = a0[2]; + r4 = a0[0]; + } + } + + if (r4 < 0) + r4 = 0; + if (r4 > 240 - 1) + r4 = 240 - 1; + + if (iVar5 < 1) + iVar5 = 1; + if (iVar5 > 240) + iVar5 = 240; + + *r3++ = *r2++; + *r3++ = (iVar5 << 8) | r4; + } + } + } + } + break; + case 4: + r1 = gUnknown_80B82AA; + for (i = 0; i < 15; i++) { + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + *r3++ = *r2++; + *r3++ = *r1++; + } + break; + case 5: + case5r4 = &gUnknown_2026E40; + iStack00000004 = &gUnknown_2026E44; + iStack00000008 = &gUnknown_2026E48; + r1 = gUnknown_80B82AA; + for (i = 0; i < 15; i++) { + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + *r3++ = *r2++; + *r3++ = 256; + } + { +s32 spC; +s32 r8; +s32 iVar3; +s32 sp14; +s32 iVar5; +s32 uVar7; // r2 +s32 sp10; +s32 iVar10; +s32 iVar11; // r4 +s32 iVar12; // r9 +s32 iVar13; +s32 temp1; + temp1 = gUnknown_2026E48; + if (temp1 < 0) + temp1 = gUnknown_2026E48 + 0xFF; + spC = 0x400 / ((temp1 >> 8) + 1); + + iVar11 = *iStack00000004; + if (iVar11 < 0) + iVar11 = *iStack00000004 + 0xFF; + iVar11 >>= 8; + + sp10 = 0; + iVar12 = iVar11 * 4 + 2; + iVar10 = iVar11; + iVar13 = iVar11 * 4 + 2; + do { + temp1 = sub_8009C7C(sp10); + temp1 = *iStack00000008 * temp1; + if (temp1 < 0) + temp1 += 0xFF; + + sp14 = *iStack00000004 + (temp1 >> 8); + if (sp14 < 0) + sp14 += 0xFF; + sp14 >>= 8; + + r8 = *iStack00000004 - (temp1 >> 8); + if (r8 < 0) + r8 += 0xFF; + r8 >>= 8; + + if (iVar10 < sp14 || iVar11 > r8) { + temp1 = sub_8009D04(sp10); + temp1 = *iStack00000008 * temp1; + if (temp1 < 0) + temp1 += 0xFF; + + iVar5 = *case5r4 - (temp1 >> 8); + if (iVar5 < 0) + iVar5 += 0xFF; + iVar5 = iVar5 >> 8; + + iVar3 = *case5r4 + (temp1 >> 8); + if (iVar3 < 0) + iVar3 += 0xFF; + iVar3 >>= 8; + + if (iVar5 < 0) + iVar5 = 0; + if (iVar3 < 0) + iVar3 = 0; + if (iVar5 > 240 - 1) + iVar5 = 160 - 1; + if (iVar3 > 240 - 1) + iVar3 = 160 - 1; + + if (iVar3 > iVar5) + uVar7 = (iVar3 << 8) | iVar5; + else + uVar7 = (iVar5 << 8) | iVar3; + + while (iVar10 < sp14) { + if (iVar10 >= 0) { // Cannot merge ifs for matching + if (iVar10 < 160) { + if (gUnknown_2026E54 == 0) + gUnknown_2026E60[iVar13] = uVar7; + else + gUnknown_20270E8[iVar13] = uVar7; + } + } + iVar13 += 2; + iVar10++; + } + + while (iVar11 > r8) { + if (iVar11 >= 0) { // Cannot merge ifs for matching + if (iVar11 < 160) { + if (gUnknown_2026E54 == 0) + gUnknown_2026E60[iVar12] = uVar7; + else + gUnknown_20270E8[iVar12] = uVar7; + } + } + iVar12 -= 2; + iVar11--; + } + } + sp10 += spC; + } while (sp10 < 0x400); + } + break; + } +} +#else +NAKED void sub_8005838(s32 *a0, u8 a1) +{ + asm_unified( + "push {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x18\n" + "\tadds r5, r0, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tldr r0, _08005880\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0\n" + "\tbne _08005854\n" + "\tmovs r1, 0\n" +"_08005854:\n" + "\tldr r0, _08005884\n" + "\tldr r0, [r0]\n" + "\tldr r3, _08005888\n" + "\tcmp r0, 0\n" + "\tbne _08005860\n" + "\tldr r3, _0800588C\n" +"_08005860:\n" + "\tldr r0, _08005890\n" + "\tldr r2, [r0]\n" + "\tcmp r2, 0\n" + "\tbne _0800586A\n" + "\tldr r2, _08005894\n" +"_0800586A:\n" + "\tldr r0, _08005898\n" + "\tstr r3, [r0]\n" + "\tcmp r1, 0x5\n" + "\tbls _08005876\n" + "\tbl _08006094\n" +"_08005876:\n" + "\tlsls r0, r1, 2\n" + "\tldr r1, _0800589C\n" + "\tadds r0, r1\n" + "\tldr r0, [r0]\n" + "\tmov pc, r0\n" + "\t.align 2, 0\n" +"_08005880: .4byte gUnknown_2026E4C\n" +"_08005884: .4byte gUnknown_2026E54\n" +"_08005888: .4byte gUnknown_20270E8\n" +"_0800588C: .4byte gUnknown_2026E60\n" +"_08005890: .4byte gUnknown_203B078\n" +"_08005894: .4byte gUnknown_80B83EA\n" +"_08005898: .4byte gUnknown_2026E58\n" +"_0800589C: .4byte _080058A0\n" + "\t.align 2, 0\n" +"_080058A0:\n" + "\t.4byte _080058B8\n" + "\t.4byte _08005984\n" + "\t.4byte _08005A98\n" + "\t.4byte _08005BAC\n" + "\t.4byte _08005D46\n" + "\t.4byte _08005E58\n" +"_080058B8:\n" + "\tmovs r1, 0\n" + "\tmovs r7, 0x9\n" +"_080058BC:\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tsubs r7, 0x1\n" + "\tcmp r7, 0\n" + "\tbge _080058BC\n" + "\tb _08006094\n" +"_08005984:\n" + "\tldr r1, _08005A94\n" + "\tmovs r7, 0x9\n" +"_08005988:\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tsubs r7, 0x1\n" + "\tcmp r7, 0\n" + "\tblt _08005A90\n" + "\tb _08005988\n" +"_08005A90:\n" + "\tb _08006094\n" + "\t.align 2, 0\n" +"_08005A94: .4byte gUnknown_80B816A\n" +"_08005A98:\n" + "\tldr r1, _08005BA8\n" + "\tmovs r7, 0x9\n" +"_08005A9C:\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tsubs r7, 0x1\n" + "\tcmp r7, 0\n" + "\tblt _08005BA4\n" + "\tb _08005A9C\n" +"_08005BA4:\n" + "\tb _08006094\n" + "\t.align 2, 0\n" +"_08005BA8: .4byte gUnknown_80B802A\n" +"_08005BAC:\n" + "\tldr r0, [r5]\n" + "\tmov r10, r0\n" + "\tcmp r0, 0\n" + "\tbge _08005BBA\n" + "\tldr r0, [r5, 0x8]\n" + "\tcmp r0, 0\n" + "\tblt _08005BDC\n" +"_08005BBA:\n" + "\tldr r1, [r5, 0x4]\n" + "\tcmp r1, 0\n" + "\tbge _08005BC6\n" + "\tldr r0, [r5, 0xC]\n" + "\tcmp r0, 0\n" + "\tblt _08005BDC\n" +"_08005BC6:\n" + "\tmov r4, r10\n" + "\tcmp r4, 0xEF\n" + "\tble _08005BD2\n" + "\tldr r0, [r5, 0x8]\n" + "\tcmp r0, 0xEF\n" + "\tbgt _08005BDC\n" +"_08005BD2:\n" + "\tcmp r1, 0x9F\n" + "\tble _08005CA8\n" + "\tldr r0, [r5, 0xC]\n" + "\tcmp r0, 0x9F\n" + "\tble _08005CA8\n" +"_08005BDC:\n" + "\tmovs r1, 0xF0\n" + "\tmovs r7, 0x9\n" +"_08005BE0:\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tsubs r7, 0x1\n" + "\tcmp r7, 0\n" + "\tbge _08005BE0\n" + "\tb _08006094\n" +"_08005CA8:\n" + "\tmovs r7, 0\n" + "\tmov r8, r1\n" + "\tmovs r6, 0x80\n" + "\tlsls r6, 1\n" + "\tmov r12, r6\n" + "\tlsls r0, r1, 1\n" + "\tldr r1, _08005CCC\n" + "\tsubs r6, r1, r0\n" + "\tmov r9, r10\n" +"_08005CBA:\n" + "\tcmp r8, r7\n" + "\tble _08005CD0\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tmov r4, r12\n" + "\tstrh r4, [r3]\n" + "\tb _08005D3A\n" + "\t.align 2, 0\n" +"_08005CCC: .4byte gUnknown_80B8008\n" +"_08005CD0:\n" + "\tldr r1, [r5, 0xC]\n" + "\tcmp r1, r7\n" + "\tbgt _08005CE2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tmov r0, r12\n" + "\tb _08005D38\n" +"_08005CE2:\n" + "\tmov r4, r8\n" + "\tsubs r0, r7, r4\n" + "\tcmp r0, 0xF\n" + "\tbgt _08005CF0\n" + "\tmovs r0, 0\n" + "\tldrsh r1, [r6, r0]\n" + "\tb _08005D00\n" +"_08005CF0:\n" + "\tsubs r0, r1, r7\n" + "\tcmp r0, 0xF\n" + "\tbgt _08005D10\n" + "\tlsls r0, 1\n" + "\tldr r1, _08005D0C\n" + "\tadds r0, r1\n" + "\tmovs r4, 0\n" + "\tldrsh r1, [r0, r4]\n" +"_08005D00:\n" + "\tmov r0, r9\n" + "\tadds r4, r0, r1\n" + "\tldr r0, [r5, 0x8]\n" + "\tsubs r1, r0, r1\n" + "\tb _08005D14\n" + "\t.align 2, 0\n" +"_08005D0C: .4byte gUnknown_80B8008\n" +"_08005D10:\n" + "\tmov r4, r10\n" + "\tldr r1, [r5, 0x8]\n" +"_08005D14:\n" + "\tcmp r4, 0\n" + "\tbge _08005D1A\n" + "\tmovs r4, 0\n" +"_08005D1A:\n" + "\tcmp r4, 0xEF\n" + "\tble _08005D20\n" + "\tmovs r4, 0xEF\n" +"_08005D20:\n" + "\tcmp r1, 0\n" + "\tbgt _08005D26\n" + "\tmovs r1, 0x1\n" +"_08005D26:\n" + "\tcmp r1, 0xF0\n" + "\tble _08005D2C\n" + "\tmovs r1, 0xF0\n" +"_08005D2C:\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tlsls r0, r1, 8\n" + "\torrs r0, r4\n" +"_08005D38:\n" + "\tstrh r0, [r3]\n" +"_08005D3A:\n" + "\tadds r3, 0x2\n" + "\tadds r6, 0x2\n" + "\tadds r7, 0x1\n" + "\tcmp r7, 0x9F\n" + "\tble _08005CBA\n" + "\tb _08006094\n" +"_08005D46:\n" + "\tldr r1, _08005E54\n" + "\tmovs r7, 0xE\n" +"_08005D4A:\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r1]\n" + "\tstrh r0, [r3]\n" + "\tadds r1, 0x2\n" + "\tadds r3, 0x2\n" + "\tsubs r7, 0x1\n" + "\tcmp r7, 0\n" + "\tblt _08005E52\n" + "\tb _08005D4A\n" +"_08005E52:\n" + "\tb _08006094\n" + "\t.align 2, 0\n" +"_08005E54: .4byte gUnknown_80B82AA\n" +"_08005E58:\n" + "\tldr r4, _08005FF4\n" + "\tldr r5, _08005FF8\n" + "\tldr r6, _08005FFC\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 1\n" + "\tadds r1, r0, 0\n" + "\tmovs r7, 0xE\n" +"_08005E66:\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tldrh r0, [r2]\n" + "\tstrh r0, [r3]\n" + "\tadds r2, 0x2\n" + "\tadds r3, 0x2\n" + "\tstrh r1, [r3]\n" + "\tadds r3, 0x2\n" + "\tsubs r7, 0x1\n" + "\tcmp r7, 0\n" + "\tbge _08005E66\n" + "\tldr r4, [r4]\n" + "\tstr r4, [sp]\n" + "\tldr r5, [r5]\n" + "\tstr r5, [sp, 0x4]\n" + "\tldr r6, [r6]\n" + "\tstr r6, [sp, 0x8]\n" + "\tadds r1, r6, 0\n" + "\tcmp r6, 0\n" + "\tbge _08005F40\n" + "\tadds r1, 0xFF\n" +"_08005F40:\n" + "\tasrs r1, 8\n" + "\tadds r1, 0x1\n" + "\tmovs r0, 0x80\n" + "\tlsls r0, 3\n" + "\tbl __divsi3\n" + "\tstr r0, [sp, 0xC]\n" + "\tldr r0, [sp, 0x4]\n" + "\tcmp r0, 0\n" + "\tbge _08005F56\n" + "\tadds r0, 0xFF\n" +"_08005F56:\n" + "\tasrs r4, r0, 8\n" + "\tadds r5, r4, 0\n" + "\tmovs r3, 0\n" + "\tlsls r0, r4, 2\n" + "\tadds r7, r0, 0x2\n" + "\tmov r9, r7\n" +"_08005F62:\n" + "\tadds r0, r3, 0\n" + "\tstr r3, [sp, 0x10]\n" + "\tbl sub_8009C7C\n" + "\tldr r1, [sp, 0x8]\n" + "\tmuls r0, r1\n" + "\tldr r3, [sp, 0x10]\n" + "\tcmp r0, 0\n" + "\tbge _08005F76\n" + "\tadds r0, 0xFF\n" +"_08005F76:\n" + "\tasrs r0, 8\n" + "\tldr r2, [sp, 0x4]\n" + "\tadds r1, r2, r0\n" + "\tcmp r1, 0\n" + "\tbge _08005F82\n" + "\tadds r1, 0xFF\n" +"_08005F82:\n" + "\tasrs r1, 8\n" + "\tstr r1, [sp, 0x14]\n" + "\tldr r6, [sp, 0x4]\n" + "\tsubs r0, r6, r0\n" + "\tcmp r0, 0\n" + "\tbge _08005F90\n" + "\tadds r0, 0xFF\n" +"_08005F90:\n" + "\tasrs r0, 8\n" + "\tmov r8, r0\n" + "\tldr r0, [sp, 0x14]\n" + "\tcmp r5, r0\n" + "\tblt _08005FA4\n" + "\tldr r1, [sp, 0xC]\n" + "\tadds r1, r3\n" + "\tmov r10, r1\n" + "\tcmp r4, r8\n" + "\tble _0800608A\n" +"_08005FA4:\n" + "\tadds r0, r3, 0\n" + "\tstr r3, [sp, 0x10]\n" + "\tbl sub_8009D04\n" + "\tldr r2, [sp, 0x8]\n" + "\tmuls r0, r2\n" + "\tldr r3, [sp, 0x10]\n" + "\tcmp r0, 0\n" + "\tbge _08005FB8\n" + "\tadds r0, 0xFF\n" +"_08005FB8:\n" + "\tasrs r0, 8\n" + "\tldr r6, [sp]\n" + "\tsubs r1, r6, r0\n" + "\tcmp r1, 0\n" + "\tbge _08005FC4\n" + "\tadds r1, 0xFF\n" +"_08005FC4:\n" + "\tasrs r1, 8\n" + "\tldr r2, [sp]\n" + "\tadds r0, r2, r0\n" + "\tcmp r0, 0\n" + "\tbge _08005FD0\n" + "\tadds r0, 0xFF\n" +"_08005FD0:\n" + "\tasrs r0, 8\n" + "\tcmp r1, 0\n" + "\tbge _08005FD8\n" + "\tmovs r1, 0\n" +"_08005FD8:\n" + "\tcmp r0, 0\n" + "\tbge _08005FDE\n" + "\tmovs r0, 0\n" +"_08005FDE:\n" + "\tcmp r1, 0xEF\n" + "\tble _08005FE4\n" + "\tmovs r1, 0x9F\n" +"_08005FE4:\n" + "\tcmp r0, 0xEF\n" + "\tble _08005FEA\n" + "\tmovs r0, 0x9F\n" +"_08005FEA:\n" + "\tcmp r1, r0\n" + "\tble _08006000\n" + "\tlsls r2, r1, 8\n" + "\torrs r2, r0\n" + "\tb _08006004\n" + "\t.align 2, 0\n" +"_08005FF4: .4byte gUnknown_2026E40\n" +"_08005FF8: .4byte gUnknown_2026E44\n" +"_08005FFC: .4byte gUnknown_2026E48\n" +"_08006000:\n" + "\tlsls r2, r0, 8\n" + "\torrs r2, r1\n" +"_08006004:\n" + "\tldr r6, [sp, 0xC]\n" + "\tadds r3, r6\n" + "\tmov r10, r3\n" + "\tldr r0, [sp, 0x14]\n" + "\tcmp r5, r0\n" + "\tbge _0800604E\n" + "\tldr r1, _08006030\n" + "\tmov r12, r1\n" + "\tldr r3, _08006034\n" + "\tadd r3, r9\n" + "\tldr r1, _08006038\n" + "\tadd r1, r9\n" +"_0800601C:\n" + "\tcmp r5, 0\n" + "\tblt _0800603E\n" + "\tcmp r5, 0x9F\n" + "\tbgt _0800603E\n" + "\tmov r6, r12\n" + "\tldr r0, [r6]\n" + "\tcmp r0, 0\n" + "\tbne _0800603C\n" + "\tstrh r2, [r1]\n" + "\tb _0800603E\n" + "\t.align 2, 0\n" +"_08006030: .4byte gUnknown_2026E54\n" +"_08006034: .4byte gUnknown_20270E8\n" +"_08006038: .4byte gUnknown_2026E60\n" +"_0800603C:\n" + "\tstrh r2, [r3]\n" +"_0800603E:\n" + "\tadds r3, 0x4\n" + "\tadds r1, 0x4\n" + "\tmovs r0, 0x4\n" + "\tadd r9, r0\n" + "\tadds r5, 0x1\n" + "\tldr r6, [sp, 0x14]\n" + "\tcmp r5, r6\n" + "\tblt _0800601C\n" +"_0800604E:\n" + "\tcmp r4, r8\n" + "\tble _0800608A\n" + "\tldr r6, _08006070\n" + "\tldr r0, _08006074\n" + "\tadds r3, r7, r0\n" + "\tldr r0, _08006078\n" + "\tadds r1, r7, r0\n" +"_0800605C:\n" + "\tcmp r4, 0\n" + "\tblt _0800607E\n" + "\tcmp r4, 0x9F\n" + "\tbgt _0800607E\n" + "\tldr r0, [r6]\n" + "\tcmp r0, 0\n" + "\tbne _0800607C\n" + "\tstrh r2, [r1]\n" + "\tb _0800607E\n" + "\t.align 2, 0\n" +"_08006070: .4byte gUnknown_2026E54\n" +"_08006074: .4byte gUnknown_20270E8\n" +"_08006078: .4byte gUnknown_2026E60\n" +"_0800607C:\n" + "\tstrh r2, [r3]\n" +"_0800607E:\n" + "\tsubs r3, 0x4\n" + "\tsubs r1, 0x4\n" + "\tsubs r7, 0x4\n" + "\tsubs r4, 0x1\n" + "\tcmp r4, r8\n" + "\tbgt _0800605C\n" +"_0800608A:\n" + "\tmov r3, r10\n" + "\tldr r0, _080060A4\n" + "\tcmp r3, r0\n" + "\tbgt _08006094\n" + "\tb _08005F62\n" +"_08006094:\n" + "\tadd sp, 0x18\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" +"_080060A4: .4byte 0x000003ff"); +} +#endif // NONMATCHING + +UNUSED static void sub_80060A8(void) +{ gUnknown_2026E3C = gUnknown_2026E58; gUnknown_2026E54 = !gUnknown_2026E54; gUnknown_2026E50 = !gUnknown_2026E50; @@ -27,4 +1779,4 @@ void sub_80060EC(void) gUnknown_2026E50 = !gUnknown_2026E50; SetBldAlphaReg((gUnknown_2026E4E & 0x1F00) >> 8, gUnknown_2026E4E & 0x1F); gUnknown_2026E38 = TRUE; -} +} \ No newline at end of file diff --git a/src/code_800558C_1.c b/src/code_800558C_1.c deleted file mode 100644 index 1650d92fa..000000000 --- a/src/code_800558C_1.c +++ /dev/null @@ -1,97 +0,0 @@ -#include "global.h" -#include "bg_palette_buffer.h" -#include "code_800558C_1.h" -#include "file_system.h" - -extern u8 gUnknown_2026E38; -extern u32 gUnknown_2026E3C; -extern u8 gUnknown_2026E4C; -extern u16 gUnknown_2026E4E; -extern bool32 gUnknown_2026E50; -extern bool32 gUnknown_2026E54; -extern u32 gUnknown_2026E58; -extern u32 gUnknown_203B078; - -UNUSED static void sub_8005764(s32 a0, struct OpenedFile *file, s32 a2, u8 *a3) -{ - sub_8005770(a0, file->data, a2, a3); -} - -void sub_8005770(s32 param_1, u8 *RGBArray, s32 a1, u8 *a2) -{ - s32 i; - - for (i = 0; i < 16; i++) - SetBGPaletteBufferColorRGB((param_1 + 0x10) * 0x10 + i, &RGBArray[i * 4], a1, a2); -} - -// Maybe struct Position -void nullsub_7(s16 *a0) -{} - -void nullsub_8(void) -{} - -void nullsub_9(void) -{} - -void nullsub_10(bool8 a0) -{} - -UNUSED static void nullsub_144(void) -{} - -void nullsub_11(void) -{} - -void nullsub_12(void) -{} - -void nullsub_13(void) -{} - -UNUSED static void nullsub_145(void) -{} - -void nullsub_14(void) -{} - -UNUSED static void nullsub_146(void) -{} - -UNUSED static void nullsub_147(void) -{} - -UNUSED static void nullsub_148(void) -{} - -UNUSED static void nullsub_149(void) -{} - -UNUSED static bool8 sub_80057D8(void) -{ - return FALSE; -} - -UNUSED static bool8 sub_80057DC(void) -{ - return FALSE; -} - -UNUSED static void nullsub_150(void) -{} - -UNUSED static void nullsub_151(void) -{} - -void sub_80057E8(void) -{ - gUnknown_2026E4C = 1; - gUnknown_2026E54 = 0; - gUnknown_2026E50 = 1; - gUnknown_2026E58 = 0; - gUnknown_2026E3C = 0; - gUnknown_2026E38 = 0; - gUnknown_2026E4E = 0x60C; - gUnknown_203B078 = 0; -} \ No newline at end of file diff --git a/src/code_800C9CC.c b/src/code_800C9CC.c index fc207e29b..78183a5b6 100644 --- a/src/code_800C9CC.c +++ b/src/code_800C9CC.c @@ -3,8 +3,6 @@ #include "random.h" #include "reg_control.h" -void sub_800BA5C(); - extern u32 gUnknown_203B0B8; extern u16 gRawKeyInput; diff --git a/src/code_800DAC0.c b/src/code_800DAC0.c index 1e6ab3da4..0ba45e6da 100644 --- a/src/code_800DAC0.c +++ b/src/code_800DAC0.c @@ -1,4 +1,6 @@ #include "global.h" +#include "bg_control.h" +#include "code_800558C.h" #include "code_800DAC0.h" #include "code_80118A4.h" #include "file_system.h" @@ -48,7 +50,6 @@ extern void sub_8009BE4(void); extern void sub_8040238(void); extern void sub_800F204(void); extern void sub_803EAF0(u32, u32); -extern void sub_800CD64(u32, u32); extern struct unkStruct_800F18C *sub_800F18C(s32); extern void sub_800DCA8(struct unkStruct_203B0CC_sub *); @@ -56,7 +57,6 @@ extern u8 gefob000_string[]; extern u8 gefob001_string[]; extern struct FileArchive gEffectFileArchive; -extern void sub_8005610(struct OpenedFile *, u32, u32,u32); extern void sub_800F034(void); extern void sub_800ED38(u32); extern void sub_800DC14(void); diff --git a/src/code_80118A4.c b/src/code_80118A4.c index f1489ddb3..21fd175a2 100644 --- a/src/code_80118A4.c +++ b/src/code_80118A4.c @@ -2,11 +2,12 @@ #include #include "global.h" #include "code_8004AA0.h" +#include "code_800558C.h" #include "code_80118A4.h" #include "music.h" #include "constants/bg_music.h" #include "play_time.h" -#include "bg.h" +#include "bg_control.h" #include "input.h" #include "config.h" #include "game_options.h" @@ -40,7 +41,6 @@ extern void TransferBGPaletteBuffer(void); extern void xxx_call_update_bg_vram(void); extern void sub_8009908(void); extern void xxx_call_update_bg_sound_input(void); -extern void sub_80060EC(void); extern void sub_800CB20(void); extern bool8 sub_80111C4(); extern void sub_8010F28(); diff --git a/src/code_8040094.c b/src/code_8040094.c index 98cf46d10..36d070e5f 100644 --- a/src/code_8040094.c +++ b/src/code_8040094.c @@ -1,4 +1,5 @@ #include "global.h" +#include "code_800558C.h" #include "code_80118A4.h" #include "code_80521D0.h" #include "dungeon_entity.h" @@ -15,7 +16,6 @@ extern struct FileArchive gDungeonFileArchive; extern struct OpenedFile *gUnknown_202EE04; extern void sub_803F7BC(void); -extern void sub_80060EC(void); extern void sub_800CB20(void); extern void LoadBufferedInputs(void); extern void xxx_call_update_bg_sound_input(void); diff --git a/src/code_8057824.c b/src/code_8057824.c index 421e933e5..3db250129 100644 --- a/src/code_8057824.c +++ b/src/code_8057824.c @@ -136,6 +136,65 @@ extern void sub_806F324(struct Entity *, s32, u32, u32); extern s16 gUnknown_80F4DB4; extern u32 gUnknown_8106A4C; +// TODO: WTF are these loops? https://decomp.me/scratch/svYTQ +void sub_80574C4(s32 *a0, s32 a1) +{ + s32 r2; + s32 r3; + s32 temp; + s32 buffer[0x41]; + + r3 = 0; + r2 = 0; + if (a0[0] != 0) { + if (a0[0] == a1) + goto continue1; +itsmol1: + buffer[r3] = a0[r2]; + r3++; +continue1: + r2++; + if (r2 >= 0x41) + goto break1; + if (a0[r2] == 0) + goto break1; + if (a0[r2] == a1) + goto continue1; + if (r3 < 0x40) + goto itsmol1; + } +break1: + + r2 = 0; + temp = a0[r2]; + goto for2; +itsmol2: + buffer[r3] = a0[r2]; + r3++; +continue2: + r2++; + if (r2 > 0x40) + goto break2; + temp = a0[r2]; +for2: + if (temp == 0) + goto break2; + if (temp != a1) + goto continue2; + if (r3 < 0x40) + goto itsmol2; +break2: + + while (r3 < 0x41) { + buffer[r3] = 0; + r3++; + } + + for (r2 = 0; r2 < 0x41; r2++) { + a0[r2] = buffer[r2]; + } +} + bool8 sub_805755C(struct Entity* pokemon, u16 moveID) { if ((moveID == MOVE_SOLARBEAM) && (GetApparentWeather(pokemon) == WEATHER_SUNNY)) { diff --git a/src/cpu.c b/src/cpu.c index 688e28ea0..945c4b2eb 100644 --- a/src/cpu.c +++ b/src/cpu.c @@ -1,8 +1,8 @@ #include "global.h" +#include "bg_control.h" #include "cpu.h" extern u32 gUnknown_202D800; -extern u16 gBldCnt; // used to update Blend Count Reg extern u16 gUnknown_203B0BE[]; void sub_800CDA8(u32 r0) @@ -16,7 +16,7 @@ u32 sub_800CDC8(void) return gUnknown_202D800; } -void SetWindowTitle(char *title) +void SetWindowTitle(u8 *title) { } @@ -24,13 +24,11 @@ void nullsub_23(bool8 a0) { } -// Unused -void nullsub_182(void) +UNUSED static void nullsub_182(void) { } -// Unused -bool8 sub_800CDE0(void) +UNUSED static bool8 sub_800CDE0(void) { return TRUE; } diff --git a/src/ground_sprite.c b/src/ground_sprite.c index fcfc4c282..d60afed20 100644 --- a/src/ground_sprite.c +++ b/src/ground_sprite.c @@ -1,5 +1,5 @@ #include "global.h" -#include "code_800558C_1.h" +#include "code_800558C.h" #include "code_800DAC0.h" #include "debug.h" #include "file_system.h" diff --git a/src/main.c b/src/main.c index 495da1179..d58379ad9 100644 --- a/src/main.c +++ b/src/main.c @@ -1,7 +1,8 @@ #include "global.h" +#include "bg_control.h" #include "bg_palette_buffer.h" #include "code_8004AA0.h" -#include "code_800558C_1.h" +#include "code_800558C.h" #include "cpu.h" #include "crt0.h" #include "file_system.h" @@ -19,8 +20,6 @@ EWRAM_DATA IntrCallback gIntrTable[6] = {0}; EWRAM_DATA IntrCallback gIntrCallbacks[6] = {0}; extern char ewram_start[]; -extern u16 gBldCnt; -extern u8 gUnknown_202D7FE; extern char alt_203B038[]; extern char gTitlePaletteFile[]; extern char gUnknown_203BC04[]; @@ -90,7 +89,7 @@ void AgbMain(void) REG_WINOUT = WINOUT_WIN01_BG0 | WINOUT_WIN01_BG2 | WINOUT_WIN01_BG3 | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR; // 61 gBldCnt = REG_BLDCNT = BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_BD | BLDCNT_TGT2_OBJ; // 15426 REG_BLDALPHA = BLDALPHA_BLEND(10, 6); // 1546 - gUnknown_202D7FE = 0; + gUnknown_202D7FE = FALSE; REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_WRAP | BGCNT_SCREENBASE(12); // 11264 REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_WRAP | BGCNT_SCREENBASE(13); // 11521 REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_WRAP | BGCNT_SCREENBASE(14); // 11786 diff --git a/src/menu_input.c b/src/menu_input.c index 7e58cb9aa..b967cbbf1 100644 --- a/src/menu_input.c +++ b/src/menu_input.c @@ -1,5 +1,5 @@ #include "global.h" -#include "code_800558C_1.h" +#include "code_800558C.h" #include "code_800D090.h" #include "code_80118A4.h" #include "code_80130A8.h" diff --git a/src/other_menus.c b/src/other_menus.c index 9dba09ec4..7c40c3ee1 100644 --- a/src/other_menus.c +++ b/src/other_menus.c @@ -13,6 +13,7 @@ #include "code_8094F88.h" #include "sprite.h" #include "code_80118A4.h" +#include "code_800558C.h" struct unkStruct_203B35C { @@ -446,7 +447,6 @@ extern void sub_80371B8(void); extern void sub_8037900(void); extern u32 sub_8037798(void); extern void sub_8005838(u32, u32); -extern void sub_80060EC(); extern void sub_800CB20(); extern void TransferBGPaletteBuffer(); extern void xxx_call_update_bg_vram(); diff --git a/src/reg_control.c b/src/reg_control.c index f0fcaed18..33dd869fd 100644 --- a/src/reg_control.c +++ b/src/reg_control.c @@ -1,5 +1,5 @@ #include "global.h" -#include "bg.h" +#include "bg_control.h" #include "debug.h" #include "input.h" #include "music.h" @@ -9,10 +9,6 @@ extern struct unkStruct_202D648 gUnknown_202D608[8]; extern struct unkStruct_202D648 gUnknown_202D648[8]; -// bg_control.c -extern u8 gUnknown_202D7FE; -extern u16 gBldCnt; - EWRAM_DATA bool8 gUnknown_203B099; EWRAM_DATA bool8 gUnknown_203B09A; EWRAM_DATA bool8 gUnknown_203B09B; @@ -26,6 +22,8 @@ EWRAM_DATA s16 gUnknown_203B0AE; EWRAM_DATA s16 gUnknown_203B0B0; // Written to but never read EWRAM_DATA s16 gUnknown_203B0B2; // Written to but never read +static void UpdateBGControlRegisters(void); + void VBlankIntr(void) { s32 index; @@ -243,18 +241,16 @@ void Timer3Intr(void) AckInterrupt(INTR_FLAG_TIMER3); } -// Unused -u32 sub_800BB34(void) +UNUSED static u32 sub_800BB34(void) { return gUnknown_203B0A0; } -void nullsub_178(void) +UNUSED static void nullsub_178(void) { } -// Unused -void sub_800BB44(void) +UNUSED static void sub_800BB44(void) { u16 ie_store; u16 dispcnt_store; @@ -296,11 +292,11 @@ void nullsub_17(void) { } -void UpdateBGControlRegisters(void) +static void UpdateBGControlRegisters(void) { u32 BGCNT_Priority[NUM_BGS]; - if (gUnknown_202D7FE == 1) { + if (gUnknown_202D7FE == TRUE) { BGCNT_Priority[BG0] = BGCNT_PRIORITY(1); BGCNT_Priority[BG1] = BGCNT_PRIORITY(2); BGCNT_Priority[BG2] = BGCNT_PRIORITY(0); diff --git a/src/sprite.c b/src/sprite.c index e80999b93..1b4e2a3ba 100644 --- a/src/sprite.c +++ b/src/sprite.c @@ -870,8 +870,8 @@ void sub_8005304(void) } } -// spriteMasks is a u16[6]. a4 might be a bool8 -void sub_800533C(struct ax_pose **a0, struct UnkSpriteMem **a1, struct axdata1 *a2, u16 *spriteMasks, char a4) +// spriteMasks is a u16[6] +void sub_800533C(struct ax_pose **a0, struct UnkSpriteMem **a1, struct axdata1 *a2, u16 *spriteMasks, bool8 a4) { struct UnkSpriteMem *mem; struct ax_pose *r4; diff --git a/src/text1.c b/src/text1.c index 1cfe932e0..8b7e10006 100644 --- a/src/text1.c +++ b/src/text1.c @@ -22,7 +22,7 @@ EWRAM_DATA u8 gUnknown_202B034; EWRAM_DATA u16 gUnknown_202B038[4][32][32]; // ? -extern char gUnknown_3000E94[]; +extern s16 gUnknown_3000E94[]; // data.s extern const struct UnkTextStruct2 gUnknown_80B857C[4]; @@ -35,7 +35,7 @@ extern const char gKanjiB_file_string[]; // system_sbin.s extern const struct FileArchive gSystemFileArchive; -void sub_8006438(const struct UnkTextStruct2 *, u8, u8, struct UnkTextStruct2_sub *); +static void sub_8006438(const struct UnkTextStruct2 *, u8, u8, struct UnkTextStruct2_sub *); void LoadCharmaps(void) { @@ -148,10 +148,19 @@ void sub_800641C(struct UnkTextStruct2 *a0, u8 a1, u8 a2) sub_8006438(a0, a1, a2, &r3); } -void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, struct UnkTextStruct2_sub *a3) +static void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, struct UnkTextStruct2_sub *a3) { - int i; - u32 r9 = 2; + s32 i; + u32 r9; + #if NONMATCHING // Simple regswap: https://decomp.me/scratch/EN6n0 99.79% + s16 **ptr2; // r2 + #else + register s16 **ptr2 asm("r2"); + #endif + s16 *ptr0; // r0 + u8 *ptr1; // r1 + + r9 = 2; if (a0 == NULL) a0 = gUnknown_80B857C; @@ -170,15 +179,9 @@ void sub_8006438(const struct UnkTextStruct2 *a0, u8 a1, u8 a2, struct UnkTextSt } } -#ifdef NONMATCHING - gUnknown_203B078 = gUnknown_3000E94; - gUnknown_20274A5 = 1; -#else - asm_unified("\tldr r2, =gUnknown_203B078\n" - "\tldr r0, =gUnknown_3000E94\n" - "\tldr r1, =gUnknown_20274A5\n" - "\tstr r0, [r2]\n" - "\tmovs r0, 0x1\n" - "\tstrb r0, [r1]"); -#endif + ptr2 = &gUnknown_203B078; + ptr0 = gUnknown_3000E94; + ptr1 = &gUnknown_20274A5; + *ptr2 = ptr0; + *ptr1 = 1; } \ No newline at end of file