home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 February
/
PCWorld_2000-02_cd.bin
/
Software
/
Servis
/
FFE
/
MOD.SWG
/
0003_DCM.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1996-09-04
|
5KB
|
125 lines
--------M-DCM-------------------------------
The DCM module format was designed by Winfried Welti, and is based on a
RIFF / IFF style format called WUFF - Welti's Universal File header
Format.
The header for WUFF files is built much like the RIFF header :
OFFSET Count TYPE Description
0000h 4 char ID="WUFF"
0004h 4 char Subformat ID, see below
0008h 1 dword File length including the WUFF header
000Ch 1 word File format version as BCD.
Bits 15-12 are flags :
12 - Archive file. If set, the data after the
header contains only WUFF style files.
13-15 - reserved.
000Eh 1 word Length of subheader following this header.
The DCM format has a header ID of "DCMw" and a version word of 0100h. It
extends the header with the following values:
0010h 1 word Song flags, bitmapped
0 - Samples present
1 - Songdata present
2 - Infotext present
3-15 - reserved
0012h 1 word Number of instruments
After the header, there follow the included (WUFF) files; Allowed
fileformats for include are : MDCw (Patterns), EDIw (Instrument), TXTw
(Text); see below.
The MDC format is a module format which uses compiled pattern data. It
has the subformat ID "MDCw", the current version is 1.01, it extends the
header with the following fields :
OFFSET Count TYPE Description
0010h 1 word Flags for the song (see table 0011)
0012h 1 word Internal frequency for replay
0014h 1 dword Length of packed data channels
0028h 1 byte Number of used channels
24 : Chnls : Byte Used Channels (0..chnls-1)
(Table 0011)
MDC song flags
0 - Stereo enable
1 - Free Frequency (can replay freq change in song ?)
2-3 - Offset size :
00 - Byte (mod offsets, multiply by 256)
01 - Word (16 bit offsets)
10 - DWord (32 bit offsets)
11 - reserved
4-5 - Panning range
00 - GUS panning (4 bit, byte value)
01 - 8 Bit panning
10 - reserved
11 - reserved
6-7 - Instrument number range
00 - Byte
01 - Word
10 - reserved
11 - reserved
8 - S3M compatibility bit (all ranges are like s3m : mod offsets,
GUS panning, Ins Num Range : Byte)
9 - Tuning control
0 - Use Period values (word) (s3m)
1 - Use Frequency values (Dword)
10-15- reserved
After the header, there comes the packed data for the module. This
format consists of one control byte and depending on the value some
other data bytes.
Values of control byte :
0 - Next Frame
1 - End of File
2 - Order Num. follows [byte]
3 - Loop to Ord Num (1 byte follows)
4 - Frames to wait follows [byte]
5 - New Replay freq follows [byte]
6..31 - reserved
If the byte is greater than 31 then it has the following bitmapped format :
0-4 - Channel Nr.
5 - Key Byte follows
6 - Period Value follows [word]
7 - Volume Value follows [byte]
Key byte format, bitmapped :
0 - Start Sample
1 - Stop Sample
2 - Instr Nr follows [byte/word/??]
3 - Offset follows [byte/word/??]
4 - Pan pos follows [byte/??]
5-7 - reserved
The EDI format has an ID value of "EDIw" and a version of 0100h, and it
extends the header with the following information :
OFFSET Count TYPE Description
0010h 1 word Sample flags, bitmapped
0-1 - Loop type
00 - none
01 - forward loop
10 - bidirectional loop
11 - reserved
2 - 32 bit values for sample length etc., see below
3 - Sample is 16 bit
4 - Frequency is 32 bit.
5-15 - reserved
0012h 1 word C2 frequency of sample
0014h 1 dword Loop start, this may be a word, depending on
the sample flags.
0018h 1 dword Loop end, see loop start
001Ch 1 dword Sample length
The song text is plain ASCII.
EXTENSION:DCM
OCCURENCES:PC
SEE ALSO:S3M