diff options
Diffstat (limited to 'arm9/lib/src')
-rw-r--r-- | arm9/lib/src/MI_init.c | 10 | ||||
-rw-r--r-- | arm9/lib/src/MI_uncompress.c | 59 | ||||
-rw-r--r-- | arm9/lib/src/MI_wram.c | 8 | ||||
-rw-r--r-- | arm9/lib/src/OS_init.c | 2 | ||||
-rw-r--r-- | arm9/lib/src/OS_reset.c | 2 |
5 files changed, 79 insertions, 2 deletions
diff --git a/arm9/lib/src/MI_init.c b/arm9/lib/src/MI_init.c new file mode 100644 index 00000000..4556e95a --- /dev/null +++ b/arm9/lib/src/MI_init.c @@ -0,0 +1,10 @@ +#include "nitro/types.h" +#include "function_target.h" +#include "MI_dma.h" +#include "MI_wram.h" + +ARM_FUNC void MI_Init(void) +{ + MI_SetWramBank(MI_WRAM_ARM7_ALL); + MI_StopDma(0); +} diff --git a/arm9/lib/src/MI_uncompress.c b/arm9/lib/src/MI_uncompress.c new file mode 100644 index 00000000..c6ad7e4e --- /dev/null +++ b/arm9/lib/src/MI_uncompress.c @@ -0,0 +1,59 @@ +#include "function_target.h" +#include "MI_uncompress.h" + +ARM_FUNC asm void MI_UncompressLZ8(register const void *srcp, register void *destp) +{ + stmfd sp!, {r4-r6, lr} + + ldr r5, [r0], #4 + mov r2, r5, lsr #8 + +_020CE534: + cmp r2, #0 + ble _020CE5B4 + + ldrb lr, [r0], #1 + mov r4, #8 + +_020CE544: + subs r4, r4, #1 + blt _020CE534 + + tst lr, #0x80 + bne _020CE568 + + ldrb r6, [r0], #1 + swpb r6, r6, [r1] + add r1, r1, #1 + sub r2, r2, #1 + b _020CE5A4 + +_020CE568: + ldrb r5, [r0, #0] + mov r6, #3 + add r3, r6, r5, asr #4 + ldrb r6, [r0], #1 + and r5, r6, #0xf + mov r12, r5, lsl #8 + ldrb r6, [r0], #1 + orr r5, r6, r12 + add r12, r5, #1 + sub r2, r2, r3 + +_020CE590: + ldrb r5, [r1, -r12] + swpb r5, r5, [r1] + add r1, r1, #1 + subs r3, r3, #1 + bgt _020CE590 + +_020CE5A4: + cmp r2, #0 + movgt lr, lr, lsl #1 + bgt _020CE544 + b _020CE534 + +_020CE5B4: + ldmfd sp!, {r4-r6, lr} + bx lr +} diff --git a/arm9/lib/src/MI_wram.c b/arm9/lib/src/MI_wram.c new file mode 100644 index 00000000..a65bbb6f --- /dev/null +++ b/arm9/lib/src/MI_wram.c @@ -0,0 +1,8 @@ +#include "function_target.h" +#include "consts.h" +#include "MI_wram.h" + +ARM_FUNC void MI_SetWramBank(MIWram cnt) +{ + reg_GX_VRAMCNT_WRAM = (u8)cnt; +} diff --git a/arm9/lib/src/OS_init.c b/arm9/lib/src/OS_init.c index 5bd435e7..00355853 100644 --- a/arm9/lib/src/OS_init.c +++ b/arm9/lib/src/OS_init.c @@ -1,8 +1,8 @@ #include "function_target.h" #include "OS_init.h" +#include "MI_init.h" extern void PXI_Init(void); -extern void MI_Init(void); extern void CTRDG_Init(void); extern void CARD_Init(void); extern void PM_Init(void); diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c index a458a8fa..03781947 100644 --- a/arm9/lib/src/OS_reset.c +++ b/arm9/lib/src/OS_reset.c @@ -7,6 +7,7 @@ #include "OS_spinLock.h" #include "OS_cache.h" #include "sections.h" +#include "MI_dma.h" static u16 OSi_IsInitReset = 0; vu16 OSi_IsResetOccurred = 0; @@ -16,7 +17,6 @@ extern u32 PXI_IsCallbackReady(u32 param1, u32 param2); extern void PXI_SetFifoRecvCallback(u32 param1, void* callback); extern u32 PXI_SendWordByFifo(u32 param1, u32 data, u32 param2); extern void CARD_LockRom(u16 lockId); -extern void MI_StopDma(u32 dma); static void OSi_CommonCallback(PXIFifoTag tag, u32 data, BOOL err); static void OSi_SendToPxi(u16 data); |