summaryrefslogtreecommitdiff
path: root/arm9/lib/include/SND_work.h
diff options
context:
space:
mode:
authorred031000 <rubenru09@aol.com>2020-05-29 18:45:08 +0100
committerred031000 <rubenru09@aol.com>2020-05-29 18:45:08 +0100
commit0d8876b37adebcda571659089dcff343fccdfc8b (patch)
tree0fc796c2d9a711cd8ba6f1919391a57174aa5b3f /arm9/lib/include/SND_work.h
parent83d33f36fcf46dec8ea99b86563a19885be4bd8e (diff)
parentd6fd8d1ed926feebffab4154a84eb70a84083bfc (diff)
Merge branch 'master' of https://github.com/martmists/pokediamond
Diffstat (limited to 'arm9/lib/include/SND_work.h')
-rw-r--r--arm9/lib/include/SND_work.h92
1 files changed, 92 insertions, 0 deletions
diff --git a/arm9/lib/include/SND_work.h b/arm9/lib/include/SND_work.h
new file mode 100644
index 00000000..dec2bd71
--- /dev/null
+++ b/arm9/lib/include/SND_work.h
@@ -0,0 +1,92 @@
+#ifndef GUARD_SND_WORK_H
+#define GUARD_SND_WORK_H
+
+#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
+
+struct SNDDriverInfo {
+ struct SNDWork work; // 0x0000
+ u32 channelControls[SND_CHANNEL_COUNT]; // 0x1180
+ struct SNDWork *workPtr; // 0x11C0
+ u32 lockedChannels; // 0x11C4
+ u8 unk_XXX[24]; // 0x11C8
+}; // size = 0x11E0
+
+struct SNDChannelInfo {
+ struct {
+ BOOL active : 1;
+ BOOL locked: 1;
+ } flags; // 0x0
+ u16 volume; // 0x4
+ u8 pan; // 0x6
+ u8 unk_7; // 0x7
+ s32 envStatus; // 0x8
+}; // size = 0xC
+
+struct SNDPlayerInfo {
+ struct {
+ BOOL active : 1;
+ BOOL paused : 1;
+ } flags; // 0x0
+ u16 trackBitMask; // 0x4
+ u16 tempo; // 0x6
+ u8 volume; // 0x8
+ u8 unk_9[3]; // 0x9
+}; // size = 0xC
+
+struct SNDTrackInfo {
+ u16 program; // 0x0
+ u8 volume; // 0x2
+ u8 expression; // 0x3
+
+ s8 pitchBend; // 0x4
+ u8 bendRange; // 0x5
+ u8 pan; // 0x6
+ s8 transpose; // 0x7
+
+ u8 unk_8; // 0x8
+ u8 chnCount; // 0x9
+ u8 channel[SND_CHANNEL_COUNT]; // 0xA
+}; // size = 0x1A
+
+u32 SND_GetPlayerStatus(void);
+u16 SND_GetChannelStatus(void);
+//u16 SND_GetCaptureStatus(void);
+u32 SND_GetPlayerTickCounter(u32 playerId);
+//s16 SND_GetPlayerLocalVariable(u32 playerId, u32 var);
+//s16 SND_GetPlayerGlobalVariable(u32 var);
+//BOOL SND_ReadChannelInfo(const SNDDriverInfo *driverInfo, s32 chnId, SNDChannelInfo *chnInfo);
+//BOOL SND_ReadPlayerInfo(const SNDDriverInfo *driverInfo, s32 playerId, s32 trackId, SNDPlayerInfo *playerInfo);
+//BOOL SND_ReadTrackInfo(const SNDDriverInfo *driverInfo s32 playerId, s32 trackId, SNDTrackInfo *trackInfo);
+u32 SNDi_GetFinishedCommandTag(void);
+void SNDi_InitSharedWork(struct SNDSharedWork *sw);
+
+extern struct SNDSharedWork *SNDi_SharedWork;
+
+#endif // GUARD_SND_WORK_H