Remove cbuffer (#1883)
* delete unused ShortBuffer * convert IntBuffer to int[] in the Atari2600 core * remove IntBuffer from NES mappers, and delete class * convert ByteBuffer to byte[] in atari 2600 mappers * remove ByteBuffer usages in NESHawk, remove ByteBuffer class * remove Buffer.cs * remove IDisposable from NES.NESBoardBase * remove Dispose from Atari2600 MapperBase, note, it wasn't event being called
This commit is contained in:
parent
5d88199c97
commit
d953318160
|
@ -1,119 +0,0 @@
|
|||
#nullable disable
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace BizHawk.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// Implements a data simple data buffer with proper life cycle and no bounds checking
|
||||
/// </summary>
|
||||
public unsafe class CBuffer<T> : IDisposable
|
||||
{
|
||||
public GCHandle Hnd;
|
||||
public T[] Arr;
|
||||
public void* Ptr;
|
||||
public byte* Byteptr;
|
||||
public int Len;
|
||||
public int Itemsize;
|
||||
|
||||
public void Write08(int addr, byte val) { Byteptr[addr] = val; }
|
||||
public void Write32(int addr, uint val) { *(uint*)(Byteptr + addr) = val; }
|
||||
public byte Read08(int addr) { return Byteptr[addr]; }
|
||||
public ushort Read16(int addr) { return *(ushort*)(Byteptr + addr); }
|
||||
public uint Read32(int addr) { return *(uint*)(Byteptr + addr); }
|
||||
|
||||
public static CBuffer<T> malloc(int amt, int itemsize)
|
||||
{
|
||||
return new CBuffer<T>(amt, itemsize);
|
||||
}
|
||||
|
||||
public CBuffer(T[] arr, int itemsize)
|
||||
{
|
||||
Itemsize = itemsize;
|
||||
Len = arr.Length;
|
||||
Arr = arr;
|
||||
Hnd = GCHandle.Alloc(arr, GCHandleType.Pinned);
|
||||
Ptr = Hnd.AddrOfPinnedObject().ToPointer();
|
||||
Byteptr = (byte*)Ptr;
|
||||
}
|
||||
public CBuffer(int amt, int itemsize)
|
||||
{
|
||||
Itemsize = itemsize;
|
||||
Len = amt;
|
||||
Arr = new T[amt];
|
||||
Hnd = GCHandle.Alloc(this.Arr, GCHandleType.Pinned);
|
||||
Ptr = Hnd.AddrOfPinnedObject().ToPointer();
|
||||
Byteptr = (byte*)Ptr;
|
||||
Util.Memset(Byteptr, 0, Len * itemsize);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(true);
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
if (Arr != null)
|
||||
{
|
||||
Hnd.Free();
|
||||
}
|
||||
Arr = null;
|
||||
}
|
||||
}
|
||||
|
||||
~CBuffer() { Dispose(true); }
|
||||
}
|
||||
|
||||
public sealed class ByteBuffer : CBuffer<byte>
|
||||
{
|
||||
public ByteBuffer(int amt) : base(amt,1) { }
|
||||
public ByteBuffer(byte[] arr) : base(arr,1) { }
|
||||
public byte this[int index]
|
||||
{
|
||||
#if DEBUG
|
||||
get => this.Arr[index];
|
||||
set => this.Arr[index] = value;
|
||||
#else
|
||||
set => Write08(index, value);
|
||||
get => Read08(index);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class IntBuffer : CBuffer<int>
|
||||
{
|
||||
public IntBuffer(int amt) : base(amt, 4) { }
|
||||
public IntBuffer(int[] arr) : base(arr,4) { }
|
||||
public int this[int index]
|
||||
{
|
||||
#if DEBUG
|
||||
get => this.Arr[index];
|
||||
set => this.Arr[index] = value;
|
||||
#else
|
||||
set => Write32(index<<2, (uint) value);
|
||||
get => (int)Read32(index<<2);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class ShortBuffer : CBuffer<short>
|
||||
{
|
||||
public ShortBuffer(int amt) : base(amt, 2) { }
|
||||
public ShortBuffer(short[] arr) : base(arr, 2) { }
|
||||
public short this[int index]
|
||||
{
|
||||
#if DEBUG
|
||||
get => this.Arr[index];
|
||||
set => this.Arr[index] = value;
|
||||
#else
|
||||
set => Write32(index << 1, (uint)value);
|
||||
get => (short)Read16(index << 1);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
|
@ -166,16 +166,6 @@ namespace BizHawk.Common
|
|||
}
|
||||
}
|
||||
|
||||
public void Sync(string name, ref ByteBuffer byteBuf)
|
||||
{
|
||||
SyncBuffer(name, 1, byteBuf.Len, byteBuf.Ptr);
|
||||
}
|
||||
|
||||
public void Sync(string name, ref IntBuffer byteBuf)
|
||||
{
|
||||
SyncBuffer(name, 4, byteBuf.Len, byteBuf.Ptr);
|
||||
}
|
||||
|
||||
public void Sync(string name, ref byte[] val, bool useNull)
|
||||
{
|
||||
if (IsText)
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
{
|
||||
domains.Add(new MemoryDomainDelegate(
|
||||
"Cart Ram",
|
||||
_mapper.CartRam.Len,
|
||||
_mapper.CartRam.Length,
|
||||
MemoryDomain.Endian.Little,
|
||||
addr => _mapper.CartRam[(int)addr],
|
||||
(addr, value) => _mapper.CartRam[(int)addr] = value, 1));
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
public virtual bool HasCartRam => false;
|
||||
|
||||
public virtual ByteBuffer CartRam => new ByteBuffer(0);
|
||||
public virtual byte[] CartRam => new byte[0];
|
||||
|
||||
public virtual byte ReadMemory(ushort addr)
|
||||
{
|
||||
|
@ -34,10 +34,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
{
|
||||
}
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
public virtual void ClockCpu()
|
||||
{
|
||||
}
|
||||
|
|
|
@ -25,18 +25,18 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
private int _lowbank2K;
|
||||
private int _rambank1K;
|
||||
private bool _hasRam;
|
||||
private ByteBuffer _ram = new ByteBuffer(256 * 1024); // Up to 256k
|
||||
private byte[] _ram = new byte[256 * 1024]; // Up to 256k
|
||||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("lowbank_2k", ref _lowbank2K);
|
||||
ser.Sync("rambank_1k", ref _rambank1K);
|
||||
ser.Sync("cart_ram", ref _ram);
|
||||
ser.Sync("cart_ram", ref _ram, false);
|
||||
ser.Sync("hasRam", ref _hasRam);
|
||||
}
|
||||
|
||||
|
@ -45,16 +45,10 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
_lowbank2K = 0;
|
||||
_rambank1K = 0;
|
||||
_hasRam = false;
|
||||
_ram = new ByteBuffer(256 * 1024);
|
||||
_ram = new byte[256 * 1024];
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_ram.Dispose();
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
{
|
||||
if (addr < 0x1000)
|
||||
|
|
|
@ -43,7 +43,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
internal class m4A50 : MapperBase
|
||||
{
|
||||
private ByteBuffer _ram = new ByteBuffer(32768);
|
||||
private byte[] _ram = new byte[32768];
|
||||
|
||||
private byte _lastData = 0xFF;
|
||||
private ushort _lastAddress = 0xFFFF;
|
||||
|
@ -89,17 +89,11 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
_ram.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync("cartRam", ref _ram);
|
||||
ser.Sync("cartRam", ref _ram, false);
|
||||
|
||||
ser.Sync("lastData", ref _lastData);
|
||||
ser.Sync("lastAddress", ref _lastAddress);
|
||||
|
@ -117,7 +111,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
public override void HardReset()
|
||||
{
|
||||
_ram = new ByteBuffer(32768);
|
||||
_ram = new byte[32768];
|
||||
|
||||
_lastData = 0xFF;
|
||||
_lastAddress = 0xFFFF;
|
||||
|
|
|
@ -39,15 +39,15 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
InitializeSettings();
|
||||
}
|
||||
|
||||
private ByteBuffer _superChargerImage = new ByteBuffer(8192);
|
||||
private IntBuffer _imageOffsets = new IntBuffer(2);
|
||||
private byte[] _superChargerImage = new byte[8192];
|
||||
private int[] _imageOffsets = new int[2];
|
||||
private bool _writePending;
|
||||
private int _distinctAccesses;
|
||||
private bool _writeEnabled;
|
||||
private byte _dataHoldRegister;
|
||||
private byte _numberOfLoadImages;
|
||||
private ByteBuffer _loadedImages;
|
||||
private ByteBuffer _header = new ByteBuffer(256);
|
||||
private byte[] _loadedImages;
|
||||
private byte[] _header = new byte[256];
|
||||
private bool _powerIndicator; // Indicates if the ROM's power is on or off
|
||||
private int _powerRomCycle; // Indicates when the power was last turned on
|
||||
private int _size;
|
||||
|
@ -63,7 +63,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
_numberOfLoadImages = (byte)(_size / 8448);
|
||||
|
||||
// TODO: why are we making a redundant copy?
|
||||
_loadedImages = new ByteBuffer(_size);
|
||||
_loadedImages = new byte[_size];
|
||||
for (int i = 0; i < size; i++)
|
||||
{
|
||||
_loadedImages[i] = Core.Rom[i];
|
||||
|
@ -166,12 +166,12 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _superChargerImage;
|
||||
public override byte[] CartRam => _superChargerImage;
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_superChargerImage = new ByteBuffer(8192);
|
||||
_imageOffsets = new IntBuffer(2);
|
||||
_superChargerImage = new byte[8192];
|
||||
_imageOffsets = new int[2];
|
||||
_writePending = false;
|
||||
_distinctAccesses = 0;
|
||||
|
||||
|
@ -180,7 +180,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
_numberOfLoadImages = 0;
|
||||
_loadedImages = null;
|
||||
|
||||
_header = new ByteBuffer(256);
|
||||
_header = new byte[256];
|
||||
_powerIndicator = false;
|
||||
_powerRomCycle = 0;
|
||||
_size = 0;
|
||||
|
@ -191,28 +191,19 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
base.HardReset();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
_superChargerImage.Dispose();
|
||||
_imageOffsets.Dispose();
|
||||
_loadedImages.Dispose();
|
||||
_header.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync("superChargerImage", ref _superChargerImage);
|
||||
ser.Sync("imageOffsets", ref _imageOffsets);
|
||||
ser.Sync("superChargerImage", ref _superChargerImage, false);
|
||||
ser.Sync("imageOffsets", ref _imageOffsets, false);
|
||||
ser.Sync("writePending", ref _writePending);
|
||||
ser.Sync("distinctAccesses", ref _distinctAccesses);
|
||||
|
||||
ser.Sync("writeEnabled", ref _writeEnabled);
|
||||
ser.Sync("dataHoldRegister", ref _dataHoldRegister);
|
||||
ser.Sync("numberOfLoadImages", ref _numberOfLoadImages);
|
||||
ser.Sync("loadedImages", ref _loadedImages);
|
||||
ser.Sync("loadedImages", ref _loadedImages, false);
|
||||
|
||||
ser.Sync("header", ref _header);
|
||||
ser.Sync("header", ref _header, false);
|
||||
ser.Sync("powerIndicator", ref _powerIndicator);
|
||||
ser.Sync("powerRomCycle", ref _powerRomCycle);
|
||||
ser.Sync("size", ref _size);
|
||||
|
@ -225,7 +216,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
public override void ClockCpu()
|
||||
{
|
||||
_elapsedCycles++;
|
||||
|
||||
}
|
||||
|
||||
private byte ReadMem(ushort addr, bool peek)
|
||||
|
@ -468,7 +458,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
_header[i] = _loadedImages[(image * 8448) + 8192 + i];
|
||||
}
|
||||
|
||||
if (Checksum(_header.Arr.Take(8).ToArray()) != 0x55)
|
||||
if (Checksum(_header.Take(8).ToArray()) != 0x55)
|
||||
{
|
||||
Console.WriteLine("WARNING: The Supercharger header checksum is invalid...");
|
||||
}
|
||||
|
@ -481,7 +471,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
{
|
||||
int bank = _header[16 + j] & 0x03;
|
||||
int page = (_header[16 + j] >> 2) & 0x07;
|
||||
var src = _loadedImages.Arr.Skip((image * 8448) + (j * 256)).Take(256).ToArray();
|
||||
var src = _loadedImages.Skip((image * 8448) + (j * 256)).Take(256).ToArray();
|
||||
byte sum = (byte)(Checksum(src) + _header[16 + j] + _header[64 + j]);
|
||||
|
||||
if (!invalidPageChecksumSeen && (sum != 0x55))
|
||||
|
|
|
@ -180,7 +180,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
internal class mCM : MapperBase
|
||||
{
|
||||
// TODO: PokeMem
|
||||
private ByteBuffer _ram = new ByteBuffer(2048);
|
||||
private byte[] _ram = new byte[2048];
|
||||
private int _bank4K = 3; // On Start up, controller port is all 1's, so start on the last bank, flags enabled
|
||||
private bool _disableRam = true;
|
||||
private bool _writeMode;
|
||||
|
@ -188,15 +188,9 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
private bool _funcKey;
|
||||
private bool _shiftKey;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
_ram.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_ram = new ByteBuffer(2048);
|
||||
_ram = new byte[2048];
|
||||
_bank4K = 3;
|
||||
_disableRam = true;
|
||||
_writeMode = true;
|
||||
|
@ -209,7 +203,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync("cartRam", ref _ram);
|
||||
ser.Sync("cartRam", ref _ram, false);
|
||||
ser.Sync("bank4k", ref _bank4K);
|
||||
ser.Sync("column", ref _column);
|
||||
ser.Sync("disableRam", ref _disableRam);
|
||||
|
|
|
@ -17,30 +17,24 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
*/
|
||||
internal class mCV : MapperBase
|
||||
{
|
||||
private ByteBuffer _ram = new ByteBuffer(1024);
|
||||
private byte[] _ram = new byte[1024];
|
||||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("aux_ram", ref _ram);
|
||||
ser.Sync("aux_ram", ref _ram, false);
|
||||
}
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_ram = new ByteBuffer(1024);
|
||||
_ram = new byte[1024];
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
_ram.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override byte ReadMemory(ushort addr)
|
||||
{
|
||||
if (addr < 0x1000)
|
||||
|
|
|
@ -229,10 +229,10 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
// shift register (it's the NOT of the EOR of four bits)
|
||||
private readonly byte[] _randomInputBits = { 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1 };
|
||||
|
||||
private IntBuffer _counters = new IntBuffer(8);
|
||||
private ByteBuffer _tops = new ByteBuffer(8);
|
||||
private ByteBuffer _flags = new ByteBuffer(8);
|
||||
private ByteBuffer _bottoms = new ByteBuffer(8);
|
||||
private int[] _counters = new int[8];
|
||||
private byte[] _tops = new byte[8];
|
||||
private byte[] _flags = new byte[8];
|
||||
private byte[] _bottoms = new byte[8];
|
||||
private bool[] _musicModes = new bool[3];
|
||||
|
||||
private int _bank4K;
|
||||
|
@ -243,23 +243,14 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
private byte[] _dspData;
|
||||
public byte[] DspData => _dspData ??= Core.Rom.Skip(8192).Take(2048).ToArray();
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_counters.Dispose();
|
||||
_tops.Dispose();
|
||||
_flags.Dispose();
|
||||
_bottoms.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
|
||||
ser.Sync("counters", ref _counters);
|
||||
ser.Sync("tops", ref _tops);
|
||||
ser.Sync("flags", ref _flags);
|
||||
ser.Sync("bottoms", ref _bottoms);
|
||||
ser.Sync("counters", ref _counters, false);
|
||||
ser.Sync("tops", ref _tops, false);
|
||||
ser.Sync("flags", ref _flags, false);
|
||||
ser.Sync("bottoms", ref _bottoms, false);
|
||||
ser.Sync("musicMode0", ref _musicModes[0]); // Silly, but I didn't want to support bool[] in Serializer just for this one variable
|
||||
ser.Sync("musicMode1", ref _musicModes[1]);
|
||||
ser.Sync("musicMode2", ref _musicModes[2]);
|
||||
|
@ -272,10 +263,10 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
public override void HardReset()
|
||||
{
|
||||
_counters = new IntBuffer(8);
|
||||
_tops = new ByteBuffer(8);
|
||||
_flags = new ByteBuffer(8);
|
||||
_bottoms = new ByteBuffer(8);
|
||||
_counters = new int[8];
|
||||
_tops = new byte[8];
|
||||
_flags = new byte[8];
|
||||
_bottoms = new byte[8];
|
||||
_musicModes = new bool[3];
|
||||
_bank4K = 0;
|
||||
_currentRandomVal = 0;
|
||||
|
|
|
@ -17,10 +17,10 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private IntBuffer _counters = new IntBuffer(8);
|
||||
private ByteBuffer _tops = new ByteBuffer(8);
|
||||
private ByteBuffer _flags = new ByteBuffer(8);
|
||||
private ByteBuffer _bottoms = new ByteBuffer(8);
|
||||
private int[] _counters = new int[8];
|
||||
private byte[] _tops = new byte[8];
|
||||
private byte[] _flags = new byte[8];
|
||||
private byte[] _bottoms = new byte[8];
|
||||
private bool[] _musicModes = new bool[3];
|
||||
|
||||
private int _bank4K;
|
||||
|
@ -35,23 +35,14 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
// shift register (it's the NOT of the EOR of four bits)
|
||||
private readonly byte[] _randomInputBits = { 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1 };
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_counters.Dispose();
|
||||
_tops.Dispose();
|
||||
_flags.Dispose();
|
||||
_bottoms.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
|
||||
ser.Sync("counters", ref _counters);
|
||||
ser.Sync("tops", ref _tops);
|
||||
ser.Sync("flags", ref _flags);
|
||||
ser.Sync("bottoms", ref _bottoms);
|
||||
ser.Sync("counters", ref _counters, false);
|
||||
ser.Sync("tops", ref _tops, false);
|
||||
ser.Sync("flags", ref _flags, false);
|
||||
ser.Sync("bottoms", ref _bottoms, false);
|
||||
ser.Sync("musicMode0", ref _musicModes[0]); // Silly, but I didn't want to support bool[] in Serializer just for this one variable
|
||||
ser.Sync("musicMode1", ref _musicModes[1]);
|
||||
ser.Sync("musicMode2", ref _musicModes[2]);
|
||||
|
@ -64,10 +55,10 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
|
||||
public override void HardReset()
|
||||
{
|
||||
_counters = new IntBuffer(8);
|
||||
_tops = new ByteBuffer(8);
|
||||
_flags = new ByteBuffer(8);
|
||||
_bottoms = new ByteBuffer(8);
|
||||
_counters = new int[8];
|
||||
_tops = new byte[8];
|
||||
_flags = new byte[8];
|
||||
_bottoms = new byte[8];
|
||||
_musicModes = new bool[3];
|
||||
_bank4K = 0;
|
||||
_currentRandomVal = 0;
|
||||
|
|
|
@ -32,7 +32,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
private const int RamBank1Offset = 1024;
|
||||
private int _rombank1K;
|
||||
private int _rambank1Toggle;
|
||||
private ByteBuffer _ram = new ByteBuffer(2048);
|
||||
private byte[] _ram = new byte[2048];
|
||||
|
||||
private bool _enableRam0;
|
||||
|
||||
|
@ -40,7 +40,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("toggle", ref _rombank1K);
|
||||
ser.Sync("ram", ref _ram);
|
||||
ser.Sync("ram", ref _ram, false);
|
||||
ser.Sync("EnableRam0", ref _enableRam0);
|
||||
ser.Sync("rambank1_toggle", ref _rambank1Toggle);
|
||||
}
|
||||
|
@ -49,20 +49,14 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
{
|
||||
_rombank1K = 0;
|
||||
_rambank1Toggle = 0;
|
||||
_ram = new ByteBuffer(2048);
|
||||
_ram = new byte[2048];
|
||||
_enableRam0 = false;
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_ram.Dispose();
|
||||
}
|
||||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
private byte ReadMem(ushort addr, bool peek)
|
||||
{
|
||||
|
|
|
@ -10,29 +10,23 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
internal class mEFSC : MapperBase
|
||||
{
|
||||
private int _bank4k;
|
||||
private ByteBuffer _ram = new ByteBuffer(128);
|
||||
private byte[] _ram = new byte[128];
|
||||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("bank4k", ref _bank4k);
|
||||
ser.Sync("auxRam", ref _ram);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_ram.Dispose();
|
||||
ser.Sync("auxRam", ref _ram, false);
|
||||
}
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_bank4k = 0;
|
||||
_ram = new ByteBuffer(128);
|
||||
_ram = new byte[128];
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
|
|
|
@ -9,29 +9,23 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
internal class mF4SC : MapperBase
|
||||
{
|
||||
private int _bank4k;
|
||||
private ByteBuffer _ram = new ByteBuffer(128);
|
||||
private byte[] _ram = new byte[128];
|
||||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("toggle", ref _bank4k);
|
||||
ser.Sync("auxRam", ref _ram);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_ram.Dispose();
|
||||
ser.Sync("auxRam", ref _ram, false);
|
||||
}
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_bank4k = 0;
|
||||
_ram = new ByteBuffer(128);
|
||||
_ram = new byte[128];
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
|
|
|
@ -9,29 +9,23 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
internal class mF6SC : MapperBase
|
||||
{
|
||||
private int _bank4k;
|
||||
private ByteBuffer _ram = new ByteBuffer(128);
|
||||
private byte[] _ram = new byte[128];
|
||||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("bank_4k", ref _bank4k);
|
||||
ser.Sync("auxRam", ref _ram);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_ram.Dispose();
|
||||
ser.Sync("auxRam", ref _ram, false);
|
||||
}
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_bank4k = 0;
|
||||
_ram = new ByteBuffer(128);
|
||||
_ram = new byte[128];
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
|
|
|
@ -9,16 +9,16 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
internal class mF8SC : MapperBase
|
||||
{
|
||||
private int _bank_4K;
|
||||
private ByteBuffer _ram = new ByteBuffer(128);
|
||||
private byte[] _ram = new byte[128];
|
||||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_bank_4K = 0;
|
||||
_ram = new ByteBuffer(128);
|
||||
_ram = new byte[128];
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
|
@ -89,13 +89,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("bank_4k", ref _bank_4K);
|
||||
ser.Sync("auxRam", ref _ram);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_ram.Dispose();
|
||||
ser.Sync("auxRam", ref _ram, false);
|
||||
}
|
||||
|
||||
private void Address(ushort addr)
|
||||
|
|
|
@ -17,25 +17,19 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
internal class mFA : MapperBase
|
||||
{
|
||||
private int _toggle;
|
||||
private ByteBuffer _ram = new ByteBuffer(256);
|
||||
private byte[] _ram = new byte[256];
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("toggle", ref _toggle);
|
||||
ser.Sync("auxRam", ref _ram);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
_ram.Dispose();
|
||||
base.Dispose();
|
||||
ser.Sync("auxRam", ref _ram, false);
|
||||
}
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_toggle = 0;
|
||||
_ram = new ByteBuffer(256);
|
||||
_ram = new byte[256];
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
|
|
|
@ -11,29 +11,23 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
|||
internal class mFA2 : MapperBase
|
||||
{
|
||||
private int _bank4k;
|
||||
private ByteBuffer _ram = new ByteBuffer(256);
|
||||
private byte[] _ram = new byte[256];
|
||||
|
||||
public override bool HasCartRam => true;
|
||||
|
||||
public override ByteBuffer CartRam => _ram;
|
||||
public override byte[] CartRam => _ram;
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("bank4k", ref _bank4k);
|
||||
ser.Sync("auxRam", ref _ram);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
_ram.Dispose();
|
||||
ser.Sync("auxRam", ref _ram, false);
|
||||
}
|
||||
|
||||
public override void HardReset()
|
||||
{
|
||||
_bank4k = 0;
|
||||
_ram = new ByteBuffer(256);
|
||||
_ram = new byte[256];
|
||||
base.HardReset();
|
||||
}
|
||||
|
||||
|
|
|
@ -10,18 +10,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask_32k, chr_bank_mask_4k;
|
||||
|
||||
//state
|
||||
IntBuffer chr_banks_4k = new IntBuffer(2);
|
||||
int[] chr_banks_4k = new int[2];
|
||||
int prg_bank_32k;
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
chr_banks_4k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr_banks_4k), ref chr_banks_4k);
|
||||
ser.Sync(nameof(chr_banks_4k), ref chr_banks_4k, false);
|
||||
ser.Sync(nameof(prg_bank_32k), ref prg_bank_32k);
|
||||
}
|
||||
|
||||
|
|
|
@ -42,11 +42,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
byte jump2_outer_bank; // needed to select between banks in 512K jump2 board
|
||||
|
||||
//regenerable state
|
||||
IntBuffer prg_banks_16k = new IntBuffer(2);
|
||||
int[] prg_banks_16k = new int[2];
|
||||
|
||||
//state
|
||||
int prg_reg_16k;
|
||||
ByteBuffer regs = new ByteBuffer(8);
|
||||
byte[] regs = new byte[8];
|
||||
bool irq_enabled;
|
||||
ushort irq_counter;
|
||||
ushort irq_latch;
|
||||
|
@ -57,7 +57,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_reg_16k), ref prg_reg_16k);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(irq_counter), ref irq_counter);
|
||||
ser.Sync(nameof(irq_enabled), ref irq_enabled);
|
||||
ser.Sync(nameof(irq_latch), ref irq_latch);
|
||||
|
@ -66,13 +66,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
SyncPRG();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
regs.Dispose();
|
||||
prg_banks_16k.Dispose();
|
||||
}
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
switch (Cart.board_type)
|
||||
|
|
|
@ -15,7 +15,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int chr;
|
||||
int prg_bank_mask_16k;
|
||||
byte prg_bank_16k;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -34,19 +34,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr), ref chr);
|
||||
ser.Sync(nameof(prg_bank_mask_16k), ref prg_bank_mask_16k);
|
||||
ser.Sync(nameof(prg_bank_16k), ref prg_bank_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
}
|
||||
|
||||
void SyncPRG()
|
||||
|
|
|
@ -12,18 +12,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
bool mirror_control_enabled;
|
||||
|
||||
//state
|
||||
IntBuffer prg_banks_16k = new IntBuffer(2);
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_banks_16k.Dispose();
|
||||
}
|
||||
int[] prg_banks_16k = new int[2];
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
}
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -99,19 +93,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask_16k;
|
||||
|
||||
//state
|
||||
IntBuffer prg_banks_16k = new IntBuffer(2);
|
||||
int[] prg_banks_16k = new int[2];
|
||||
int prg_block, prg_page;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_banks_16k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
ser.Sync(nameof(prg_block), ref prg_block);
|
||||
ser.Sync(nameof(prg_page), ref prg_page);
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Adapted from
|
||||
public sealed class CamericaGoldenFive : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer regs = new ByteBuffer(2);
|
||||
private byte[] regs = new byte[2];
|
||||
|
||||
private int prg_bank_mask_16k;
|
||||
|
||||
|
@ -26,16 +26,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("reg", ref regs);
|
||||
ser.Sync("reg", ref regs, false);
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
|
|
|
@ -8,9 +8,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// http://problemkaputt.de/everynes.htm#mapper83cony
|
||||
public class ConyA : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer prg_regs = new ByteBuffer(4);
|
||||
private ByteBuffer low = new ByteBuffer(4); // some kind of security feature?
|
||||
private ByteBuffer chr_regs = new ByteBuffer(8);
|
||||
private byte[] prg_regs = new byte[4];
|
||||
private byte[] low = new byte[4]; // some kind of security feature?
|
||||
private byte[] chr_regs = new byte[8];
|
||||
|
||||
private int prg_bank_mask_16k, prg_bank_mask_8k, chr_bank_mask_2k;
|
||||
private int IRQCount;
|
||||
|
@ -40,19 +40,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
}
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_regs.Dispose();
|
||||
low.Dispose();
|
||||
chr_regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_regs), ref prg_regs);
|
||||
ser.Sync(nameof(chr_regs), ref chr_regs);
|
||||
ser.Sync(nameof(prg_regs), ref prg_regs, false);
|
||||
ser.Sync(nameof(chr_regs), ref chr_regs, false);
|
||||
ser.Sync(nameof(IRQCount), ref IRQCount);
|
||||
ser.Sync(nameof(IRQa), ref IRQa);
|
||||
ser.Sync(nameof(bank), ref bank);
|
||||
|
@ -208,9 +200,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
public class ConyB : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer prg_regs = new ByteBuffer(4);
|
||||
private ByteBuffer low = new ByteBuffer(4); // some kind of security feature?
|
||||
private ByteBuffer chr_regs = new ByteBuffer(8);
|
||||
private byte[] prg_regs = new byte[4];
|
||||
private byte[] low = new byte[4]; // some kind of security feature?
|
||||
private byte[] chr_regs = new byte[8];
|
||||
|
||||
private int prg_bank_mask_16k, prg_bank_mask_8k, chr_bank_mask_2k;
|
||||
private int IRQCount;
|
||||
|
@ -242,8 +234,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_regs), ref prg_regs);
|
||||
ser.Sync(nameof(chr_regs), ref chr_regs);
|
||||
ser.Sync(nameof(prg_regs), ref prg_regs, false);
|
||||
ser.Sync(nameof(chr_regs), ref chr_regs, false);
|
||||
ser.Sync(nameof(IRQCount), ref IRQCount);
|
||||
ser.Sync(nameof(IRQa), ref IRQa);
|
||||
ser.Sync(nameof(bank), ref bank);
|
||||
|
@ -399,8 +391,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
public class ConyC : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer prg_regs = new ByteBuffer(2);
|
||||
private ByteBuffer chr_regs = new ByteBuffer(8);
|
||||
private byte[] prg_regs = new byte[2];
|
||||
private byte[] chr_regs = new byte[8];
|
||||
|
||||
private int prg_bank_mask_16k;
|
||||
private int IRQCount;
|
||||
|
@ -433,8 +425,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr_regs), ref chr_regs);
|
||||
ser.Sync(nameof(prg_regs), ref prg_regs);
|
||||
ser.Sync(nameof(chr_regs), ref chr_regs, false);
|
||||
ser.Sync(nameof(prg_regs), ref prg_regs, false);
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
|
|
|
@ -29,19 +29,19 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int exram_mode, chr_mode, prg_mode;
|
||||
int chr_reg_high;
|
||||
int ab_mode;
|
||||
IntBuffer regs_a = new IntBuffer(8);
|
||||
IntBuffer regs_b = new IntBuffer(4);
|
||||
IntBuffer regs_prg = new IntBuffer(4);
|
||||
IntBuffer nt_modes = new IntBuffer(4);
|
||||
int[] regs_a = new int[8];
|
||||
int[] regs_b = new int[4];
|
||||
int[] regs_prg = new int[4];
|
||||
int[] nt_modes = new int[4];
|
||||
byte nt_fill_tile, nt_fill_attrib;
|
||||
int wram_bank;
|
||||
byte[] EXRAM = new byte[1024];
|
||||
byte multiplicand, multiplier;
|
||||
MMC5Audio audio;
|
||||
//regeneratable state
|
||||
IntBuffer a_banks_1k = new IntBuffer(8);
|
||||
IntBuffer b_banks_1k = new IntBuffer(8);
|
||||
IntBuffer prg_banks_8k = new IntBuffer(4);
|
||||
int[] a_banks_1k = new int[8];
|
||||
int[] b_banks_1k = new int[8];
|
||||
int[] prg_banks_8k = new int[4];
|
||||
byte product_low, product_high;
|
||||
int last_nt_read;
|
||||
bool irq_audio;
|
||||
|
@ -71,10 +71,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ser.Sync(nameof(prg_mode), ref prg_mode);
|
||||
ser.Sync(nameof(chr_reg_high), ref chr_reg_high);
|
||||
ser.Sync(nameof(ab_mode), ref ab_mode);
|
||||
ser.Sync(nameof(regs_a), ref regs_a);
|
||||
ser.Sync(nameof(regs_b), ref regs_b);
|
||||
ser.Sync(nameof(regs_prg), ref regs_prg);
|
||||
ser.Sync(nameof(nt_modes), ref nt_modes);
|
||||
ser.Sync(nameof(regs_a), ref regs_a, false);
|
||||
ser.Sync(nameof(regs_b), ref regs_b, false);
|
||||
ser.Sync(nameof(regs_prg), ref regs_prg, false);
|
||||
ser.Sync(nameof(nt_modes), ref nt_modes, false);
|
||||
ser.Sync(nameof(nt_fill_tile), ref nt_fill_tile);
|
||||
ser.Sync(nameof(nt_fill_attrib), ref nt_fill_attrib);
|
||||
ser.Sync(nameof(wram_bank), ref wram_bank);
|
||||
|
@ -88,17 +88,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
audio.SyncState(ser);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs_a.Dispose();
|
||||
regs_b.Dispose();
|
||||
regs_prg.Dispose();
|
||||
a_banks_1k.Dispose();
|
||||
b_banks_1k.Dispose();
|
||||
prg_banks_8k.Dispose();
|
||||
nt_modes.Dispose();
|
||||
}
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
//analyze board type
|
||||
|
@ -719,7 +708,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
audio.Clock();
|
||||
}
|
||||
|
||||
void SetBank(IntBuffer target, int offset, int size, int value)
|
||||
void SetBank(int[] target, int offset, int size, int value)
|
||||
{
|
||||
value &= ~(size-1);
|
||||
for (int i = 0; i < size; i++)
|
||||
|
@ -802,9 +791,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
SetBank(b_banks_1k, 7, 1, regs_b[3]);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public class Mapper017 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
private ByteBuffer chr_regs_1k = new ByteBuffer(8);
|
||||
private byte[] prg_regs_8k = new byte[4];
|
||||
private byte[] chr_regs_1k = new byte[8];
|
||||
|
||||
private int prg_mask_8k;
|
||||
private int chr_mask_1k;
|
||||
|
@ -98,19 +98,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
}
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k, false);
|
||||
|
||||
ser.Sync(nameof(irq_enable), ref irq_enable);
|
||||
ser.Sync(nameof(irq_pending), ref irq_pending);
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
int prg_bank_mask_16k;
|
||||
byte prg_bank_16k;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -28,18 +28,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_bank_mask_16k), ref prg_bank_mask_16k);
|
||||
ser.Sync(nameof(prg_bank_16k), ref prg_bank_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
}
|
||||
|
||||
void SyncPRG()
|
||||
|
|
|
@ -15,23 +15,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
bool oneScreenHack;
|
||||
|
||||
//state
|
||||
ByteBuffer prg_regs_8k = new ByteBuffer(8);
|
||||
ByteBuffer chr_regs_1k = new ByteBuffer(8);
|
||||
byte[] prg_regs_8k = new byte[8];
|
||||
byte[] chr_regs_1k = new byte[8];
|
||||
int prg_mode, mirror_mode;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_regs_8k.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k);
|
||||
ser.Sync(nameof(prg_mode), ref chr_regs_1k);
|
||||
ser.Sync(nameof(mirror_mode), ref chr_regs_1k);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k, false);
|
||||
ser.Sync(nameof(prg_mode), ref prg_mode);
|
||||
ser.Sync(nameof(mirror_mode), ref mirror_mode);
|
||||
}
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
|
|
@ -15,24 +15,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask, chr_bank_mask;
|
||||
|
||||
//state
|
||||
ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
ByteBuffer chr_regs_1k = new ByteBuffer(8);
|
||||
byte[] prg_regs_8k = new byte[4];
|
||||
byte[] chr_regs_1k = new byte[8];
|
||||
bool irq_counter_enabled, irq_asserted;
|
||||
ushort irq_counter, irq_reload;
|
||||
int clock_counter;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k, false);
|
||||
ser.Sync(nameof(irq_counter_enabled), ref irq_counter_enabled);
|
||||
ser.Sync(nameof(irq_asserted), ref irq_asserted);
|
||||
ser.Sync(nameof(irq_counter), ref irq_counter);
|
||||
|
|
|
@ -23,8 +23,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
//state
|
||||
int latch;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
ByteBuffer chr_banks_8k = new ByteBuffer(1);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
byte[] chr_banks_8k = new byte[1];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -56,19 +56,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ApplyMemoryMapMask(chr_bank_mask_8k, chr_banks_8k);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
chr_banks_8k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(latch), ref latch);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(chr_banks_8k), ref chr_banks_8k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
ser.Sync(nameof(chr_banks_8k), ref chr_banks_8k, false);
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
|
|
|
@ -20,8 +20,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
//state
|
||||
int latch;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
ByteBuffer chr_banks_8k = new ByteBuffer(1);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
byte[] chr_banks_8k = new byte[1];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -53,19 +53,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ApplyMemoryMapMask(chr_bank_mask_8k, chr_banks_8k);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
chr_banks_8k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(latch), ref latch);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(chr_banks_8k), ref chr_banks_8k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
ser.Sync(nameof(chr_banks_8k), ref chr_banks_8k, false);
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
|
|
|
@ -6,8 +6,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
//http://wiki.nesdev.com/w/index.php/INES_Mapper_018
|
||||
|
||||
ByteBuffer prg_banks_8k = new ByteBuffer(4);
|
||||
ByteBuffer chr_banks_1k = new ByteBuffer(8);
|
||||
byte[] prg_banks_8k = new byte[4];
|
||||
byte[] chr_banks_1k = new byte[8];
|
||||
int chr_bank_mask_1k, prg_bank_mask_8k;
|
||||
int ppuclock;
|
||||
int irqclock;
|
||||
|
@ -51,8 +51,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k);
|
||||
ser.Sync(nameof(chr_banks_1k), ref chr_banks_1k);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k, false);
|
||||
ser.Sync(nameof(chr_banks_1k), ref chr_banks_1k, false);
|
||||
ser.Sync(nameof(ppuclock), ref ppuclock);
|
||||
ser.Sync(nameof(irqclock), ref irqclock);
|
||||
ser.Sync(nameof(irqreload), ref irqreload);
|
||||
|
@ -61,13 +61,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_8k.Dispose();
|
||||
chr_banks_1k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
{
|
||||
addr += 0x8000; //temporary
|
||||
|
|
|
@ -13,7 +13,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public int chr_reg;
|
||||
public int chip_offset;
|
||||
public bool cheetahmen = false;
|
||||
ByteBuffer eRAM = new ByteBuffer(4);
|
||||
byte[] eRAM = new byte[4];
|
||||
int chr_bank_mask_8k, prg_bank_mask_16k, prg_bank_mask_32k;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -54,16 +54,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ser.Sync(nameof(chr_reg), ref chr_reg);
|
||||
ser.Sync(nameof(prg_mode), ref prg_mode);
|
||||
ser.Sync("chip", ref chip_offset);
|
||||
ser.Sync(nameof(eRAM), ref eRAM);
|
||||
ser.Sync(nameof(eRAM), ref eRAM, false);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
eRAM.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void WriteEXP(int addr, byte value)
|
||||
{
|
||||
if (addr >= 0x1800)
|
||||
|
|
|
@ -3,20 +3,19 @@
|
|||
//fceux contains a comment in mmc3.cpp:
|
||||
//Code for emulating iNES mappers 4,12,44,45,47,49,52,74,114,115,116,118,119,165,205,214,215,245,249,250,254
|
||||
|
||||
using System;
|
||||
using BizHawk.Common;
|
||||
using BizHawk.Common.NumberExtensions;
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||
{
|
||||
public class MMC3 : IDisposable
|
||||
public class MMC3
|
||||
{
|
||||
//state
|
||||
public int reg_addr;
|
||||
public bool get_chr_mode => chr_mode; // one of the pirate mappers needs this
|
||||
public bool chr_mode;
|
||||
public bool prg_mode;
|
||||
public ByteBuffer regs = new ByteBuffer(8);
|
||||
public byte[] regs = new byte[8];
|
||||
|
||||
public byte mirror;
|
||||
int a12_old;
|
||||
|
@ -32,8 +31,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int irq_countdown;
|
||||
|
||||
//volatile state
|
||||
public ByteBuffer chr_regs_1k = new ByteBuffer(8);
|
||||
public ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
public byte[] chr_regs_1k = new byte[8];
|
||||
public byte[] prg_regs_8k = new byte[4];
|
||||
|
||||
//configuration
|
||||
public enum EMMC3Type
|
||||
|
@ -52,13 +51,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
}
|
||||
bool oldIrqType;
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
}
|
||||
|
||||
public NES.NESBoardBase.EMirrorType MirrorType
|
||||
{
|
||||
get
|
||||
|
@ -150,7 +142,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ser.Sync(nameof(reg_addr), ref reg_addr);
|
||||
ser.Sync(nameof(chr_mode), ref chr_mode);
|
||||
ser.Sync(nameof(prg_mode), ref prg_mode);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(mirror), ref mirror);
|
||||
ser.Sync(nameof(a12_old), ref a12_old);
|
||||
ser.Sync(nameof(irq_reload), ref irq_reload);
|
||||
|
@ -337,11 +329,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
//configuration
|
||||
protected int prg_mask, chr_mask;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
mmc3?.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Mapper for Aladdin Super Game
|
||||
public sealed class Mapper114 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer EXPREGS = new ByteBuffer(2);
|
||||
private byte[] EXPREGS = new byte[2];
|
||||
|
||||
private int prg_mask_16;
|
||||
|
||||
|
@ -28,16 +28,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
EXPREGS.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("expregs", ref EXPREGS);
|
||||
ser.Sync("expregs", ref EXPREGS, false);
|
||||
}
|
||||
|
||||
public override void WriteEXP(int addr, byte value)
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Adapted from Nestopia src
|
||||
public sealed class Mapper121 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(3);
|
||||
private byte[] exRegs = new byte[3];
|
||||
|
||||
private readonly byte[] lut = { 0x00, 0x83, 0x42, 0x00 };
|
||||
|
||||
|
@ -23,16 +23,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(exRegs), ref exRegs);
|
||||
ser.Sync(nameof(exRegs), ref exRegs, false);
|
||||
}
|
||||
|
||||
public override byte ReadEXP(int addr)
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Adapted from FCEUX src
|
||||
public sealed class Mapper123 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer EXPREGS = new ByteBuffer(8);
|
||||
private byte[] EXPREGS = new byte[8];
|
||||
|
||||
private byte[] sec = { 0, 3, 1, 5, 6, 7, 2, 4 };
|
||||
|
||||
|
@ -24,16 +24,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
EXPREGS.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("expregs", ref EXPREGS);
|
||||
ser.Sync("expregs", ref EXPREGS, false);
|
||||
}
|
||||
|
||||
public override void WriteEXP(int addr, byte value)
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Adapted from FCEUX src
|
||||
public class Mapper187 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(2);
|
||||
private byte[] exRegs = new byte[2];
|
||||
|
||||
private readonly byte[] prot_data = { 0x83, 0x83, 0x42, 0x00 };
|
||||
|
||||
|
@ -23,16 +23,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("expregs", ref exRegs);
|
||||
ser.Sync("expregs", ref exRegs, false);
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
|
|
|
@ -29,7 +29,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public class Mapper197_MMC3 : MMC3
|
||||
{
|
||||
//This board has 512k CHR ROM, so the ByteBuffer in the base class deosn't suffice.
|
||||
public IntBuffer chr_regs_1k_512 = new IntBuffer(8);
|
||||
public int[] chr_regs_1k_512 = new int[8];
|
||||
|
||||
public Mapper197_MMC3(NES.NESBoardBase board, int num_prg_banks) : base(board, num_prg_banks)
|
||||
{
|
||||
|
@ -59,13 +59,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr_regs_1k_512), ref chr_regs_1k_512);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
chr_regs_1k_512.Dispose();
|
||||
ser.Sync(nameof(chr_regs_1k_512), ref chr_regs_1k_512, false);
|
||||
}
|
||||
|
||||
public override int Get_CHRBank_1K(int addr)
|
||||
|
@ -74,6 +68,5 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
bank_1k = chr_regs_1k_512[bank_1k];
|
||||
return bank_1k;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Mapper199 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(4);
|
||||
private byte[] exRegs = new byte[4];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -26,16 +26,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(exRegs), ref exRegs);
|
||||
ser.Sync(nameof(exRegs), ref exRegs, false);
|
||||
}
|
||||
|
||||
public override byte ReadPPU(int addr)
|
||||
|
|
|
@ -4,7 +4,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Mapper208 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(6);
|
||||
private byte[] exRegs = new byte[6];
|
||||
|
||||
private readonly byte[] lut = {
|
||||
0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, 0x49, 0x19, 0x09, 0x59, 0x49, 0x19, 0x09,
|
||||
|
@ -39,16 +39,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("expregs", ref exRegs);
|
||||
ser.Sync("expregs", ref exRegs, false);
|
||||
}
|
||||
|
||||
public override byte ReadPRG(int addr)
|
||||
|
|
|
@ -4,9 +4,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public class Mapper215 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(4);
|
||||
private byte[] exRegs = new byte[4];
|
||||
|
||||
public ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
public byte[] prg_regs_8k = new byte[4];
|
||||
|
||||
private bool is_mk3;
|
||||
|
||||
|
@ -73,19 +73,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(exRegs), ref exRegs);
|
||||
ser.Sync(nameof(exRegs), ref exRegs, false);
|
||||
ser.Sync(nameof(is_mk3), ref is_mk3);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(prg_mask), ref prg_mask_8k);
|
||||
ser.Sync(nameof(chr_mask), ref chr_mask_1k);
|
||||
}
|
||||
|
|
|
@ -4,9 +4,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Mapper217 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(4);
|
||||
private byte[] exRegs = new byte[4];
|
||||
|
||||
public ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
public byte[] prg_regs_8k = new byte[4];
|
||||
private int prg_mask_8k, chr_mask_1k;
|
||||
private byte[] regs_sec = { 0, 6, 3, 7, 5, 2, 4, 1 };
|
||||
|
||||
|
@ -39,18 +39,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(exRegs), ref exRegs);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(exRegs), ref exRegs, false);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(prg_mask), ref prg_mask_8k);
|
||||
ser.Sync(nameof(chr_mask), ref chr_mask_1k);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Mapper254 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer regs = new ByteBuffer(2);
|
||||
private byte[] regs = new byte[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -21,16 +21,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
}
|
||||
|
||||
public override byte ReadWRAM(int addr)
|
||||
|
|
|
@ -4,9 +4,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public class MapperPocahontas : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(3);
|
||||
private byte[] exRegs = new byte[3];
|
||||
|
||||
public ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
public byte[] prg_regs_8k = new byte[4];
|
||||
|
||||
private int prg_mask_8k, chr_mask_1k;
|
||||
|
||||
|
@ -39,18 +39,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(exRegs), ref exRegs);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(exRegs), ref exRegs, false);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(prg_mask), ref prg_mask_8k);
|
||||
ser.Sync(nameof(chr_mask), ref chr_mask_1k);
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask_8k;
|
||||
|
||||
//state
|
||||
ByteBuffer prg_banks_8k = new ByteBuffer(4);
|
||||
byte[] prg_banks_8k = new byte[4];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -41,12 +41,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_8k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override byte ReadPRG(int addr)
|
||||
{
|
||||
addr = ApplyMemoryMap(13, prg_banks_8k, addr);
|
||||
|
@ -100,7 +94,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask_32k, chr_bank_mask_4k;
|
||||
|
||||
//state
|
||||
ByteBuffer chr = new ByteBuffer(2);
|
||||
byte[] chr = new byte[2];
|
||||
int prg;
|
||||
|
||||
|
||||
|
@ -35,12 +35,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
chr.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override byte ReadPPU(int addr)
|
||||
{
|
||||
if (addr < 0x2000)
|
||||
|
@ -83,7 +77,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg), ref prg);
|
||||
ser.Sync(nameof(chr), ref chr);
|
||||
ser.Sync(nameof(chr), ref chr, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int chr_bank_mask_2k;
|
||||
int prg_bank_mask_8k;
|
||||
int cur_reg = 0;
|
||||
ByteBuffer regs = new ByteBuffer(4);
|
||||
byte[] regs = new byte[4];
|
||||
bool lock_regs = false;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -30,15 +30,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(lock_regs), ref lock_regs);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
@ -54,7 +48,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
regs[cur_reg] = value;
|
||||
IncrementCounter();
|
||||
Sync45();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void Sync45()
|
||||
|
@ -78,7 +72,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
lock_regs = false;
|
||||
cur_reg = 0;
|
||||
regs = new ByteBuffer(4);
|
||||
regs = new byte[4];
|
||||
base.NESSoftReset();
|
||||
}
|
||||
|
||||
|
|
|
@ -61,8 +61,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
//state
|
||||
int addr_reg;
|
||||
ByteBuffer regs = new ByteBuffer(12);
|
||||
ByteBuffer prg_banks_8k = new ByteBuffer(4);
|
||||
byte[] regs = new byte[12];
|
||||
byte[] prg_banks_8k = new byte[4];
|
||||
int wram_bank;
|
||||
bool wram_ram_selected, wram_ram_enabled;
|
||||
ushort irq_counter;
|
||||
|
@ -74,8 +74,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(addr_reg), ref addr_reg);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k, false);
|
||||
ser.Sync(nameof(wram_bank), ref wram_bank);
|
||||
ser.Sync(nameof(wram_ram_selected), ref wram_ram_selected);
|
||||
ser.Sync(nameof(wram_ram_enabled), ref wram_ram_enabled);
|
||||
|
@ -87,13 +87,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
SyncIrq();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
regs.Dispose();
|
||||
prg_banks_8k.Dispose();
|
||||
}
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
//configure
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int chr;
|
||||
int prg_bank_mask_16k;
|
||||
byte prg_bank_16k;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -34,19 +34,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr), ref chr);
|
||||
ser.Sync(nameof(prg_bank_mask_16k), ref prg_bank_mask_16k);
|
||||
ser.Sync(nameof(prg_bank_16k), ref prg_bank_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
ser.Sync(nameof(holydiver), ref holydiver);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,15 +5,15 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Mapper090 : NES.NESBoardBase
|
||||
{
|
||||
ByteBuffer prg_regs = new ByteBuffer(4);
|
||||
IntBuffer chr_regs = new IntBuffer(8);
|
||||
IntBuffer nt_regs = new IntBuffer(4);
|
||||
byte[] prg_regs = new byte[4];
|
||||
int[] chr_regs = new int[8];
|
||||
int[] nt_regs = new int[4];
|
||||
|
||||
IntBuffer prg_banks = new IntBuffer(4);
|
||||
IntBuffer chr_banks = new IntBuffer(8);
|
||||
IntBuffer chr_latches = new IntBuffer(2);
|
||||
int[] prg_banks = new int[4];
|
||||
int[] chr_banks = new int[8];
|
||||
int[] chr_latches = new int[2];
|
||||
|
||||
ByteBuffer ram_bytes = new ByteBuffer(5);
|
||||
byte[] ram_bytes = new byte[5];
|
||||
|
||||
[MapperProp]
|
||||
public bool dipswitch_0;
|
||||
|
@ -131,14 +131,14 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
base.SyncState(ser);
|
||||
|
||||
ser.Sync(nameof(prg_regs), ref prg_regs);
|
||||
ser.Sync(nameof(chr_regs), ref chr_regs);
|
||||
ser.Sync(nameof(chr_latches), ref chr_latches);
|
||||
ser.Sync(nameof(nt_regs), ref nt_regs);
|
||||
ser.Sync(nameof(prg_regs), ref prg_regs, false);
|
||||
ser.Sync(nameof(chr_regs), ref chr_regs, false);
|
||||
ser.Sync(nameof(chr_latches), ref chr_latches, false);
|
||||
ser.Sync(nameof(nt_regs), ref nt_regs, false);
|
||||
|
||||
ser.Sync(nameof(prg_banks), ref prg_banks);
|
||||
ser.Sync(nameof(chr_banks), ref chr_banks);
|
||||
ser.Sync(nameof(ram_bytes), ref ram_bytes);
|
||||
ser.Sync(nameof(prg_banks), ref prg_banks, false);
|
||||
ser.Sync(nameof(chr_banks), ref chr_banks, false);
|
||||
ser.Sync(nameof(ram_bytes), ref ram_bytes, false);
|
||||
|
||||
ser.Sync(nameof(dipswitch_0), ref dipswitch_0);
|
||||
ser.Sync(nameof(dipswitch_1), ref dipswitch_1);
|
||||
|
@ -183,18 +183,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
Sync();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_regs.Dispose();
|
||||
chr_regs.Dispose();
|
||||
chr_latches.Dispose();
|
||||
nt_regs.Dispose();
|
||||
prg_banks.Dispose();
|
||||
chr_banks.Dispose();
|
||||
ram_bytes.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
private void Sync()
|
||||
{
|
||||
SyncIRQ();
|
||||
|
@ -203,7 +191,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
SyncNametables();
|
||||
}
|
||||
|
||||
private void SetBank(IntBuffer target, byte offset, byte size, int value)
|
||||
private void SetBank(int[] target, byte offset, byte size, int value)
|
||||
{
|
||||
value &= ~(size - 1);
|
||||
for (int i = 0; i < size; i++)
|
||||
|
|
|
@ -9,8 +9,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
//http://wiki.nesdev.com/w/index.php/INES_Mapper_091
|
||||
*/
|
||||
|
||||
ByteBuffer chr_regs_2k = new ByteBuffer(4);
|
||||
ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
byte[] chr_regs_2k = new byte[4];
|
||||
byte[] prg_regs_8k = new byte[4];
|
||||
int chr_bank_mask_2k, prg_bank_mask_8k;
|
||||
MMC3 mmc3;
|
||||
|
||||
|
@ -43,19 +43,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_regs_8k.Dispose();
|
||||
chr_regs_2k.Dispose();
|
||||
mmc3?.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
mmc3.SyncState(ser);
|
||||
ser.Sync("prg_regs", ref prg_regs_8k);
|
||||
ser.Sync("chr_regs", ref chr_regs_2k);
|
||||
ser.Sync("prg_regs", ref prg_regs_8k, false);
|
||||
ser.Sync("chr_regs", ref chr_regs_2k, false);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Mapper106 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer regs = new ByteBuffer(16);
|
||||
private byte[] regs = new byte[16];
|
||||
|
||||
private int prg_bank_mask_8k;
|
||||
private int chr_bank_mask_1k;
|
||||
|
@ -34,15 +34,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(IRQa), ref IRQa);
|
||||
ser.Sync(nameof(IRQCount), ref IRQCount);
|
||||
base.SyncState(ser);
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// specs pulled from Nintendulator sources
|
||||
public sealed class Mapper132 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer reg = new ByteBuffer(4);
|
||||
private byte[] reg = new byte[4];
|
||||
|
||||
//configuraton
|
||||
int prg_mask, chr_mask;
|
||||
|
@ -39,12 +39,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
reg.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public void sync(byte value)
|
||||
{
|
||||
prg=reg[2]>>2;
|
||||
|
@ -121,8 +115,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ser.Sync(nameof(prg), ref prg);
|
||||
ser.Sync(nameof(is172), ref is172);
|
||||
ser.Sync(nameof(is173), ref is173);
|
||||
ser.Sync(nameof(reg), ref reg);
|
||||
ser.Sync(nameof(reg), ref reg, false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Mapper142 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer reg = new ByteBuffer(8);
|
||||
private byte[] reg = new byte[8];
|
||||
private byte cmd;
|
||||
private int lastBank;
|
||||
|
||||
|
@ -28,15 +28,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
reg.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override byte ReadWRAM(int addr)
|
||||
{
|
||||
return ROM[(reg[4] << 13) + (addr & 0x1FFF)];
|
||||
return ROM[(reg[4] << 13) + (addr & 0x1FFF)];
|
||||
}
|
||||
|
||||
public override byte ReadPRG(int addr)
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// basic on FCEUX src
|
||||
public sealed class Mapper150 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer latch = new ByteBuffer(8);
|
||||
private byte[] latch = new byte[8];
|
||||
private int cmd;
|
||||
private int chr_mask;
|
||||
private int prg_mask;
|
||||
|
@ -27,16 +27,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
latch.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(latch), ref latch);
|
||||
ser.Sync(nameof(latch), ref latch, false);
|
||||
ser.Sync(nameof(cmd), ref cmd);
|
||||
}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Mapper162 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer reg = new ByteBuffer(8);
|
||||
private byte[] reg = new byte[8];
|
||||
private int prg_bank_mask_32k;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -26,15 +26,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
reg.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync("regs", ref reg);
|
||||
ser.Sync("regs", ref reg, false);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
//state
|
||||
int mirror;
|
||||
ByteBuffer prg_banks_8k = new ByteBuffer(4);
|
||||
ByteBuffer chr_banks_8k = new ByteBuffer(1);
|
||||
byte[] prg_banks_8k = new byte[4];
|
||||
byte[] chr_banks_8k = new byte[1];
|
||||
Bit sbw;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -46,13 +46,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_8k.Dispose();
|
||||
chr_banks_8k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
static readonly EMirrorType[] kMirrorTypes = {EMirrorType.Vertical,EMirrorType.Horizontal,EMirrorType.OneScreenA,EMirrorType.OneScreenB};
|
||||
void SyncMirror()
|
||||
{
|
||||
|
@ -125,8 +118,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(mirror), ref mirror);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k);
|
||||
ser.Sync(nameof(chr_banks_8k), ref chr_banks_8k);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k, false);
|
||||
ser.Sync(nameof(chr_banks_8k), ref chr_banks_8k, false);
|
||||
ser.Sync(nameof(sbw), ref sbw);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask_32k;
|
||||
|
||||
//state
|
||||
ByteBuffer prg_banks_32k = new ByteBuffer(1);
|
||||
byte[] prg_banks_32k = new byte[1];
|
||||
int reg4802;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -31,12 +31,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_32k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void WriteEXP(int addr, byte value)
|
||||
{
|
||||
switch (addr)
|
||||
|
@ -67,7 +61,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_32k), ref prg_banks_32k);
|
||||
ser.Sync(nameof(prg_banks_32k), ref prg_banks_32k, false);
|
||||
ser.Sync(nameof(reg4802), ref reg4802);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
int prg_bank_mask_16k;
|
||||
byte prg_bank_16k;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -28,18 +28,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_bank_mask_16k), ref prg_bank_mask_16k);
|
||||
ser.Sync(nameof(prg_bank_16k), ref prg_bank_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
}
|
||||
|
||||
void SyncPRG()
|
||||
|
|
|
@ -6,8 +6,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Adpated from FCEUX src
|
||||
public sealed class Mapper183 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer prg = new ByteBuffer(4);
|
||||
private ByteBuffer chr = new ByteBuffer(8);
|
||||
private byte[] prg = new byte[4];
|
||||
private byte[] chr = new byte[8];
|
||||
|
||||
private int IRQLatch = 0;
|
||||
private int IRQCount = 0;
|
||||
|
@ -33,18 +33,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg.Dispose();
|
||||
chr.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg), ref prg);
|
||||
ser.Sync(nameof(chr), ref chr);
|
||||
ser.Sync(nameof(prg), ref prg, false);
|
||||
ser.Sync(nameof(chr), ref chr, false);
|
||||
}
|
||||
|
||||
private void SetMirroring(int mirr)
|
||||
|
|
|
@ -4,8 +4,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public class Mapper186 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer _SRAM = new ByteBuffer(3072);
|
||||
private ByteBuffer regs = new ByteBuffer(4);
|
||||
private byte[] _SRAM = new byte[3072];
|
||||
private byte[] regs = new byte[4];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -20,17 +20,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
_SRAM.Dispose();
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync("SRAM", ref _SRAM);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync("SRAM", ref _SRAM, false);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
|
|
|
@ -47,10 +47,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
*/
|
||||
|
||||
int prg_bank_mask_8k;
|
||||
ByteBuffer prg_banks_8k = new ByteBuffer(4);
|
||||
byte[] prg_banks_8k = new byte[4];
|
||||
|
||||
int chr_bank_mask_2k;
|
||||
ByteBuffer chr_banks_2k = new ByteBuffer(4);
|
||||
byte[] chr_banks_2k = new byte[4];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -82,18 +82,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ApplyMemoryMapMask(chr_bank_mask_2k, chr_banks_2k);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_8k.Dispose();
|
||||
chr_banks_2k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k);
|
||||
ser.Sync(nameof(chr_banks_2k), ref chr_banks_2k);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k, false);
|
||||
ser.Sync(nameof(chr_banks_2k), ref chr_banks_2k, false);
|
||||
}
|
||||
|
||||
public override void WriteWRAM(int addr, byte value)
|
||||
|
|
|
@ -6,7 +6,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Ported from FCEUX
|
||||
public sealed class Mapper220 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer reg = new ByteBuffer(8);
|
||||
private byte[] reg = new byte[8];
|
||||
private int prg_mask_2k;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -24,15 +24,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
reg.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(reg), ref reg);
|
||||
ser.Sync(nameof(reg), ref reg, false);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public class Mapper221 : NES.NESBoardBase
|
||||
{
|
||||
IntBuffer regs = new IntBuffer(2);
|
||||
int[] regs = new int[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
bool prg_mode = false;
|
||||
int chr_reg;
|
||||
int prg_reg;
|
||||
ByteBuffer eRAM = new ByteBuffer(4);
|
||||
byte[] eRAM = new byte[4];
|
||||
int chr_bank_mask_8k, prg_bank_mask_16k, prg_bank_mask_32k;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -36,16 +36,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ser.Sync(nameof(prg_reg), ref prg_reg);
|
||||
ser.Sync(nameof(chr_reg), ref chr_reg);
|
||||
ser.Sync(nameof(prg_mode), ref prg_mode);
|
||||
ser.Sync(nameof(eRAM), ref eRAM);
|
||||
ser.Sync(nameof(eRAM), ref eRAM, false);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
eRAM.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
{
|
||||
addr += 0x8000;
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
//state
|
||||
int prg;
|
||||
bool vram_protected;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
|
||||
//1200-in-1
|
||||
//[NJXXX] Xiang Shuai Chuan Qi
|
||||
|
@ -36,12 +36,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override byte ReadPRG(int addr)
|
||||
{
|
||||
int bank_16k = addr >> 14;
|
||||
|
|
|
@ -10,7 +10,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask_32k;
|
||||
|
||||
//state
|
||||
ByteBuffer prg_banks_32k = new ByteBuffer(1);
|
||||
byte[] prg_banks_32k = new byte[1];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -31,12 +31,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_32k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override byte ReadEXP(int addr)
|
||||
{
|
||||
//some kind of magic number..
|
||||
|
@ -58,7 +52,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_32k), ref prg_banks_32k);
|
||||
ser.Sync(nameof(prg_banks_32k), ref prg_banks_32k, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
int reg_addr;
|
||||
bool var_a;
|
||||
ByteBuffer regs = new ByteBuffer(8);
|
||||
byte[] regs = new byte[8];
|
||||
int chr_bank_mask_8k, prg_bank_mask_32k;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -28,16 +28,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(reg_addr), ref reg_addr);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
|
|
|
@ -6,10 +6,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public sealed class Mapper246 : NES.NESBoardBase
|
||||
{
|
||||
int prg_bank_mask_8k;
|
||||
ByteBuffer prg_banks_8k = new ByteBuffer(4);
|
||||
byte[] prg_banks_8k = new byte[4];
|
||||
|
||||
int chr_bank_mask_2k;
|
||||
ByteBuffer chr_banks_2k = new ByteBuffer(4);
|
||||
byte[] chr_banks_2k = new byte[4];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -35,18 +35,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ApplyMemoryMapMask(chr_bank_mask_2k, chr_banks_2k);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_8k.Dispose();
|
||||
chr_banks_2k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k);
|
||||
ser.Sync(nameof(chr_banks_2k), ref chr_banks_2k);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k, false);
|
||||
ser.Sync(nameof(chr_banks_2k), ref chr_banks_2k, false);
|
||||
}
|
||||
|
||||
public override void WriteWRAM(int addr, byte value)
|
||||
|
|
|
@ -6,8 +6,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Adapted from FCEUX src
|
||||
public sealed class Mapper252 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer preg = new ByteBuffer(2);
|
||||
private ByteBuffer creg = new ByteBuffer(8);
|
||||
private byte[] preg = new byte[2];
|
||||
private byte[] creg = new byte[8];
|
||||
|
||||
private int prg_bank_mask_8k, chr_bank_mask_1k;
|
||||
private int IRQLatch, IRQClock, IRQCount;
|
||||
|
@ -33,18 +33,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
preg.Dispose();
|
||||
creg.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(preg), ref preg);
|
||||
ser.Sync(nameof(creg), ref creg);
|
||||
ser.Sync(nameof(preg), ref preg, false);
|
||||
ser.Sync(nameof(creg), ref creg, false);
|
||||
}
|
||||
|
||||
public override void ClockCPU()
|
||||
|
@ -60,7 +53,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
IRQSignal=true;
|
||||
IRQCount = IRQLatch;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,9 +5,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public class Mapper253 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer prg = new ByteBuffer(2);
|
||||
private ByteBuffer chrlo = new ByteBuffer(8);
|
||||
private ByteBuffer chrhi = new ByteBuffer(8);
|
||||
private byte[] prg = new byte[2];
|
||||
private byte[] chrlo = new byte[8];
|
||||
private byte[] chrhi = new byte[8];
|
||||
private bool vlock;
|
||||
private int IRQLatch, IRQClock, IRQCount;
|
||||
private bool IRQa;
|
||||
|
@ -31,20 +31,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg.Dispose();
|
||||
chrlo.Dispose();
|
||||
chrhi.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync("preg", ref prg);
|
||||
ser.Sync(nameof(chrlo), ref chrlo);
|
||||
ser.Sync(nameof(chrhi), ref chrhi);
|
||||
ser.Sync("preg", ref prg, false);
|
||||
ser.Sync(nameof(chrlo), ref chrlo, false);
|
||||
ser.Sync(nameof(chrhi), ref chrhi, false);
|
||||
}
|
||||
|
||||
public override void ClockCPU()
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask_16k;
|
||||
|
||||
//regenerable state
|
||||
IntBuffer prg_banks_16k = new IntBuffer(2);
|
||||
int[] prg_banks_16k = new int[2];
|
||||
|
||||
//state
|
||||
MMC1.MMC1_SerialController scnt;
|
||||
|
@ -74,12 +74,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
irq_destination = 0x20000000 | (val << 25);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_banks_16k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
|
@ -95,7 +89,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
ser.Sync(nameof(init_sequence), ref init_sequence);
|
||||
ser.Sync(nameof(chip_select), ref chip_select);
|
||||
ser.Sync(nameof(wram_disable), ref wram_disable);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
if (ser.IsReader) Sync();
|
||||
}
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
/// <summary>
|
||||
/// PRG bankswitching
|
||||
/// </summary>
|
||||
IntBuffer prg_banks_4k = new IntBuffer(8);
|
||||
int[] prg_banks_4k = new int[8];
|
||||
|
||||
/// <summary>
|
||||
/// whether vectors are currently patched. they should not be patched when running init/play routines because data from the ends of banks might get used
|
||||
|
@ -75,16 +75,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_4k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_4k), ref prg_banks_4k);
|
||||
ser.Sync(nameof(prg_banks_4k), ref prg_banks_4k, false);
|
||||
ser.Sync(nameof(Patch_Vectors), ref Patch_Vectors);
|
||||
ser.Sync(nameof(CurrentSong), ref CurrentSong);
|
||||
ser.Sync(nameof(InitPending), ref InitPending);
|
||||
|
|
|
@ -21,8 +21,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int chr_bank_mask_1k;
|
||||
|
||||
//state
|
||||
IntBuffer prg_banks_8k = new IntBuffer(4);
|
||||
IntBuffer chr_banks_1k = new IntBuffer(12);
|
||||
int[] prg_banks_8k = new int[4];
|
||||
int[] chr_banks_1k = new int[12];
|
||||
bool[] vram_enable = new bool[3];
|
||||
|
||||
int irq_counter;
|
||||
|
@ -35,18 +35,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
byte prgram_write = 0;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_banks_8k.Dispose();
|
||||
chr_banks_1k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k);
|
||||
ser.Sync(nameof(chr_banks_1k), ref chr_banks_1k);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k, false);
|
||||
ser.Sync(nameof(chr_banks_1k), ref chr_banks_1k, false);
|
||||
for (int i = 0; i < vram_enable.Length; i++)
|
||||
ser.Sync("vram_enable_" + i, ref vram_enable[i]);
|
||||
ser.Sync(nameof(irq_counter), ref irq_counter);
|
||||
|
@ -138,7 +131,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
{
|
||||
addr &= 0xF800;
|
||||
|
|
|
@ -10,11 +10,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
//state
|
||||
int reg_addr;
|
||||
ByteBuffer regs = new ByteBuffer(8);
|
||||
byte[] regs = new byte[8];
|
||||
|
||||
//volatile state
|
||||
IntBuffer chr_regs_1k = new IntBuffer(8);
|
||||
ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
int[] chr_regs_1k = new int[8];
|
||||
byte[] prg_regs_8k = new byte[4];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -36,19 +36,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
regs.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(reg_addr), ref reg_addr);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(chr_outer_reg), ref chr_outer_reg);
|
||||
Sync();
|
||||
}
|
||||
|
|
|
@ -5,21 +5,20 @@
|
|||
|
||||
//TODO - prg is 4 bits, chr is 6 bits
|
||||
|
||||
using System;
|
||||
using BizHawk.Common;
|
||||
|
||||
namespace BizHawk.Emulation.Cores.Nintendo.NES
|
||||
{
|
||||
//also, Namcot109, Namcot118, Namcot119 chips are this exact same thing
|
||||
public class Namcot108Chip : IDisposable
|
||||
public class Namcot108Chip
|
||||
{
|
||||
//state
|
||||
int reg_addr;
|
||||
ByteBuffer regs = new ByteBuffer(8);
|
||||
byte[] regs = new byte[8];
|
||||
|
||||
//volatile state
|
||||
ByteBuffer chr_regs_1k = new ByteBuffer(8);
|
||||
ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
byte[] chr_regs_1k = new byte[8];
|
||||
byte[] prg_regs_8k = new byte[4];
|
||||
|
||||
NES.NESBoardBase board;
|
||||
public Namcot108Chip(NES.NESBoardBase board)
|
||||
|
@ -29,17 +28,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
Sync();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
}
|
||||
|
||||
public virtual void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(reg_addr), ref reg_addr);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
Sync();
|
||||
}
|
||||
|
||||
|
@ -112,11 +104,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
static byte[] TKO = { 0xFF, 0xBF, 0xB7, 0x97, 0x97, 0x17, 0x57, 0x4F, 0x6F, 0x6B, 0xEB, 0xA9, 0xB1, 0x90, 0x94, 0x14,
|
||||
0x56, 0x4E, 0x6F, 0x6B, 0xEB, 0xA9, 0xB1, 0x90, 0xD4, 0x5C, 0x3E, 0x26, 0x87, 0x83, 0x13, 0x51};
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
mapper?.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
|
@ -200,7 +187,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
base.WritePPU(addr, value);
|
||||
}
|
||||
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
{
|
||||
mapper.WritePRG(addr, value);
|
||||
|
|
|
@ -13,29 +13,21 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
//state
|
||||
byte prg_reg;
|
||||
IntBuffer prg_banks_8k = new IntBuffer(4);
|
||||
IntBuffer chr_banks_4k = new IntBuffer(4);
|
||||
IntBuffer chr_latches = new IntBuffer(2);
|
||||
int[] prg_banks_8k = new int[4];
|
||||
int[] chr_banks_4k = new int[4];
|
||||
int[] chr_latches = new int[2];
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_reg), ref prg_reg);
|
||||
ser.Sync(nameof(chr_banks_4k), ref chr_banks_4k);
|
||||
ser.Sync(nameof(chr_latches), ref chr_latches);
|
||||
ser.Sync(nameof(chr_banks_4k), ref chr_banks_4k, false);
|
||||
ser.Sync(nameof(chr_latches), ref chr_latches, false);
|
||||
|
||||
if (ser.IsReader)
|
||||
SyncPRG();
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_banks_8k.Dispose();
|
||||
chr_banks_4k.Dispose();
|
||||
chr_latches.Dispose();
|
||||
}
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
switch (Cart.board_type)
|
||||
|
@ -167,7 +159,5 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
addr = (bank_8k << 13) | ofs;
|
||||
return ROM[addr];
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -4,7 +4,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class Subor : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer regs = new ByteBuffer(4);
|
||||
private byte[] regs = new byte[4];
|
||||
private bool is167;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -23,16 +23,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(is167), ref is167);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int chr;
|
||||
int prg_bank_mask_16k;
|
||||
byte prg_bank_16k;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -32,19 +32,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr), ref chr);
|
||||
ser.Sync(nameof(prg_bank_mask_16k), ref prg_bank_mask_16k);
|
||||
ser.Sync(nameof(prg_bank_16k), ref prg_bank_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
}
|
||||
|
||||
void SyncPRG()
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
int prg_bank_mask_16k;
|
||||
byte prg_bank_16k;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -32,18 +32,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_bank_mask_16k), ref prg_bank_mask_16k);
|
||||
ser.Sync(nameof(prg_bank_16k), ref prg_bank_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
}
|
||||
|
||||
void SyncPRG()
|
||||
|
@ -69,6 +63,4 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return ROM[addr];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -12,8 +12,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
//state
|
||||
bool toggle;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
ByteBuffer chr_banks_2k = new ByteBuffer(4);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
byte[] chr_banks_2k = new byte[4];
|
||||
int irq_counter;
|
||||
bool irq_enable;
|
||||
bool irq_asserted;
|
||||
|
@ -28,8 +28,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(toggle), ref toggle);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(chr_banks_2k), ref chr_banks_2k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
ser.Sync(nameof(chr_banks_2k), ref chr_banks_2k, false);
|
||||
ser.Sync(nameof(irq_counter), ref irq_counter);
|
||||
ser.Sync(nameof(irq_enable), ref irq_enable);
|
||||
ser.Sync(nameof(irq_asserted), ref irq_asserted);
|
||||
|
|
|
@ -13,25 +13,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask, chr_bank_mask, nt_bank_mask;
|
||||
|
||||
//state
|
||||
ByteBuffer chr_regs_2k = new ByteBuffer(4);
|
||||
ByteBuffer nt_regs = new ByteBuffer(2);
|
||||
ByteBuffer prg_regs_16k = new ByteBuffer(2);
|
||||
byte[] chr_regs_2k = new byte[4];
|
||||
byte[] nt_regs = new byte[2];
|
||||
byte[] prg_regs_16k = new byte[2];
|
||||
bool flag_m, flag_r;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
chr_regs_2k.Dispose();
|
||||
nt_regs.Dispose();
|
||||
prg_regs_16k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr_regs_2k), ref chr_regs_2k);
|
||||
ser.Sync(nameof(nt_regs), ref nt_regs);
|
||||
ser.Sync(nameof(prg_regs_16k), ref prg_regs_16k);
|
||||
ser.Sync(nameof(chr_regs_2k), ref chr_regs_2k, false);
|
||||
ser.Sync(nameof(nt_regs), ref nt_regs, false);
|
||||
ser.Sync(nameof(prg_regs_16k), ref prg_regs_16k, false);
|
||||
ser.Sync(nameof(flag_m), ref flag_m);
|
||||
ser.Sync(nameof(flag_r), ref flag_r);
|
||||
}
|
||||
|
|
|
@ -45,12 +45,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
SyncCHR();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
chr_banks_4k.Dispose();
|
||||
prg_banks_16k.Dispose();
|
||||
}
|
||||
|
||||
public void SyncState(Serializer ser)
|
||||
{
|
||||
scnt.SyncState(ser);
|
||||
|
@ -93,8 +87,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg;
|
||||
|
||||
//regenerable state
|
||||
readonly IntBuffer chr_banks_4k = new IntBuffer(2);
|
||||
readonly IntBuffer prg_banks_16k = new IntBuffer(2);
|
||||
readonly int[] chr_banks_4k = new int[2];
|
||||
readonly int[] prg_banks_16k = new int[2];
|
||||
|
||||
public class MMC1_SerialController
|
||||
{
|
||||
|
@ -542,12 +536,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
SetMirrorType(mmc1.mirror);
|
||||
ppuclock = pputimeout;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
mmc1?.Dispose();
|
||||
}
|
||||
} //class SxROM
|
||||
|
||||
class SoROM : SuROM
|
||||
|
|
|
@ -12,7 +12,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int chr;
|
||||
int prg_bank_mask_16k;
|
||||
byte prg_bank_16k;
|
||||
ByteBuffer prg_banks_16k = new ByteBuffer(2);
|
||||
byte[] prg_banks_16k = new byte[2];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -31,19 +31,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_banks_16k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr), ref chr);
|
||||
ser.Sync(nameof(prg_bank_mask_16k), ref prg_bank_mask_16k);
|
||||
ser.Sync(nameof(prg_bank_16k), ref prg_bank_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k);
|
||||
ser.Sync(nameof(prg_banks_16k), ref prg_banks_16k, false);
|
||||
}
|
||||
|
||||
void SyncPRG()
|
||||
|
|
|
@ -11,10 +11,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int chr_bank_mask_1k;
|
||||
|
||||
//regenerable state
|
||||
IntBuffer prg_banks_8k = new IntBuffer(4);
|
||||
IntBuffer chr_banks_1k = new IntBuffer(8);
|
||||
int[] prg_banks_8k = new int[4];
|
||||
int[] chr_banks_1k = new int[8];
|
||||
//state
|
||||
IntBuffer regs = new IntBuffer(16);
|
||||
int[] regs = new int[16];
|
||||
int address;
|
||||
bool chr_1k, chr_mode, prg_mode;
|
||||
//irq
|
||||
|
@ -28,19 +28,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int irq_countdown_2 = 0;
|
||||
bool clock_scanline_irq;
|
||||
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_banks_8k.Dispose();
|
||||
chr_banks_1k.Dispose();
|
||||
regs.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(address), ref address);
|
||||
ser.Sync(nameof(chr_1k), ref chr_1k);
|
||||
ser.Sync(nameof(chr_mode), ref chr_mode);
|
||||
|
|
|
@ -68,24 +68,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
|
||||
//state
|
||||
ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
ByteBuffer chr_regs_1k = new ByteBuffer(8);
|
||||
byte[] prg_regs_8k = new byte[4];
|
||||
byte[] chr_regs_1k = new byte[8];
|
||||
int mirror_mode;
|
||||
MMC3Variant mmc3;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
prg_regs_8k.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
mmc3?.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
mmc3?.SyncState(ser);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k, false);
|
||||
ser.Sync(nameof(mirror_mode), ref mirror_mode);
|
||||
}
|
||||
|
||||
|
|
|
@ -45,25 +45,18 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int prg_bank_mask, chr_bank_mask;
|
||||
bool tlsrewire = false;
|
||||
// state
|
||||
ByteBuffer chr_regs_1k = new ByteBuffer(8);
|
||||
ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
byte[] chr_regs_1k = new byte[8];
|
||||
byte[] prg_regs_8k = new byte[4];
|
||||
bool wramenable = false;
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k, false);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(wramenable), ref wramenable);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
}
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
//configure
|
||||
|
|
|
@ -61,23 +61,16 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// config
|
||||
int prg_bank_mask, chr_bank_mask;
|
||||
// state
|
||||
ByteBuffer prg_regs_8k = new ByteBuffer(4);
|
||||
ByteBuffer chr_regs_1k = new ByteBuffer(8);
|
||||
byte[] prg_regs_8k = new byte[4];
|
||||
byte[] chr_regs_1k = new byte[8];
|
||||
bool ChrMode;
|
||||
bool[] wramenable = new bool[3];
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(chr_regs_1k), ref chr_regs_1k, false);
|
||||
ser.Sync(nameof(ChrMode), ref ChrMode);
|
||||
for (int i = 0; i < wramenable.Length; i++)
|
||||
ser.Sync("wramenable_" + i, ref wramenable[i]);
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class UNIF_BMC_12_IN_1 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer regs = new ByteBuffer(2);
|
||||
private byte[] regs = new byte[2];
|
||||
private byte ctrl;
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
|
@ -23,17 +23,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
ser.Sync(nameof(ctrl), ref ctrl);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
{
|
||||
addr += 0x8000;
|
||||
|
|
|
@ -5,7 +5,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Adapted from FCEUX src
|
||||
public class UNIF_BMC_64in1_NR : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer regs = new ByteBuffer(4);
|
||||
private byte[] regs = new byte[4];
|
||||
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -25,12 +25,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
regs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void WriteEXP(int addr, byte value)
|
||||
{
|
||||
if (addr >= 0x1000 && addr <= 0x1003)
|
||||
|
@ -89,7 +83,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(regs), ref regs);
|
||||
ser.Sync(nameof(regs), ref regs, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,8 +7,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
[MapperProp]
|
||||
public int BMC_BS_5_DipSwitch;
|
||||
|
||||
private IntBuffer reg_prg = new IntBuffer(4);
|
||||
private IntBuffer reg_chr = new IntBuffer(4);
|
||||
private int[] reg_prg = new int[4];
|
||||
private int[] reg_chr = new int[4];
|
||||
|
||||
private int _prgMask8k;
|
||||
private int _chrMask2k;
|
||||
|
@ -53,8 +53,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(reg_prg), ref reg_prg);
|
||||
ser.Sync(nameof(reg_chr), ref reg_chr);
|
||||
ser.Sync(nameof(reg_prg), ref reg_prg, false);
|
||||
ser.Sync(nameof(reg_chr), ref reg_chr, false);
|
||||
ser.Sync(nameof(BMC_BS_5_DipSwitch), ref BMC_BS_5_DipSwitch);
|
||||
}
|
||||
|
||||
|
|
|
@ -7,8 +7,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Adapted from FCEUX src
|
||||
public sealed class UNIF_BMC_Ghostbusters63in1 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer reg = new ByteBuffer(2);
|
||||
private readonly int[] banks = new [] { 0, 0, 524288, 1048576};
|
||||
private byte[] reg = new byte[2];
|
||||
private readonly int[] banks = { 0, 0, 524288, 1048576 };
|
||||
private int bank;
|
||||
|
||||
[MapperProp]
|
||||
|
@ -31,15 +31,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
reg.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(reg), ref reg);
|
||||
ser.Sync(nameof(reg), ref reg, false);
|
||||
ser.Sync(nameof(bank), ref bank);
|
||||
ser.Sync(nameof(bank), ref Ghostbusters63in1_63set);
|
||||
ser.Sync(nameof(bank), ref Ghostbusters63in1_chip_22_select);
|
||||
|
|
|
@ -4,9 +4,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class UNIF_BMC_FK23C : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(8);
|
||||
private IntBuffer chr_regs_1k = new IntBuffer(8);
|
||||
public IntBuffer prg_regs_8k = new IntBuffer(4);
|
||||
private byte[] exRegs = new byte[8];
|
||||
private int[] chr_regs_1k = new int[8];
|
||||
public int[] prg_regs_8k = new int[4];
|
||||
|
||||
[MapperProp]
|
||||
public bool dip_switch;
|
||||
|
@ -71,19 +71,11 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
chr_regs_1k.Dispose();
|
||||
prg_regs_8k.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(exRegs), ref exRegs);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k);
|
||||
ser.Sync(nameof(exRegs), ref exRegs, false);
|
||||
ser.Sync(nameof(prg_regs_8k), ref prg_regs_8k, false);
|
||||
ser.Sync(nameof(prg_mask), ref prg_mask_8k);
|
||||
ser.Sync(nameof(chr_mask), ref chr_mask_1k);
|
||||
ser.Sync(nameof(dip_switch), ref dip_switch);
|
||||
|
|
|
@ -4,7 +4,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class UNIF_BMC_Super24in1SC03 : MMC3Board_Base
|
||||
{
|
||||
private ByteBuffer exRegs = new ByteBuffer(3);
|
||||
private byte[] exRegs = new byte[3];
|
||||
private readonly int[] masko8 = { 63, 31, 15, 1, 3, 0, 0, 0 };
|
||||
public override bool Configure(NES.EDetectionOrigin origin)
|
||||
{
|
||||
|
@ -25,16 +25,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
exRegs.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(exRegs), ref exRegs);
|
||||
ser.Sync(nameof(exRegs), ref exRegs, false);
|
||||
}
|
||||
|
||||
public override void WriteEXP(int addr, byte value)
|
||||
|
|
|
@ -6,8 +6,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// Super Mario Bros. Pocker Mali (Unl)
|
||||
public class UNIF_UNL_AX5705 : NES.NESBoardBase
|
||||
{
|
||||
private IntBuffer prg_reg = new IntBuffer(2);
|
||||
private IntBuffer chr_reg = new IntBuffer(8);
|
||||
private int[] prg_reg = new int[2];
|
||||
private int[] chr_reg = new int[8];
|
||||
|
||||
private int _prgMask8k;
|
||||
private int _chrMask1k;
|
||||
|
@ -33,8 +33,8 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_reg), ref prg_reg);
|
||||
ser.Sync(nameof(chr_reg), ref chr_reg);
|
||||
ser.Sync(nameof(prg_reg), ref prg_reg, false);
|
||||
ser.Sync(nameof(chr_reg), ref chr_reg, false);
|
||||
}
|
||||
|
||||
public override void WritePRG(int addr, byte value)
|
||||
|
|
|
@ -4,7 +4,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
{
|
||||
public sealed class UNIF_UNL_LH10 : NES.NESBoardBase
|
||||
{
|
||||
private ByteBuffer reg = new ByteBuffer(8);
|
||||
private byte[] reg = new byte[8];
|
||||
private int cmd;
|
||||
|
||||
private int prg_bank_mask_8;
|
||||
|
@ -28,15 +28,9 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
reg.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
ser.Sync(nameof(reg), ref reg);
|
||||
ser.Sync(nameof(reg), ref reg, false);
|
||||
ser.Sync(nameof(cmd), ref cmd);
|
||||
base.SyncState(ser);
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
private byte prg0;
|
||||
private byte prg1;
|
||||
private byte swap;
|
||||
private ByteBuffer chr = new ByteBuffer(8);
|
||||
private byte[] chr = new byte[8];
|
||||
|
||||
private bool IRQa;
|
||||
private int IRQCount;
|
||||
|
@ -31,19 +31,13 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
return true;
|
||||
}
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
chr.Dispose();
|
||||
base.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg0), ref prg0);
|
||||
ser.Sync(nameof(prg1), ref prg1);
|
||||
ser.Sync(nameof(swap), ref swap);
|
||||
ser.Sync(nameof(chr), ref chr);
|
||||
ser.Sync(nameof(chr), ref chr, false);
|
||||
ser.Sync(nameof(IRQa), ref IRQa);
|
||||
ser.Sync(nameof(IRQCount), ref IRQCount);
|
||||
ser.Sync(nameof(IRQpre), ref IRQpre);
|
||||
|
|
|
@ -11,26 +11,19 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
int chr_bank_mask_4k;
|
||||
|
||||
//state
|
||||
IntBuffer prg_banks_8k = new IntBuffer(4);
|
||||
IntBuffer chr_banks_4k = new IntBuffer(2);
|
||||
int[] prg_banks_8k = new int[4];
|
||||
int[] chr_banks_4k = new int[2];
|
||||
int[] chr_regs_4k = new int[2];
|
||||
|
||||
//the VS actually does have 2 KB of nametable address space
|
||||
//let's make the extra space here, instead of in the main NES to avoid confusion
|
||||
byte[] CIRAM_VS = new byte[0x800];
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
prg_banks_8k.Dispose();
|
||||
chr_banks_4k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k);
|
||||
ser.Sync(nameof(chr_banks_4k), ref chr_banks_4k);
|
||||
ser.Sync(nameof(prg_banks_8k), ref prg_banks_8k, false);
|
||||
ser.Sync(nameof(chr_banks_4k), ref chr_banks_4k, false);
|
||||
if (NES.IsVS)
|
||||
{
|
||||
ser.Sync("VS_CIRAM", ref CIRAM_VS, false);
|
||||
|
|
|
@ -73,7 +73,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
public int[] chr_bank_reg_1k = new int[16];
|
||||
bool prg_mode;
|
||||
public byte[] prg_banks_8k = new byte[4];
|
||||
public IntBuffer chr_banks_1k = new IntBuffer(8);
|
||||
public int[] chr_banks_1k = new int[8];
|
||||
bool irq_mode;
|
||||
bool irq_enabled, irq_pending, irq_autoen;
|
||||
byte irq_reload;
|
||||
|
@ -86,12 +86,6 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
|
|||
// needed for 2-in-1 - Yuu Yuu + Dragonball Z [p1][!]
|
||||
bool _isBMC = false;
|
||||
|
||||
public override void Dispose()
|
||||
{
|
||||
base.Dispose();
|
||||
chr_banks_1k.Dispose();
|
||||
}
|
||||
|
||||
public override void SyncState(Serializer ser)
|
||||
{
|
||||
base.SyncState(ser);
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue