]> 4ch.mooo.com Git - 16.git/blob - 16/adplug/adplug/src/hybrid.h
modified: scroll.exe
[16.git] / 16 / adplug / adplug / src / hybrid.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] HYBRID player, by Riven the Mage <riven@ok.ru>
20  */
21
22 #include "xad.h"
23
24 class CxadhybridPlayer: public CxadPlayer
25 {
26 public:
27   static CPlayer *factory(Copl *newopl);
28
29   CxadhybridPlayer(Copl *newopl): CxadPlayer(newopl)
30     { }
31
32 protected:
33   struct hyb_instrument
34   {
35     char            name[7];
36     unsigned char   mod_wave;
37     unsigned char   mod_AD;
38     unsigned char   mod_SR;
39     unsigned char   mod_crtl;
40     unsigned char   mod_volume;
41     unsigned char   car_wave;
42     unsigned char   car_AD;
43     unsigned char   car_SR;
44     unsigned char   car_crtl;
45     unsigned char   car_volume;
46     unsigned char   connect;
47   };
48
49   struct
50   {
51     unsigned char   order_pos;
52     unsigned char   pattern_pos;
53
54     unsigned char   *order;
55
56     hyb_instrument  *inst;
57
58     struct
59     {
60       unsigned short  freq;
61       unsigned short  freq_slide;
62     } channel[9];
63
64     unsigned char   speed;
65     unsigned char   speed_counter;
66   } hyb;
67   //
68   bool            xadplayer_load();
69   void            xadplayer_rewind(int subsong);
70   void            xadplayer_update();
71   float           xadplayer_getrefresh();
72   std::string     xadplayer_gettype();
73   std::string     xadplayer_getinstrument(unsigned int i);
74   unsigned int    xadplayer_getinstruments();
75
76 private:
77   static const unsigned char hyb_adlib_registers[99];
78   static const unsigned short hyb_notes[98];
79   static const unsigned char hyb_default_instrument[11];
80 };