summaryrefslogtreecommitdiff
path: root/arm9/lib/src
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-08-31 14:25:20 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2020-08-31 14:25:20 -0400
commit5787ba96ba2bcb0860422c3e66c179e63368acac (patch)
tree38ff48e4d286804b19f920af382351d4d11a13d0 /arm9/lib/src
parent00cbfe2e138c842d9c0bce4e1848d3eaa88a39b8 (diff)
parentbf25a361cd0d013beb86a936b516957b66cfa011 (diff)
Merge branch 'master' of github.com:pret/pokediamond into pikalax_work
Diffstat (limited to 'arm9/lib/src')
-rw-r--r--arm9/lib/src/MI_init.c10
-rw-r--r--arm9/lib/src/MI_uncompress.c59
-rw-r--r--arm9/lib/src/MI_wram.c8
-rw-r--r--arm9/lib/src/OS_init.c2
-rw-r--r--arm9/lib/src/OS_reset.c2
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);