122 lines
1.9 KiB
C#
122 lines
1.9 KiB
C#
using System;
|
|
|
|
using BizHawk.Emulation.Common;
|
|
|
|
/*
|
|
0x0000 - 0x7FFF ROM
|
|
0x8000 - 0xC7FF Unmapped
|
|
0xC800 - 0xCFFF RAM (and shadows)
|
|
0xD000 - 0XD7FF 6522 (and shadows)
|
|
0xD800 - 0xDFFF 6522 + RAM
|
|
0xE000 - 0xEFFF Minestorm
|
|
0xF000 - 0xFFFF BIOS
|
|
*/
|
|
|
|
namespace BizHawk.Emulation.Cores.Consoles.Vectrex
|
|
{
|
|
public partial class VectrexHawk
|
|
{
|
|
public byte ReadMemory(ushort addr)
|
|
{
|
|
uint flags = (uint)MemoryCallbackFlags.AccessRead;
|
|
MemoryCallbacks.CallMemoryCallbacks(addr, 0, flags, "System Bus");
|
|
|
|
if (addr < 0x8000)
|
|
{
|
|
return mapper.ReadMemory(addr);
|
|
}
|
|
else if (addr < 0xC800)
|
|
{
|
|
return 0xFF;
|
|
}
|
|
else if (addr < 0xD000)
|
|
{
|
|
return RAM[(addr-0xC800) & 0x3FF];
|
|
}
|
|
else if (addr < 0xD800)
|
|
{
|
|
return Read_Registers(addr & 0xF);
|
|
}
|
|
else if (addr < 0xE000)
|
|
{
|
|
return 0xFF;
|
|
}
|
|
else if (addr < 0xF000)
|
|
{
|
|
return minestorm[addr-0xE000];
|
|
}
|
|
else
|
|
{
|
|
return _bios[addr - 0xF000];
|
|
}
|
|
}
|
|
|
|
public void WriteMemory(ushort addr, byte value)
|
|
{
|
|
uint flags = (uint)MemoryCallbackFlags.AccessWrite;
|
|
MemoryCallbacks.CallMemoryCallbacks(addr, value, flags, "System Bus");
|
|
|
|
if (addr < 0x8000)
|
|
{
|
|
|
|
}
|
|
else if (addr < 0xC800)
|
|
{
|
|
|
|
}
|
|
else if (addr < 0xD000)
|
|
{
|
|
RAM[(addr - 0xC800) & 0x3FF] = value;
|
|
}
|
|
else if (addr < 0xD800)
|
|
{
|
|
Write_Registers(addr & 0xF, value);
|
|
}
|
|
else if (addr < 0xE000)
|
|
{
|
|
|
|
}
|
|
else if (addr < 0xF000)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
public byte PeekMemory(ushort addr)
|
|
{
|
|
if (addr < 0x8000)
|
|
{
|
|
return mapper.ReadMemory(addr);
|
|
}
|
|
else if (addr < 0xC800)
|
|
{
|
|
return 0xFF;
|
|
}
|
|
else if (addr < 0xD000)
|
|
{
|
|
return RAM[(addr - 0xC800) & 0x3FF];
|
|
}
|
|
else if (addr < 0xD800)
|
|
{
|
|
return Read_Registers(addr & 0xF);
|
|
}
|
|
else if (addr < 0xE000)
|
|
{
|
|
return 0xFF;
|
|
}
|
|
else if (addr < 0xF000)
|
|
{
|
|
return minestorm[addr - 0xE000];
|
|
}
|
|
else
|
|
{
|
|
return _bios[addr - 0xF000];
|
|
}
|
|
}
|
|
}
|
|
}
|