diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/DISKDATA.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/DISKDATA.cs index 9ff4b22..95e21b6 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/DISKDATA.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/DISKDATA.cs @@ -1,7 +1,17 @@ namespace VirtualNes.Core { - public struct DISKDATA + public struct DISKDATA : IStateBufferObject { public int DifferentSize; + + public uint GetSize() + { + return sizeof(int); + } + + public void SaveState(StateBuffer buffer) + { + buffer.Write(DifferentSize); + } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/EXCTRSTAT.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/EXCTRSTAT.cs index 8351127..469c414 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/EXCTRSTAT.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/EXCTRSTAT.cs @@ -11,7 +11,7 @@ public readonly void SaveState(StateBuffer buffer) { - throw new System.NotImplementedException(); + buffer.Write(data); } } } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/FILEHDR2.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/FILEHDR2.cs index b8c62fb..46dc209 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/FILEHDR2.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/FILEHDR2.cs @@ -16,15 +16,16 @@ namespace VirtualNes.Core /// 2字节 public ushort Ext2; - public void SaveState(StateBuffer buffer) + public readonly void SaveState(StateBuffer buffer) { buffer.Write(ID); buffer.Write(BlockVersion); + buffer.Write(Ext0); buffer.Write(Ext1); buffer.Write(Ext2); } - public uint GetSize() + public readonly uint GetSize() { return (uint)(ID.Length + sizeof(ushort) + sizeof(uint) + sizeof(ushort) + sizeof(ushort)); } diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/State.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/State.cs index 2edd3fb..d1f5ddb 100644 --- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/State.cs +++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/State/State.cs @@ -35,5 +35,44 @@ namespace VirtualNes.Core public BLOCKHDR exctrBLOCK; public EXCTRSTAT exctr; + + public readonly byte[] ToBytes() + { + StateBuffer buffer = new StateBuffer(); + + HEADER.SaveState(buffer); + + regBLOCK.SaveState(buffer); + reg.SaveState(buffer); + + ramBLOCK.SaveState(buffer); + ram.SaveState(buffer); + + if(WRAM!=null) buffer.Write(WRAM); + + mmuBLOCK.SaveState(buffer); + mmu.SaveState(buffer); + buffer.Write(CPU_MEM_BANK.ToArray()); + buffer.Write(VRAM); + buffer.Write(CRAM.ToArray()); + + mmcBLOCK.SaveState(buffer); + mmc.SaveState(buffer); + + ctrBLOCK.SaveState(buffer); + ctr.SaveState(buffer); + + sndBLOCK.SaveState(buffer); + snd.SaveState(buffer); + + dskBLOCK.SaveState(buffer); + dsk.SaveState(buffer); + buffer.Write(dskdata); + + exctrBLOCK.SaveState(buffer); + exctr.SaveState(buffer); + + return buffer.Data.ToArray(); + } } }