summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2020-06-09 11:04:48 -0400
committerGitHub <noreply@github.com>2020-06-09 11:04:48 -0400
commitc8f98c38d5baf6bf86531188b1a6ff0745d8d8c9 (patch)
treea7f9955405fbe972f0e8387f4e2a3dee0fb1f414
parenta33dcba598d724d600de6636c5eeea322a529e80 (diff)
parent3e4c87f220f9ce75ce490a91e296b256dce99a0e (diff)
Merge pull request #153 from red031000/master
arm7 OS_arena
-rw-r--r--arm7/Makefile2
-rw-r--r--arm7/arm7.lsf2
-rw-r--r--arm7/asm/OS_alarm.s12
-rw-r--r--arm7/asm/OS_alloc.s8
-rw-r--r--arm7/asm/OS_arena.s149
-rw-r--r--arm7/asm/OS_interrupt.s20
-rw-r--r--arm7/asm/OS_irqTable.s20
-rw-r--r--arm7/asm/OS_reset.s12
-rw-r--r--arm7/asm/OS_spinLock.s8
-rw-r--r--arm7/asm/OS_thread.s44
-rw-r--r--arm7/asm/OS_tick.s16
-rw-r--r--arm7/asm/OS_timer.s8
-rw-r--r--arm7/asm/OS_valarm.s20
-rw-r--r--arm7/asm/PAD_xyButton.s12
-rw-r--r--arm7/asm/PXI_fifo.s12
-rw-r--r--arm7/asm/SND.s16
-rw-r--r--arm7/asm/SND_alarm.s8
-rw-r--r--arm7/asm/SND_command.s12
-rw-r--r--arm7/asm/SND_lockChannel.s8
-rw-r--r--arm7/asm/SND_main.s28
-rw-r--r--arm7/asm/SND_unk_037FD440.s20
-rw-r--r--arm7/asm/SND_work.s16
-rw-r--r--arm7/asm/dtcm_bss.s227
-rw-r--r--arm7/lib/include/OS_arena.h14
-rw-r--r--arm7/lib/include/OS_init.h1
-rw-r--r--arm7/lib/include/consts.h1
-rw-r--r--arm7/lib/include/mmap.h26
-rw-r--r--arm7/lib/src/OS_arena.c110
-rw-r--r--arm7/lib/src/OS_init.c1
-rw-r--r--arm7/lib/src/OS_system.c2
-rw-r--r--arm9/lib/include/OS_arena.h27
-rw-r--r--arm9/lib/include/consts.h1
-rw-r--r--arm9/lib/include/mmap.h13
-rw-r--r--include/nitro/OS_arena_shared.h38
-rw-r--r--include/nitro/consts_shared.h3
-rw-r--r--include/nitro/mmap_shared.h24
36 files changed, 508 insertions, 433 deletions
diff --git a/arm7/Makefile b/arm7/Makefile
index 063e287a..1ade0ed4 100644
--- a/arm7/Makefile
+++ b/arm7/Makefile
@@ -89,7 +89,7 @@ OBJCOPY := $(CROSS)objcopy
# ./tools/mwccarm/2.0/base/mwasmarm.exe -proc arm5te asm/arm7_thumb.s -o arm7.o
ASFLAGS = -proc arm4t -i ..
-CFLAGS = -O4,p -proc arm7tdmi -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all
+CFLAGS = -O4,s -proc arm7tdmi -fp soft -lang c99 -Cpp_exceptions off -i ../include -ir ../include-mw -ir lib/include -interworking -DFS_IMPLEMENT -enum int -W all
LDFLAGS = -map -nodead -w off -proc v4t -interworking -map -symtab -m _start
####################### Other Tools #########################
diff --git a/arm7/arm7.lsf b/arm7/arm7.lsf
index 65b9a5c8..3b988f59 100644
--- a/arm7/arm7.lsf
+++ b/arm7/arm7.lsf
@@ -2,7 +2,7 @@
Static arm7
{
Address 0x02380000
- StackSize 1024 512
+ StackSize 1024 1024
}
Autoload MAIN
diff --git a/arm7/asm/OS_alarm.s b/arm7/asm/OS_alarm.s
index 762c5372..fe55ccb2 100644
--- a/arm7/asm/OS_alarm.s
+++ b/arm7/asm/OS_alarm.s
@@ -1,7 +1,17 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807930
+_03807930: ;0x03807930
+ .space 0x03807934 - 0x03807930
+
+ .global _03807934
+_03807934: ;0x03807934
+ .space 0x0380793C - 0x03807934
+
+ .section .text
arm_func_start OSi_AlarmHandler
OSi_AlarmHandler: ; 0x037FA540
diff --git a/arm7/asm/OS_alloc.s b/arm7/asm/OS_alloc.s
index 43372371..1c174548 100644
--- a/arm7/asm/OS_alloc.s
+++ b/arm7/asm/OS_alloc.s
@@ -1,7 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global OSiHeapInfo
+OSiHeapInfo: ;0x038078F8
+ .space 0x0380791C - 0x038078F8
+
+ .section .text
arm_func_start OS_CheckHeap
OS_CheckHeap: ; 0x037F9D88
diff --git a/arm7/asm/OS_arena.s b/arm7/asm/OS_arena.s
deleted file mode 100644
index 3b444cdd..00000000
--- a/arm7/asm/OS_arena.s
+++ /dev/null
@@ -1,149 +0,0 @@
- .include "asm/macros.inc"
- .include "global.inc"
-
- .text
-
- arm_func_start OS_SetArenaLo
-OS_SetArenaLo: ; 0x037F9BBC
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- str r1, [r0, #3488] ; 0xda0
- bx lr
-
- arm_func_start OS_SetArenaHi
-OS_SetArenaHi: ; 0x037F9BD0
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- str r1, [r0, #3524] ; 0xdc4
- bx lr
-
- arm_func_start OS_GetInitArenaLo
-OS_GetInitArenaLo: ; 0x037F9BE4
- cmp r0, #1
- beq _037F9C00
- cmp r0, #7
- beq _037F9C08
- cmp r0, #8
- beq _037F9C18
- b _037F9C2C
-_037F9C00:
- ldr r0, _037F9C34 ; =0x027FAFCC
- bx lr
-_037F9C08:
- ldr r0, _037F9C38 ; =0x0380B92C
- cmp r0, #58720256 ; 0x03800000
- movhi r0, #58720256 ; 0x03800000
- bx lr
-_037F9C18:
- mov r0, #58720256 ; 0x03800000
- ldr r1, _037F9C38 ; =0x0380B92C
- cmp r1, #58720256 ; 0x03800000
- movhi r0, r1
- bx lr
-_037F9C2C:
- mov r0, #0
- bx lr
-_037F9C34: .word 0x027FAFCC
-_037F9C38: .word 0x0380B92C
-
- arm_func_start OS_GetInitArenaHi
-OS_GetInitArenaHi: ; 0x037F9C3C
- cmp r0, #1
- beq _037F9C58
- cmp r0, #7
- beq _037F9C60
- cmp r0, #8
- beq _037F9C68
- b _037F9CA0
-_037F9C58:
- ldr r0, _037F9CA8 ; =0x027FF000
- bx lr
-_037F9C60:
- mov r0, #58720256 ; 0x03800000
- bx lr
-_037F9C68:
- ldr r1, _037F9CAC ; =0x00000400
- ldr r0, _037F9CB0 ; =0x0380FF80
- sub r2, r0, r1
- mov r0, #58720256 ; 0x03800000
- ldr r1, _037F9CB4 ; =0x0380B92C
- cmp r1, #58720256 ; 0x03800000
- movhi r0, r1
- ldr r1, _037F9CB8 ; =0x00000400
- cmp r1, #0
- bxeq lr
- cmp r1, #0
- sublt r0, r0, r1
- subge r0, r2, r1
- bx lr
-_037F9CA0:
- mov r0, #0
- bx lr
-_037F9CA8: .word 0x027FF000
-_037F9CAC: .word 0x00000400
-_037F9CB0: .word 0x0380FF80
-_037F9CB4: .word 0x0380B92C
-_037F9CB8: .word 0x00000400
-
- arm_func_start OS_GetArenaLo
-OS_GetArenaLo: ; 0x037F9CBC
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- ldr r0, [r0, #3488] ; 0xda0
- bx lr
-
- arm_func_start OS_GetArenaHi
-OS_GetArenaHi: ; 0x037F9CD0
- mov r0, r0, lsl #2
- add r0, r0, #40894464 ; 0x2700000
- add r0, r0, #1044480 ; 0xff000
- ldr r0, [r0, #3524] ; 0xdc4
- bx lr
-
- arm_func_start OS_InitArena
-OS_InitArena: ; 0x037F9CE4
- stmfd sp!, {lr}
- sub sp, sp, #4
- ldr r1, _037F9D84 ; =_038078F4
- ldr r0, [r1]
- cmp r0, #0
- bne _037F9D78
- mov r0, #1
- str r0, [r1]
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #1
- bl OS_SetArenaHi
- mov r0, #1
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #1
- bl OS_SetArenaLo
- mov r0, #7
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #7
- bl OS_SetArenaHi
- mov r0, #7
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #7
- bl OS_SetArenaLo
- mov r0, #8
- bl OS_GetInitArenaHi
- mov r1, r0
- mov r0, #8
- bl OS_SetArenaHi
- mov r0, #8
- bl OS_GetInitArenaLo
- mov r1, r0
- mov r0, #8
- bl OS_SetArenaLo
-_037F9D78:
- add sp, sp, #4
- ldmia sp!, {lr}
- bx lr
-_037F9D84: .word _038078F4
diff --git a/arm7/asm/OS_interrupt.s b/arm7/asm/OS_interrupt.s
index 48fc9d1b..0a999637 100644
--- a/arm7/asm/OS_interrupt.s
+++ b/arm7/asm/OS_interrupt.s
@@ -1,7 +1,25 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807744
+_03807744: ;0x03807744
+ .space 0x03807748 - 0x03807744
+
+ .global _03807748
+_03807748: ;0x03807748
+ .space 0x0380774C - 0x03807748
+
+ .global _0380774C
+_0380774C: ;0x0380774C
+ .space 0x03807774 - 0x0380774C
+
+ .global _03807774
+_03807774: ;0x03807774
+ .space 0x03807780 - 0x03807774
+
+ .section .text
arm_func_start OS_ResetRequestIrqMask
OS_ResetRequestIrqMask: ; 0x037F8824
diff --git a/arm7/asm/OS_irqTable.s b/arm7/asm/OS_irqTable.s
index 56eea302..a61e448f 100644
--- a/arm7/asm/OS_irqTable.s
+++ b/arm7/asm/OS_irqTable.s
@@ -1,7 +1,25 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global OSi_IrqThreadQueue
+OSi_IrqThreadQueue: ;0x0380770C
+ .space 0x03807714 - 0x0380770C
+
+ .global OSi_IrqCallbackInfo
+OSi_IrqCallbackInfo: ;0x03807714
+ .space 0x03807718 - 0x03807714
+
+ .global _03807718
+_03807718: ;0x03807718
+ .space 0x0380771C - 0x03807718
+
+ .global _0380771C
+_0380771C: ;0x0380771C
+ .space 0x03807744 - 0x0380771C
+
+ .section .text
arm_func_start OSi_IrqVBlank
OSi_IrqVBlank: ; 0x037F86B4
diff --git a/arm7/asm/OS_reset.s b/arm7/asm/OS_reset.s
index 100514c0..b2a8ffe6 100644
--- a/arm7/asm/OS_reset.s
+++ b/arm7/asm/OS_reset.s
@@ -1,7 +1,17 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807950
+_03807950: ;0x03807950
+ .space 0x03807954 - 0x03807950
+
+ .global _03807954
+_03807954: ;0x03807954
+ .space 0x03807958 - 0x03807954
+
+ .section .text
arm_func_start OS_ResetSystem
OS_ResetSystem: ; 0x037FB0E0
diff --git a/arm7/asm/OS_spinLock.s b/arm7/asm/OS_spinLock.s
index 04f4683b..bb15916e 100644
--- a/arm7/asm/OS_spinLock.s
+++ b/arm7/asm/OS_spinLock.s
@@ -1,7 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807780
+_03807780: ;0x03807780
+ .space 0x03807784 - 0x03807780
+
+ .section .text
arm_func_start OS_UnLockCartridge
OS_UnLockCartridge: ; 0x037F8A18
diff --git a/arm7/asm/OS_thread.s b/arm7/asm/OS_thread.s
index 64aebb04..027b2130 100644
--- a/arm7/asm/OS_thread.s
+++ b/arm7/asm/OS_thread.s
@@ -1,7 +1,49 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global OSi_StackForDestructor
+OSi_StackForDestructor: ;0x03807784
+ .space 0x03807788 - 0x03807784
+
+ .global OSi_RescheduleCount
+OSi_RescheduleCount: ;0x03807788
+ .space 0x0380778C - 0x03807788
+
+ .global _0380778C
+_0380778C: ;0x0380778C
+ .space 0x03807790 - 0x0380778C
+
+ .global OSi_SystemCallbackInSwitchThread
+OSi_SystemCallbackInSwitchThread: ;0x03807790
+ .space 0x03807794 - 0x03807790
+
+ .global OSi_CurrentThreadPtr
+OSi_CurrentThreadPtr: ;0x03807794
+ .space 0x03807798 - 0x03807794
+
+ .global OSi_IsThreadInitialized
+OSi_IsThreadInitialized: ;0x03807798
+ .space 0x0380779C - 0x03807798
+
+ .global OSi_ThreadInfo
+OSi_ThreadInfo: ;0x0380779C
+ .space 0x038077A0 - 0x0380779C
+
+ .global _038077A0
+_038077A0: ;0x038077A0
+ .space 0x038077AC - 0x038077A0
+
+ .global OSi_IdleThread
+OSi_IdleThread: ;0x038077AC
+ .space 0x03807850 - 0x038077AC
+
+ .global OSi_LauncherThread
+OSi_LauncherThread: ;0x03807850
+ .space 0x038078F4 - 0x03807850
+
+ .section .text
arm_func_start OS_SetThreadDestructor
OS_SetThreadDestructor: ; 0x037F8D48
diff --git a/arm7/asm/OS_tick.s b/arm7/asm/OS_tick.s
index 40589867..f9688b9e 100644
--- a/arm7/asm/OS_tick.s
+++ b/arm7/asm/OS_tick.s
@@ -1,7 +1,21 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807920
+_03807920: ;0x03807920
+ .space 0x03807924 - 0x03807920
+
+ .global OSi_NeedResetTimer
+OSi_NeedResetTimer: ;0x03807924
+ .space 0x03807928 - 0x03807924
+
+ .global OSi_TickCounter
+OSi_TickCounter: ;0x03807928
+ .space 0x03807930 - 0x03807928
+
+ .section .text
arm_func_start OS_GetTick
OS_GetTick: ; 0x037FA364
diff --git a/arm7/asm/OS_timer.s b/arm7/asm/OS_timer.s
index 5794046e..434be17a 100644
--- a/arm7/asm/OS_timer.s
+++ b/arm7/asm/OS_timer.s
@@ -1,7 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _0380791C
+_0380791C: ;0x0380791C
+ .space 0x03807920 - 0x0380791C
+
+ .section .text
arm_func_start OSi_SetTimerReserved
OSi_SetTimerReserved: ; 0x037FA348
diff --git a/arm7/asm/OS_valarm.s b/arm7/asm/OS_valarm.s
index 07e22fc5..bfd681df 100644
--- a/arm7/asm/OS_valarm.s
+++ b/arm7/asm/OS_valarm.s
@@ -1,7 +1,25 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _0380793C
+_0380793C: ;0x0380793C
+ .space 0x03807940 - 0x0380793C
+
+ .global _03807940
+_03807940: ;0x03807940
+ .space 0x03807944 - 0x03807940
+
+ .global _03807944
+_03807944: ;0x03807944
+ .space 0x03807948 - 0x03807944
+
+ .global _03807948
+_03807948: ;0x03807948
+ .space 0x03807950 - 0x03807948
+
+ .section .text
arm_func_start OSi_GetVFrame
OSi_GetVFrame: ; 0x037FAA0C
diff --git a/arm7/asm/PAD_xyButton.s b/arm7/asm/PAD_xyButton.s
index ff5d5e4e..66dc0a61 100644
--- a/arm7/asm/PAD_xyButton.s
+++ b/arm7/asm/PAD_xyButton.s
@@ -1,7 +1,17 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global PADi_XYButtonAvailable
+PADi_XYButtonAvailable: ;0x038079DC
+ .space 0x038079E0 - 0x038079DC
+
+ .global _038079E0
+_038079E0: ;0x038079E0
+ .space 0x03807A0C - 0x038079E0
+
+ .section .text
arm_func_start PAD_InitXYButton
PAD_InitXYButton: ; 0x037FB96C
diff --git a/arm7/asm/PXI_fifo.s b/arm7/asm/PXI_fifo.s
index 9824f7a9..a6e60692 100644
--- a/arm7/asm/PXI_fifo.s
+++ b/arm7/asm/PXI_fifo.s
@@ -1,7 +1,17 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807958
+_03807958: ;0x03807958
+ .space 0x0380795C - 0x03807958
+
+ .global _0380795C
+_0380795C: ;0x0380795C
+ .space 0x038079DC - 0x0380795C
+
+ .section .text
arm_func_start PXIi_HandlerRecvFifoNotEmpty
PXIi_HandlerRecvFifoNotEmpty: ; 0x037FB5BC
diff --git a/arm7/asm/SND.s b/arm7/asm/SND.s
index 75c5b32f..43e137e1 100644
--- a/arm7/asm/SND.s
+++ b/arm7/asm/SND.s
@@ -3,7 +3,21 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global sSurroundDecay
+sSurroundDecay: ;0x03807A0C
+ .space 0x03807A10 - 0x03807A0C
+
+ .global sOrgPan
+sOrgPan: ;0x03807A10
+ .space 0x03807A20 - 0x03807A10
+
+ .global sOrgVolume
+sOrgVolume: ;0x03807A20
+ .space 0x03807A30 - 0x03807A20
+
+ .section .text
arm_func_start SND_SetOutputSelector
SND_SetOutputSelector: ; 0x037FBA0C
diff --git a/arm7/asm/SND_alarm.s b/arm7/asm/SND_alarm.s
index 9a582901..68740d65 100644
--- a/arm7/asm/SND_alarm.s
+++ b/arm7/asm/SND_alarm.s
@@ -1,7 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03808EEC
+_03808EEC: ;0x03808EEC
+ .space 0x038090EC - 0x03808EEC
+
+ .section .text
arm_func_start AlarmHandler
AlarmHandler: ; 0x037FF524
diff --git a/arm7/asm/SND_command.s b/arm7/asm/SND_command.s
index 3b49c224..ec1a5014 100644
--- a/arm7/asm/SND_command.s
+++ b/arm7/asm/SND_command.s
@@ -1,7 +1,17 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _038090EC
+_038090EC: ;0x038090EC
+ .space 0x0380910C - 0x038090EC
+
+ .global _0380910C
+_0380910C: ;0x0380910C
+ .space 0x0380912C - 0x0380910C
+
+ .section .text
arm_func_start ReadDriverInfo
ReadDriverInfo: ; 0x037FF6E4
diff --git a/arm7/asm/SND_lockChannel.s b/arm7/asm/SND_lockChannel.s
index cc568f66..b525e0d1 100644
--- a/arm7/asm/SND_lockChannel.s
+++ b/arm7/asm/SND_lockChannel.s
@@ -1,7 +1,13 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807F48
+_03807F48: ;0x03807F48
+ .space 0x03807F4C - 0x03807F48
+
+ .section .text
arm_func_start SND_GetLockedChannel
SND_GetLockedChannel: ; 0x037FC964
diff --git a/arm7/asm/SND_main.s b/arm7/asm/SND_main.s
index 4182b325..2353d2c2 100644
--- a/arm7/asm/SND_main.s
+++ b/arm7/asm/SND_main.s
@@ -1,7 +1,33 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807A30
+_03807A30: ;0x03807A30
+ .space 0x03807A34 - 0x03807A30
+
+ .global _03807A34
+_03807A34: ;0x03807A34
+ .space 0x03807A54 - 0x03807A34
+
+ .global _03807A54
+_03807A54: ;0x03807A54
+ .space 0x03807A74 - 0x03807A54
+
+ .global _03807A74
+_03807A74: ;0x03807A74
+ .space 0x03807AA0 - 0x03807A74
+
+ .global _03807AA0
+_03807AA0: ;0x03807AA0
+ .space 0x03807F44 - 0x03807AA0
+
+ .global _03807F44
+_03807F44: ;0x03807F44
+ .space 0x03807F48 - 0x03807F44
+
+ .section .text
arm_func_start SndThread
SndThread: ; 0x037FC2B0
diff --git a/arm7/asm/SND_unk_037FD440.s b/arm7/asm/SND_unk_037FD440.s
index f680881b..14e4bda9 100644
--- a/arm7/asm/SND_unk_037FD440.s
+++ b/arm7/asm/SND_unk_037FD440.s
@@ -2,7 +2,25 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global _03807F4C
+_03807F4C: ;0x03807F4C
+ .space 0x03807F50 - 0x03807F4C
+
+ .global _03807F50
+_03807F50: ;0x03807F50
+ .space 0x03807F58 - 0x03807F50
+
+ .global _03807F58
+_03807F58: ;0x03807F58
+ .space 0x03807F68 - 0x03807F58
+
+ .global SNDi_SharedWork
+SNDi_SharedWork: ;0x03807F68
+ .space 0x03807F6C - 0x03807F68
+
+ .section .text
arm_func_start FUN_037FD440
FUN_037FD440: ; 0x037FD440
diff --git a/arm7/asm/SND_work.s b/arm7/asm/SND_work.s
index 0965b37a..fb7f51e9 100644
--- a/arm7/asm/SND_work.s
+++ b/arm7/asm/SND_work.s
@@ -1,7 +1,21 @@
.include "asm/macros.inc"
.include "global.inc"
- .text
+ .section .bss
+
+ .global SNDi_Work
+SNDi_Work: ;0x03807F6C
+ .space 0x038084AC - 0x03807F6C
+#todo unsure if these two belong here
+ .global _038084AC
+_038084AC: ;0x038084AC
+ .space 0x038086EC - 0x038084AC
+
+ .global _038086EC
+_038086EC: ;0x038086EC
+ .space 0x03808EEC - 0x038086EC
+
+ .section .text
arm_func_start SND_UpdateSharedWork
SND_UpdateSharedWork: ; 0x037FF448
diff --git a/arm7/asm/dtcm_bss.s b/arm7/asm/dtcm_bss.s
index 6ef48112..e485943f 100644
--- a/arm7/asm/dtcm_bss.s
+++ b/arm7/asm/dtcm_bss.s
@@ -1,233 +1,6 @@
.include "asm/macros.inc"
.include "global.inc"
.section .bss
- .global OSi_IrqThreadQueue
-OSi_IrqThreadQueue: ;0x0380770C
- .space 0x03807714 - 0x0380770C
-
- .global OSi_IrqCallbackInfo
-OSi_IrqCallbackInfo: ;0x03807714
- .space 0x03807718 - 0x03807714
-
- .global _03807718
-_03807718: ;0x03807718
- .space 0x0380771C - 0x03807718
-
- .global _0380771C
-_0380771C: ;0x0380771C
- .space 0x03807744 - 0x0380771C
-
- .global _03807744
-_03807744: ;0x03807744
- .space 0x03807748 - 0x03807744
-
- .global _03807748
-_03807748: ;0x03807748
- .space 0x0380774C - 0x03807748
-
- .global _0380774C
-_0380774C: ;0x0380774C
- .space 0x03807774 - 0x0380774C
-
- .global _03807774
-_03807774: ;0x03807774
- .space 0x03807780 - 0x03807774
-
- .global _03807780
-_03807780: ;0x03807780
- .space 0x03807784 - 0x03807780
-
- .global OSi_StackForDestructor
-OSi_StackForDestructor: ;0x03807784
- .space 0x03807788 - 0x03807784
-
- .global OSi_RescheduleCount
-OSi_RescheduleCount: ;0x03807788
- .space 0x0380778C - 0x03807788
-
- .global _0380778C
-_0380778C: ;0x0380778C
- .space 0x03807790 - 0x0380778C
-
- .global OSi_SystemCallbackInSwitchThread
-OSi_SystemCallbackInSwitchThread: ;0x03807790
- .space 0x03807794 - 0x03807790
-
- .global OSi_CurrentThreadPtr
-OSi_CurrentThreadPtr: ;0x03807794
- .space 0x03807798 - 0x03807794
-
- .global OSi_IsThreadInitialized
-OSi_IsThreadInitialized: ;0x03807798
- .space 0x0380779C - 0x03807798
-
- .global OSi_ThreadInfo
-OSi_ThreadInfo: ;0x0380779C
- .space 0x038077A0 - 0x0380779C
-
- .global _038077A0
-_038077A0: ;0x038077A0
- .space 0x038077AC - 0x038077A0
-
- .global OSi_IdleThread
-OSi_IdleThread: ;0x038077AC
- .space 0x03807850 - 0x038077AC
-
- .global OSi_LauncherThread
-OSi_LauncherThread: ;0x03807850
- .space 0x038078F4 - 0x03807850
-
- .global _038078F4
-_038078F4: ;0x038078F4
- .space 0x038078F8 - 0x038078F4
-
- .global OSiHeapInfo
-OSiHeapInfo: ;0x038078F8
- .space 0x0380791C - 0x038078F8
-
- .global _0380791C
-_0380791C: ;0x0380791C
- .space 0x03807920 - 0x0380791C
-
- .global _03807920
-_03807920: ;0x03807920
- .space 0x03807924 - 0x03807920
-
- .global OSi_NeedResetTimer
-OSi_NeedResetTimer: ;0x03807924
- .space 0x03807928 - 0x03807924
-
- .global OSi_TickCounter
-OSi_TickCounter: ;0x03807928
- .space 0x03807930 - 0x03807928
-
- .global _03807930
-_03807930: ;0x03807930
- .space 0x03807934 - 0x03807930
-
- .global _03807934
-_03807934: ;0x03807934
- .space 0x0380793C - 0x03807934
-
- .global _0380793C
-_0380793C: ;0x0380793C
- .space 0x03807940 - 0x0380793C
-
- .global _03807940
-_03807940: ;0x03807940
- .space 0x03807944 - 0x03807940
-
- .global _03807944
-_03807944: ;0x03807944
- .space 0x03807948 - 0x03807944
-
- .global _03807948
-_03807948: ;0x03807948
- .space 0x03807950 - 0x03807948
-
- .global _03807950
-_03807950: ;0x03807950
- .space 0x03807954 - 0x03807950
-
- .global _03807954
-_03807954: ;0x03807954
- .space 0x03807958 - 0x03807954
-
- .global _03807958
-_03807958: ;0x03807958
- .space 0x0380795C - 0x03807958
-
- .global _0380795C
-_0380795C: ;0x0380795C
- .space 0x038079DC - 0x0380795C
-
- .global PADi_XYButtonAvailable
-PADi_XYButtonAvailable: ;0x038079DC
- .space 0x038079E0 - 0x038079DC
-
- .global _038079E0
-_038079E0: ;0x038079E0
- .space 0x03807A0C - 0x038079E0
-
- .global sSurroundDecay
-sSurroundDecay: ;0x03807A0C
- .space 0x03807A10 - 0x03807A0C
-
- .global sOrgPan
-sOrgPan: ;0x03807A10
- .space 0x03807A20 - 0x03807A10
-
- .global sOrgVolume
-sOrgVolume: ;0x03807A20
- .space 0x03807A30 - 0x03807A20
-
- .global _03807A30
-_03807A30: ;0x03807A30
- .space 0x03807A34 - 0x03807A30
-
- .global _03807A34
-_03807A34: ;0x03807A34
- .space 0x03807A54 - 0x03807A34
-
- .global _03807A54
-_03807A54: ;0x03807A54
- .space 0x03807A74 - 0x03807A54
-
- .global _03807A74
-_03807A74: ;0x03807A74
- .space 0x03807AA0 - 0x03807A74
-
- .global _03807AA0
-_03807AA0: ;0x03807AA0
- .space 0x03807F44 - 0x03807AA0
-
- .global _03807F44
-_03807F44: ;0x03807F44
- .space 0x03807F48 - 0x03807F44
-
- .global _03807F48
-_03807F48: ;0x03807F48
- .space 0x03807F4C - 0x03807F48
-
- .global _03807F4C
-_03807F4C: ;0x03807F4C
- .space 0x03807F50 - 0x03807F4C
-
- .global _03807F50
-_03807F50: ;0x03807F50
- .space 0x03807F58 - 0x03807F50
-
- .global _03807F58
-_03807F58: ;0x03807F58
- .space 0x03807F68 - 0x03807F58
-
- .global SNDi_SharedWork
-SNDi_SharedWork: ;0x03807F68
- .space 0x03807F6C - 0x03807F68
-
- .global SNDi_Work
-SNDi_Work: ;0x03807F6C
- .space 0x038084AC - 0x03807F6C
-
- .global _038084AC
-_038084AC: ;0x038084AC
- .space 0x038086EC - 0x038084AC
-
- .global _038086EC
-_038086EC: ;0x038086EC
- .space 0x03808EEC - 0x038086EC
-
- .global _03808EEC
-_03808EEC: ;0x03808EEC
- .space 0x038090EC - 0x03808EEC
-
- .global _038090EC
-_038090EC: ;0x038090EC
- .space 0x0380910C - 0x038090EC
-
- .global _0380910C
-_0380910C: ;0x0380910C
- .space 0x0380912C - 0x0380910C
.global _0380912C
_0380912C: ;0x0380912C
diff --git a/arm7/lib/include/OS_arena.h b/arm7/lib/include/OS_arena.h
new file mode 100644
index 00000000..9227e539
--- /dev/null
+++ b/arm7/lib/include/OS_arena.h
@@ -0,0 +1,14 @@
+#ifndef POKEDIAMOND_ARM7_OS_ARENA_H
+#define POKEDIAMOND_ARM7_OS_ARENA_H
+
+#include "nitro/OS_arena_shared.h"
+
+void OS_InitArena(void);
+void* OS_GetArenaHi(OSArenaId id);
+void* OS_GetArenaLo(OSArenaId id);
+void* OS_GetInitArenaHi(OSArenaId id);
+void* OS_GetInitArenaLo(OSArenaId id);
+void OS_SetArenaHi(OSArenaId id, void* newHi);
+void OS_SetArenaLo(OSArenaId id, void* newLo);
+
+#endif //POKEDIAMOND_ARM7_OS_ARENA_H
diff --git a/arm7/lib/include/OS_init.h b/arm7/lib/include/OS_init.h
index 50d5e3c4..9c9b1f93 100644
--- a/arm7/lib/include/OS_init.h
+++ b/arm7/lib/include/OS_init.h
@@ -3,6 +3,7 @@
#include "nitro/types.h"
#include "OS_system.h"
+#include "OS_arena.h"
void OS_Init(void);
diff --git a/arm7/lib/include/consts.h b/arm7/lib/include/consts.h
index aaf8e429..dd297402 100644
--- a/arm7/lib/include/consts.h
+++ b/arm7/lib/include/consts.h
@@ -2,5 +2,6 @@
#define POKEDIAMOND_ARM7_CONSTS_H
#include "nitro/consts_shared.h"
+#include "mmap.h"
#endif //POKEDIAMOND_ARM7_CONSTS_H
diff --git a/arm7/lib/include/mmap.h b/arm7/lib/include/mmap.h
new file mode 100644
index 00000000..24d15ad7
--- /dev/null
+++ b/arm7/lib/include/mmap.h
@@ -0,0 +1,26 @@
+#ifndef POKEDIAMOND_ARM7_MMAP_H
+#define POKEDIAMOND_ARM7_MMAP_H
+
+#include "nitro/mmap_shared.h"
+
+#define HW_WRAM_END 0x03800000
+#define HW_PRV_WRAM 0x03800000
+#define HW_PRV_WRAM_END 0x03810000
+
+#define HW_PRV_WRAM_SIZE (HW_PRV_WRAM_END-HW_PRV_WRAM)
+
+#define HW_SVC_STACK_SIZE 0x40
+#define HW_PRV_WRAM_SYSRV_SIZE 0x40
+
+#define HW_MAIN_MEM_SUB_SIZE (HW_MAIN_MEM_SIZE - HW_MAIN_MEM_MAIN_SIZE - HW_MAIN_MEM_SHARED_SIZE)
+
+#define HW_MAIN_MEM_SUB (HW_MAIN_MEM_MAIN_END + 0x400000)
+#define HW_MAIN_MEM_SUB_END (HW_MAIN_MEM_SUB + HW_MAIN_MEM_SUB_SIZE)
+
+#define HW_PRV_WRAM_IRQ_STACK_END (HW_PRV_WRAM_SVC_STACK)
+#define HW_PRV_WRAM_SVC_STACK (HW_PRV_WRAM_SVC_STACK_END - HW_SVC_STACK_SIZE)
+#define HW_PRV_WRAM_SVC_STACK_END (HW_PRV_WRAM_SYSRV)
+
+#define HW_PRV_WRAM_SYSRV (HW_PRV_WRAM + HW_PRV_WRAM_SIZE - HW_PRV_WRAM_SYSRV_SIZE)
+
+#endif //POKEDIAMOND_ARM7_MMAP_H
diff --git a/arm7/lib/src/OS_arena.c b/arm7/lib/src/OS_arena.c
new file mode 100644
index 00000000..516fc10b
--- /dev/null
+++ b/arm7/lib/src/OS_arena.c
@@ -0,0 +1,110 @@
+#include "function_target.h"
+#include "consts.h"
+#include "OS_arena.h"
+
+static BOOL OSi_Initialized = FALSE;
+
+extern void SDK_SUBPRIV_ARENA_LO(void);
+extern void SDK_WRAM_ARENA_LO(void);
+extern void SDK_IRQ_STACKSIZE(void);
+extern void SDK_SYS_STACKSIZE(void);
+
+ARM_FUNC void OS_InitArena(void)
+{
+ if (OSi_Initialized)
+ {
+ return;
+ }
+ OSi_Initialized = TRUE;
+
+ OS_SetArenaHi(OS_ARENA_MAIN_SUBPRIV, OS_GetInitArenaHi(OS_ARENA_MAIN_SUBPRIV));
+ OS_SetArenaLo(OS_ARENA_MAIN_SUBPRIV, OS_GetInitArenaLo(OS_ARENA_MAIN_SUBPRIV));
+
+ OS_SetArenaHi(OS_ARENA_WRAM_SUB, OS_GetInitArenaHi(OS_ARENA_WRAM_SUB));
+ OS_SetArenaLo(OS_ARENA_WRAM_SUB, OS_GetInitArenaLo(OS_ARENA_WRAM_SUB));
+
+ OS_SetArenaHi(OS_ARENA_WRAM_SUBPRIV, OS_GetInitArenaHi(OS_ARENA_WRAM_SUBPRIV));
+ OS_SetArenaLo(OS_ARENA_WRAM_SUBPRIV, OS_GetInitArenaLo(OS_ARENA_WRAM_SUBPRIV));
+}
+
+ARM_FUNC void* OS_GetArenaHi(OSArenaId id)
+{
+ return OSi_GetArenaInfo().hi[id];
+}
+
+ARM_FUNC void* OS_GetArenaLo(OSArenaId id)
+{
+ return OSi_GetArenaInfo().lo[id];
+}
+
+ARM_FUNC void* OS_GetInitArenaHi(OSArenaId id)
+{
+ switch (id) {
+ case OS_ARENA_MAIN_SUBPRIV:
+ return (void *)HW_MAIN_MEM_SUB_END;
+ case OS_ARENA_WRAM_SUB:
+ return (void *)HW_WRAM_END;
+ case OS_ARENA_WRAM_SUBPRIV:
+ {
+ u32 irqStackLo = (u32)HW_PRV_WRAM_IRQ_STACK_END - (s32)SDK_IRQ_STACKSIZE;
+ u32 sysStackLo = (u32)HW_PRV_WRAM;
+
+ if ((u32)SDK_WRAM_ARENA_LO > (u32)HW_PRV_WRAM)
+ {
+ sysStackLo = (u32)SDK_WRAM_ARENA_LO;
+ }
+
+ if (!(s32)SDK_SYS_STACKSIZE)
+ {
+ return (void *)sysStackLo;
+ }
+ else if ((s32)SDK_SYS_STACKSIZE < 0)
+ {
+ sysStackLo -= (s32)SDK_SYS_STACKSIZE;
+ }
+ else
+ {
+ sysStackLo = irqStackLo - (s32)SDK_SYS_STACKSIZE;
+ }
+
+ return (void *)sysStackLo;
+ }
+ default:
+ return NULL;
+ }
+}
+
+ARM_FUNC void* OS_GetInitArenaLo(OSArenaId id) {
+ switch (id) {
+ case OS_ARENA_MAIN_SUBPRIV:
+ return (void *)((u32)0x027fafcc); //todo SDK_SUBPRIV_ARENA_LO
+ case OS_ARENA_WRAM_SUB:
+ {
+ u32 wramSubLo = ((u32)SDK_WRAM_ARENA_LO);
+ if ((u32)HW_WRAM_END < (u32)wramSubLo)
+ {
+ wramSubLo = (u32)HW_WRAM_END;
+ }
+ return (void *)wramSubLo;
+ }
+ case OS_ARENA_WRAM_SUBPRIV:
+ {
+ u32 privWramLo = HW_PRV_WRAM;
+ if ((u32)SDK_WRAM_ARENA_LO > (u32)privWramLo)
+ {
+ privWramLo = (u32)SDK_WRAM_ARENA_LO;
+ }
+ return (void *)privWramLo;
+ }
+ default:
+ return NULL;
+ }
+}
+
+ARM_FUNC void OS_SetArenaHi(OSArenaId id, void* newHi) {
+ OSi_GetArenaInfo().hi[id] = newHi;
+}
+
+ARM_FUNC void OS_SetArenaLo(OSArenaId id, void* newLo) {
+ OSi_GetArenaInfo().lo[id] = newLo;
+}
diff --git a/arm7/lib/src/OS_init.c b/arm7/lib/src/OS_init.c
index 082b3e70..f4972638 100644
--- a/arm7/lib/src/OS_init.c
+++ b/arm7/lib/src/OS_init.c
@@ -1,7 +1,6 @@
#include "function_target.h"
#include "OS_init.h"
-extern void OS_InitArena(void);
extern void PXI_Init(void);
extern void OS_InitLock(void);
extern void OS_InitIrqTable(void);
diff --git a/arm7/lib/src/OS_system.c b/arm7/lib/src/OS_system.c
index 120eddbf..11417e91 100644
--- a/arm7/lib/src/OS_system.c
+++ b/arm7/lib/src/OS_system.c
@@ -1,8 +1,6 @@
#include "function_target.h"
#include "OS_system.h"
-#pragma optimize_for_size on
-
extern void FUN_037F8CB4(s32 count);
ARM_FUNC asm OSIntrMode OS_EnableInterrupts(void)
diff --git a/arm9/lib/include/OS_arena.h b/arm9/lib/include/OS_arena.h
index 7608835a..a26cf3bd 100644
--- a/arm9/lib/include/OS_arena.h
+++ b/arm9/lib/include/OS_arena.h
@@ -1,27 +1,8 @@
-#ifndef POKEDIAMOND_OS_ARENA_H
-#define POKEDIAMOND_OS_ARENA_H
+#ifndef POKEDIAMOND_ARM9_OS_ARENA_H
+#define POKEDIAMOND_ARM9_OS_ARENA_H
#include "nitro/types.h"
-
-typedef enum {
- OS_ARENA_MAIN = 0,
- OS_ARENA_MAIN_SUBPRIV = 1,
- OS_ARENA_MAINEX = 2,
- OS_ARENA_ITCM = 3,
- OS_ARENA_DTCM = 4,
- OS_ARENA_SHARED = 5,
- OS_ARENA_WRAM_MAIN = 6,
- OS_ARENA_WRAM_SUB = 7,
- OS_ARENA_WRAM_SUBPRIV = 8,
- OS_ARENA_MAX = 9
-} OSArenaId;
-
-typedef struct {
- void* lo[OS_ARENA_MAX];
- void* hi[OS_ARENA_MAX];
- u16 initialized;
- u8 padding[2];
-} OSArenaInfo;
+#include "nitro/OS_arena_shared.h"
void OS_InitArena(void);
void OS_InitArenaEx(void);
@@ -34,4 +15,4 @@ void OS_SetArenaLo(OSArenaId id, void *newLo);
void* OS_AllocFromArenaLo(OSArenaId id, u32 size, u32 align);
void* OS_AllocFromArenaHi(OSArenaId id, u32 size, u32 align);
-#endif //POKEDIAMOND_OS_ARENA_H
+#endif //POKEDIAMOND_ARM9_OS_ARENA_H
diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h
index 6c83bce8..885deff0 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/include/consts.h
@@ -38,7 +38,6 @@
#define OSi_TCM_REGION_BASE_MASK 0xfffff000
-#define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF)
#define OSi_TRUNC(n, a) (((u32) (n)) & ~((a) - 1))
#define OSi_ROUND(n, a) (((u32) (n) + (a) - 1) & ~((a) - 1))
diff --git a/arm9/lib/include/mmap.h b/arm9/lib/include/mmap.h
index 8f9d8dcd..d0e73aec 100644
--- a/arm9/lib/include/mmap.h
+++ b/arm9/lib/include/mmap.h
@@ -1,15 +1,12 @@
-#ifndef NITRO_MMAP_H
-#define NITRO_MMAP_H
+#ifndef POKEDIAMOND_ARM9_MMAP_H
+#define POKEDIAMOND_ARM9_MMAP_H
#include "nitro/types.h"
+#include "nitro/mmap_shared.h"
extern u32 SDK_AUTOLOAD_DTCM_START[];
-#define HW_MAIN_MEM 0x02000000
-#define HW_MAIN_MEM_SIZE 0x00400000
#define HW_MAIN_MEM_EX_SIZE 0x00800000
-#define HW_MAIN_MEM_MAIN_SIZE 0x003E0000
-#define HW_MAIN_MEM_SHARED_SIZE 0x00001000
#define HW_MAIN_MEM_DEBUGGER_OFFSET 0x00700000
#define HW_ITCM_IMAGE 0x01000000
@@ -31,11 +28,9 @@ extern u32 SDK_AUTOLOAD_DTCM_START[];
#define HW_RESET_PARAMETER_BUF (HW_MAIN_MEM + 0x007ffc20)
#define HW_ROM_BASE_OFFSET_BUF (HW_MAIN_MEM + 0x007ffc2c)
#define HW_WM_BOOT_BUF (HW_MAIN_MEM + 0x007ffc40)
-#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0) // Arena data structure
#define HW_ROM_HEADER_BUF (HW_MAIN_MEM + 0x007ffe00) // ROM registration area data buffer
#define HW_RED_RESERVED (HW_MAIN_MEM + 0x007ff800) // Some kind of reserved data for shared memory
#define HW_MAIN_MEM_SYSTEM (HW_MAIN_MEM + 0x007ffc00)
-#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE)
#define HW_MAIN_MEM_EX_END (HW_MAIN_MEM + HW_MAIN_MEM_EX_SIZE)
#define HW_MAIN_MEM_SHARED (HW_MAIN_MEM_EX_END - HW_MAIN_MEM_SHARED_SIZE)
#define HW_DTCM_SVC_STACK_END (HW_DTCM + 0x00003fc0)
@@ -115,4 +110,4 @@ typedef struct {
#define OS_GetSystemWork() ((OSSystemWork *)HW_MAIN_MEM_SYSTEM)
-#endif \ No newline at end of file
+#endif //POKEDIAMOND_ARM9_MMAP_H \ No newline at end of file
diff --git a/include/nitro/OS_arena_shared.h b/include/nitro/OS_arena_shared.h
new file mode 100644
index 00000000..df6d526a
--- /dev/null
+++ b/include/nitro/OS_arena_shared.h
@@ -0,0 +1,38 @@
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
+
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include OS_arena.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_OS_ARENA_SHARED_H
+#define POKEDIAMOND_OS_ARENA_SHARED_H
+
+#include "nitro/types.h"
+
+typedef enum {
+ OS_ARENA_MAIN = 0,
+ OS_ARENA_MAIN_SUBPRIV = 1,
+ OS_ARENA_MAINEX = 2,
+ OS_ARENA_ITCM = 3,
+ OS_ARENA_DTCM = 4,
+ OS_ARENA_SHARED = 5,
+ OS_ARENA_WRAM_MAIN = 6,
+ OS_ARENA_WRAM_SUB = 7,
+ OS_ARENA_WRAM_SUBPRIV = 8,
+ OS_ARENA_MAX = 9
+} OSArenaId;
+
+typedef struct {
+ void* lo[OS_ARENA_MAX];
+ void* hi[OS_ARENA_MAX];
+ u16 initialized;
+ u8 padding[2];
+} OSArenaInfo;
+
+#endif //POKEDIAMOND_OS_ARENA_SHARED_H
diff --git a/include/nitro/consts_shared.h b/include/nitro/consts_shared.h
index e515831e..a7fd9dcf 100644
--- a/include/nitro/consts_shared.h
+++ b/include/nitro/consts_shared.h
@@ -14,6 +14,7 @@
#define POKEDIAMOND_CONSTS_SHARED_H
#include "nitro/types.h"
+#include "nitro/mmap_shared.h"
//Shared Consts
@@ -23,4 +24,6 @@
#define HW_PSR_DISABLE_IRQ 0x80 // Disable IRQ
#define HW_PSR_DISABLE_IRQ_FIQ 0xc0 // Disable FIQ and IRQ
+#define OSi_GetArenaInfo() (*(OSArenaInfo*)HW_ARENA_INFO_BUF)
+
#endif //POKEDIAMOND_CONSTS_SHARED_H
diff --git a/include/nitro/mmap_shared.h b/include/nitro/mmap_shared.h
new file mode 100644
index 00000000..ad97c912
--- /dev/null
+++ b/include/nitro/mmap_shared.h
@@ -0,0 +1,24 @@
+/*
+ * NOTE:
+ * This file is shared between ARM9 and ARM7
+ * DO NOT PUT PROC SPECIFIC CODE IN HERE
+ * Thank You!
+ */
+
+/*
+ * DO NOT INCLUDE THIS FILE DIRECTLY
+ * Include mmap.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_MMAP_SHARED_H
+#define POKEDIAMOND_MMAP_SHARED_H
+
+#define HW_MAIN_MEM 0x02000000
+#define HW_MAIN_MEM_SIZE 0x00400000
+#define HW_MAIN_MEM_MAIN_SIZE 0x003E0000
+#define HW_MAIN_MEM_SHARED_SIZE 0x00001000
+
+#define HW_ARENA_INFO_BUF (HW_MAIN_MEM + 0x007ffda0)
+#define HW_MAIN_MEM_MAIN_END (HW_MAIN_MEM + HW_MAIN_MEM_MAIN_SIZE)
+
+#endif //POKEDIAMOND_MMAP_SHARED_H