X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=Pico%2FMemory.c;h=a9f0927434083ec96bb308a3ff3d849da1ef00b0;hb=453d2a6edadbd6a0977b76eba14961006c907f01;hp=fb6b99c41e6ab98bc94b9b461e3911c3be372dbc;hpb=538a6098d484745df10aa4923c69581b81e0c09d;p=picodrive.git diff --git a/Pico/Memory.c b/Pico/Memory.c index fb6b99c..a9f0927 100644 --- a/Pico/Memory.c +++ b/Pico/Memory.c @@ -883,14 +883,13 @@ int ym2612_write_local(u32 a, u32 d, int is_from_z80) return YM2612Write_(a, d); } -// TODO: savestates + #define ym2612_read_local() \ if (xcycles >= timer_a_next_oflow) \ ym2612.OPN.ST.status |= (ym2612.OPN.ST.mode >> 2) & 1; \ if (xcycles >= timer_b_next_oflow) \ ym2612.OPN.ST.status |= (ym2612.OPN.ST.mode >> 2) & 2 - u32 ym2612_read_local_z80(void) { int xcycles = z80_cyclesDone() << 8; @@ -913,6 +912,23 @@ u32 ym2612_read_local_68k(void) return ym2612.OPN.ST.status; } +// TODO: new ym2612 savestates +void ym2612_unpack_state(void) +{ + int i; + YM2612PicoStateLoad(); + + // feed all the registers and update internal state + for (i = 0x20; i < 0xC0; i++) { + ym2612_write_local(0, i, 0); + ym2612_write_local(1, ym2612.REGS[i], 0); + } + for (i = 0x30; i < 0xC0; i++) { + ym2612_write_local(2, i, 0); + ym2612_write_local(3, ym2612.REGS[i|0x100], 0); + } +} + // ----------------------------------------------------------------- // z80 memhandlers