ym2612_dacen = &ym2612.dacen;\r
ym2612_dacout = &ym2612.dacout;\r
\r
- /* clear everything but the regs */\r
- memset(ym2612.CH, 0, sizeof(ym2612)-sizeof(ym2612.REGS)-4);\r
+ memset(&ym2612, 0, sizeof(ym2612));\r
init_tables();\r
\r
ym2612.OPN.ST.clock = clock;\r
{\r
int i;\r
\r
+ memset(ym2612.REGS, 0, sizeof(ym2612.REGS));\r
+\r
OPNSetPres( 6*24 );\r
set_timers( 0x30 ); /* mode 0 , timer reset */\r
+ ym2612.REGS[0x27] = 0x30;\r
\r
ym2612.OPN.eg_timer = 0;\r
ym2612.OPN.eg_cnt = 0;\r
{\r
OPNWriteReg(i ,0xc0);\r
OPNWriteReg(i|0x100,0xc0);\r
+ ym2612.REGS[i ] = 0xc0;\r
+ ym2612.REGS[i|0x100] = 0xc0;\r
}\r
for(i = 0xb2 ; i >= 0x30 ; i-- )\r
{\r
for(i = 0x26 ; i >= 0x20 ; i-- ) OPNWriteReg(i,0);\r
/* DAC mode clear */\r
ym2612.dacen = 0;\r
+ ym2612.addr_A1 = 0;\r
}\r
\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
}\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
void YM2612PicoStateLoad_(void)\r
{\r
#ifndef EXTERNAL_YM2612\r
- int i, old_A1 = ym2612.addr_A1;\r
+ int i, real_A1 = ym2612.addr_A1;\r
\r
reset_channels( &ym2612.CH[0], 6 );\r
\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 = old_A1;\r
+ ym2612.addr_A1 = real_A1;\r
#else\r
reset_channels( &ym2612.CH[0], 6 );\r
#endif\r
}\r
\r
\r
+#ifndef EXTERNAL_YM2612\r
void *YM2612GetRegs(void)\r
{\r
return ym2612.REGS;\r
}\r
+#endif\r
+\r