Atari 2600 - restrict the access level of a bunch of things, and some slight reorg
This commit is contained in:
parent
6c0a0401a9
commit
85730524ef
|
@ -15,18 +15,18 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
private DCFilter _dcfilter;
|
private DCFilter _dcfilter;
|
||||||
private MapperBase _mapper;
|
private MapperBase _mapper;
|
||||||
|
|
||||||
public byte[] Ram;
|
internal byte[] Ram;
|
||||||
|
|
||||||
public byte[] Rom { get; private set; }
|
internal byte[] Rom { get; private set; }
|
||||||
public MOS6502X Cpu { get; private set; }
|
internal MOS6502X Cpu { get; private set; }
|
||||||
public M6532 M6532 { get; private set; }
|
internal M6532 M6532 { get; private set; }
|
||||||
|
|
||||||
public int LastAddress;
|
internal int LastAddress;
|
||||||
public int DistinctAccessCount;
|
internal int DistinctAccessCount;
|
||||||
|
|
||||||
private bool _frameStartPending = true;
|
private bool _frameStartPending = true;
|
||||||
|
|
||||||
public byte BaseReadMemory(ushort addr)
|
internal byte BaseReadMemory(ushort addr)
|
||||||
{
|
{
|
||||||
addr = (ushort)(addr & 0x1FFF);
|
addr = (ushort)(addr & 0x1FFF);
|
||||||
if ((addr & 0x1080) == 0)
|
if ((addr & 0x1080) == 0)
|
||||||
|
@ -42,7 +42,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
return Rom[addr & 0x0FFF];
|
return Rom[addr & 0x0FFF];
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte BasePeekMemory(ushort addr)
|
internal byte BasePeekMemory(ushort addr)
|
||||||
{
|
{
|
||||||
addr = (ushort)(addr & 0x1FFF);
|
addr = (ushort)(addr & 0x1FFF);
|
||||||
if ((addr & 0x1080) == 0)
|
if ((addr & 0x1080) == 0)
|
||||||
|
@ -58,7 +58,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
return Rom[addr & 0x0FFF];
|
return Rom[addr & 0x0FFF];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BaseWriteMemory(ushort addr, byte value)
|
internal void BaseWriteMemory(ushort addr, byte value)
|
||||||
{
|
{
|
||||||
if (addr != LastAddress)
|
if (addr != LastAddress)
|
||||||
{
|
{
|
||||||
|
@ -81,7 +81,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BasePokeMemory(ushort addr, byte value)
|
internal void BasePokeMemory(ushort addr, byte value)
|
||||||
{
|
{
|
||||||
addr = (ushort)(addr & 0x1FFF);
|
addr = (ushort)(addr & 0x1FFF);
|
||||||
if ((addr & 0x1080) == 0)
|
if ((addr & 0x1080) == 0)
|
||||||
|
@ -98,7 +98,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte ReadMemory(ushort addr)
|
internal byte ReadMemory(ushort addr)
|
||||||
{
|
{
|
||||||
if (addr != LastAddress)
|
if (addr != LastAddress)
|
||||||
{
|
{
|
||||||
|
@ -113,14 +113,14 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte PeekMemory(ushort addr)
|
internal byte PeekMemory(ushort addr)
|
||||||
{
|
{
|
||||||
var temp = _mapper.ReadMemory((ushort)(addr & 0x1FFF));
|
var temp = _mapper.ReadMemory((ushort)(addr & 0x1FFF));
|
||||||
|
|
||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void WriteMemory(ushort addr, byte value)
|
internal void WriteMemory(ushort addr, byte value)
|
||||||
{
|
{
|
||||||
if (addr != LastAddress)
|
if (addr != LastAddress)
|
||||||
{
|
{
|
||||||
|
@ -133,12 +133,12 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
MemoryCallbacks.CallWrites(addr);
|
MemoryCallbacks.CallWrites(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PokeMemory(ushort addr, byte value)
|
internal void PokeMemory(ushort addr, byte value)
|
||||||
{
|
{
|
||||||
_mapper.PokeMemory((ushort)(addr & 0x1FFF), value);
|
_mapper.PokeMemory((ushort)(addr & 0x1FFF), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ExecFetch(ushort addr)
|
private void ExecFetch(ushort addr)
|
||||||
{
|
{
|
||||||
MemoryCallbacks.CallExecutes(addr);
|
MemoryCallbacks.CallExecutes(addr);
|
||||||
}
|
}
|
||||||
|
@ -157,7 +157,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RebootCore()
|
private void RebootCore()
|
||||||
{
|
{
|
||||||
// Regenerate mapper here to make sure its state is entirely clean
|
// Regenerate mapper here to make sure its state is entirely clean
|
||||||
switch (_game.GetOptionsDict()["m"])
|
switch (_game.GetOptionsDict()["m"])
|
||||||
|
@ -325,7 +325,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
get { return _pal ? DisplayType.PAL : Common.DisplayType.NTSC; }
|
get { return _pal ? DisplayType.PAL : Common.DisplayType.NTSC; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void HardReset()
|
private void HardReset()
|
||||||
{
|
{
|
||||||
Ram = new byte[128];
|
Ram = new byte[128];
|
||||||
_mapper.HardReset();
|
_mapper.HardReset();
|
||||||
|
@ -345,22 +345,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
Cpu.PC = (ushort)(ReadMemory(0x1FFC) + (ReadMemory(0x1FFD) << 8)); // set the initial PC
|
Cpu.PC = (ushort)(ReadMemory(0x1FFC) + (ReadMemory(0x1FFD) << 8)); // set the initial PC
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CycleAdvance()
|
|
||||||
{
|
|
||||||
StartFrameCond();
|
|
||||||
Cycle();
|
|
||||||
FinishFrameCond();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void ScanlineAdvance()
|
|
||||||
{
|
|
||||||
StartFrameCond();
|
|
||||||
int currentLine = _tia.LineCount;
|
|
||||||
while (_tia.LineCount == currentLine)
|
|
||||||
Cycle();
|
|
||||||
FinishFrameCond();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void FrameAdvance(bool render, bool rendersound)
|
public void FrameAdvance(bool render, bool rendersound)
|
||||||
{
|
{
|
||||||
StartFrameCond();
|
StartFrameCond();
|
||||||
|
@ -369,7 +353,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
FinishFrameCond();
|
FinishFrameCond();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void VFrameAdvance() // advance up to 500 lines looking for end of video frame
|
private void VFrameAdvance() // advance up to 500 lines looking for end of video frame
|
||||||
// after vsync falling edge, continues to end of next line
|
// after vsync falling edge, continues to end of next line
|
||||||
{
|
{
|
||||||
bool frameend = false;
|
bool frameend = false;
|
||||||
|
@ -422,7 +406,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
_mapper.ClockCpu();
|
_mapper.ClockCpu();
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte ReadControls1(bool peek)
|
internal byte ReadControls1(bool peek)
|
||||||
{
|
{
|
||||||
InputCallbacks.Call();
|
InputCallbacks.Call();
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
|
@ -441,7 +425,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte ReadControls2(bool peek)
|
internal byte ReadControls2(bool peek)
|
||||||
{
|
{
|
||||||
InputCallbacks.Call();
|
InputCallbacks.Call();
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
|
@ -460,7 +444,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public byte ReadConsoleSwitches(bool peek)
|
internal byte ReadConsoleSwitches(bool peek)
|
||||||
{
|
{
|
||||||
byte value = 0xFF;
|
byte value = 0xFF;
|
||||||
bool select = Controller["Select"];
|
bool select = Controller["Select"];
|
||||||
|
|
|
@ -147,5 +147,40 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
/*0xE0*/ 0,1,0,0,2,2,2,0,0,0,0,0,3,3,3,0,
|
/*0xE0*/ 0,1,0,0,2,2,2,0,0,0,0,0,3,3,3,0,
|
||||||
/*0xF0*/ 0,4,0,0,0,5,5,0,0,6,0,0,0,7,7,0
|
/*0xF0*/ 0,4,0,0,0,5,5,0,0,6,0,0,0,7,7,0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#region Currently Unused Debug hooks
|
||||||
|
|
||||||
|
private void ScanlineAdvance()
|
||||||
|
{
|
||||||
|
StartFrameCond();
|
||||||
|
int currentLine = _tia.LineCount;
|
||||||
|
while (_tia.LineCount == currentLine)
|
||||||
|
Cycle();
|
||||||
|
FinishFrameCond();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CycleAdvance()
|
||||||
|
{
|
||||||
|
StartFrameCond();
|
||||||
|
Cycle();
|
||||||
|
FinishFrameCond();
|
||||||
|
}
|
||||||
|
|
||||||
|
private int CurrentScanLine
|
||||||
|
{
|
||||||
|
get { return _tia.LineCount; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsVsync
|
||||||
|
{
|
||||||
|
get { return _tia.IsVSync; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsVBlank
|
||||||
|
{
|
||||||
|
get { return _tia.IsVBlank; }
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,21 +93,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public int CurrentScanLine
|
|
||||||
{
|
|
||||||
get { return _tia.LineCount; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsVsync
|
|
||||||
{
|
|
||||||
get { return _tia.IsVSync; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsVBlank
|
|
||||||
{
|
|
||||||
get { return _tia.IsVBlank; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public CompactGameInfo GenerateGameDbEntry()
|
public CompactGameInfo GenerateGameDbEntry()
|
||||||
{
|
{
|
||||||
return new CompactGameInfo
|
return new CompactGameInfo
|
||||||
|
|
Loading…
Reference in New Issue