diff options
author | nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> | 2018-10-17 11:28:27 +0800 |
---|---|---|
committer | void <30564701+nullableVoidPtr@users.noreply.github.com> | 2018-11-18 18:29:52 +0800 |
commit | 961ab7ccaf4d175189cd42fcddca1336f3d91bad (patch) | |
tree | a223139bf9282e5a3636810ae78dccf5095e2100 | |
parent | 9e5147a9adf9dc0aba908f38637cd0b4da2cbbcc (diff) |
Fix makefile and decompile some functions.
Partial memory.c, save.c and bg_palette_buffer.c decompilation, along with some asm/ cleanup.
-rwxr-xr-x | Makefile | 1 | ||||
-rw-r--r-- | asm/bg_palette_buffer.s | 133 | ||||
-rw-r--r-- | asm/input.s | 94 | ||||
-rw-r--r-- | asm/memory.s | 242 | ||||
-rw-r--r-- | asm/save.s | 68 | ||||
-rwxr-xr-x | ld_script.txt | 3 | ||||
-rw-r--r-- | src/bg_palette_buffer.c | 102 | ||||
-rw-r--r-- | src/memory.c | 85 | ||||
-rw-r--r-- | src/save.c | 45 | ||||
-rw-r--r-- | sym_ewram.txt | 11 |
10 files changed, 326 insertions, 458 deletions
@@ -103,7 +103,6 @@ $(BUILD_DIR)/sym_%.ld: sym_%.txt $(C_OBJECTS): $(BUILD_DIR)/%.o: %.c @$(CPP) $(CPPFLAGS) $< -o $(BUILD_DIR)/$*.i - echo $(CC1) $(CC1FLAGS) $(BUILD_DIR)/$*.i -o $(BUILD_DIR)/$*.s @$(CC1) $(CC1FLAGS) $(BUILD_DIR)/$*.i -o $(BUILD_DIR)/$*.s @printf ".text\n\t.align\t2, 0\n" >> $(BUILD_DIR)/$*.s $(AS) $(ASFLAGS) -o $@ $(BUILD_DIR)/$*.s diff --git a/asm/bg_palette_buffer.s b/asm/bg_palette_buffer.s index 9b42ee5..9cafb43 100644 --- a/asm/bg_palette_buffer.s +++ b/asm/bg_palette_buffer.s @@ -9,7 +9,7 @@ InitBGPaletteBuffer: push {lr} movs r2, 0 - ldr r1, _0800465C + ldr r1, =gBGPaletteBuffer movs r0, 0x80 lsls r0, 2 _0800463E: @@ -18,7 +18,7 @@ _0800463E: subs r0, 0x1 cmp r0, 0 bne _0800463E - ldr r1, _08004660 + ldr r1, =gBGPaletteUsed movs r2, 0x1 adds r0, r1, 0 adds r0, 0x1F @@ -30,8 +30,7 @@ _08004650: pop {r0} bx r0 .align 2, 0 -_0800465C: .4byte gUnknown_20251F0 -_08004660: .4byte gUnknown_20251D0 + .pool thumb_func_end InitBGPaletteBuffer thumb_func_start SetBGPaletteBufferColorRGB @@ -47,7 +46,7 @@ _08004670: ble _08004676 movs r2, 0x1F _08004676: - ldr r1, _080046CC + ldr r1, =gBGPaletteUsed adds r0, r4, 0 cmp r4, 0 bge _08004680 @@ -59,7 +58,7 @@ _08004680: strb r1, [r0] cmp r3, 0 bne _080046D4 - ldr r0, _080046D0 + ldr r0, =gBGPaletteBuffer lsls r1, r4, 1 adds r6, r1, r0 ldrb r0, [r5, 0x2] @@ -94,10 +93,9 @@ _080046C0: strh r1, [r6] b _08004722 .align 2, 0 -_080046CC: .4byte gUnknown_20251D0 -_080046D0: .4byte gUnknown_20251F0 + .pool _080046D4: - ldr r1, _08004728 + ldr r1, =gBGPaletteBuffer lsls r0, r4, 1 adds r7, r0, r1 ldrb r0, [r5, 0x2] @@ -144,120 +142,7 @@ _08004722: pop {r0} bx r0 .align 2, 0 -_08004728: .4byte gUnknown_20251F0 + .pool thumb_func_end SetBGPaletteBufferColorRGB - thumb_func_start SetBGPaletteBufferColorArray -SetBGPaletteBufferColorArray: - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - ldr r1, _08004764 - cmp r2, 0 - bge _0800473A - adds r0, 0xF -_0800473A: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08004768 - lsls r2, 1 - adds r2, r0 - ldrb r1, [r3, 0x2] - lsrs r1, 3 - lsls r1, 10 - ldrb r0, [r3, 0x1] - lsrs r0, 3 - lsls r0, 5 - orrs r1, r0 - ldrb r0, [r3] - lsrs r0, 3 - orrs r0, r1 - strh r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_08004764: .4byte gUnknown_20251D0 -_08004768: .4byte gUnknown_20251F0 - thumb_func_end SetBGPaletteBufferColorArray - - thumb_func_start SetBGPaletteBufferColor -SetBGPaletteBufferColor: - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - ldr r1, _08004790 - cmp r2, 0 - bge _0800477A - adds r0, 0xF -_0800477A: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, _08004794 - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r3] - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08004790: .4byte gUnknown_20251D0 -_08004794: .4byte gUnknown_20251F0 - thumb_func_end SetBGPaletteBufferColor - - thumb_func_start nullsub_4 -nullsub_4: - bx lr - thumb_func_end nullsub_4 - - thumb_func_start nullsub_5 -nullsub_5: - bx lr - thumb_func_end nullsub_5 - - thumb_func_start nullsub_143 -nullsub_143: - bx lr - thumb_func_end nullsub_143 - - thumb_func_start TransferBGPaletteBuffer -TransferBGPaletteBuffer: - push {r4-r6,lr} - movs r6, 0 - movs r4, 0 - movs r5, 0xA0 - lsls r5, 19 -_080047AE: - ldr r0, _080047DC - adds r1, r6, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080047CA - movs r0, 0 - strb r0, [r1] - lsls r1, r4, 1 - ldr r0, _080047E0 - adds r1, r0 - adds r0, r5, 0 - movs r2, 0x20 - bl CpuCopy -_080047CA: - adds r6, 0x1 - adds r5, 0x20 - adds r4, 0x10 - ldr r0, _080047E4 - cmp r4, r0 - ble _080047AE - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080047DC: .4byte gUnknown_20251D0 -_080047E0: .4byte gUnknown_20251F0 -_080047E4: .4byte 0x000001ff - thumb_func_end TransferBGPaletteBuffer - - .align 2, 0 @ Don't pad with nop. +.align 2, 0 @ Don't pad with nop.
\ No newline at end of file diff --git a/asm/input.s b/asm/input.s index 7516a30..d439867 100644 --- a/asm/input.s +++ b/asm/input.s @@ -7,24 +7,24 @@ thumb_func_start InitInput InitInput: - ldr r0, _08004840 + ldr r0, =gUnknown_20255F0 movs r3, 0 movs r2, 0 strh r2, [r0] strh r2, [r0, 0x2] strh r2, [r0, 0x4] strh r2, [r0, 0x6] - ldr r0, _08004844 + ldr r0, =gUnknown_2025638 strh r2, [r0] strh r2, [r0, 0x2] strh r2, [r0, 0x4] strh r2, [r0, 0x6] - ldr r1, _08004848 - ldr r0, _0800484C + ldr r1, =gUnknown_202562C + ldr r0, =0x4a14c1 str r0, [r1] - ldr r0, _08004850 + ldr r0, =gUnknown_2025600 str r2, [r0, 0x20] - ldr r1, _08004854 + ldr r1, =0xffff strh r1, [r0] movs r1, 0x1 negs r1, r1 @@ -46,25 +46,19 @@ InitInput: strb r3, [r1] adds r0, 0x29 strb r3, [r0] - ldr r0, _08004858 + ldr r0, =gUnknown_2025668 strh r2, [r0] strh r2, [r0, 0x2] bx lr .align 2, 0 -_08004840: .4byte gUnknown_20255F0 -_08004844: .4byte gUnknown_2025638 -_08004848: .4byte gUnknown_202562C -_0800484C: .4byte 0x004a14c1 -_08004850: .4byte gUnknown_2025600 -_08004854: .4byte 0x0000ffff -_08004858: .4byte gUnknown_2025668 + .pool thumb_func_end InitInput thumb_func_start sub_800485C sub_800485C: push {r4,r5,lr} - ldr r2, _080048A8 - ldr r1, _080048AC + ldr r2, =gUnknown_2025638 + ldr r1, =gUnknown_20255F0 adds r0, r2, 0 ldm r0!, {r3-r5} stm r1!, {r3-r5} @@ -76,8 +70,8 @@ sub_800485C: strh r0, [r2, 0x2] strh r0, [r2, 0x4] strh r0, [r2, 0x6] - ldr r0, _080048B0 - ldr r1, _080048B4 + ldr r0, =gUnknown_2025600 + ldr r1, =0xffff strh r1, [r0] movs r1, 0x1 negs r1, r1 @@ -101,10 +95,7 @@ sub_800485C: pop {r0} bx r0 .align 2, 0 -_080048A8: .4byte gUnknown_2025638 -_080048AC: .4byte gUnknown_20255F0 -_080048B0: .4byte gUnknown_2025600 -_080048B4: .4byte 0x0000ffff + .pool thumb_func_end sub_800485C thumb_func_start sub_80048B8 @@ -145,49 +136,44 @@ sub_80048CC: thumb_func_start sub_80048D0 sub_80048D0: - ldr r1, _080048E8 + ldr r1, =gUnknown_20255F0 movs r0, 0 strh r0, [r1, 0x4] - ldr r1, _080048EC + ldr r1, =gUnknown_2025648 str r0, [r1, 0xC] strh r0, [r1, 0x8] - ldr r1, _080048F0 - ldr r0, _080048F4 + ldr r1, =gUnknown_2025668 + ldr r0, =0x3e7 strh r0, [r1] strh r0, [r1, 0x2] bx lr .align 2, 0 -_080048E8: .4byte gUnknown_20255F0 -_080048EC: .4byte gUnknown_2025648 -_080048F0: .4byte gUnknown_2025668 -_080048F4: .4byte 0x000003e7 + .pool thumb_func_end sub_80048D0 thumb_func_start sub_80048F8 sub_80048F8: - ldr r0, _08004908 + ldr r0, =gUnknown_20255F0 movs r1, 0 strh r1, [r0, 0x2] - ldr r0, _0800490C + ldr r0, =gUnknown_2025638 strh r1, [r0, 0x2] - ldr r0, _08004910 + ldr r0, =gUnknown_2025648 strh r1, [r0, 0x2] bx lr .align 2, 0 -_08004908: .4byte gUnknown_20255F0 -_0800490C: .4byte gUnknown_2025638 -_08004910: .4byte gUnknown_2025648 + .pool thumb_func_end sub_80048F8 thumb_func_start sub_8004914 sub_8004914: - ldr r0, _0800494C + ldr r0, =gUnknown_2025600 movs r1, 0x5 str r1, [r0, 0x20] movs r2, 0 movs r1, 0 strh r1, [r0, 0x24] - ldr r1, _08004950 + ldr r1, =0xffff strh r1, [r0] movs r1, 0x1 negs r1, r1 @@ -209,15 +195,14 @@ sub_8004914: strb r2, [r0] bx lr .align 2, 0 -_0800494C: .4byte gUnknown_2025600 -_08004950: .4byte 0x0000ffff + .pool thumb_func_end sub_8004914 thumb_func_start UpdateInput UpdateInput: push {r4-r6,lr} - ldr r4, _08004998 - ldr r5, _0800499C + ldr r4, =gUnknown_2025658 + ldr r5, =gUnknown_2025648 adds r1, r4, 0 adds r0, r5, 0 ldm r0!, {r2,r3,r6} @@ -249,8 +234,7 @@ UpdateInput: str r0, [r5, 0xC] b _080049AC .align 2, 0 -_08004998: .4byte gUnknown_2025658 -_0800499C: .4byte gUnknown_2025648 + .pool _080049A0: strh r2, [r5, 0x8] movs r0, 0x1 @@ -260,7 +244,7 @@ _080049A8: str r0, [r5, 0xC] strh r0, [r5, 0x8] _080049AC: - ldr r0, _080049C4 + ldr r0, =gUnknown_2025648 ldr r2, [r0, 0xC] adds r3, r0, 0 cmp r2, 0x1 @@ -273,7 +257,7 @@ _080049AC: strh r1, [r3, 0x4] b _080049E0 .align 2, 0 -_080049C4: .4byte gUnknown_2025648 + .pool _080049C8: cmp r2, 0x30 bne _080049DC @@ -300,7 +284,7 @@ _080049E0: lsrs r2, r0, 16 cmp r2, 0 beq _08004A0C - ldr r0, _08004A08 + ldr r0, =gUnknown_2025668 ldrh r2, [r0] movs r4, 0 ldrsh r1, [r0, r4] @@ -311,9 +295,9 @@ _080049E0: strh r0, [r4] b _08004A20 .align 2, 0 -_08004A08: .4byte gUnknown_2025668 + .pool _08004A0C: - ldr r1, _08004A44 + ldr r1, =gUnknown_2025668 ldrh r0, [r1] subs r0, 0x2 lsls r0, 16 @@ -343,7 +327,7 @@ _08004A20: strh r0, [r4, 0x2] b _08004A5E .align 2, 0 -_08004A44: .4byte gUnknown_2025668 + .pool _08004A48: ldrh r0, [r4, 0x2] subs r0, 0x2 @@ -358,7 +342,7 @@ _08004A48: _08004A5C: strh r2, [r4, 0x2] _08004A5E: - ldr r2, _08004A94 + ldr r2, =gUnknown_2025638 ldrh r0, [r2] ldrh r1, [r3] orrs r0, r1 @@ -375,9 +359,9 @@ _08004A5E: ldrh r1, [r3, 0x6] orrs r0, r1 strh r0, [r2, 0x6] - ldr r2, _08004A98 + ldr r2, =gUnknown_202562C ldrh r0, [r3] - ldr r1, _08004A9C + ldr r1, =0x054a1c41 orrs r0, r1 ldr r1, [r2] muls r0, r1 @@ -386,9 +370,7 @@ _08004A5E: pop {r0} bx r0 .align 2, 0 -_08004A94: .4byte gUnknown_2025638 -_08004A98: .4byte gUnknown_202562C -_08004A9C: .4byte 0x054a1c41 + .pool thumb_func_end UpdateInput .align 2, 0 @ Don't pad with nop. diff --git a/asm/memory.s b/asm/memory.s index e364f1b..418056c 100644 --- a/asm/memory.s +++ b/asm/memory.s @@ -4,177 +4,21 @@ .syntax unified .text - - thumb_func_start InitHeap -InitHeap: - push {lr} - bl InitHeapInternal - pop {r0} - bx r0 - thumb_func_end InitHeap - - thumb_func_start MemoryClear8 -MemoryClear8: - push {lr} - cmp r1, 0 - ble _08002EAA - movs r2, 0 -_08002EA0: - subs r1, 0x1 - strb r2, [r0] - adds r0, 0x1 - cmp r1, 0 - bgt _08002EA0 -_08002EAA: - pop {r0} - bx r0 - thumb_func_end MemoryClear8 - - thumb_func_start MemoryClear16 -MemoryClear16: - push {lr} - cmp r1, 0 - ble _08002EC2 - movs r2, 0 -_08002EB8: - subs r1, 0x2 - strh r2, [r0] - adds r0, 0x2 - cmp r1, 0 - bgt _08002EB8 -_08002EC2: - pop {r0} - bx r0 - thumb_func_end MemoryClear16 - - thumb_func_start MemoryClear32 -MemoryClear32: - push {lr} - bl CpuClear - pop {r0} - bx r0 - thumb_func_end MemoryClear32 - - thumb_func_start MemoryFill8 -MemoryFill8: - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r2, 0 - ble _08002EE8 -_08002EDE: - subs r2, 0x1 - strb r1, [r0] - adds r0, 0x1 - cmp r2, 0 - bgt _08002EDE -_08002EE8: - pop {r0} - bx r0 - thumb_func_end MemoryFill8 - - thumb_func_start MemoryFill16 -MemoryFill16: - push {lr} - lsls r1, 16 - lsrs r1, 16 - cmp r2, 0 - ble _08002F00 -_08002EF6: - subs r2, 0x2 - strh r1, [r0] - adds r0, 0x2 - cmp r2, 0 - bgt _08002EF6 -_08002F00: - pop {r0} - bx r0 - thumb_func_end MemoryFill16 - - thumb_func_start MemoryFill32 -MemoryFill32: - push {lr} - cmp r2, 0 - ble _08002F12 -_08002F0A: - subs r2, 0x4 - stm r0!, {r1} - cmp r2, 0 - bgt _08002F0A -_08002F12: - pop {r0} - bx r0 - thumb_func_end MemoryFill32 - - thumb_func_start MemoryCopy8 -MemoryCopy8: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F2E -_08002F20: - subs r2, 0x1 - ldrb r0, [r1] - strb r0, [r3] - adds r1, 0x1 - adds r3, 0x1 - cmp r2, 0 - bgt _08002F20 -_08002F2E: - pop {r0} - bx r0 - thumb_func_end MemoryCopy8 - - thumb_func_start MemoryCopy16 -MemoryCopy16: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F4A -_08002F3C: - subs r2, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - cmp r2, 0 - bgt _08002F3C -_08002F4A: - pop {r0} - bx r0 - thumb_func_end MemoryCopy16 - - thumb_func_start MemoryCopy32 -MemoryCopy32: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F62 -_08002F58: - subs r2, 0x4 - ldm r1!, {r0} - stm r3!, {r0} - cmp r2, 0 - bgt _08002F58 -_08002F62: - pop {r0} - bx r0 - thumb_func_end MemoryCopy32 - + thumb_func_start InitHeapInternal InitHeapInternal: push {lr} sub sp, 0x8 - ldr r0, _08002F90 + ldr r0, =gHeap str r0, [sp] movs r0, 0x90 lsls r0, 10 str r0, [sp, 0x4] - ldr r1, _08002F94 + ldr r1, =gUnknown_2000EA8 movs r0, 0 str r0, [r1] - ldr r0, _08002F98 - ldr r2, _08002F9C + ldr r0, =gUnknown_2000EB0 + ldr r2, =gHeapHeader mov r1, sp movs r3, 0x20 bl DoInitHeap @@ -182,10 +26,7 @@ InitHeapInternal: pop {r0} bx r0 .align 2, 0 -_08002F90: .4byte gUnknown_20011D0 -_08002F94: .4byte gUnknown_2000EA8 -_08002F98: .4byte gUnknown_2000EB0 -_08002F9C: .4byte gUnknown_2000ED0 + .pool thumb_func_end InitHeapInternal thumb_func_start DoInitHeap @@ -201,8 +42,8 @@ DoInitHeap: mov r5, r9 ands r5, r4 mov r9, r5 - ldr r6, _08002FFC - ldr r4, _08003000 + ldr r6, =gUnknown_2000E88 + ldr r4, =gUnknown_2000EA8 mov r8, r4 ldr r5, [r4] lsls r4, r5, 2 @@ -237,8 +78,7 @@ DoInitHeap: pop {r0} bx r0 .align 2, 0 -_08002FFC: .4byte gUnknown_2000E88 -_08003000: .4byte gUnknown_2000EA8 + .pool thumb_func_end DoInitHeap thumb_func_start InitSubHeap @@ -361,7 +201,7 @@ _080030C2: _080030CC: movs r7, 0x1 negs r7, r7 - ldr r1, _08003100 + ldr r1, =0x24001 movs r4, 0 ldr r3, [r5, 0x8] ldr r2, [r5, 0xC] @@ -389,7 +229,7 @@ _080030FC: adds r0, r7, 0 b _08003108 .align 2, 0 -_08003100: .4byte 0x00024001 + .pool _08003104: movs r0, 0x1 negs r0, r0 @@ -454,7 +294,7 @@ _0800315E: _08003168: movs r7, 0x1 negs r7, r7 - ldr r6, _080031A4 + ldr r6, =0x24001 ldr r0, [r4, 0xC] subs r3, r0, 0x1 lsls r0, r3, 1 @@ -486,7 +326,7 @@ _080031A0: adds r0, r7, 0 b _080031AC .align 2, 0 -_080031A4: .4byte 0x00024001 + .pool _080031A8: movs r0, 0x1 negs r0, r0 @@ -561,13 +401,12 @@ _08003222: str r2, [r1, 0xC] cmp r2, r8 ble _08003240 - ldr r0, _08003238 - ldr r1, _0800323C + ldr r0, =gUnknown_80B7EB8 + ldr r1, =gUnknown_80B7EC4 mov r3, r8 bl FatalError .align 2, 0 -_08003238: .4byte gUnknown_80B7EB8 -_0800323C: .4byte gUnknown_80B7EC4 + .pool _08003240: ldr r0, [sp, 0xC] add r0, r9 @@ -671,13 +510,12 @@ _080032F6: str r2, [r7, 0xC] cmp r2, r8 ble _08003314 - ldr r0, _0800330C - ldr r1, _08003310 + ldr r0, =gUnknown_80B7EFC + ldr r1, =gUnknown_80B7EC4 mov r3, r8 bl FatalError .align 2, 0 -_0800330C: .4byte gUnknown_80B7EFC -_08003310: .4byte gUnknown_80B7EC4 + .pool _08003314: ldr r0, [r4, 0x10] ldr r1, [sp, 0x10] @@ -717,7 +555,7 @@ _LocateSet: adds r6, r2, 0 cmp r5, 0 bne _0800335C - ldr r5, _08003390 + ldr r5, =gUnknown_2000EB0 _0800335C: asrs r4, r6, 8 movs r0, 0x1 @@ -743,7 +581,7 @@ _0800335C: ldr r0, [r0, 0xC] b _080033CC .align 2, 0 -_08003390: .4byte gUnknown_2000EB0 + .pool _08003394: adds r0, r5, 0 adds r1, r4, 0 @@ -760,16 +598,15 @@ _08003394: ldr r0, [r0, 0xC] b _080033CC _080033B4: - ldr r0, _080033C4 - ldr r1, _080033C8 + ldr r0, =gUnknown_80B7F14 + ldr r1, =gUnknown_80B7F20 str r4, [sp] str r6, [sp, 0x4] adds r2, r5, 0 adds r3, r7, 0 bl FatalError .align 2, 0 -_080033C4: .4byte gUnknown_80B7F14 -_080033C8: .4byte gUnknown_80B7F20 + .pool _080033CC: add sp, 0x8 pop {r4-r7} @@ -782,25 +619,25 @@ MemoryAlloc: push {lr} adds r3, r0, 0 adds r2, r1, 0 - ldr r0, _080033E8 + ldr r0, =gUnknown_2000EB0 adds r1, r3, 0 bl DoAlloc pop {r1} bx r1 .align 2, 0 -_080033E8: .4byte gUnknown_2000EB0 + .pool thumb_func_end MemoryAlloc thumb_func_start MemoryFree MemoryFree: push {lr} adds r1, r0, 0 - ldr r0, _080033FC + ldr r0, =gUnknown_2000EB0 bl DoFree pop {r0} bx r0 .align 2, 0 -_080033FC: .4byte gUnknown_2000EB0 + .pool thumb_func_end MemoryFree thumb_func_start MemoryLocate_LocalCreate @@ -813,7 +650,7 @@ MemoryLocate_LocalCreate: adds r6, r3, 0 cmp r4, 0 bne _08003412 - ldr r4, _0800342C + ldr r4, =gUnknown_2000EB0 _08003412: adds r0, r4, 0 movs r1, 0x9 @@ -822,14 +659,12 @@ _08003412: adds r1, r0, 0 cmp r1, 0 bge _08003438 - ldr r0, _08003430 - ldr r1, _08003434 + ldr r0, =gUnknown_80B7F88 + ldr r1, =gUnknown_80B7F94 adds r2, r5, 0 bl FatalError .align 2, 0 -_0800342C: .4byte gUnknown_2000EB0 -_08003430: .4byte gUnknown_80B7F88 -_08003434: .4byte gUnknown_80B7F94 + .pool _08003438: str r6, [sp] adds r0, r4, 0 @@ -893,11 +728,11 @@ _080034A2: movs r0, 0 mov r12, r0 movs r3, 0 - ldr r6, _080034E0 + ldr r6, =gUnknown_2000EA8 ldr r0, [r6] cmp r12, r0 bge _080034F2 - ldr r5, _080034E4 + ldr r5, =gUnknown_2000E88 adds r1, r6, 0 adds r7, r5, 0 movs r2, 0 @@ -911,7 +746,7 @@ _080034BC: str r0, [r1] cmp r3, r0 bge _080034F8 - ldr r1, _080034E0 + ldr r1, =gUnknown_2000EA8 adds r2, r7 _080034D2: ldr r0, [r2, 0x4] @@ -922,8 +757,7 @@ _080034D2: blt _080034D2 b _080034F8 .align 2, 0 -_080034E0: .4byte gUnknown_2000EA8 -_080034E4: .4byte gUnknown_2000E88 + .pool _080034E8: adds r2, 0x4 adds r3, 0x1 @@ -966,7 +800,7 @@ DoFree: adds r4, r0, 0 cmp r4, 0 bne _0800352E - ldr r4, _080035D4 + ldr r4, =gUnknown_2000EB0 _0800352E: cmp r1, 0 beq _080035E4 @@ -1056,7 +890,7 @@ _080035BA: blt _080035BA b _080035E4 .align 2, 0 -_080035D4: .4byte gUnknown_2000EB0 + .pool _080035D8: movs r0, 0x1 add r8, r0 @@ -5,74 +5,6 @@ .text - thumb_func_start sub_8011C1C -sub_8011C1C: - ldr r0, _08011C24 - ldr r0, [r0] - bx lr - .align 2, 0 -_08011C24: .4byte gUnknown_203B17C - thumb_func_end sub_8011C1C - - thumb_func_start sub_8011C28 -sub_8011C28: - ldr r1, _08011C30 - str r0, [r1] - bx lr - .align 2, 0 -_08011C30: .4byte gUnknown_203B17C - thumb_func_end sub_8011C28 - - thumb_func_start sub_8011C34 -sub_8011C34: - ldr r0, _08011C3C - ldr r0, [r0] - bx lr - .align 2, 0 -_08011C3C: .4byte gUnknown_202DE28 - thumb_func_end sub_8011C34 - - thumb_func_start sub_8011C40 -sub_8011C40: - ldr r1, _08011C48 - str r0, [r1] - bx lr - .align 2, 0 -_08011C48: .4byte gUnknown_202DE28 - thumb_func_end sub_8011C40 - - thumb_func_start sub_8011C4C -sub_8011C4C: - ldr r0, _08011C54 - ldr r0, [r0] - bx lr - .align 2, 0 -_08011C54: .4byte gUnknown_203B180 - thumb_func_end sub_8011C4C - - thumb_func_start sub_8011C58 -sub_8011C58: - push {r4,lr} - adds r4, r0, 0 - movs r2, 0 - lsrs r1, 2 - cmp r1, 0x1 - ble _08011C72 - adds r3, r4, 0x4 - subs r1, 0x1 -_08011C68: - ldm r3!, {r0} - adds r2, r0 - subs r1, 0x1 - cmp r1, 0 - bne _08011C68 -_08011C72: - str r2, [r4] - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8011C58 - thumb_func_start sub_8011C7C sub_8011C7C: push {r4,lr} diff --git a/ld_script.txt b/ld_script.txt index 3bc7a22..d1bbded 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -48,11 +48,13 @@ SECTIONS { asm/code.o(.text); asm/event_flag.o(.text); asm/code_8002774.o(.text); + src/memory.o(.text); asm/memory.o(.text); asm/code_80035F0.o(.text); src/other_random.o(.text); src/util.o(.text); asm/bg_palette_buffer.o(.text); + src/bg_palette_buffer.o(.text); asm/input.o(.text); asm/code_8004AA0.o(.text); asm/sprite.o(.text); @@ -66,6 +68,7 @@ SECTIONS { asm/code_800B540.o(.text); src/flash.o(.text); asm/code_800D090.o(.text); + src/save.o(.text); asm/save.o(.text); asm/code_8012A18.o(.text); asm/m4a.o(.text); diff --git a/src/bg_palette_buffer.c b/src/bg_palette_buffer.c new file mode 100644 index 0000000..5e078a0 --- /dev/null +++ b/src/bg_palette_buffer.c @@ -0,0 +1,102 @@ +#include "global.h" + +extern u16 gBGPaletteBuffer[512]; +extern bool8 gBGPaletteUsed[32]; + +extern void CpuCopy(void* src, void* dest, u32 size); + +/* +void InitBGPaletteBuffer(void) +{ + u16 color = 0; + u16* ptr; + u32 i; + bool8 paletteUsed; + + u8* p; + + ptr = gUnknown_20251F0; + + i = 0x80; + i <<= 2; + + do { + *ptr++ = color; + i--; + } while (i); + + paletteUsed = TRUE; + + p = gUnknown_20251D0; + p += 31; + + do + *p-- = paletteUsed; + while ((s32) p >= (s32) &gUnknown_20251D0); +} +void SetBGPaletteBufferColorRGB(s32 index, u8 *RGBArray, s32 a3, u8 *a4) +{ + if (a3 < 0) { + a3 = 0; + } + if (a3 > 31) { + a3 = 31; + } + gBGPaletteUsed[index / 16] = 1; + if (!a4) { + gBGPaletteBuffer[index] = ((RGBArray[2] * a3 / 256 & 0x1F) << 10) | ((RGBArray[1] * a3 / 256 & 0x1F) << 5) | (RGBArray[0] * a3 / 256 & 0x1F); + } + else + { + gBGPaletteBuffer[index] = ((a4[4 * RGBArray[2] + 2] * a3 / 256 & 0x1F) << 10) | ((a4[4 * RGBArray[1] + 1] * a3 / 256 & 0x1F) << 5) | (a4[4 * RGBArray[0]] * a3 / 256 & 0x1F); + } +} +*/ + +void SetBGPaletteBufferColorArray(s32 index, u8 *colorArray) +{ + gBGPaletteUsed[index / 16] = TRUE; + gBGPaletteBuffer[index] = (colorArray[2] >> 3) << 10 | (colorArray[1] >> 3) << 5 | colorArray[0] >> 3; +} + +void SetBGPaletteBufferColor(s32 index, u16 *color) +{ + gBGPaletteUsed[index / 16] = TRUE; + gBGPaletteBuffer[index] = *color; +} + +void nullsub_4() +{ + +} +void nullsub_5(void) +{ + +} +void nullsub_143(void) +{ + +} + +void TransferBGPaletteBuffer(void) +{ + u32 i; + s32 paletteBufferIndex; + u16 *dest; + + i = 0; + paletteBufferIndex = 0; + dest = (u16 *)PLTT; + do + { + if (gBGPaletteUsed[i]) + { + gBGPaletteUsed[i] = 0; + CpuCopy(dest, &gBGPaletteBuffer[paletteBufferIndex], sizeof(u16) * 16); + } + ++i; + dest += 16; + paletteBufferIndex += 16; + } + while ( paletteBufferIndex < 512 ); +}
\ No newline at end of file diff --git a/src/memory.c b/src/memory.c new file mode 100644 index 0000000..1ccbe54 --- /dev/null +++ b/src/memory.c @@ -0,0 +1,85 @@ +#include "global.h" + +extern void InitHeapInternal(void); +extern void CpuClear(u32 *dest, s32 size); + +void InitHeap(void) +{ + InitHeapInternal(); +} + +void MemoryClear8(u8 *dest, s32 size) +{ + while (size > 0) + { + size -= 1; + *dest++ = 0; + } +} + +void MemoryClear16(u16 *dest, s32 size) +{ + while (size > 0) + { + size -= 2; + *dest++ = 0; + } +} +void MemoryClear32(u32 *dest, s32 size) +{ + CpuClear(dest, size); +} + +void MemoryFill8(u8 *dest, u8 value, s32 size) +{ + while (size > 0) + { + size -= 1; + *dest++ = value; + } +} + +void MemoryFill16(u16 *dest, u16 value, s32 size) +{ + while (size > 0) + { + size -= 2; + *dest++ = value; + } +} + +void MemoryFill32(u32 *dest, u32 value, s32 size) +{ + while (size > 0) + { + size -= 4; + *dest++ = value; + } +} + +void MemoryCopy8(u8 *dest, u8 *src, s32 size) +{ + while (size > 0) + { + size -= 1; + *dest++ = *src++; + } +} + +void MemoryCopy16(u16 *dest, u16 *src, s32 size) +{ + while (size > 0) + { + size -= 2; + *dest++ = *src++; + } +} + +void MemoryCopy32(u32 *dest, u32 *src, s32 size) +{ + while (size > 0) + { + size -= 4; + *dest++ = *src++; + } +}
\ No newline at end of file diff --git a/src/save.c b/src/save.c new file mode 100644 index 0000000..575d4f1 --- /dev/null +++ b/src/save.c @@ -0,0 +1,45 @@ +#include "global.h" + +extern u32 gUnknown_203B17C; +extern u32 gUnknown_203B180; +extern u32 gUnknown_202DE28; + +u32 sub_8011C1C(void) +{ + return gUnknown_203B17C; +} + +void sub_8011C28(u32 in) +{ + gUnknown_203B17C = in; +} + +u32 sub_8011C34(void) +{ + return gUnknown_202DE28; +} + +void sub_8011C40(u32 in) +{ + gUnknown_202DE28 = in; +} + +u32 sub_8011C4C(void) +{ + return gUnknown_203B180; +} + +void sub_8011C58(u32 *out, u32 len) +{ + u32 sum = 0; + s32 i = len / 4; + if (i > 1) + { + u32 *ptr = &out[1]; + --i; + do + sum += *ptr++; + while (--i); + } + *out = sum; +}
\ No newline at end of file diff --git a/sym_ewram.txt b/sym_ewram.txt index f235a49..fb753c9 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -24,16 +24,16 @@ gUnknown_2000EA8 = .; /* 2000EA8 */ gUnknown_2000EB0 = .; /* 2000EB0 */ . += 0x20; -gUnknown_2000ED0 = .; /* 2000ED0 */ +gHeapHeader = .; /* 2000ED0 */ . += 0x300; -gUnknown_20011D0 = .; /* 20011D0 */ +gHeap = .; /* 20011D0 */ . += 0x24000; -gUnknown_20251D0 = .; /* 20251D0 */ +gBGPaletteUsed = .; /* 20251D0 */ . += 0x20; -gUnknown_20251F0 = .; /* 20251F0 */ +gBGPaletteBuffer = .; /* 20251F0 */ . += 0x400; gUnknown_20255F0 = .; /* 20255F0 */ @@ -385,7 +385,8 @@ gUnknown_202DE24 = .; /* 202DE24 */ . += 0x4; gUnknown_202DE28 = .; /* 202DE28 */ - . += 0x8; + . += 0x4; + . = ALIGN(16); gUnknown_202DE30 = .; /* 202DE30 */ . += 0x28; |