diff options
-rw-r--r-- | asm/CARD_arm9.s | 2 | ||||
-rw-r--r-- | asm/OS_arm9.s | 12 | ||||
-rw-r--r-- | asm/arm9_itcm.s | 49 | ||||
-rw-r--r-- | global.inc | 7 | ||||
-rw-r--r-- | pokediamond.lcf | 9 | ||||
-rw-r--r-- | undefined_syms.txt | 4 |
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 @@ -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; |