Mercurial > audlegacy
comparison Plugins/Input/adplug/core/rix.h @ 637:2b06eb5e472d trunk
[svn] Sync with upstream. Drop hardware OPL2/3 support, it throws warnings and is not used on most modern machines. Added var inits where GCC 4.0 thought it was a good idea.
author | chainsaw |
---|---|
date | Sat, 18 Feb 2006 08:23:30 -0800 |
parents | 15ca2ea93a30 |
children | 8b24c71b91df |
comparison
equal
deleted
inserted
replaced
636:aa6914ee37ab | 637:2b06eb5e472d |
---|---|
1 /* | 1 /* |
2 * Adplug - Replayer for many OPL2/OPL3 audio file formats. | 2 * Adplug - Replayer for many OPL2/OPL3 audio file formats. |
3 * Copyright (C) 1999 - 2005 Simon Peter, <dn.tlp@gmx.net>, et al. | 3 * Copyright (C) 1999 - 2006 Simon Peter, <dn.tlp@gmx.net>, et al. |
4 * | 4 * |
5 * This library is free software; you can redistribute it and/or | 5 * This library is free software; you can redistribute it and/or |
6 * modify it under the terms of the GNU Lesser General Public | 6 * modify it under the terms of the GNU Lesser General Public |
7 * License as published by the Free Software Foundation; either | 7 * License as published by the Free Software Foundation; either |
8 * version 2.1 of the License, or (at your option) any later version. | 8 * version 2.1 of the License, or (at your option) any later version. |
21 | 21 |
22 #include "player.h" | 22 #include "player.h" |
23 | 23 |
24 class CrixPlayer: public CPlayer | 24 class CrixPlayer: public CPlayer |
25 { | 25 { |
26 public: | 26 public: |
27 static CPlayer *factory(Copl *newopl); | 27 static CPlayer *factory(Copl *newopl); |
28 | 28 |
29 CrixPlayer(Copl *newopl) | 29 CrixPlayer(Copl *newopl); |
30 : CPlayer(newopl),I(0),T(0),mus_block(0),ins_block(0),rhythm(0),mutex(0),music_on(0), | 30 ~CrixPlayer() {}; |
31 pause_flag(0),band(0),band_low(0),e0_reg_flag(0),bd_modify(0),sustain(0),dro_end(0) | |
32 { | |
33 // memset(buffer,0,97948); | |
34 int i=0,j=i*3; | |
35 unsigned long t=9; | |
36 | 31 |
37 if(opl->gettype() == Copl::TYPE_OPL2) | 32 bool load(const std::string &filename, const CFileProvider &fp); |
38 opl3_mode = 0; | 33 bool update(); |
39 else | 34 void rewind(int subsong); |
40 opl3_mode = 1; | 35 float getrefresh(); |
41 }; | |
42 ~CrixPlayer() | |
43 {}; | |
44 | 36 |
45 bool load(const std::string &filename, const CFileProvider &fp); | 37 std::string gettype() |
46 bool update(); | 38 { return std::string("Softstar RIX OPL Music Format"); }; |
47 void rewind(int subsong); | |
48 float getrefresh(); | |
49 | 39 |
50 std::string gettype() | 40 protected: |
51 { return std::string("Softstar RIX OPL Music Format"); }; | 41 typedef struct { |
42 unsigned char v[14]; | |
43 } ADDT; | |
52 | 44 |
53 typedef struct {unsigned char v[14];}ADDT; | 45 unsigned char dro[64000]; |
46 unsigned char buf_addr[655360]; /* rix files' buffer */ | |
47 unsigned short buffer[300]; | |
48 unsigned short a0b0_data2[11]; | |
49 unsigned char a0b0_data3[18]; | |
50 unsigned char a0b0_data4[18]; | |
51 unsigned char a0b0_data5[96]; | |
52 unsigned char addrs_head[96]; | |
53 unsigned short insbuf[28]; | |
54 unsigned short displace[11]; | |
55 ADDT reg_bufs[18]; | |
56 unsigned long pos,length; | |
57 unsigned long msdone,mstotal; | |
58 unsigned short delay; | |
59 unsigned char index, opl3_mode; | |
60 enum OplMode { | |
61 ModeOPL2,ModeOPL3,ModeDUALOPL2 | |
62 } mode; | |
54 | 63 |
55 protected: | 64 static const unsigned char adflag[18]; |
56 unsigned char dro[64000]; | 65 static const unsigned char reg_data[18]; |
57 unsigned char buf_addr[655360]; /* rix files' buffer */ | 66 static const unsigned char ad_C0_offs[18]; |
58 unsigned short buffer[300]; | 67 static const unsigned char modify[28]; |
59 unsigned short a0b0_data2[11]; | 68 static const unsigned char bd_reg_data[124]; |
60 unsigned char a0b0_data3[18]; | 69 static unsigned char for40reg[18]; |
61 unsigned char a0b0_data4[18]; | 70 static unsigned short mus_time; |
62 unsigned char a0b0_data5[96]; | 71 unsigned int I,T; |
63 unsigned char addrs_head[96]; | 72 unsigned short mus_block; |
64 unsigned short insbuf[28]; | 73 unsigned short ins_block; |
65 unsigned short displace[11]; | 74 unsigned char rhythm; |
66 ADDT reg_bufs[18]; | 75 unsigned char mutex; |
67 unsigned long pos,length; | 76 unsigned char music_on; |
68 unsigned long msdone,mstotal; | 77 unsigned char pause_flag; |
69 unsigned short delay; | 78 unsigned short band; |
70 unsigned char index, opl3_mode; | 79 unsigned char band_low; |
71 enum OplMode { | 80 unsigned short e0_reg_flag; |
72 ModeOPL2,ModeOPL3,ModeDUALOPL2 | 81 unsigned char bd_modify; |
73 } mode; | 82 int sustain; |
83 int dro_end; | |
74 | 84 |
75 static const unsigned char adflag[18]; | 85 #define ad_08_reg() ad_bop(8,0) /**/ |
76 static const unsigned char reg_data[18]; | 86 inline void ad_20_reg(unsigned short); /**/ |
77 static const unsigned char ad_C0_offs[18]; | 87 inline void ad_40_reg(unsigned short); /**/ |
78 static const unsigned char modify[28]; | 88 inline void ad_60_reg(unsigned short); /**/ |
79 static const unsigned char bd_reg_data[124]; | 89 inline void ad_80_reg(unsigned short); /**/ |
80 static unsigned char for40reg[18]; | 90 inline void ad_a0b0_reg(unsigned short); /**/ |
81 static unsigned short mus_time; | 91 inline void ad_a0b0l_reg(unsigned short,unsigned short,unsigned short); /**/ |
82 unsigned int I,T; | 92 inline void ad_a0b0l_reg_(unsigned short,unsigned short,unsigned short); /**/ |
83 unsigned short mus_block; | 93 inline void ad_bd_reg(); /**/ |
84 unsigned short ins_block; | 94 inline void ad_bop(unsigned short,unsigned short); /**/ |
85 unsigned char rhythm; | 95 inline void ad_C0_reg(unsigned short); /**/ |
86 unsigned char mutex; | 96 inline void ad_E0_reg(unsigned short); /**/ |
87 unsigned char music_on; | 97 inline unsigned short ad_initial(); /**/ |
88 unsigned char pause_flag; | 98 inline unsigned short ad_test(); /**/ |
89 unsigned short band; | 99 inline void crc_trans(unsigned short,unsigned short); /**/ |
90 unsigned char band_low; | 100 inline void data_initial(); /* done */ |
91 unsigned short e0_reg_flag; | 101 inline void init(); /**/ |
92 unsigned char bd_modify; | 102 inline void ins_to_reg(unsigned short,unsigned short*,unsigned short); /**/ |
93 int sustain; | 103 inline void int_08h_entry(); /**/ |
94 int dro_end; | 104 inline void music_ctrl(); /**/ |
95 | 105 inline void Pause(); /**/ |
96 #define ad_08_reg() ad_bop(8,0) /**/ | 106 inline void prep_int(); /**/ |
97 inline void ad_20_reg(unsigned short); /**/ | 107 inline void prepare_a0b0(unsigned short,unsigned short); /**/ |
98 inline void ad_40_reg(unsigned short); /**/ | 108 inline void rix_90_pro(unsigned short); /**/ |
99 inline void ad_60_reg(unsigned short); /**/ | 109 inline void rix_A0_pro(unsigned short,unsigned short); /**/ |
100 inline void ad_80_reg(unsigned short); /**/ | 110 inline void rix_B0_pro(unsigned short,unsigned short); /**/ |
101 inline void ad_a0b0_reg(unsigned short); /**/ | 111 inline void rix_C0_pro(unsigned short,unsigned short); /**/ |
102 inline void ad_a0b0l_reg(unsigned short,unsigned short,unsigned short); /**/ | 112 inline void rix_get_ins(); /**/ |
103 inline void ad_a0b0l_reg_(unsigned short,unsigned short,unsigned short); /**/ | 113 inline unsigned short rix_proc(); /**/ |
104 inline void ad_bd_reg(); /**/ | 114 inline void set_new_int(); |
105 inline void ad_bop(unsigned short,unsigned short); /**/ | 115 inline void set_speed(unsigned short); /**/ |
106 inline void ad_C0_reg(unsigned short); /**/ | 116 inline void set_time(unsigned short); /**/ |
107 inline void ad_E0_reg(unsigned short); /**/ | 117 inline void switch_ad_bd(unsigned short); /**/ |
108 inline unsigned short ad_initial(); /**/ | 118 inline unsigned int strm_and_fr(unsigned short); /* done */ |
109 inline unsigned short ad_test(); /**/ | |
110 inline void crc_trans(unsigned short,unsigned short); /**/ | |
111 inline void data_initial(); /* done */ | |
112 inline void init(); /**/ | |
113 inline void ins_to_reg(unsigned short,unsigned short*,unsigned short); /**/ | |
114 inline void int_08h_entry(); /**/ | |
115 inline void music_ctrl(); /**/ | |
116 inline void Pause(); /**/ | |
117 inline void prep_int(); /**/ | |
118 inline void prepare_a0b0(unsigned short,unsigned short); /**/ | |
119 inline void rix_90_pro(unsigned short); /**/ | |
120 inline void rix_A0_pro(unsigned short,unsigned short); /**/ | |
121 inline void rix_B0_pro(unsigned short,unsigned short); /**/ | |
122 inline void rix_C0_pro(unsigned short,unsigned short); /**/ | |
123 inline void rix_get_ins(); /**/ | |
124 inline unsigned short rix_proc(); /**/ | |
125 inline void set_new_int(); | |
126 inline void set_speed(unsigned short); /**/ | |
127 inline void set_time(unsigned short); /**/ | |
128 inline void switch_ad_bd(unsigned short); /**/ | |
129 inline unsigned int strm_and_fr(unsigned short); /* done */ | |
130 }; | 119 }; |