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 };