diff --git a/BizHawk.Emulation/Consoles/Atari/2600/Atari2600.cs b/BizHawk.Emulation/Consoles/Atari/2600/Atari2600.cs index 67ce3e302c..20466dd0f0 100644 --- a/BizHawk.Emulation/Consoles/Atari/2600/Atari2600.cs +++ b/BizHawk.Emulation/Consoles/Atari/2600/Atari2600.cs @@ -49,7 +49,8 @@ namespace BizHawk ser.Sync("ram", ref ram, false); ser.Sync("Lag", ref _lagcount); ser.Sync("Frame", ref _frame); - //TODO - you need to sync your m6532 and tia + tia.SyncState(ser); + m6532.SyncState(ser); mapper.SyncState(ser); } diff --git a/BizHawk.Emulation/Consoles/Atari/2600/M6532.cs b/BizHawk.Emulation/Consoles/Atari/2600/M6532.cs index 322174bec7..f578097c28 100644 --- a/BizHawk.Emulation/Consoles/Atari/2600/M6532.cs +++ b/BizHawk.Emulation/Consoles/Atari/2600/M6532.cs @@ -18,8 +18,6 @@ namespace BizHawk.Emulation.Consoles.Atari public byte ddra = 0x00; public byte ddrb = 0x00; - public bool resetOccured = false; - public M6532(Atari2600 core) { this.core = core; @@ -206,5 +204,15 @@ namespace BizHawk.Emulation.Consoles.Atari } } } + + public void SyncState(Serializer ser) + { + ser.Sync("ddra", ref ddra); + ser.Sync("ddrb", ref ddrb); + ser.Sync("interruptEnabled", ref interruptEnabled); + ser.Sync("interruptFlag", ref interruptFlag); + ser.Sync("timerCyclesRemaining", ref timerCyclesRemaining); + ser.Sync("timerShift", ref timerShift); + } } } \ No newline at end of file diff --git a/BizHawk.Emulation/Consoles/Atari/2600/TIA.cs b/BizHawk.Emulation/Consoles/Atari/2600/TIA.cs index a2e172f14a..59ba16616c 100644 --- a/BizHawk.Emulation/Consoles/Atari/2600/TIA.cs +++ b/BizHawk.Emulation/Consoles/Atari/2600/TIA.cs @@ -87,6 +87,17 @@ namespace BizHawk.Emulation.Consoles.Atari return result; } + + public void SyncState(Serializer ser) + { + ser.Sync("enabled", ref enabled); + ser.Sync("resetToPlayer", ref resetToPlayer); + ser.Sync("hPosCnt", ref hPosCnt); + ser.Sync("size", ref size); + ser.Sync("number", ref number); + ser.Sync("HM", ref HM); + ser.Sync("collisions", ref collisions); + } } struct playerData @@ -220,6 +231,24 @@ namespace BizHawk.Emulation.Consoles.Atari return result; } + + public void SyncState(Serializer ser) + { + missile.SyncState(ser); + ser.Sync("grp", ref grp); + ser.Sync("dgrp", ref dgrp); + ser.Sync("color", ref color); + ser.Sync("hPosCnt", ref hPosCnt); + ser.Sync("scanCnt", ref scanCnt); + ser.Sync("scanStrchCnt", ref scanStrchCnt); + ser.Sync("HM", ref HM); + ser.Sync("reflect", ref reflect); + ser.Sync("delay", ref delay); + ser.Sync("nusiz", ref nusiz); + ser.Sync("reset", ref reset); + ser.Sync("resetCnt", ref resetCnt); + ser.Sync("collisions", ref collisions); + } }; struct ballData @@ -257,6 +286,18 @@ namespace BizHawk.Emulation.Consoles.Atari return result; } + + public void SyncState(Serializer ser) + { + ser.Sync("enabled", ref enabled); + ser.Sync("denabled", ref denabled); + ser.Sync("delay", ref delay); + ser.Sync("size", ref size); + ser.Sync("HM", ref HM); + ser.Sync("hPosCnt", ref hPosCnt); + ser.Sync("collisions", ref collisions); + } + }; struct playfieldData @@ -267,6 +308,15 @@ namespace BizHawk.Emulation.Consoles.Atari public bool reflect; public bool score; public bool priority; + public void SyncState(Serializer ser) + { + ser.Sync("grp", ref grp); + ser.Sync("pfColor", ref pfColor); + ser.Sync("bkColor", ref bkColor); + ser.Sync("reflect", ref reflect); + ser.Sync("score", ref score); + ser.Sync("priority", ref priority); + } }; struct hmoveData @@ -291,6 +341,26 @@ namespace BizHawk.Emulation.Consoles.Atari public byte missile0Cnt; public byte missile1Cnt; public byte ballCnt; + + public void SyncState(Serializer ser) + { + ser.Sync("hmoveEnabled", ref hmoveEnabled); + ser.Sync("hmoveJustStarted", ref hmoveJustStarted); + ser.Sync("lateHBlankReset", ref lateHBlankReset); + ser.Sync("decCntEnabled", ref decCntEnabled); + ser.Sync("player0Latch", ref player0Latch); + ser.Sync("player1Latch", ref player1Latch); + ser.Sync("missile0Latch", ref missile0Latch); + ser.Sync("missile1Latch", ref missile1Latch); + ser.Sync("ballLatch", ref ballLatch); + ser.Sync("hmoveDelayCnt", ref hmoveDelayCnt); + ser.Sync("hmoveCnt", ref hmoveCnt); + ser.Sync("player0Cnt", ref player0Cnt); + ser.Sync("player1Cnt", ref player1Cnt); + ser.Sync("missile0Cnt", ref missile0Cnt); + ser.Sync("missile1Cnt", ref missile1Cnt); + ser.Sync("ballCnt", ref ballCnt); + } }; playerData player0; @@ -949,5 +1019,15 @@ namespace BizHawk.Emulation.Consoles.Atari return result; } + public void SyncState(Serializer ser) + { + ball.SyncState(ser); + hmove.SyncState(ser); + ser.Sync("hsyncCnt", ref hsyncCnt); + player0.SyncState(ser); + player1.SyncState(ser); + playField.SyncState(ser); + //ser.Sync("scanline", ref scanline); + } } } \ No newline at end of file