]> 4ch.mooo.com Git - 16.git/blob - 16/adplug/adplug/src/dtm.h
wwww~
[16.git] / 16 / adplug / adplug / src / dtm.h
1 /*
2   Adplug - Replayer for many OPL2/OPL3 audio file formats.
3   Copyright (C) 1999 - 2006 Simon Peter, <dn.tlp@gmx.net>, et al.
4
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9
10   This library is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13   Lesser General Public License for more details.
14
15   You should have received a copy of the GNU Lesser General Public
16   License along with this library; if not, write to the Free Software
17   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
19   dtm.h - DTM loader by Riven the Mage <riven@ok.ru>
20 */
21
22 #include "protrack.h"
23
24 class CdtmLoader: public CmodPlayer
25 {
26  public:
27   static CPlayer *factory(Copl *newopl);
28
29   CdtmLoader(Copl *newopl) : CmodPlayer(newopl) { };
30
31   bool  load(const std::string &filename, const CFileProvider &fp);
32   void  rewind(int subsong);
33   float getrefresh();
34
35   std::string     gettype();
36   std::string     gettitle();
37   std::string     getauthor();
38   std::string     getdesc();
39   std::string     getinstrument(unsigned int n);
40   unsigned int    getinstruments();
41
42  private:
43
44   struct dtm_header
45   {
46     char            id[12];
47     unsigned char   version;
48     char            title[20];
49     char            author[20];
50     unsigned char   numpat;
51     unsigned char   numinst;
52   } header;
53
54   char desc[80*16];
55
56   struct dtm_instrument
57   {
58     char            name[13];
59     unsigned char   data[12];
60   } instruments[128];
61
62   struct dtm_event
63   {
64     unsigned char       byte0;
65     unsigned char       byte1;
66   };
67
68   long unpack_pattern(unsigned char *ibuf, long ilen, unsigned char *obuf, long olen);
69 };