diff options
author | Revo <projectrevotpp@hotmail.com> | 2020-05-29 14:11:22 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-29 14:11:22 -0400 |
commit | 96183df2b89ae0f2294520550ed382d06250c177 (patch) | |
tree | 57a330cbec60b4033531c452406771e79301a680 /arm9/lib/include/SND_work.h | |
parent | a56c25246a4b14d22ac5fc3b7d0dab6b0fc32908 (diff) | |
parent | d6fd8d1ed926feebffab4154a84eb70a84083bfc (diff) |
Merge branch 'master' into pikalax_work
Diffstat (limited to 'arm9/lib/include/SND_work.h')
-rw-r--r-- | arm9/lib/include/SND_work.h | 92 |
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 |