]> 4ch.mooo.com Git - 16.git/blob - 16/adplug/adplug-2.2.1/src/dmo.h
Please enter the commit message for your changes. Lines starting
[16.git] / 16 / adplug / adplug-2.2.1 / src / dmo.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   dmo.cpp - TwinTeam loader by Riven the Mage <riven@ok.ru>
20 */
21
22 #include "s3m.h"
23
24 class CdmoLoader: public Cs3mPlayer
25 {
26  public:
27   static CPlayer *factory(Copl *newopl);
28
29   CdmoLoader(Copl *newopl) : Cs3mPlayer(newopl) { };
30
31   bool  load(const std::string &filename, const CFileProvider &fp);
32
33   std::string   gettype();
34   std::string   getauthor();
35
36  private:
37
38   class dmo_unpacker {
39   public:
40     bool decrypt(unsigned char *buf, long len);
41     long unpack(unsigned char *ibuf, unsigned char *obuf,
42                 unsigned long outputsize);
43
44   private:
45     unsigned short brand(unsigned short range);
46     short unpack_block(unsigned char *ibuf, long ilen, unsigned char *obuf);
47
48     unsigned long bseed;
49     unsigned char *oend;
50   };
51 };