summaryrefslogtreecommitdiff
path: root/arm7/lib/include
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/lib/include')
-rw-r--r--arm7/lib/include/MI_memory.h5
-rw-r--r--arm7/lib/include/OS_alarm.h1
-rw-r--r--arm7/lib/include/PM.h9
-rw-r--r--arm7/lib/include/PXI_fifo.h3
-rw-r--r--arm7/lib/include/SND_alarm.h12
-rw-r--r--arm7/lib/include/SND_bank.h17
-rw-r--r--arm7/lib/include/SND_capture.h10
-rw-r--r--arm7/lib/include/SND_channel.h32
-rw-r--r--arm7/lib/include/SND_command.h9
-rw-r--r--arm7/lib/include/SND_exChannel.h41
-rw-r--r--arm7/lib/include/SND_global.h15
-rw-r--r--arm7/lib/include/SND_lfo.h8
-rw-r--r--arm7/lib/include/SND_main.h16
-rw-r--r--arm7/lib/include/SND_seq.h24
-rw-r--r--arm7/lib/include/SND_util.h16
-rw-r--r--arm7/lib/include/SND_work.h11
-rw-r--r--arm7/lib/include/registers.h23
-rw-r--r--arm7/lib/include/syscall.h4
18 files changed, 246 insertions, 10 deletions
diff --git a/arm7/lib/include/MI_memory.h b/arm7/lib/include/MI_memory.h
index 1e0de0b9..6fa1d0ec 100644
--- a/arm7/lib/include/MI_memory.h
+++ b/arm7/lib/include/MI_memory.h
@@ -22,4 +22,9 @@ static inline void MI_CpuClear32(void *dest, u32 size)
MI_CpuFill32(dest, 0, size);
}
+static inline void MI_CpuCopy32(void *src, void *dst, u32 size)
+{
+ MIi_CpuCopy32((u32 *)src, (u32 *)dst, size);
+}
+
#endif //POKEDIAMOND_ARM7_MI_MEMORY_H
diff --git a/arm7/lib/include/OS_alarm.h b/arm7/lib/include/OS_alarm.h
index a4566348..ad14eaff 100644
--- a/arm7/lib/include/OS_alarm.h
+++ b/arm7/lib/include/OS_alarm.h
@@ -5,6 +5,7 @@
#include "nitro/OS_alarm_shared.h"
void OS_CreateAlarm(OSAlarm *alarm);
+void OS_CancelAlarm(OSAlarm *alarm);
BOOL OS_IsAlarmAvailable(void);
void OS_SetAlarm(OSAlarm *alarm, OSTick tick, OSAlarmHandler handler, void *arg);
void OS_SetPeriodicAlarm(OSAlarm *alarm, OSTick start, OSTick period, OSAlarmHandler handler, void *arg);
diff --git a/arm7/lib/include/PM.h b/arm7/lib/include/PM.h
new file mode 100644
index 00000000..136976e3
--- /dev/null
+++ b/arm7/lib/include/PM.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_PM_H
+#define GUARD_PM_H
+
+#include "nitro/types.h"
+
+void PMi_SetControl(u8 ctrl);
+void PMi_ResetControl(u8 ctrl);
+
+#endif //GUARD_PM_H
diff --git a/arm7/lib/include/PXI_fifo.h b/arm7/lib/include/PXI_fifo.h
index 6d634f72..27f6b005 100644
--- a/arm7/lib/include/PXI_fifo.h
+++ b/arm7/lib/include/PXI_fifo.h
@@ -3,4 +3,7 @@
#include "nitro/PXI_fifo_shared.h"
+s32 PXI_SendWordByFifo(s32 fifotag, u32 data, BOOL err);
+void PXI_SetFifoRecvCallback(s32 fifotag, PXIFifoCallback callback);
+
#endif //POKEDIAMOND_ARM7_PXI_FIFO_H
diff --git a/arm7/lib/include/SND_alarm.h b/arm7/lib/include/SND_alarm.h
index 195b90bb..51f01bcc 100644
--- a/arm7/lib/include/SND_alarm.h
+++ b/arm7/lib/include/SND_alarm.h
@@ -2,11 +2,11 @@
#define GUARD_SND_ALARM_H
#include "global.h"
-#include "SND_alarm_shared.h"
+#include "nitro/SND_alarm_shared.h"
-void SND_StopAlarm(u32 idx);
-void SND_StartAlarm(u32 idx);
-void SND_SetupAlarm();
-void SND_AlarmInit();
+void SND_AlarmInit(void);
+void SND_SetupAlarm(s32 idx, OSTick tick, OSTick period, u32 id);
+void SND_StartAlarm(s32 idx);
+void SND_StopAlarm(s32 idx);
-#endif //GUARD_SND_ALARM_H \ No newline at end of file
+#endif // GUARD_SND_ALARM_H
diff --git a/arm7/lib/include/SND_bank.h b/arm7/lib/include/SND_bank.h
new file mode 100644
index 00000000..e22410ca
--- /dev/null
+++ b/arm7/lib/include/SND_bank.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_SND_BANK_H
+#define GUARD_SND_BANK_H
+
+#include "nitro/types.h"
+#include "nitro/SND_bank_shared.h"
+
+BOOL SND_ReadInstData(
+ const struct SNDBankData *bankData, s32 program, s32 midiKey, struct SNDInstData *instData);
+const struct SNDWaveData *SND_GetWaveDataAddress(const struct SNDWaveArc *waveArc, s32 wave);
+BOOL SND_NoteOn(struct SNDExChannel *chn,
+ s32 midiKey,
+ s32 velocity,
+ s32 length,
+ const struct SNDBankData *bankData,
+ const struct SNDInstData *instData);
+
+#endif // GUARD_SND_BANK_H
diff --git a/arm7/lib/include/SND_capture.h b/arm7/lib/include/SND_capture.h
new file mode 100644
index 00000000..f71ce18d
--- /dev/null
+++ b/arm7/lib/include/SND_capture.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_SND_CAPTURE_H
+#define GUARD_SND_CAPTURE_H
+
+#include "nitro/types.h"
+
+void SND_SetupCapture(
+ int idx, int format, void *captureData, int size, BOOL loop, int capCtrlSrc, int capCtrlDst);
+BOOL SND_IsCaptureActive(int idx);
+
+#endif // GUARD_SND_CAPTURE_H
diff --git a/arm7/lib/include/SND_channel.h b/arm7/lib/include/SND_channel.h
new file mode 100644
index 00000000..b401029a
--- /dev/null
+++ b/arm7/lib/include/SND_channel.h
@@ -0,0 +1,32 @@
+#ifndef GUARD_SND_CHANNEL_H
+#define GUARD_SND_CHANNEL_H
+
+#include "nitro/types.h"
+
+void SND_SetupChannelPcm(int chnIdx,
+ const void *data,
+ int format,
+ int loop,
+ int loopStart,
+ int loopLen,
+ int volume,
+ int volumeDiv,
+ int timer,
+ int pan);
+
+void SND_SetupChannelPsg(int chnIdx, int waveDuty, int volume, int volumeDiv, int timer, int pan);
+
+void SND_SetupChannelNoise(int chnIdx, int volume, int volumeDiv, int timer, int pan);
+
+void SND_StopChannel(int chnIdx, int hold);
+
+void SND_SetChannelVolume(int chnIdx, int volume, int volumeDiv);
+void SND_SetChannelTimer(int chnIdx, int timer);
+void SND_SetChannelPan(int chnIdx, int pan);
+
+BOOL SND_IsChannelActive(int idx);
+void SND_SetMasterPan(int pan);
+u32 SND_GetChannelControl(int idx);
+void SNDi_SetSurroundDecay(int decay);
+
+#endif // GUARD_SND_CHANNEL_H
diff --git a/arm7/lib/include/SND_command.h b/arm7/lib/include/SND_command.h
new file mode 100644
index 00000000..db42d177
--- /dev/null
+++ b/arm7/lib/include/SND_command.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_SND_COMMAND_H
+#define GUARD_SND_COMMAND_H
+
+#include "nitro/SND_command_shared.h"
+
+void SND_CommandInit(void);
+void SND_CommandProc(void);
+
+#endif // GUARD_SND_COMMAND_H
diff --git a/arm7/lib/include/SND_exChannel.h b/arm7/lib/include/SND_exChannel.h
index 05fbe3d7..6e89cb72 100644
--- a/arm7/lib/include/SND_exChannel.h
+++ b/arm7/lib/include/SND_exChannel.h
@@ -1,8 +1,43 @@
#ifndef GUARD_SND_EXCHANNEL_H
#define GUARD_SND_EXCHANNEL_H
-#include "global.h"
+#include "nitro/types.h"
-bool SND_IsChannelActive(u32 idx);
+#include "nitro/SND_exChannel_shared.h"
+#include "nitro/SND_main_shared.h"
-#endif //GUARD_SND_EXCHANNEL_H \ No newline at end of file
+void SND_ExChannelInit(void);
+void SND_UpdateExChannel(void);
+void SND_ExChannelMain(BOOL step);
+BOOL SND_StartExChannelPcm(
+ struct SNDExChannel *chn, const struct SNDWaveParam *wave, const void *data, s32 length);
+BOOL SND_StartExChannelPsg(struct SNDExChannel *chn, s32 duty, s32 length);
+BOOL SND_StartExChannelNoise(struct SNDExChannel *chn, s32 length);
+s32 SND_UpdateExChannelEnvelope(struct SNDExChannel *chn, BOOL step);
+void SND_SetExChannelAttack(struct SNDExChannel *chn, s32 attack);
+void SND_SetExChannelDecay(struct SNDExChannel *chn, s32 decay);
+void SND_SetExChannelSustain(struct SNDExChannel *chn, s32 sustain);
+void SND_SetExChannelRelease(struct SNDExChannel *chn, s32 release);
+void SND_ReleaseExChannel(struct SNDExChannel *chn);
+BOOL SND_IsExChannelActive(struct SNDExChannel *chn);
+struct SNDExChannel *SND_AllocExChannel(u32 channelMask,
+ int priority,
+ u32 flags,
+ SNDExChannelCallback callback,
+ void *callbackUserData);
+void SND_FreeExChannel(struct SNDExChannel *chn);
+void SND_InvalidateWave(const void *start, const void *end);
+
+void SND_StopUnlockedChannel(u32 channelMask, u32 weak);
+void SND_LockChannel(u32 channelMask, u32 weak);
+void SND_UnlockChannel(u32 channelMask, u32 weak);
+u32 SND_GetLockedChannel(u32 weak);
+
+void SND_InvalidateWave(const void *begin, const void *end);
+
+void SND_InitLfoParam(struct SNDLfoParam *lfoParam);
+void SND_StartLfo(struct SNDLfo *lfo);
+void SND_UpdateLfo(struct SNDLfo *lfo);
+int SND_GetLfoValue(struct SNDLfo *lfo);
+
+#endif // GUARD_SND_EXCHANNEL_H
diff --git a/arm7/lib/include/SND_global.h b/arm7/lib/include/SND_global.h
new file mode 100644
index 00000000..cb91db66
--- /dev/null
+++ b/arm7/lib/include/SND_global.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_SND_GLOBAL_H
+#define GUARD_SND_GLOBAL_H
+
+#include "nitro/types.h"
+
+void SND_Enable(void);
+void SND_Disable(void);
+void SND_Shutdown(void);
+void SND_BeginSleep(void);
+void SND_EndSleep(void);
+void SND_SetMasterVolume(int vol);
+void SND_SetOutputSelector(
+ int leftOutputFrom, int rightOutputFrom, int outputCh1ToMixer, int outputCh3ToMixer);
+
+#endif // GUARD_SND_GLOBAL_H
diff --git a/arm7/lib/include/SND_lfo.h b/arm7/lib/include/SND_lfo.h
new file mode 100644
index 00000000..71e0febf
--- /dev/null
+++ b/arm7/lib/include/SND_lfo.h
@@ -0,0 +1,8 @@
+#ifndef GUARD_SND_LFO_H
+#define GUARD_SND_LFO_H
+
+#include "nitro/types.h"
+
+#include "nitro/SND_exChannel_shared.h"
+
+#endif // GUARD_SND_LFO_H
diff --git a/arm7/lib/include/SND_main.h b/arm7/lib/include/SND_main.h
new file mode 100644
index 00000000..65e3f8d3
--- /dev/null
+++ b/arm7/lib/include/SND_main.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_SND_MAIN_H
+#define GUARD_SND_MAIN_H
+
+#include "nitro/types.h"
+
+void SND_Init(u32 priority);
+void SND_CreateThread(u32 priority);
+void SND_InitIntervalTimer(void);
+void SND_StartIntervalTimer(void);
+void SND_StopIntervalTimer(void);
+u32 SND_WaitForIntervalTimer(void);
+void SND_SendWakeupMessage(void);
+void SNDi_LockMutex(void);
+void SNDi_UnlockMutex(void);
+
+#endif // GUARD_SND_MAIN_H
diff --git a/arm7/lib/include/SND_seq.h b/arm7/lib/include/SND_seq.h
new file mode 100644
index 00000000..4e54c0ff
--- /dev/null
+++ b/arm7/lib/include/SND_seq.h
@@ -0,0 +1,24 @@
+#ifndef GUARD_SND_SEQ_H
+#define GUARD_SND_SEQ_H
+
+#include "nitro/types.h"
+
+#include "nitro/SND_bank_shared.h"
+
+void SND_SeqInit(void);
+void SND_SeqMain(BOOL update);
+
+void SND_StartSeq(int player, const void *seq, u32 offset, struct SNDBankData *bank);
+void SND_StopSeq(int player);
+void SND_PrepareSeq(int player, const void *seq, u32 offset, struct SNDBankData *bank);
+void SND_StartPreparedSeq(int player);
+void SND_PauseSeq(int player, BOOL pause);
+void SND_SkipSeq(int player, u32 tick);
+void SNDi_SetPlayerParam(int player, u32 offset, u32 data, int size);
+void SNDi_SetTrackParam(int player, u32 trackMask, u32 offset, u32 data, int size);
+void SND_SetTrackMute(int player, u32 trackMask, BOOL mute);
+void SND_SetTrackAllocatableChannel(int player, u32 trackMask, u32 channelMask);
+void SND_InvalidateSeq(const void *start, const void *end);
+void SND_InvalidateBank(const void *start, const void *end);
+
+#endif // GUARD_SND_SEQ_H
diff --git a/arm7/lib/include/SND_util.h b/arm7/lib/include/SND_util.h
new file mode 100644
index 00000000..3b20a79f
--- /dev/null
+++ b/arm7/lib/include/SND_util.h
@@ -0,0 +1,16 @@
+#ifndef GUARD_SND_UTIL_H
+#define GUARD_SND_UTIL_H
+
+#include "nitro/types.h"
+
+#define SND_VOL_DB_MIN (-723)
+
+u16 SND_CalcRandom(void);
+s8 SND_SinIdx(int index);
+
+u16 SND_CalcChannelVolume(int value);
+u16 SND_CalcTimer(int timer, int pitch);
+
+extern const s16 SNDi_DecibelSquareTable[128];
+
+#endif // GUARD_SND_UTIL_H
diff --git a/arm7/lib/include/SND_work.h b/arm7/lib/include/SND_work.h
index 9b834c6c..536d4bd0 100644
--- a/arm7/lib/include/SND_work.h
+++ b/arm7/lib/include/SND_work.h
@@ -1,4 +1,13 @@
#ifndef GUARD_SND_WORK_H
#define GUARD_SND_WORK_H
-#endif //GUARD_SND_WORK_H \ No newline at end of file
+#include "nitro/SND_work_shared.h"
+
+extern struct SNDWork SNDi_Work;
+extern struct SNDSharedWork *SNDi_SharedWork;
+
+void SND_SetPlayerLocalVariable(int player, int var, s16 value);
+void SND_SetPlayerGlobalVariable(int var, s16 value);
+void SND_UpdateSharedWork(void);
+
+#endif // GUARD_SND_WORK_H
diff --git a/arm7/lib/include/registers.h b/arm7/lib/include/registers.h
index 1fb1e9ca..f30d237a 100644
--- a/arm7/lib/include/registers.h
+++ b/arm7/lib/include/registers.h
@@ -5,6 +5,29 @@
#define reg_EXTKEYIN (*(REGType16v *)0x4000136)
+#define reg_POWCNT2 (*(REGType16v *)0x4000304)
+
+
+#define reg_SOUNDCNT_VOL (*(REGType8v *)0x4000500)
+#define reg_SOUNDCNT_MIX (*(REGType8v *)0x4000501)
+
+#define reg_SOUNDxCNT_VOL(x) (*(REGType8v *)(0x4000400 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT_VOLS(x) (*(REGType16v *)(0x4000400 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT_PAN(x) (*(REGType8v *)(0x4000402 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT_STAT(x) (*(REGType8v *)(0x4000403 + ((int)(x) * 0x10)))
+#define reg_SOUNDxCNT(x) (*(REGType32v *)(0x4000400 + ((int)x) * 0x10))
+#define reg_SOUNDoffCNT(off) (*(REGType32v *)(0x4000400 + (int)(off)))
+#define reg_SOUNDxSAD(x) (*(REGType32v *)(0x4000404 + ((int)x) * 0x10))
+#define reg_SOUNDoffSAD(off) (*(REGType32v *)(0x4000404 + (int)(off)))
+#define reg_SOUNDxTMR(x) (*(REGType16v *)(0x4000408 + ((int)x) * 0x10))
+#define reg_SOUNDoffTMR(off) (*(REGType16v *)(0x4000408 + (int)(off)))
+#define reg_SOUNDxPNT(x) (*(REGType16v *)(0x400040A + ((int)x) * 0x10))
+#define reg_SOUNDoffPNT(off) (*(REGType16v *)(0x400040A + (int)(off)))
+#define reg_SOUNDxLEN(x) (*(REGType32v *)(0x400040C + ((int)x) * 0x10))
+#define reg_SOUNDoffLEN(off) (*(REGType32v *)(0x400040C + (int)(off)))
+
+#define reg_SNDCAPxCNT(x) (*(REGType8v *)(0x4000508 + ((int)(x))))
+
#define EXTKEYIN_X (1<<0)
#define EXTKEYIN_Y (1<<1)
#define EXTKEYIN_DEBUG (1<<3)
diff --git a/arm7/lib/include/syscall.h b/arm7/lib/include/syscall.h
index 55462cc7..579fd790 100644
--- a/arm7/lib/include/syscall.h
+++ b/arm7/lib/include/syscall.h
@@ -2,5 +2,9 @@
#define POKEDIAMOND_ARM7_SYSCALL_H
void SVC_WaitByLoop(u32 ct);
+u8 SVC_GetVolumeTable(int idx);
+u16 SVC_GetPitchTable(int idx);
+void SVC_SoundBiasSet(int step);
+void SVC_SoundBiasReset(int step);
#endif //POKEDIAMOND_ARM7_SYSCALL_H