diff options
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 |