We just released a Feb. 5 '89 prototype of DuckTales for the NES!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Format:GDM
Jump to navigation
Jump to search
The Bells, Whistles, and Sound Boards (BWSB) Sound File GDM (.GDM) is a tracker based file created in 1991 which may or may have not been used in any games for DOS systems made in C, QBasic/QuickBasic/PAS.
Contents
Format
File Header
(Source: BWSB Source Code from 1995 (GDMTYPE.H))
typedef struct
{
char ID[4]; // ID: 'GDMþ'
char SongTitle[32]; // Music's title
char SongMusician[32]; // Name of music's composer
char DOSEOF[3]; // 10, 13, 26
char ID2[4]; // ID: 'GDMF'
unsigned char FormMajorVer; // Format major version
unsigned char FormMinorVer; // Format minor version
unsigned int TrackID; // Composing Tracker ID code
unsigned char TrackMajorVer; // Tracker's major version
unsigned char TrackMinorVer; // Tracker's minor version
unsigned char PanMap[32]; // 0-Left to 15-Right, 255-N/U
unsigned char MastVol; // Range: 0..64
unsigned char Tempo; // Initial music tempo (6)
unsigned char BPM; // Initial music BPM (125)
unsigned int FormOrigin; // Original format ID:
// 1-MOD, 2-MTM, 3-S3M, 4-669, 5-FAR, 6-ULT, 7-STM, 8-MED
// (versions of 2GDM prior to v1.15 won't set this correctly)
unsigned long OrdOffset;
unsigned char NOO; // Number of orders in module
unsigned long PatOffset;
unsigned char NOP; // Number of patterns in module
unsigned long SamHeadOffset;
unsigned long SamOffset;
unsigned char NOS; // Number of samples in module
unsigned long MTOffset;
unsigned long MTLength;
unsigned long SSOffset;
unsigned int SSLength;
unsigned long TGOffset;
unsigned int TGLength;
} GDMHeader;
Wave (SAM) File Format
(Source: BWSB Source Code (GDMHEAD.H))
typedef struct
{
char SamName[32];
char FileName[12];
char EmsHandle;
long Length;
long LoopBegin;
long LoopEnd;
char Flags;
int C4Hertz;
char Volume;
char Pan;
int Segment;
} SamHeader;
typedef struct
{
char SamName[32]; // 32
char FileName[12]; // 44
char EmsHandle; // 45
long Length; // 49
long LoopBegin; // 53
long LoopEnd; // 57
char Flags; // 58
int C4Hertz; // 60
char Volume; // 61
char Pan; // 62
} SamHeader2;
GDM Channel Header
(Source: BWSB Source Code (CHANTYPE.H))
typedef struct
{
unsigned char MixFlags; // Mixing flags
unsigned int MixLBeg; // Offset of loop beginning
unsigned int MixLEnd; // Offset of loop ending
unsigned int MixFinetune; // Finetune (C-4 Hertz)
unsigned long MixRate; // Sample rate/period of sound
unsigned int MixSeg; // Segment of sound
unsigned int MixOff; // Offset of next byte to mix
unsigned char MixVolume; // Volume of channel
unsigned int MixInc; // Incrementation for each sample. MSB.LSB
unsigned char MixIncRemain; // Remainder from last increment.
unsigned char MusSample; // Currently played sample number
unsigned char MusNote; // Currently played note
unsigned char MusOctave; // Currently played octave
unsigned char MusEffect1; // Music Effect Number (1)**
unsigned int MusEffDat1; // Music Effect Data (1)**
unsigned char MusEffect2; // Music Effect Number (2)*
unsigned int MusEffDat2; // Music Effect Data (2)*
unsigned char MusEffect3; // Music Effect Number (3)
unsigned int MusEffDat3; // Music Effect Data (3)
unsigned char MusEffect4; // Music Effect Number (4)
unsigned int MusEffDat4; // Music Effect Data (4)
unsigned char VUMeter; // Volume Meter value
unsigned int MusVolRate; // Old Vol Slide Speed
unsigned int MusPortaRate; // Old Porta to Note Speed
unsigned char MusVibWave; // Vibrato Waveform Select
unsigned char MusVibPosition; // Vibrato Table Position
unsigned char MusVibSpeed; // Vibrato Speed (x0h)
unsigned char MusVibDepth; // Vibrato Depth (0yh)
unsigned char MusTrmWave; // Tremolo Waveform Select
unsigned char MusTrmPosition; // Tremolo Table Position
unsigned char MusTrmSpeed; // Tremolo Speed
unsigned char MusTrmDepth; // Tremolo Depth
unsigned char MusRetrigSpeed; // Retrigger speed
unsigned char MusRetrigSlide; // Retrigger volume slide
unsigned char MusGlissFunk; // Funk It (Invert Loop) Speed
unsigned char MusFunkOffset; // Funk It position
unsigned int MusWaveStart; // Funk It funk pointer (offset into sample)
unsigned char MixPanning; // Pan position
unsigned char MixHandle; // EMS Handle this sample resides on
unsigned char MixMonoVol; // Mono volume value
unsigned char MixLftVol; // Left speaker mixing volume
unsigned char MixRgtVol; // Right speaker mixing volume
unsigned long GUSAddress; // Address of start position in GUS memory
unsigned char MusArpeggio; // Old Arpeggio speed
unsigned char MusPortaUD; // Old Porta Up/Down speed
char Reserved[64]; // For future expansion
} ChannelType;
SDK Information
The BWSB Usage Kit comes with Include Files, Source Code and in UTILS an Application named "2GDM.EXE" which converts .MOD and .S3M Files which use PCM8 Samples to .GDM Files.
Open With...
| File Formats | |
|---|---|
| Audio Formats | |
| Nintendo DS | Nitro Sound Container/SDAT (SSEQ, STRM) • Digital Sound Elements (SMDL, SWDL, SMEL, SADL) |
| Game Boy Advance | M4A/Sappy Sound Engine • Krawall |
| PlayStation 2 | Digital Sound Elements |
| Wii | Digital Sound Elements |
| Various | Bitmap • BWSB Sound Format |