123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- #pragma once
- #include "openmpt/all/BuildSettings.hpp"
- #include "../soundlib/ModSample.h"
- #include "../soundlib/SampleIO.h"
- OPENMPT_NAMESPACE_BEGIN
- struct S3MFileHeader
- {
-
- enum S3MMagic
- {
- idEOF = 0x1A,
- idS3MType = 0x10,
- idPanning = 0xFC,
- };
-
- enum S3MTrackerVersions
- {
- trackerMask = 0xF000,
- versionMask = 0x0FFF,
- trkScreamTracker = 0x1000,
- trkImagoOrpheus = 0x2000,
- trkImpulseTracker = 0x3000,
- trkSchismTracker = 0x4000,
- trkOpenMPT = 0x5000,
- trkBeRoTracker = 0x6000,
- trkCreamTracker = 0x7000,
- trkAkord = 0x0208,
- trkST3_00 = 0x1300,
- trkST3_20 = 0x1320,
- trkST3_01 = 0x1301,
- trkIT2_07 = 0x3207,
- trkIT2_14 = 0x3214,
- trkBeRoTrackerOld = 0x4100,
- trkCamoto = 0xCA00,
- };
-
- enum S3MHeaderFlags
- {
- st2Vibrato = 0x01,
- zeroVolOptim = 0x08,
- amigaLimits = 0x10,
- fastVolumeSlides = 0x40,
- };
-
- enum S3MFormatVersion
- {
- oldVersion = 0x01,
- newVersion = 0x02,
- };
- char name[28];
- uint8le dosEof;
- uint8le fileType;
- char reserved1[2];
- uint16le ordNum;
- uint16le smpNum;
- uint16le patNum;
- uint16le flags;
- uint16le cwtv;
- uint16le formatVersion;
- char magic[4];
- uint8le globalVol;
- uint8le speed;
- uint8le tempo;
- uint8le masterVolume;
- uint8le ultraClicks;
- uint8le usePanningTable;
- uint16le reserved2;
- uint32le reserved3;
- uint16le reserved4;
- uint16le special;
- uint8le channels[32];
- };
- MPT_BINARY_STRUCT(S3MFileHeader, 96)
- struct S3MSampleHeader
- {
- enum SampleType
- {
- typeNone = 0,
- typePCM = 1,
- typeAdMel = 2,
- };
- enum SampleFlags
- {
- smpLoop = 0x01,
- smpStereo = 0x02,
- smp16Bit = 0x04,
- };
- enum SamplePacking
- {
- pUnpacked = 0x00,
- pDP30ADPCM = 0x01,
- pADPCM = 0x04,
- };
- uint8le sampleType;
- char filename[12];
- uint8le dataPointer[3];
- uint32le length;
- uint32le loopStart;
- uint32le loopEnd;
- uint8le defaultVolume;
- char reserved1;
- uint8le pack;
- uint8le flags;
- uint32le c5speed;
- char reserved2[4];
- uint16le gusAddress;
- uint16le sb512;
- uint32le lastUsedPos;
- char name[28];
- char magic[4];
-
- void ConvertToMPT(ModSample &mptSmp, bool isST3 = false) const;
-
- SmpLength ConvertToS3M(const ModSample &mptSmp);
-
- SampleIO GetSampleFormat(bool signedSamples) const;
-
- uint32 GetSampleOffset() const;
- };
- MPT_BINARY_STRUCT(S3MSampleHeader, 80)
- enum S3MPattern
- {
- s3mEndOfRow = 0x00,
- s3mChannelMask = 0x1F,
- s3mNotePresent = 0x20,
- s3mVolumePresent = 0x40,
- s3mEffectPresent = 0x80,
- s3mAnyPresent = 0xE0,
- s3mNoteOff = 0xFE,
- s3mNoteNone = 0xFF,
- };
- OPENMPT_NAMESPACE_END
|