]> 4ch.mooo.com Git - 16.git/blob - 16/adplug/adplug/src/xad.h
wwww~
[16.git] / 16 / adplug / adplug / src / xad.h
1 /*
2   AdPlug - Replayer for many OPL2/OPL3 audio file formats.
3   Copyright (C) 1999 - 2003 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   xad.h - XAD shell player by Riven the Mage <riven@ok.ru>
20 */
21
22 #ifndef H_ADPLUG_XAD
23 #define H_ADPLUG_XAD
24
25 #include "player.h"
26
27 class CxadPlayer: public CPlayer
28 {
29 public:
30   static CPlayer *factory(Copl *newopl);
31
32         CxadPlayer(Copl * newopl);
33         ~CxadPlayer();
34
35         bool    load(const std::string &filename, const CFileProvider &fp);
36         bool    update();
37         void    rewind(int subsong);
38         float   getrefresh();
39
40         std::string     gettype();
41         std::string     gettitle();
42         std::string     getauthor();
43         std::string     getinstrument(unsigned int i);
44         unsigned int    getinstruments();
45
46 protected:
47         virtual void xadplayer_rewind(int subsong) = 0;
48         virtual bool xadplayer_load() = 0;
49         virtual void xadplayer_update() = 0;
50         virtual float xadplayer_getrefresh() = 0;
51         virtual std::string xadplayer_gettype() = 0;
52         virtual std::string xadplayer_gettitle()
53           {
54             return std::string(xad.title);
55           }
56         virtual std::string xadplayer_getauthor()
57           {
58             return std::string(xad.author);
59           }
60         virtual std::string xadplayer_getinstrument(unsigned int i)
61           {
62             return std::string("");
63           }
64         virtual unsigned int xadplayer_getinstruments()
65           {
66             return 0;
67           }
68
69         enum { HYP=1, PSI, FLASH, BMF, RAT, HYBRID };
70
71         struct xad_header
72         {
73             unsigned long   id;
74             char            title[36];
75             char            author[36];
76             unsigned short  fmt;
77             unsigned char   speed;
78             unsigned char   reserved_a;
79         } xad;
80
81         unsigned char * tune;
82         unsigned long   tune_size;
83
84         struct
85         {
86             int             playing;
87             int             looping;
88             unsigned char   speed;
89             unsigned char   speed_counter;
90         } plr;
91
92         unsigned char   adlib[256];
93
94         void opl_write(int reg, int val);
95 };
96
97 #endif