summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Panzlaff <michael.panzlaff@fau.de>2021-06-24 15:55:08 +0200
committerMichael Panzlaff <michael.panzlaff@fau.de>2021-06-24 15:57:31 +0200
commit9ff579dac825bf4afa7c9fb4ea3e5a1ffb2d996d (patch)
tree6713a9ca059fdd4f97d113297ae1b451b50da2fd
parentac7337cc6410f96eb743c46f30c195b0da805ae5 (diff)
cleanup header includes and orders
Not complete, but a good start.
-rw-r--r--arm7/lib/include/SND_alarm.h12
-rw-r--r--arm7/lib/include/SND_exChannel.h8
-rw-r--r--arm7/lib/include/SND_work.h4
-rw-r--r--arm9/lib/include/CARD_rom.h1
-rw-r--r--arm9/lib/include/GX_g3x.h2
-rw-r--r--arm9/lib/include/MI_exMemory.h2
-rw-r--r--arm9/lib/include/OS_entropy.h3
-rw-r--r--arm9/lib/include/OS_interrupt.h2
-rw-r--r--arm9/lib/include/OS_irqHandler.h2
-rw-r--r--arm9/lib/include/OS_irqTable.h2
-rw-r--r--arm9/lib/include/OS_reset.h3
-rw-r--r--arm9/lib/include/PAD_pad.h2
-rw-r--r--arm9/lib/include/SND_alarm.h13
-rw-r--r--arm9/lib/include/SND_interface.h1
-rw-r--r--arm9/lib/include/SND_main.h163
-rw-r--r--arm9/lib/include/SND_work.h26
-rw-r--r--arm9/lib/include/consts.h3
-rw-r--r--arm9/lib/include/fx.h2
-rw-r--r--arm9/lib/include/systemWork.h1
-rw-r--r--arm9/lib/src/CARD_common.c1
-rw-r--r--arm9/lib/src/CARD_pullOut.c1
-rw-r--r--arm9/lib/src/CP_context.c2
-rw-r--r--arm9/lib/src/CTRDG_common.c1
-rw-r--r--arm9/lib/src/FX_cp.c4
-rw-r--r--arm9/lib/src/FX_vec.c4
-rw-r--r--arm9/lib/src/GX.c5
-rw-r--r--arm9/lib/src/MI_wram.c5
-rw-r--r--arm9/lib/src/OS_arena.c5
-rw-r--r--arm9/lib/src/OS_entropy.c7
-rw-r--r--arm9/lib/src/OS_exception.c4
-rw-r--r--arm9/lib/src/OS_interrupt.c6
-rw-r--r--arm9/lib/src/OS_ownerInfo.c4
-rw-r--r--arm9/lib/src/OS_reset.c3
-rw-r--r--arm9/lib/src/OS_spinLock.c3
-rw-r--r--arm9/lib/src/OS_thread.c3
-rw-r--r--arm9/lib/src/SND_command.c3
-rw-r--r--arm9/lib/src/custom_allocator.c4
-rw-r--r--arm9/modules/21/src/mod21_02254A6C.c4
-rw-r--r--arm9/src/save.c1
-rw-r--r--arm9/src/timer3.c6
-rw-r--r--include/global.h2
-rw-r--r--include/heap.h1
-rw-r--r--include/nitro/OS_alarm_shared.h1
-rw-r--r--include/nitro/OS_thread_shared.h3
-rw-r--r--include/nitro/SND_alarm_shared.h30
-rw-r--r--include/nitro/SND_main_shared.h176
-rw-r--r--include/nitro/SND_work_shared.h46
47 files changed, 356 insertions, 231 deletions
diff --git a/arm7/lib/include/SND_alarm.h b/arm7/lib/include/SND_alarm.h
new file mode 100644
index 00000000..195b90bb
--- /dev/null
+++ b/arm7/lib/include/SND_alarm.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_SND_ALARM_H
+#define GUARD_SND_ALARM_H
+
+#include "global.h"
+#include "SND_alarm_shared.h"
+
+void SND_StopAlarm(u32 idx);
+void SND_StartAlarm(u32 idx);
+void SND_SetupAlarm();
+void SND_AlarmInit();
+
+#endif //GUARD_SND_ALARM_H \ No newline at end of file
diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h
new file mode 100644
index 00000000..05fbe3d7
--- /dev/null
+++ b/arm7/lib/include/SND_exChannel.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_SND_EXCHANNEL_H
+#define GUARD_SND_EXCHANNEL_H
+
+#include "global.h"
+
+bool SND_IsChannelActive(u32 idx);
+
+#endif //GUARD_SND_EXCHANNEL_H \ No newline at end of file
diff --git a/arm7/lib/include/SND_work.h b/arm7/lib/include/SND_work.h
new file mode 100644
index 00000000..9b834c6c
--- /dev/null
+++ b/arm7/lib/include/SND_work.h
@@ -0,0 +1,4 @@
+#ifndef GUARD_SND_WORK_H
+#define GUARD_SND_WORK_H
+
+#endif //GUARD_SND_WORK_H \ No newline at end of file
diff --git a/arm9/lib/include/CARD_rom.h b/arm9/lib/include/CARD_rom.h
index e72d653f..b6fca60b 100644
--- a/arm9/lib/include/CARD_rom.h
+++ b/arm9/lib/include/CARD_rom.h
@@ -6,6 +6,7 @@
#include "MI_dma.h"
#include "CARD_common.h"
#include "OS_tcm.h"
+#include "mmap.h"
#define CARD_ROM_PAGE_SIZE 512
diff --git a/arm9/lib/include/GX_g3x.h b/arm9/lib/include/GX_g3x.h
index a0512b28..aa65a190 100644
--- a/arm9/lib/include/GX_g3x.h
+++ b/arm9/lib/include/GX_g3x.h
@@ -3,6 +3,8 @@
#include "fx.h"
+#include "registers.h"
+
void GXi_NopClearFifo128_(void *reg);
void G3X_Init();
void G3X_ResetMtxStack();
diff --git a/arm9/lib/include/MI_exMemory.h b/arm9/lib/include/MI_exMemory.h
index aa90a73c..5e21d7e6 100644
--- a/arm9/lib/include/MI_exMemory.h
+++ b/arm9/lib/include/MI_exMemory.h
@@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_MI_EXMEMORY_H
#define POKEDIAMOND_MI_EXMEMORY_H
-#include "consts.h"
+#include "registers.h"
typedef enum {
MI_PROCESSOR_ARM9 = 0,
diff --git a/arm9/lib/include/OS_entropy.h b/arm9/lib/include/OS_entropy.h
index b0f2781a..7c39aadd 100644
--- a/arm9/lib/include/OS_entropy.h
+++ b/arm9/lib/include/OS_entropy.h
@@ -5,8 +5,7 @@
#ifndef POKEDIAMOND_OS_ENTROPY_H
#define POKEDIAMOND_OS_ENTROPY_H
-#include "consts.h"
-#include "userInfo.h"
+#include "registers.h"
void OS_GetLowEntropyData(u32 * arr);
diff --git a/arm9/lib/include/OS_interrupt.h b/arm9/lib/include/OS_interrupt.h
index 130ad2de..19dd0da2 100644
--- a/arm9/lib/include/OS_interrupt.h
+++ b/arm9/lib/include/OS_interrupt.h
@@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_ARM9_OS_INTERRUPT_H
#define POKEDIAMOND_ARM9_OS_INTERRUPT_H
-#include "consts.h"
+#include "registers.h"
#include "nitro/OS_interrupt_shared.h"
#define REG_OS_IME_IME_SHIFT 0
diff --git a/arm9/lib/include/OS_irqHandler.h b/arm9/lib/include/OS_irqHandler.h
index ea12a0ad..e845298b 100644
--- a/arm9/lib/include/OS_irqHandler.h
+++ b/arm9/lib/include/OS_irqHandler.h
@@ -1,8 +1,8 @@
#ifndef POKEDIAMOND_OS_IRQHANDLER_H
#define POKEDIAMOND_OS_IRQHANDLER_H
-#include "consts.h"
#include "OS_interrupt.h"
+#include "mmap.h"
static inline void OS_ClearIrqCheckFlag(OSIrqMask intr)
{
diff --git a/arm9/lib/include/OS_irqTable.h b/arm9/lib/include/OS_irqTable.h
index 10165a11..ba8b45a8 100644
--- a/arm9/lib/include/OS_irqTable.h
+++ b/arm9/lib/include/OS_irqTable.h
@@ -1,7 +1,7 @@
#ifndef POKEDIAMOND_ARM9_OS_IRQTABLE_H
#define POKEDIAMOND_ARM9_OS_IRQTABLE_H
-#include "consts.h"
+#include "mmap.h"
#include "OS_interrupt.h"
void OS_IrqDummy(void);
diff --git a/arm9/lib/include/OS_reset.h b/arm9/lib/include/OS_reset.h
index b5d43bad..756de9fb 100644
--- a/arm9/lib/include/OS_reset.h
+++ b/arm9/lib/include/OS_reset.h
@@ -1,9 +1,8 @@
#ifndef POKEDIAMOND_ARM9_OS_RESET_H
#define POKEDIAMOND_ARM9_OS_RESET_H
-#include "consts.h"
#include "nitro/OS_reset_shared.h"
-#include "PXI_fifo.h"
+#include "mmap.h"
void OS_InitReset(void);
void OS_ResetSystem(u32 parameter);
diff --git a/arm9/lib/include/PAD_pad.h b/arm9/lib/include/PAD_pad.h
index a4b5d570..f3de4198 100644
--- a/arm9/lib/include/PAD_pad.h
+++ b/arm9/lib/include/PAD_pad.h
@@ -1,7 +1,7 @@
#ifndef NITRO_PAD_PAD_H_
#define NITRO_PAD_PAD_H_
-#include "consts.h"
+#include "registers.h"
//================================================================================
// BUTTONS
diff --git a/arm9/lib/include/SND_alarm.h b/arm9/lib/include/SND_alarm.h
index cf5db862..07b77f45 100644
--- a/arm9/lib/include/SND_alarm.h
+++ b/arm9/lib/include/SND_alarm.h
@@ -2,24 +2,13 @@
#define GUARD_SND_ALARM_H
#include "global.h"
-#include "OS_alarm.h"
+#include "nitro/SND_alarm_shared.h"
typedef void (*SNDAlarmCallback)(void *);
-struct SNDAlarm {
- u8 enable; // 0x00
- u8 id; // 0x01
- u16 unk_2; // 0x02
- OSTick tick; // 0x04
- OSTick period; // 0x0C
- OSAlarm alarm; // 0x14
-}; // size = 0x40
-
void SND_AlarmInit(void);
void SNDi_IncAlarmId(u32 idx);
u8 SNDi_SetAlarmHandler(u32 idx, SNDAlarmCallback cb, void *data);
void SNDi_CallAlarmHandler(s32 idx);
-#define SND_ALARM_COUNT 8
-
#endif
diff --git a/arm9/lib/include/SND_interface.h b/arm9/lib/include/SND_interface.h
index bd2c3869..d0898f85 100644
--- a/arm9/lib/include/SND_interface.h
+++ b/arm9/lib/include/SND_interface.h
@@ -4,6 +4,7 @@
#include "global.h"
#include "SND_bank.h"
#include "SND_work.h"
+#include "SND_alarm.h"
void SND_StartSeq(s32 player, const void *seqBasePtr, u32 seqOffset, struct SNDBankData *bankData);
void SND_StopSeq(s32 player);
diff --git a/arm9/lib/include/SND_main.h b/arm9/lib/include/SND_main.h
index e35f1ee1..8fa9364e 100644
--- a/arm9/lib/include/SND_main.h
+++ b/arm9/lib/include/SND_main.h
@@ -3,6 +3,8 @@
#include "global.h"
+#include "nitro/SND_main_shared.h"
+
void SNDi_UnlockMutex(void);
void SNDi_LockMutex(void);
void SND_Init(void);
@@ -21,165 +23,4 @@ typedef struct SNDBinaryBlockHeader {
u32 size; // 0x4
} SNDBinaryBlockHeader; // size = 0x8
-struct SNDWaveParam {
- u8 format; // 0x0
- u8 loopEnabled; // 0x1
- u16 samplerate; // 0x2
- u16 timer; // 0x4
- u16 loopStart; // 0x6
- u32 loopLength; // 0x8
-}; // size = 0xC
-
-struct SNDLfoParam {
- u8 target; // 0x0
- u8 speed; // 0x1
- u8 depth; // 0x2
- u8 range; // 0x3
- u16 delay; // 0x4
-}; // size = 0x6
-
-struct SNDLfo {
- struct SNDLfoParam param; // 0x0
- u16 delayCounter; // 0x6
- u16 counter; // 0x8
-}; // size = 0xA
-
-struct SNDExChannel {
- u8 id; // 0x00
- u8 type; // 0x01
- u8 envStatus; // 0x02
-
- struct {
- u8 active : 1;
- u8 start : 1;
- u8 autoSweep : 1;
- u8 syncFlag : 5;
- } flags; // 0x03
-
- u8 panRange; // 0x04
- u8 rootMidiKey; // 0x05
- s16 userDecay2; // 0x06
-
- u8 midiKey; // 0x08
- u8 velocity; // 0x09
- s8 initPan; // 0x0A
- s8 userPan; // 0x0B
-
- s16 userDecay; // 0x0C
- s16 userPitch; // 0x0E
-
- s32 envAttenuation; // 0x10
- s32 sweepCounter; // 0x14
- s32 sweepLength; // 0x18
-
- u8 envAttack; // 0x1C
- u8 envSustain; // 0x1D
- u16 envDecay; // 0x1E
- u16 envRelease; // 0x20
- u8 priority; // 0x22
- u8 pan; // 0x23
- u16 volume; // 0x24
- u16 timer; // 0x26
-
- struct SNDLfo lfo; // 0x28
-
- s16 sweepPitch; // 0x32
-
- s32 length; // 0x34
-
- struct SNDWaveParam waveParam; // 0x38
-
- union {
- const void *waveDataPtr;
- u32 dutyCycle;
- }; // 0x44
-
- void (*callback)(struct SNDExChannel *chn, u32 status, void *userData); // 0x48
- void *callbackUserData; // 0x4C
-
- struct SNDExChannel *channelLLNext; // 0x50
-}; // size = 0x54
-
-#define SND_TRACK_COUNT_PER_PLAYER 16
-#define SND_INVALID_TRACK_INDEX 0xFF
-
-struct SNDPlayer {
- struct {
- u8 active : 1;
- u8 prepared : 1;
- u8 paused : 1;
- } flags; // 0x0
-
- u8 playerId; // 0x1
- u8 unk_2[2]; // 0x2
-
- u8 prio; // 0x4
- u8 volume; // 0x5
- s16 extFader; // 0x6
-
- u8 tracks[SND_TRACK_COUNT_PER_PLAYER]; // 0x8
-
- u16 tempo; // 0x18
- u16 tempoRatio; // 0x1A
- u16 tempoCounter; // 0x1C
- u8 unk_1E[2]; // 0x1E
-
- struct SNDBankData *bank; // 0x20
-}; // size = 0x24
-
-#define SND_TRACK_MAX_CALL 3
-
-struct SNDBankData;
-
-struct SNDTrack {
- struct {
- u8 active : 1;
- u8 noteWait : 1;
- u8 muted : 1;
- u8 tie : 1;
- u8 noteFinishWait : 1;
- u8 portamento : 1;
- u8 cmp : 1; // ???
- u8 channelMask : 1;
- } flags; // 0x00
-
- u8 panRange; // 0x01
- u16 program; // 0x02
-
- u8 volume; // 0x04
- u8 expression; // 0x05
- s8 pitchBend; // 0x06
- u8 bendRange; // 0x07
-
- s8 pan; // 0x08
- s8 extPan; // 0x09
- s16 extFader; // 0x0A
- s16 extPitch; // 0x0C
- u8 envAttack; // 0x0E
- u8 envDecay; // 0x0F
- u8 envSustain; // 0x10
- u8 envRelease; // 0x11
- u8 priority; // 0x12
- s8 transpose; // 0x13
-
- u8 portamentoKey; // 0x14
- u8 portamentoTime; // 0x15
- s16 sweepPitch; // 0x16
-
- struct SNDLfoParam mod; // 0x18
- u16 channelMask; // 0x1E
-
- s32 wait; // 0x20
-
- const u8 *trackDataStart; // 0x24
- const u8 *trackDataPos; // 0x28
- const u8 *posCallStack[SND_TRACK_MAX_CALL]; // 0x34
- u8 loopCount[SND_TRACK_MAX_CALL]; // 0x38
- u8 callStackDepth; // 0x3B
-
- struct SNDExChannel *channelLLHead; // 0x3C
-}; // size = 0x40
-
-
-
#endif // GUARD_SND_MAIN_H
diff --git a/arm9/lib/include/SND_work.h b/arm9/lib/include/SND_work.h
index dec2bd71..a8a3d62b 100644
--- a/arm9/lib/include/SND_work.h
+++ b/arm9/lib/include/SND_work.h
@@ -4,31 +4,7 @@
#include "global.h"
#include "SND_main.h"
-#include "SND_alarm.h"
-
-#define SND_PLAYER_COUNT 16
-#define SND_CHANNEL_COUNT 16
-#define SND_TRACK_COUNT 32
-
-struct SNDWork {
- struct SNDExChannel channels[SND_CHANNEL_COUNT]; // 0x00
- struct SNDPlayer players[SND_PLAYER_COUNT]; // 0x540
- struct SNDTrack tracks[SND_TRACK_COUNT]; // 0x780
- struct SNDAlarm alarms[SND_ALARM_COUNT]; // 0xF80
-}; // size = 0x1180
-
-struct SNDSharedWork {
- u32 finishedCommandTag; // 0x0
- u32 playerStatus; // 0x4
- u16 channelStatus; // 0x8
- u16 captureStatus; // 0xA
- u8 unk_C[0x14]; // 0xC
- struct {
- s16 localVars[16]; // local 0x0
- u32 tickCounter; // local 0x20
- } players[SND_PLAYER_COUNT]; // 0x20
- s16 globalVars[16]; // 0x260
-}; // size = 0x280
+#include "nitro/SND_work_shared.h"
struct SNDDriverInfo {
struct SNDWork work; // 0x0000
diff --git a/arm9/lib/include/consts.h b/arm9/lib/include/consts.h
index 1ad79b93..127339ca 100644
--- a/arm9/lib/include/consts.h
+++ b/arm9/lib/include/consts.h
@@ -2,9 +2,6 @@
#define POKEDIAMOND_ARM9_CONSTS_H
#include "nitro/consts_shared.h"
-#include "mmap.h"
-#include "registers.h"
-#include "systemWork.h"
#define HW_C5_PERMIT_MASK 0xf
diff --git a/arm9/lib/include/fx.h b/arm9/lib/include/fx.h
index 38506194..bdf49037 100644
--- a/arm9/lib/include/fx.h
+++ b/arm9/lib/include/fx.h
@@ -1,6 +1,8 @@
#ifndef GUARD_FX_H
#define GUARD_FX_H
+#include "nitro/types.h"
+
typedef s16 fx16;
typedef s32 fx32;
typedef s64 fx64;
diff --git a/arm9/lib/include/systemWork.h b/arm9/lib/include/systemWork.h
index b7660985..1e3ba46b 100644
--- a/arm9/lib/include/systemWork.h
+++ b/arm9/lib/include/systemWork.h
@@ -1,7 +1,6 @@
#ifndef POKEDIAMOND_ARM9_SYSTEMWORK_H
#define POKEDIAMOND_ARM9_SYSTEMWORK_H
-#include "OS_context.h"
#include "nitro/OS_systemWork_shared.h"
#endif //POKEDIAMOND_ARM9_SYSTEMWORK_H
diff --git a/arm9/lib/src/CARD_common.c b/arm9/lib/src/CARD_common.c
index f820027e..fd66c7ce 100644
--- a/arm9/lib/src/CARD_common.c
+++ b/arm9/lib/src/CARD_common.c
@@ -8,6 +8,7 @@
#include "OS_cache.h"
#include "MB_mb.h"
#include "PXI_fifo.h"
+#include "mmap.h"
CARDiCommon cardi_common ALIGN(32);
static CARDiCommandArg cardi_arg ALIGN(32);
diff --git a/arm9/lib/src/CARD_pullOut.c b/arm9/lib/src/CARD_pullOut.c
index 3456df48..d5c7737f 100644
--- a/arm9/lib/src/CARD_pullOut.c
+++ b/arm9/lib/src/CARD_pullOut.c
@@ -8,6 +8,7 @@
#include "PAD_pad.h"
#include "SPI_pm.h"
#include "syscall.h"
+#include "mmap.h"
static CARDPulledOutCallback CARD_UserCallback;
static BOOL CARDi_IsPulledOutFlag = FALSE;
diff --git a/arm9/lib/src/CP_context.c b/arm9/lib/src/CP_context.c
index 4e928c06..6567f516 100644
--- a/arm9/lib/src/CP_context.c
+++ b/arm9/lib/src/CP_context.c
@@ -1,6 +1,6 @@
#include "CP_context.h"
#include "function_target.h"
-#include "consts.h"
+#include "registers.h"
ARM_FUNC asm void CP_SaveContext(register CPContext *context)
{
diff --git a/arm9/lib/src/CTRDG_common.c b/arm9/lib/src/CTRDG_common.c
index 3d80cf24..df3ec0b6 100644
--- a/arm9/lib/src/CTRDG_common.c
+++ b/arm9/lib/src/CTRDG_common.c
@@ -7,6 +7,7 @@
#include "PXI_fifo.h"
#include "MI_dma.h"
#include "MI_memory.h"
+#include "mmap.h"
CTRDGWork CTRDGi_Work;
diff --git a/arm9/lib/src/FX_cp.c b/arm9/lib/src/FX_cp.c
index c8069146..0c5d4ff8 100644
--- a/arm9/lib/src/FX_cp.c
+++ b/arm9/lib/src/FX_cp.c
@@ -1,6 +1,8 @@
-#include "global.h"
#include "fx.h"
+#include "global.h"
+#include "registers.h"
+
ARM_FUNC fx32 FX_Div(fx32 numerator, fx32 denominator){
FX_DivAsync(numerator, denominator);
diff --git a/arm9/lib/src/FX_vec.c b/arm9/lib/src/FX_vec.c
index 39dd3076..005872ac 100644
--- a/arm9/lib/src/FX_vec.c
+++ b/arm9/lib/src/FX_vec.c
@@ -1,6 +1,8 @@
-#include "global.h"
#include "fx.h"
+#include "global.h"
+#include "registers.h"
+
ARM_FUNC void VEC_Add(struct Vecx32 *a, struct Vecx32 *b, struct Vecx32 *dst){
dst->x = a->x + b->x;
dst->y = a->y + b->y;
diff --git a/arm9/lib/src/GX.c b/arm9/lib/src/GX.c
index 688e41b7..f47c0131 100644
--- a/arm9/lib/src/GX.c
+++ b/arm9/lib/src/GX.c
@@ -1,6 +1,9 @@
-#include "global.h"
#include "gx.h"
+#include "global.h"
+#include "OS_spinLock.h"
+#include "OS_terminate_proc.h"
+
u32 GXi_DmaId = 3;
vu16 GXi_VRamLockId = 0;
diff --git a/arm9/lib/src/MI_wram.c b/arm9/lib/src/MI_wram.c
index a65bbb6f..c1433f07 100644
--- a/arm9/lib/src/MI_wram.c
+++ b/arm9/lib/src/MI_wram.c
@@ -1,7 +1,8 @@
-#include "function_target.h"
-#include "consts.h"
#include "MI_wram.h"
+#include "global.h"
+#include "registers.h"
+
ARM_FUNC void MI_SetWramBank(MIWram cnt)
{
reg_GX_VRAMCNT_WRAM = (u8)cnt;
diff --git a/arm9/lib/src/OS_arena.c b/arm9/lib/src/OS_arena.c
index df9c2fd8..de7cb9fe 100644
--- a/arm9/lib/src/OS_arena.c
+++ b/arm9/lib/src/OS_arena.c
@@ -1,8 +1,9 @@
-#include "function_target.h"
-#include "consts.h"
#include "OS_arena.h"
+
+#include "global.h"
#include "OS_protectionRegion.h"
#include "OS_emulator.h"
+#include "mmap.h"
static BOOL OSi_Initialized = FALSE;
static BOOL OSi_MainExArenaEnabled = FALSE;
diff --git a/arm9/lib/src/OS_entropy.c b/arm9/lib/src/OS_entropy.c
index b33781cc..5d466f82 100644
--- a/arm9/lib/src/OS_entropy.c
+++ b/arm9/lib/src/OS_entropy.c
@@ -2,10 +2,13 @@
// Created by red031000 on 2020-05-03.
//
-#include "function_target.h"
-#include "consts.h"
#include "OS_entropy.h"
+#include "global.h"
+#include "registers.h"
+#include "systemWork.h"
+#include "userInfo.h"
+
ARM_FUNC void OS_GetLowEntropyData(u32 * arr)
{
const OSSystemWork* work = OS_GetSystemWork();
diff --git a/arm9/lib/src/OS_exception.c b/arm9/lib/src/OS_exception.c
index 3aaaa2f2..63cd6d58 100644
--- a/arm9/lib/src/OS_exception.c
+++ b/arm9/lib/src/OS_exception.c
@@ -1,6 +1,8 @@
#include "OS_exception.h"
-#include "function_target.h"
+
+#include "global.h"
#include "OS_protectionUnit.h"
+#include "mmap.h"
static OSiExContext OSi_ExContext;
diff --git a/arm9/lib/src/OS_interrupt.c b/arm9/lib/src/OS_interrupt.c
index c7c0704d..699c7929 100644
--- a/arm9/lib/src/OS_interrupt.c
+++ b/arm9/lib/src/OS_interrupt.c
@@ -1,6 +1,8 @@
-#include "consts.h"
-#include "function_target.h"
#include "OS_interrupt.h"
+
+#include "global.h"
+#include "registers.h"
+#include "mmap.h"
#include "OS_thread.h"
#pragma optimize_for_size on
diff --git a/arm9/lib/src/OS_ownerInfo.c b/arm9/lib/src/OS_ownerInfo.c
index 10a638fb..6693f73f 100644
--- a/arm9/lib/src/OS_ownerInfo.c
+++ b/arm9/lib/src/OS_ownerInfo.c
@@ -1,5 +1,7 @@
-#include "function_target.h"
#include "OS_ownerInfo.h"
+
+#include "global.h"
+#include "systemWork.h"
#include "MI_memory.h"
ARM_FUNC void OS_GetMacAddress(u8 *macAddress)
diff --git a/arm9/lib/src/OS_reset.c b/arm9/lib/src/OS_reset.c
index 45d2bb13..083f2321 100644
--- a/arm9/lib/src/OS_reset.c
+++ b/arm9/lib/src/OS_reset.c
@@ -1,5 +1,6 @@
-#include "function_target.h"
#include "OS_reset.h"
+
+#include "global.h"
#include "MB_mb.h"
#include "OS_terminate_proc.h"
#include "OS_interrupt.h"
diff --git a/arm9/lib/src/OS_spinLock.c b/arm9/lib/src/OS_spinLock.c
index c0398be9..576e03ad 100644
--- a/arm9/lib/src/OS_spinLock.c
+++ b/arm9/lib/src/OS_spinLock.c
@@ -3,9 +3,10 @@
//
#include "OS_spinLock.h"
+
#include "OS_system.h"
#include "function_target.h"
-#include "consts.h"
+#include "mmap.h"
#include "MI_exMemory.h"
extern void MIi_CpuClear32(u32 param1, void * addr, u32 length); //not too sure about names
diff --git a/arm9/lib/src/OS_thread.c b/arm9/lib/src/OS_thread.c
index 35e91c22..a52b1f6d 100644
--- a/arm9/lib/src/OS_thread.c
+++ b/arm9/lib/src/OS_thread.c
@@ -6,7 +6,8 @@
#include "OS_system.h"
#include "OS_context.h"
#include "OS_terminate_proc.h"
-#include "consts.h"
+#include "systemWork.h"
+#include "mmap.h"
extern void SDK_SYS_STACKSIZE(void);
extern void SDK_IRQ_STACKSIZE(void);
diff --git a/arm9/lib/src/SND_command.c b/arm9/lib/src/SND_command.c
index 4ad80be5..044d960f 100644
--- a/arm9/lib/src/SND_command.c
+++ b/arm9/lib/src/SND_command.c
@@ -1,7 +1,10 @@
+#include "SND_alarm.h"
#include "SND_command.h"
#include "SND_work.h"
+#include "OS_emulator.h"
#include "OS_system.h"
#include "OS_cache.h"
+#include "PXI_fifo.h"
#define SND_CMD_WAIT_QUEUE_COUNT 8
diff --git a/arm9/lib/src/custom_allocator.c b/arm9/lib/src/custom_allocator.c
index 1b1375bc..283c3500 100644
--- a/arm9/lib/src/custom_allocator.c
+++ b/arm9/lib/src/custom_allocator.c
@@ -1,6 +1,8 @@
-#include "global.h"
#include "custom_allocator.h"
+#include "global.h"
+#include "OS_alloc.h"
+
static FreeFunc sDestructor;
static AllocFunc sAllocator;
diff --git a/arm9/modules/21/src/mod21_02254A6C.c b/arm9/modules/21/src/mod21_02254A6C.c
index 45b11873..681186f2 100644
--- a/arm9/modules/21/src/mod21_02254A6C.c
+++ b/arm9/modules/21/src/mod21_02254A6C.c
@@ -1,6 +1,8 @@
+#include "mod21_02254A6C.h"
+
#include "global.h"
#include "heap.h"
-#include "mod21_02254A6C.h"
+#include "registers.h"
#include "MI_memory.h"
extern void MOD20_022536F4(u32 *param0, u32 param1);
diff --git a/arm9/src/save.c b/arm9/src/save.c
index 89bd8374..7eb523f6 100644
--- a/arm9/src/save.c
+++ b/arm9/src/save.c
@@ -3,6 +3,7 @@
#include "save_block_2.h"
#include "heap.h"
#include "CARD_backup.h"
+#include "OS_spinLock.h"
#pragma thumb on
diff --git a/arm9/src/timer3.c b/arm9/src/timer3.c
index d4e8f8a1..4e7b03c7 100644
--- a/arm9/src/timer3.c
+++ b/arm9/src/timer3.c
@@ -1,5 +1,11 @@
#include "timer3.h"
+#include "OS_interrupt.h"
+#include "OS_irqTable.h"
+#include "OS_timer.h"
+#include "OS_system.h"
+#include "registers.h"
+
static BOOL timer3_needReset;
static vu64 timer3_counter;
diff --git a/include/global.h b/include/global.h
index 1853dbc3..8353ed2c 100644
--- a/include/global.h
+++ b/include/global.h
@@ -5,7 +5,7 @@
#include "MWC_string.h"
#include "function_target.h"
-#include "nitro.h"
+#include "nitro/types.h"
#include "constants/global.h"
#include "error_handling.h"
diff --git a/include/heap.h b/include/heap.h
index 36c747a7..57cd88e8 100644
--- a/include/heap.h
+++ b/include/heap.h
@@ -2,6 +2,7 @@
#define POKEDIAMOND_HEAP_H
#include "global.h"
+#include "nitro/OS_arena_shared.h"
#include "NNS_FND_expheap.h"
#include "NNS_FND_allocator.h"
diff --git a/include/nitro/OS_alarm_shared.h b/include/nitro/OS_alarm_shared.h
index fe549351..1a24f139 100644
--- a/include/nitro/OS_alarm_shared.h
+++ b/include/nitro/OS_alarm_shared.h
@@ -15,6 +15,7 @@
#include "nitro/types.h"
#include "nitro/OS_tick_shared.h"
+#include "nitro/OS_thread_shared.h"
typedef void (*OSAlarmHandler) (void *);
diff --git a/include/nitro/OS_thread_shared.h b/include/nitro/OS_thread_shared.h
index a0cce54d..0c0e7f9a 100644
--- a/include/nitro/OS_thread_shared.h
+++ b/include/nitro/OS_thread_shared.h
@@ -15,6 +15,9 @@
#include "nitro/types.h"
+/* UGLY HACK: include proc specific header for OSContext */
+#include "OS_context.h"
+
typedef struct OSiAlarm OSAlarm;
typedef struct _OSThread OSThread;
diff --git a/include/nitro/SND_alarm_shared.h b/include/nitro/SND_alarm_shared.h
new file mode 100644
index 00000000..a1e8ed9d
--- /dev/null
+++ b/include/nitro/SND_alarm_shared.h
@@ -0,0 +1,30 @@
+/*
+ * 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 SND_alarm.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_SND_ALARM_SHARED_H
+#define POKEDIAMOND_SND_ALARM_SHARED_H
+
+#include "nitro/OS_tick_shared.h"
+#include "nitro/OS_alarm_shared.h"
+
+struct SNDAlarm {
+ u8 enable; // 0x00
+ u8 id; // 0x01
+ u16 unk_2; // 0x02
+ OSTick tick; // 0x04
+ OSTick period; // 0x0C
+ OSAlarm alarm; // 0x14
+}; // size = 0x40
+
+#define SND_ALARM_COUNT 8
+
+#endif //POKEDIAMOND_SND_ALARM_SHARED_H
diff --git a/include/nitro/SND_main_shared.h b/include/nitro/SND_main_shared.h
new file mode 100644
index 00000000..d77273ed
--- /dev/null
+++ b/include/nitro/SND_main_shared.h
@@ -0,0 +1,176 @@
+/*
+ * 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 SND_main.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_SND_MAIN_SHARED_H
+#define POKEDIAMOND_SND_MAIN_SHARED_H
+
+struct SNDWaveParam {
+ u8 format; // 0x0
+ u8 loopEnabled; // 0x1
+ u16 samplerate; // 0x2
+ u16 timer; // 0x4
+ u16 loopStart; // 0x6
+ u32 loopLength; // 0x8
+}; // size = 0xC
+
+struct SNDLfoParam {
+ u8 target; // 0x0
+ u8 speed; // 0x1
+ u8 depth; // 0x2
+ u8 range; // 0x3
+ u16 delay; // 0x4
+}; // size = 0x6
+
+struct SNDLfo {
+ struct SNDLfoParam param; // 0x0
+ u16 delayCounter; // 0x6
+ u16 counter; // 0x8
+}; // size = 0xA
+
+struct SNDExChannel {
+ u8 id; // 0x00
+ u8 type; // 0x01
+ u8 envStatus; // 0x02
+
+ struct {
+ u8 active : 1;
+ u8 start : 1;
+ u8 autoSweep : 1;
+ u8 syncFlag : 5;
+ } flags; // 0x03
+
+ u8 panRange; // 0x04
+ u8 rootMidiKey; // 0x05
+ s16 userDecay2; // 0x06
+
+ u8 midiKey; // 0x08
+ u8 velocity; // 0x09
+ s8 initPan; // 0x0A
+ s8 userPan; // 0x0B
+
+ s16 userDecay; // 0x0C
+ s16 userPitch; // 0x0E
+
+ s32 envAttenuation; // 0x10
+ s32 sweepCounter; // 0x14
+ s32 sweepLength; // 0x18
+
+ u8 envAttack; // 0x1C
+ u8 envSustain; // 0x1D
+ u16 envDecay; // 0x1E
+ u16 envRelease; // 0x20
+ u8 priority; // 0x22
+ u8 pan; // 0x23
+ u16 volume; // 0x24
+ u16 timer; // 0x26
+
+ struct SNDLfo lfo; // 0x28
+
+ s16 sweepPitch; // 0x32
+
+ s32 length; // 0x34
+
+ struct SNDWaveParam waveParam; // 0x38
+
+ union {
+ const void *waveDataPtr;
+ u32 dutyCycle;
+ }; // 0x44
+
+ void (*callback)(struct SNDExChannel *chn, u32 status, void *userData); // 0x48
+ void *callbackUserData; // 0x4C
+
+ struct SNDExChannel *channelLLNext; // 0x50
+}; // size = 0x54
+
+#define SND_TRACK_COUNT_PER_PLAYER 16
+#define SND_INVALID_TRACK_INDEX 0xFF
+
+struct SNDBankData;
+
+struct SNDPlayer {
+ struct {
+ u8 active : 1;
+ u8 prepared : 1;
+ u8 paused : 1;
+ } flags; // 0x0
+
+ u8 playerId; // 0x1
+ u8 unk_2[2]; // 0x2
+
+ u8 prio; // 0x4
+ u8 volume; // 0x5
+ s16 extFader; // 0x6
+
+ u8 tracks[SND_TRACK_COUNT_PER_PLAYER]; // 0x8
+
+ u16 tempo; // 0x18
+ u16 tempoRatio; // 0x1A
+ u16 tempoCounter; // 0x1C
+ u8 unk_1E[2]; // 0x1E
+
+ struct SNDBankData *bank; // 0x20
+}; // size = 0x24
+
+#define SND_TRACK_MAX_CALL 3
+
+struct SNDTrack {
+ struct {
+ u8 active : 1;
+ u8 noteWait : 1;
+ u8 muted : 1;
+ u8 tie : 1;
+ u8 noteFinishWait : 1;
+ u8 portamento : 1;
+ u8 cmp : 1; // ???
+ u8 channelMask : 1;
+ } flags; // 0x00
+
+ u8 panRange; // 0x01
+ u16 program; // 0x02
+
+ u8 volume; // 0x04
+ u8 expression; // 0x05
+ s8 pitchBend; // 0x06
+ u8 bendRange; // 0x07
+
+ s8 pan; // 0x08
+ s8 extPan; // 0x09
+ s16 extFader; // 0x0A
+ s16 extPitch; // 0x0C
+ u8 envAttack; // 0x0E
+ u8 envDecay; // 0x0F
+ u8 envSustain; // 0x10
+ u8 envRelease; // 0x11
+ u8 priority; // 0x12
+ s8 transpose; // 0x13
+
+ u8 portamentoKey; // 0x14
+ u8 portamentoTime; // 0x15
+ s16 sweepPitch; // 0x16
+
+ struct SNDLfoParam mod; // 0x18
+ u16 channelMask; // 0x1E
+
+ s32 wait; // 0x20
+
+ const u8 *trackDataStart; // 0x24
+ const u8 *trackDataPos; // 0x28
+ const u8 *posCallStack[SND_TRACK_MAX_CALL]; // 0x34
+ u8 loopCount[SND_TRACK_MAX_CALL]; // 0x38
+ u8 callStackDepth; // 0x3B
+
+ struct SNDExChannel *channelLLHead; // 0x3C
+}; // size = 0x40
+
+ #endif //POKEDIAMOND_SND_MAIN_SHARED_H
+ \ No newline at end of file
diff --git a/include/nitro/SND_work_shared.h b/include/nitro/SND_work_shared.h
new file mode 100644
index 00000000..0de3981e
--- /dev/null
+++ b/include/nitro/SND_work_shared.h
@@ -0,0 +1,46 @@
+/*
+ * 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 SND_work.h from the specific proc's lib
+ */
+
+#ifndef POKEDIAMOND_SND_WORK_SHARED_H
+#define POKEDIAMOND_SND_WORK_SHARED_H
+
+#include "nitro/SND_alarm_shared.h"
+#include "nitro/SND_main_shared.h"
+
+#define SND_PLAYER_COUNT 16
+#define SND_CHANNEL_COUNT 16
+#define SND_TRACK_COUNT 32
+
+struct SNDWork {
+ struct SNDExChannel channels[SND_CHANNEL_COUNT]; // 0x00
+ struct SNDPlayer players[SND_PLAYER_COUNT]; // 0x540
+ struct SNDTrack tracks[SND_TRACK_COUNT]; // 0x780
+ struct SNDAlarm alarms[SND_ALARM_COUNT]; // 0xF80
+}; // size = 0x1180
+
+struct SNDSharedWork {
+ u32 finishedCommandTag; // 0x0
+ u32 playerStatus; // 0x4
+ u16 channelStatus; // 0x8
+ u16 captureStatus; // 0xA
+ u8 unk_C[0x14]; // 0xC
+ struct {
+ s16 localVars[16]; // local 0x0
+ u32 tickCounter; // local 0x20
+ } players[SND_PLAYER_COUNT]; // 0x20
+ s16 globalVars[16]; // 0x260
+}; // size = 0x280
+
+extern struct SNDWork SNDi_Work;
+extern struct SNDSharedWork *SNDi_SharedWork;
+
+ #endif //POKEDIAMOND_SND_WORK_SHARED_H