YM2612PicoStateLoad();\r
\r
// feed all the registers and update internal state\r
- for (i = 0x20; i < 0xB8; i++) {\r
+ for (i = 0x20; i < 0xA0; i++) {\r
ym2612_write_local(0, i, 0);\r
ym2612_write_local(1, ym2612.REGS[i], 0);\r
}\r
- for (i = 0x30; i < 0xB8; i++) {\r
+ for (i = 0x30; i < 0xA0; i++) {\r
+ ym2612_write_local(2, i, 0);\r
+ ym2612_write_local(3, ym2612.REGS[i|0x100], 0);\r
+ }\r
+ for (i = 0xAF; i >= 0xA0; i--) { // must apply backwards\r
+ ym2612_write_local(2, i, 0);\r
+ ym2612_write_local(3, ym2612.REGS[i|0x100], 0);\r
+ ym2612_write_local(0, i, 0);\r
+ ym2612_write_local(1, ym2612.REGS[i], 0);\r
+ }\r
+ for (i = 0xB0; i < 0xB8; i++) {\r
+ ym2612_write_local(0, i, 0);\r
+ ym2612_write_local(1, ym2612.REGS[i], 0);\r
ym2612_write_local(2, i, 0);\r
ym2612_write_local(3, ym2612.REGS[i|0x100], 0);\r
}\r
else\r
#endif\r
ret = YM2612PicoStateLoad2(&tat, &tbt);\r
- if (ret != 0) return; // no saved timers\r
+ if (ret != 0) {\r
+ elprintf(EL_STATUS, "old ym2612 state");\r
+ return; // no saved timers\r
+ }\r
\r
tac = (1024 - ym2612.OPN.ST.TA) << 16;\r
tbc = (256 - ym2612.OPN.ST.TB) << 16;\r