Scratchpad RAM, Graphics ROM, and Graphics RAM are apparently all 8-bit.
This commit is contained in:
parent
f42b96ba7d
commit
c6cf18061f
|
@ -15,7 +15,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
STIC Stic;
|
||||
PSG Psg;
|
||||
|
||||
public void LoadExecutive_ROM()
|
||||
public void LoadExecutiveRom()
|
||||
{
|
||||
FileStream fs = new FileStream("C:/erom.int", FileMode.Open, FileAccess.Read);
|
||||
BinaryReader r = new BinaryReader(fs);
|
||||
|
@ -23,18 +23,18 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
int index = 0;
|
||||
// Combine every two bytes into a word.
|
||||
while (index + 1 < erom.Length)
|
||||
Executive_ROM[index / 2] = (ushort)((erom[index++] << 8) | erom[index++]);
|
||||
ExecutiveRom[index / 2] = (ushort)((erom[index++] << 8) | erom[index++]);
|
||||
r.Close();
|
||||
fs.Close();
|
||||
}
|
||||
|
||||
public void LoadGraphics_ROM()
|
||||
public void LoadGraphicsRom()
|
||||
{
|
||||
FileStream fs = new FileStream("C:/grom.int", FileMode.Open, FileAccess.Read);
|
||||
BinaryReader r = new BinaryReader(fs);
|
||||
byte[] grom = r.ReadBytes(2048);
|
||||
for (int index = 0; index < grom.Length; index++)
|
||||
Graphics_ROM[index] = grom[index];
|
||||
GraphicsRom[index] = grom[index];
|
||||
r.Close();
|
||||
fs.Close();
|
||||
}
|
||||
|
@ -43,8 +43,8 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
Rom = rom;
|
||||
Game = game;
|
||||
LoadExecutive_ROM();
|
||||
LoadGraphics_ROM();
|
||||
LoadExecutiveRom();
|
||||
LoadGraphicsRom();
|
||||
Cart = new Intellicart();
|
||||
if (Cart.Parse(Rom) == -1)
|
||||
{
|
||||
|
|
|
@ -9,11 +9,11 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
private const ushort UNMAPPED = 0xFFFF;
|
||||
|
||||
private ushort[] Scratchpad_RAM = new ushort[240];
|
||||
private ushort[] System_RAM = new ushort[352];
|
||||
private ushort[] Executive_ROM = new ushort[4096]; // TODO: Intellivision II support?
|
||||
private ushort[] Graphics_ROM = new ushort[2048];
|
||||
private ushort[] Graphics_RAM = new ushort[512];
|
||||
private byte[] ScratchpadRam = new byte[240];
|
||||
private ushort[] SystemRam = new ushort[352];
|
||||
private ushort[] ExecutiveRom = new ushort[4096]; // TODO: Intellivision II support?
|
||||
private byte[] GraphicsRom = new byte[2048];
|
||||
private byte[] GraphicsRam = new byte[512];
|
||||
|
||||
public ushort ReadMemory(ushort addr)
|
||||
{
|
||||
|
@ -31,12 +31,12 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
// Unoccupied.
|
||||
break;
|
||||
else if (addr <= 0x01EF)
|
||||
core = Scratchpad_RAM[addr - 0x0100];
|
||||
core = (ushort)(ScratchpadRam[addr - 0x0100] & 0x00FF);
|
||||
else if (addr <= 0x01FF)
|
||||
// PSG.
|
||||
break;
|
||||
else if (addr <= 0x035F)
|
||||
core = System_RAM[addr - 0x0200];
|
||||
core = SystemRam[addr - 0x0200];
|
||||
else if (addr <= 0x03FF)
|
||||
// TODO: Garbage values for Intellivision II.
|
||||
break;
|
||||
|
@ -45,24 +45,24 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
break;
|
||||
break;
|
||||
case 0x1000:
|
||||
core = Executive_ROM[addr - 0x1000];
|
||||
core = ExecutiveRom[addr - 0x1000];
|
||||
break;
|
||||
case 0x3000:
|
||||
if (addr <= 0x37FF)
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
core = Graphics_ROM[addr - 0x3000];
|
||||
core = (byte)(GraphicsRom[addr - 0x3000] & 0x00FF);
|
||||
else if (addr <= 0x39FF)
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
core = Graphics_RAM[addr - 0x3800];
|
||||
core = (byte)(GraphicsRam[addr - 0x3800] & 0x00FF);
|
||||
else if (addr <= 0x3BFF)
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
core = Graphics_RAM[addr - 0x3A00];
|
||||
core = (byte)(GraphicsRam[addr - 0x3A00] & 0x00FF);
|
||||
else if (addr <= 0x3DFF)
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
core = Graphics_RAM[addr - 0x3C00];
|
||||
core = (byte)(GraphicsRam[addr - 0x3C00] & 0x00FF);
|
||||
else
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
core = Graphics_RAM[addr - 0x3E00];
|
||||
core = (byte)(GraphicsRam[addr - 0x3E00] & 0x00FF);
|
||||
break;
|
||||
case 0x7000:
|
||||
if (addr <= 0x77FF)
|
||||
|
@ -140,7 +140,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
break;
|
||||
else if (addr <= 0x01EF)
|
||||
{
|
||||
Scratchpad_RAM[addr - 0x0100] = value;
|
||||
ScratchpadRam[addr - 0x0100] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0x01FF)
|
||||
|
@ -150,7 +150,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
}
|
||||
else if (addr <= 0x035F)
|
||||
{
|
||||
System_RAM[addr - 0x0200] = value;
|
||||
SystemRam[addr - 0x0200] = value;
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0x03FF)
|
||||
|
@ -170,25 +170,25 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
else if (addr <= 0x39FF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0x3800] = value;
|
||||
GraphicsRam[addr - 0x3800] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0x3BFF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0x3A00] = value;
|
||||
GraphicsRam[addr - 0x3A00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0x3DFF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0x3C00] = value;
|
||||
GraphicsRam[addr - 0x3C00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0x3E00] = value;
|
||||
GraphicsRam[addr - 0x3E00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
case 0x7000:
|
||||
|
@ -198,25 +198,25 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
else if (addr <= 0x79FF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr & 0x01FF] = value;
|
||||
GraphicsRam[addr & 0x01FF] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0x7BFF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr & 0x01FF] = value;
|
||||
GraphicsRam[addr & 0x01FF] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0x7DFF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr & 0x01FF] = value;
|
||||
GraphicsRam[addr & 0x01FF] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr & 0x01FF] = value;
|
||||
GraphicsRam[addr & 0x01FF] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
case 0x9000:
|
||||
|
@ -228,25 +228,25 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
else if (addr <= 0xB9FF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0xB800] = value;
|
||||
GraphicsRam[addr - 0xB800] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0xBBFF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0xBA00] = value;
|
||||
GraphicsRam[addr - 0xBA00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0xBDFF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0xBC00] = value;
|
||||
GraphicsRam[addr - 0xBC00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0xBE00] = value;
|
||||
GraphicsRam[addr - 0xBE00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
case 0xF000:
|
||||
|
@ -256,25 +256,25 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
else if (addr <= 0xF9FF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0xF800] = value;
|
||||
GraphicsRam[addr - 0xF800] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0xFBFF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0xFA00] = value;
|
||||
GraphicsRam[addr - 0xFA00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0xFDFF)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0xFC00] = value;
|
||||
GraphicsRam[addr - 0xFC00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
Graphics_RAM[addr - 0xFE00] = value;
|
||||
GraphicsRam[addr - 0xFE00] = (byte)(value & 0x00FF);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,12 +7,12 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
public sealed class PSG
|
||||
{
|
||||
private ushort[] Registers = new ushort[16];
|
||||
private ushort[] Register = new ushort[16];
|
||||
|
||||
public ushort? ReadPSG(ushort addr)
|
||||
{
|
||||
if (addr >= 0x01F0 && addr <= 0x01FF)
|
||||
return Registers[addr - 0x01F0];
|
||||
return Register[addr - 0x01F0];
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -20,7 +20,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
if (addr >= 0x01F0 && addr <= 0x01FF)
|
||||
{
|
||||
Registers[addr - 0x01F0] = value;
|
||||
Register[addr - 0x01F0] = value;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -7,8 +7,8 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
public sealed class STIC
|
||||
{
|
||||
private ushort[] Registers = new ushort[64];
|
||||
private bool FGBG = false;
|
||||
private bool Sr1, Sr2, Fgbg = false;
|
||||
private ushort[] Register = new ushort[64];
|
||||
|
||||
public ushort? ReadSTIC(ushort addr)
|
||||
{
|
||||
|
@ -19,19 +19,19 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
// TODO: OK only during VBlank Period 1.
|
||||
if (addr == 0x0021)
|
||||
FGBG = false;
|
||||
return Registers[addr];
|
||||
Fgbg = false;
|
||||
return Register[addr];
|
||||
}
|
||||
else if (addr <= 0x007F)
|
||||
// TODO: OK only during VBlank Period 2.
|
||||
return Registers[addr - 0x0040];
|
||||
return Register[addr - 0x0040];
|
||||
break;
|
||||
case 0x4000:
|
||||
if (addr <= 0x403F)
|
||||
{
|
||||
// TODO: OK only during VBlank Period 1.
|
||||
if (addr == 0x4021)
|
||||
FGBG = false;
|
||||
Fgbg = false;
|
||||
}
|
||||
break;
|
||||
case 0x8000:
|
||||
|
@ -39,7 +39,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
// TODO: OK only during VBlank Period 1.
|
||||
if (addr == 0x8021)
|
||||
FGBG = false;
|
||||
Fgbg = false;
|
||||
}
|
||||
break;
|
||||
case 0xC000:
|
||||
|
@ -47,7 +47,7 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
// TODO: OK only during VBlank Period 1.
|
||||
if (addr == 0xC021)
|
||||
FGBG = false;
|
||||
Fgbg = false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -63,8 +63,8 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
// TODO: OK only during VBlank Period 1.
|
||||
if (addr == 0x0021)
|
||||
FGBG = true;
|
||||
Registers[addr] = value;
|
||||
Fgbg = true;
|
||||
Register[addr] = value;
|
||||
return true;
|
||||
}
|
||||
else if (addr <= 0x007F)
|
||||
|
@ -76,8 +76,8 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
// TODO: OK only during VBlank Period 1.
|
||||
if (addr == 0x4021)
|
||||
FGBG = true;
|
||||
Registers[addr - 0x4000] = value;
|
||||
Fgbg = true;
|
||||
Register[addr - 0x4000] = value;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
@ -86,8 +86,8 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
// TODO: OK only during VBlank Period 1.
|
||||
if (addr == 0x8021)
|
||||
FGBG = true;
|
||||
Registers[addr & 0x003F] = value;
|
||||
Fgbg = true;
|
||||
Register[addr & 0x003F] = value;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
@ -96,8 +96,8 @@ namespace BizHawk.Emulation.Consoles.Intellivision
|
|||
{
|
||||
// TODO: OK only during VBlank Period 1.
|
||||
if (addr == 0xC021)
|
||||
FGBG = true;
|
||||
Registers[addr - 0xC000] = value;
|
||||
Fgbg = true;
|
||||
Register[addr - 0xC000] = value;
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue