summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/CARD_arm9.s2
-rw-r--r--asm/OS_arm9.s12
-rw-r--r--asm/arm9_itcm.s49
-rw-r--r--global.inc7
-rw-r--r--pokediamond.lcf9
-rw-r--r--undefined_syms.txt4
6 files changed, 73 insertions, 10 deletions
diff --git a/asm/CARD_arm9.s b/asm/CARD_arm9.s
index 9756ce4b..7222bfc4 100644
--- a/asm/CARD_arm9.s
+++ b/asm/CARD_arm9.s
@@ -1274,7 +1274,7 @@ _020D7738:
ldmia sp!, {r4-r11,lr}
bx lr
.balign 4
-_020D7748: .word 0x021D55C0
+_020D7748: .word cardi_common
_020D774C: .word 0x01FF8000
_020D7750: .word 0x000001FF
_020D7754: .word 0x02106A50
diff --git a/asm/OS_arm9.s b/asm/OS_arm9.s
index 5e10a429..af2c75f1 100644
--- a/asm/OS_arm9.s
+++ b/asm/OS_arm9.s
@@ -3155,7 +3155,7 @@ _020CC38C:
bx lr
_020CC39C:
add sp, sp, #0x4
- ldr r0, _020CC3F8 ; =0x01FF7780
+ ldr r0, _020CC3F8 ; =0x01FF8720
ldmfd sp!, {lr}
bx lr
_020CC3AC:
@@ -3178,11 +3178,11 @@ _020CC3DC:
add sp, sp, #0x4
ldmia sp!, {lr}
bx lr
-_020CC3EC: .word 0x0225FFA0
-_020CC3F0: .word 0x021D36F4
-_020CC3F4: .word 0x023E0000
-_020CC3F8: .word 0x01FF8720
-_020CC3FC: .word 0x027E0080
+_020CC3EC: .word SDK_MAIN_ARENA_LO
+_020CC3F0: .word OSi_MainExArenaEnabled
+_020CC3F4: .word SDK_SECTION_ARENA_EX_START
+_020CC3F8: .word SDK_SECTION_ARENA_ITCM_START
+_020CC3FC: .word SDK_SECTION_ARENA_DTCM_START
_020CC400: .word 0x027FF000
_020CC404: .word 0x037F8000
diff --git a/asm/arm9_itcm.s b/asm/arm9_itcm.s
index 494219a0..79c0de28 100644
--- a/asm/arm9_itcm.s
+++ b/asm/arm9_itcm.s
@@ -455,4 +455,51 @@ MIi_DmaSetParams: ; 01FF85F0
bx lr
_01FF863C: .word 0x040000B0
- .incbin "baserom.nds", 0x10B5E0, 0xC0
+ arm_func_start MI_SendGXCommand
+MI_SendGXCommand: ; 0x01FF8640
+ stmdb sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ sub sp, sp, #4
+ movs r8, r2
+ mov sl, r0
+ mov r9, r1
+ addeq sp, sp, #4
+ ldmeqia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bxeq lr
+ mov r3, #0
+ bl MIi_CheckDma0SourceAddress
+ mov r0, #3
+ mul r1, sl, r0
+ ldr r0, [pc, #104] ; 0x10b680
+ add r1, r1, #2
+ add r7, r0, r1, lsl #2
+_01FF867C:
+ ldr r0, [r7]
+ ands r0, r0, #-2147483648 ; 0x80000000
+ bne _01FF867C
+ cmp r8, #0
+ beq _01FF86C8
+ ldr fp, [pc, #76] ; 0x10b684
+ mov r5, #472 ; 0x1d8
+ ldr r4, [pc, #72] ; 0x10b688
+_01FF869C:
+ cmp r8, #472 ; 0x1d8
+ movhi r6, r5
+ movls r6, r8
+ mov r0, sl
+ mov r1, r9
+ mov r2, fp
+ orr r3, r4, r6, lsr #2
+ bl MIi_DmaSetParams
+ subs r8, r8, r6
+ add r9, r9, r6
+ bne _01FF869C
+_01FF86C8:
+ ldr r0, [r7]
+ ands r0, r0, #-2147483648 ; 0x80000000
+ bne _01FF86C8
+ add sp, sp, #4
+ ldmia sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
+ bx lr
+_01FF86E0: .word 0x040000B0
+_01FF86E4: .word 0x04000400
+_01FF86E8: .word 0x84400000
diff --git a/global.inc b/global.inc
index 706dd6f4..800ff721 100644
--- a/global.inc
+++ b/global.inc
@@ -3327,3 +3327,10 @@
.extern IC_InvalidateAll
.extern MATH_CalcHMACSHA1
.extern ProcessBlock
+.extern MIi_CheckDma0SourceAddress
+.extern SDK_MAIN_ARENA_LO
+.extern OSi_MainExArenaEnabled
+.extern SDK_SECTION_ARENA_EX_START
+.extern SDK_SECTION_ARENA_ITCM_START
+.extern SDK_SECTION_ARENA_DTCM_START
+.extern cardi_common
diff --git a/pokediamond.lcf b/pokediamond.lcf
index 585344dc..028a36ff 100644
--- a/pokediamond.lcf
+++ b/pokediamond.lcf
@@ -3,8 +3,8 @@ MEMORY {
header (RWX) : ORIGIN=0, LENGTH=0
arm9.text (RWX) : ORIGIN=0x02000000, LENGTH=0
arm9.data (RWX) : ORIGIN=0x020EC710, LENGTH=0
- arm9.itcm (RWX) : ORIGIN=0x01FF8000, LENGTH=0
- arm9.dtcm (RWX) : ORIGIN=0x027E0000, LENGTH=0
+ arm9.itcm (RWX) : ORIGIN=0x01FF8000, LENGTH=0x8000
+ arm9.dtcm (RWX) : ORIGIN=0x027E0000, LENGTH=0x2000
arm9.autoload (RWX) : ORIGIN=0x02107700, LENGTH=0
arm9overlay (RWX) : ORIGIN=0, LENGTH=0
arm7 (RWX) : ORIGIN=0x2380000, LENGTH=0
@@ -420,12 +420,17 @@ SECTIONS {
.arm9.itcm : AT (0x10AFA0)
{
+ OS_arm9.o (.itcm)
arm9_itcm.o (.itcm)
+ . = 0x01FF8720;
+ SDK_SECTION_ARENA_ITCM_START = .;
} > arm9.itcm
.arm9.dtcm : AT (0x10B6A0) {
SDK_AUTOLOAD_DTCM_START = .;
OS_arm9.o (.dtcm)
+ . = 0x027E0080;
+ SDK_SECTION_ARENA_DTCM_START = .;
} > arm9.dtcm
.arm9.autoload : AT (0x10B700) {
diff --git a/undefined_syms.txt b/undefined_syms.txt
index 478e3df6..7ae2852d 100644
--- a/undefined_syms.txt
+++ b/undefined_syms.txt
@@ -736,3 +736,7 @@ CP_RestoreContext = 0x020D3688;
SDK_STATIC_BSS_END = 0x021D74E0;
gUnk027FFC20 = 0x027FFC20;
FUN_02000B60 = 0x02000B60;
+cardi_common = 0x021D55C0;
+OSi_MainExArenaEnabled = 0x021D36F4;
+SDK_MAIN_ARENA_LO = 0x0225FFA0;
+SDK_SECTION_ARENA_EX_START = 0x023E0000;