cog/Frameworks/GME/vgmplay/VGMFile.h

148 lines
2.9 KiB
C

// Header file for VGM file handling
typedef struct _vgm_file_header
{
UINT32 fccVGM;
UINT32 lngEOFOffset;
UINT32 lngVersion;
UINT32 lngHzPSG;
UINT32 lngHzYM2413;
UINT32 lngGD3Offset;
UINT32 lngTotalSamples;
UINT32 lngLoopOffset;
UINT32 lngLoopSamples;
UINT32 lngRate;
UINT16 shtPSG_Feedback;
UINT8 bytPSG_SRWidth;
UINT8 bytPSG_Flags;
UINT32 lngHzYM2612;
UINT32 lngHzYM2151;
UINT32 lngDataOffset;
UINT32 lngHzSPCM;
UINT32 lngSPCMIntf;
UINT32 lngHzRF5C68;
UINT32 lngHzYM2203;
UINT32 lngHzYM2608;
UINT32 lngHzYM2610;
UINT32 lngHzYM3812;
UINT32 lngHzYM3526;
UINT32 lngHzY8950;
UINT32 lngHzYMF262;
UINT32 lngHzYMF278B;
UINT32 lngHzYMF271;
UINT32 lngHzYMZ280B;
UINT32 lngHzRF5C164;
UINT32 lngHzPWM;
UINT32 lngHzAY8910;
UINT8 bytAYType;
UINT8 bytAYFlag;
UINT8 bytAYFlagYM2203;
UINT8 bytAYFlagYM2608;
UINT8 bytVolumeModifier;
UINT8 bytReserved2;
INT8 bytLoopBase;
UINT8 bytLoopModifier;
UINT32 lngHzGBDMG;
UINT32 lngHzNESAPU;
UINT32 lngHzMultiPCM;
UINT32 lngHzUPD7759;
UINT32 lngHzOKIM6258;
UINT8 bytOKI6258Flags;
UINT8 bytK054539Flags;
UINT8 bytC140Type;
UINT8 bytReservedFlags;
UINT32 lngHzOKIM6295;
UINT32 lngHzK051649;
UINT32 lngHzK054539;
UINT32 lngHzHuC6280;
UINT32 lngHzC140;
UINT32 lngHzK053260;
UINT32 lngHzPokey;
UINT32 lngHzQSound;
UINT32 lngHzSCSP;
// UINT32 lngHzOKIM6376;
//UINT8 bytReserved[0x04];
UINT32 lngExtraOffset;
UINT32 lngHzWSwan;
UINT32 lngHzVSU;
UINT32 lngHzSAA1099;
UINT32 lngHzES5503;
UINT32 lngHzES5506;
UINT8 bytES5503Chns;
UINT8 bytES5506Chns;
UINT8 bytC352ClkDiv;
UINT8 bytESReserved;
UINT32 lngHzX1_010;
UINT32 lngHzC352;
UINT32 lngHzGA20;
} VGM_HEADER;
typedef struct _vgm_header_extra
{
UINT32 DataSize;
UINT32 Chp2ClkOffset;
UINT32 ChpVolOffset;
} VGM_HDR_EXTRA;
typedef struct _vgm_extra_chip_data32
{
UINT8 Type;
UINT32 Data;
} VGMX_CHIP_DATA32;
typedef struct _vgm_extra_chip_data16
{
UINT8 Type;
UINT8 Flags;
UINT16 Data;
} VGMX_CHIP_DATA16;
typedef struct _vgm_extra_chip_extra32
{
UINT8 ChipCnt;
VGMX_CHIP_DATA32* CCData;
} VGMX_CHP_EXTRA32;
typedef struct _vgm_extra_chip_extra16
{
UINT8 ChipCnt;
VGMX_CHIP_DATA16* CCData;
} VGMX_CHP_EXTRA16;
typedef struct _vgm_header_extra_data
{
VGMX_CHP_EXTRA32 Clocks;
VGMX_CHP_EXTRA16 Volumes;
} VGM_EXTRA;
#define VOLUME_MODIF_WRAP 0xC0
typedef struct _vgm_gd3_tag
{
UINT32 fccGD3;
UINT32 lngVersion;
UINT32 lngTagLength;
wchar_t* strTrackNameE;
wchar_t* strTrackNameJ;
wchar_t* strGameNameE;
wchar_t* strGameNameJ;
wchar_t* strSystemNameE;
wchar_t* strSystemNameJ;
wchar_t* strAuthorNameE;
wchar_t* strAuthorNameJ;
wchar_t* strReleaseDate;
wchar_t* strCreator;
wchar_t* strNotes;
} GD3_TAG;
typedef struct _vgm_pcm_bank_data
{
UINT32 DataSize;
UINT8* Data;
UINT32 DataStart;
} VGM_PCM_DATA;
typedef struct _vgm_pcm_bank
{
UINT32 BankCount;
VGM_PCM_DATA* Bank;
UINT32 DataSize;
UINT8* Data;
UINT32 DataPos;
UINT32 BnkPos;
} VGM_PCM_BANK;
#define FCC_VGM 0x206D6756 // 'Vgm '
#define FCC_GD3 0x20336447 // 'Gd3 '