#ifndef EXTERNAL_YM2612\r
#include <stdlib.h>\r
// let it be 1 global to simplify things\r
-static YM2612 ym2612;\r
+YM2612 ym2612;\r
\r
#else\r
extern YM2612 *ym2612_940;\r
/* YM2612 local section */\r
/*******************************************************************************/\r
\r
-int *ym2612_dacen;\r
-INT32 *ym2612_dacout;\r
-FM_ST *ym2612_st;\r
-\r
-\r
/* Generate samples for YM2612 */\r
int YM2612UpdateOne_(int *buffer, int length, int stereo, int is_buf_empty)\r
{\r
/* initialize YM2612 emulator */\r
void YM2612Init_(int clock, int rate)\r
{\r
- // notaz\r
- ym2612_dacen = &ym2612.dacen;\r
- ym2612_dacout = &ym2612.dacout;\r
- ym2612_st = &ym2612.OPN.ST;\r
-\r
memset(&ym2612, 0, sizeof(ym2612));\r
init_tables();\r
\r
}\r
\r
addr = ym2612.OPN.ST.address;\r
-#ifndef EXTERNAL_YM2612\r
- ym2612.REGS[addr] = v;\r
-#endif\r
\r
switch( addr & 0xf0 )\r
{\r
ym2612.OPN.lfo_inc = 0;\r
}\r
break;\r
+#if 0 // handled elsewhere\r
case 0x24: { // timer A High 8\r
int TAnew = (ym2612.OPN.ST.TA & 0x03)|(((int)v)<<2);\r
if(ym2612.OPN.ST.TA != TAnew) {\r
set_timers( v );\r
ret=0;\r
break;\r
+#endif\r
case 0x28: /* key on / off */\r
{\r
UINT8 c;\r
if(v&0x80) FM_KEYON(c,SLOT4); else FM_KEYOFF(c,SLOT4);\r
break;\r
}\r
+#if 0\r
case 0x2a: /* DAC data (YM2612) */\r
ym2612.dacout = ((int)v - 0x80) << 6; /* level unknown (notaz: 8 seems to be too much) */\r
ret=0;\r
ym2612.dacen = v & 0x80;\r
ret=0;\r
break;\r
+#endif\r
default:\r
break;\r
}\r
}\r
\r
addr = ym2612.OPN.ST.address | 0x100;\r
-#ifndef EXTERNAL_YM2612\r
- ym2612.REGS[addr] = v;\r
-#endif\r
\r
ret = OPNWriteReg(addr, v);\r
break;\r
\r
void YM2612PicoStateLoad_(void)\r
{\r
-#ifndef EXTERNAL_YM2612\r
- int i, real_A1 = ym2612.addr_A1;\r
-\r
- reset_channels( &ym2612.CH[0] );\r
-\r
- // feed all the registers and update internal state\r
- for(i = 0; i < 0x100; i++) {\r
- YM2612Write_(0, i);\r
- YM2612Write_(1, ym2612.REGS[i]);\r
- }\r
-\r
- for(i = 0; i < 0x100; i++) {\r
- YM2612Write_(2, i);\r
- YM2612Write_(3, ym2612.REGS[i|0x100]);\r
- }\r
-\r
- ym2612.addr_A1 = real_A1;\r
-#else\r
reset_channels( &ym2612.CH[0] );\r
-#endif\r
}\r
\r
#ifndef EXTERNAL_YM2612\r