BizHawk/BizHawk.Emulation.Cores/Computers/Commodore64/MOS/Chip23XX.cs

61 lines
1.1 KiB
C#

using System;
using BizHawk.Common;
namespace BizHawk.Emulation.Cores.Computers.Commodore64
{
// ROM chips
// 2332: 32 kbit (4kbyte)
// 2364: 64 kbit (8kbyte)
// 23128: 128 kbit (16kbyte)
public enum Chip23XXmodel
{
Chip2332,
Chip2364,
Chip23128
}
sealed public class Chip23XX
{
int addrMask;
byte[] rom;
public Chip23XX(Chip23XXmodel model, byte[] data)
{
switch (model)
{
case Chip23XXmodel.Chip2332:
rom = new byte[0x1000];
addrMask = 0xFFF;
break;
case Chip23XXmodel.Chip2364:
rom = new byte[0x2000];
addrMask = 0x1FFF;
break;
case Chip23XXmodel.Chip23128:
rom = new byte[0x4000];
addrMask = 0x3FFF;
break;
default:
throw new Exception("Invalid chip model.");
}
Array.Copy(data, rom, rom.Length);
}
public byte Peek(int addr)
{
return rom[addr & addrMask];
}
public byte Read(int addr)
{
return rom[addr & addrMask];
}
public void SyncState(Serializer ser)
{
SaveState.SyncObject(ser, this);
}
}
}