mirror of
https://github.com/zeldaret/tmc
synced 2026-07-01 04:10:16 -04:00
64 lines
1.3 KiB
C
64 lines
1.3 KiB
C
#ifndef GUARD_M4A_INTERNAL_H
|
|
#define GUARD_M4A_INTERNAL_H
|
|
|
|
#include "global.h"
|
|
|
|
typedef struct MusicPlayerTrack MusicPlayerTrack;
|
|
typedef struct MusicPlayerInfo MusicPlayerInfo;
|
|
|
|
typedef struct WaveData {
|
|
u16 type;
|
|
u16 status;
|
|
u32 freq;
|
|
u32 loopStart;
|
|
u32 size; // number of samples
|
|
s8 data[1]; // samples
|
|
} WaveData;
|
|
|
|
#define TONEDATA_TYPE_CGB 0x07
|
|
#define TONEDATA_TYPE_FIX 0x08
|
|
#define TONEDATA_TYPE_SPL 0x40 // key split
|
|
#define TONEDATA_TYPE_RHY 0x80 // rhythm
|
|
|
|
#define TONEDATA_P_S_PAN 0xc0
|
|
#define TONEDATA_P_S_PAM TONEDATA_P_S_PAN
|
|
|
|
typedef struct ToneData {
|
|
u8 type;
|
|
u8 key;
|
|
u8 length; // sound length (compatible sound)
|
|
u8 pan_sweep; // pan or sweep (compatible sound ch. 1)
|
|
WaveData* wav;
|
|
u8 attack;
|
|
u8 decay;
|
|
u8 sustain;
|
|
u8 release;
|
|
} ToneData;
|
|
|
|
typedef struct SongHeader {
|
|
u8 trackCount;
|
|
u8 blockCount;
|
|
u8 priority;
|
|
u8 reverb;
|
|
ToneData* tone;
|
|
u8* part[1];
|
|
} SongHeader;
|
|
|
|
typedef struct Song {
|
|
const SongHeader* header;
|
|
u16 ms;
|
|
u16 me;
|
|
} Song;
|
|
|
|
typedef struct MusicPlayer {
|
|
MusicPlayerInfo* info;
|
|
MusicPlayerTrack* track;
|
|
u8 unk_8;
|
|
u16 unk_A;
|
|
} MusicPlayer;
|
|
|
|
extern const MusicPlayer gMPlayTable[];
|
|
extern const Song gSongTable[];
|
|
|
|
#endif // GUARD_M4A_INTERNAL_H
|