From 1e63f841ef5aaf120b31eda59b86d34c1838ab5c Mon Sep 17 00:00:00 2001 From: sceptillion <33798691+sceptillion@users.noreply.github.com> Date: Mon, 11 Dec 2017 11:39:11 -0800 Subject: split file_system.s --- asm/file_system.s | 287 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 287 insertions(+) create mode 100644 asm/file_system.s (limited to 'asm/file_system.s') diff --git a/asm/file_system.s b/asm/file_system.s new file mode 100644 index 0000000..570d760 --- /dev/null +++ b/asm/file_system.s @@ -0,0 +1,287 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start InitFileSystem +InitFileSystem: + push {r4,lr} + ldr r3, _0800A8EC + ldr r4, _0800A8F0 + movs r2, 0 + ldr r0, _0800A8F4 + movs r1, 0x3F +_0800A8D0: + str r2, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + subs r1, 0x1 + cmp r1, 0 + bge _0800A8D0 + movs r0, 0 + str r0, [r3] + movs r0, 0x1 + str r0, [r4] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800A8EC: .4byte gUnknown_203B094 +_0800A8F0: .4byte gUnknown_202D2A4 +_0800A8F4: .4byte gUnknown_202D2A8 + thumb_func_end InitFileSystem + + thumb_func_start sub_800A8F8 +sub_800A8F8: + ldr r1, _0800A904 + ldr r2, [r1] + str r0, [r1] + adds r0, r2, 0 + bx lr + .align 2, 0 +_0800A904: .4byte gUnknown_202D2A4 + thumb_func_end sub_800A8F8 + + thumb_func_start OpenFile +OpenFile: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x12C + mov r8, r0 + adds r4, r1, 0 + ldr r1, _0800A93C + adds r0, r4, 0 + bl strcmp + cmp r0, 0 + beq _0800A922 + movs r0, 0x1 +_0800A922: + movs r1, 0 + lsls r0, 24 + cmp r0, 0 + bne _0800A92C + movs r1, 0x1 +_0800A92C: + cmp r1, 0 + beq _0800A9B6 + ldr r7, [r4, 0xC] + movs r6, 0 + ldr r0, [r4, 0x8] + subs r5, r0, 0x1 + b _0800A94A + .align 2, 0 +_0800A93C: .4byte gUnknown_80B9B94 +_0800A940: + cmp r0, 0 + bge _0800A948 + adds r6, r4, 0x1 + b _0800A94A +_0800A948: + adds r5, r4, 0 +_0800A94A: + cmp r6, r5 + bge _0800A968 + adds r0, r6, r5 + lsrs r1, r0, 31 + adds r0, r1 + asrs r4, r0, 1 + lsls r0, r4, 3 + adds r0, r7 + ldr r0, [r0] + mov r1, r8 + bl strcmp + cmp r0, 0 + bne _0800A940 + adds r6, r4, 0 +_0800A968: + lsls r0, r6, 3 + adds r6, r7, r0 + ldr r0, [r6] + mov r1, r8 + bl strcmp + cmp r0, 0 + beq _0800A994 + ldr r1, _0800A984 + mov r0, sp + mov r2, r8 + bl sprintf + b _0800A9B6 + .align 2, 0 +_0800A984: .4byte gUnknown_80B9B9C +_0800A988: + str r6, [r2] + adds r0, r7, 0x4 + adds r0, r3, r0 + str r1, [r0] + adds r0, r2, 0 + b _0800A9B8 +_0800A994: + ldr r0, _0800A9C4 + ldr r0, [r0] + movs r4, 0 + ldr r5, _0800A9C8 + adds r7, r5, 0 +_0800A99E: + adds r0, 0x1 + cmp r0, 0x3F + ble _0800A9A6 + movs r0, 0 +_0800A9A6: + lsls r3, r0, 3 + adds r2, r3, r5 + ldr r1, [r2] + cmp r1, 0 + beq _0800A988 + adds r4, 0x1 + cmp r4, 0x3F + ble _0800A99E +_0800A9B6: + movs r0, 0 +_0800A9B8: + add sp, 0x12C + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0800A9C4: .4byte gUnknown_203B094 +_0800A9C8: .4byte gUnknown_202D2A8 + thumb_func_end OpenFile + + thumb_func_start GetFileDataPtrFromFileEntry +GetFileDataPtrFromFileEntry: + ldr r1, [r0] + ldr r1, [r1, 0x4] + str r1, [r0, 0x4] + adds r0, r1, 0 + bx lr + thumb_func_end GetFileDataPtrFromFileEntry + + thumb_func_start GetFileDataPtr +GetFileDataPtr: + push {r4,lr} + adds r4, r0, 0 + bl GetFileDataPtrFromFileEntry + adds r0, r4, 0 + bl GetSiroPtr + pop {r4} + pop {r1} + bx r1 + thumb_func_end GetFileDataPtr + + thumb_func_start OpenFileAndGetFileDataPtr +OpenFileAndGetFileDataPtr: + push {r4,lr} + bl OpenFile + adds r4, r0, 0 + cmp r4, 0 + beq _0800A9FE + movs r1, 0 + bl GetFileDataPtr +_0800A9FE: + adds r0, r4, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end OpenFileAndGetFileDataPtr + + thumb_func_start Call_OpenFileAndGetFileDataPtr +Call_OpenFileAndGetFileDataPtr: + push {lr} + bl OpenFileAndGetFileDataPtr + pop {r1} + bx r1 + thumb_func_end Call_OpenFileAndGetFileDataPtr + + thumb_func_start CloseFile +CloseFile: + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0 + ldr r0, _0800AA30 + movs r3, 0 + ldr r5, _0800AA34 + adds r2, r0, 0x4 +_0800AA22: + cmp r0, r4 + bne _0800AA38 + str r3, [r0] + str r3, [r2] + str r1, [r5] + b _0800AA42 + .align 2, 0 +_0800AA30: .4byte gUnknown_202D2A8 +_0800AA34: .4byte gUnknown_203B094 +_0800AA38: + adds r2, 0x8 + adds r0, 0x8 + adds r1, 0x1 + cmp r1, 0x3F + ble _0800AA22 +_0800AA42: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end CloseFile + + thumb_func_start GetSiroPtr +GetSiroPtr: + push {r4,r5,lr} + adds r5, r0, 0 + ldr r4, [r5, 0x4] + ldr r1, [r4] + ldr r0, _0800AA60 + cmp r1, r0 + beq _0800AA68 + ldr r0, _0800AA64 + cmp r1, r0 + beq _0800AA6E + adds r0, r4, 0 + b _0800AA72 + .align 2, 0 +_0800AA60: .4byte 0x30524953 +_0800AA64: .4byte 0x4f524953 +_0800AA68: + adds r0, r4, 0 + bl NDS_DecompressRLE +_0800AA6E: + ldr r0, [r4, 0x4] + str r0, [r5, 0x4] +_0800AA72: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end GetSiroPtr + + thumb_func_start UnusedGetSir0Ptr +UnusedGetSir0Ptr: + push {r4,lr} + adds r4, r0, 0 + ldr r1, [r4] + ldr r0, _0800AA90 + cmp r1, r0 + bne _0800AA94 + adds r0, r4, 0 + bl NDS_DecompressRLE + ldr r0, [r4, 0x4] + b _0800AA96 + .align 2, 0 +_0800AA90: .4byte 0x30524953 +_0800AA94: + adds r0, r4, 0 +_0800AA96: + pop {r4} + pop {r1} + bx r1 + thumb_func_end UnusedGetSir0Ptr + + thumb_func_start NDS_DecompressRLE +NDS_DecompressRLE: + bx lr + thumb_func_end NDS_DecompressRLE + + .align 2, 0 @ Don't pad with nop. -- cgit v1.2.3