BizHawk/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.INESPPUViewable.cs

112 lines
1.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Nintendo.NES
{
partial class NES : INESPPUViewable
{
public int[] GetPalette()
{
return palette_compiled;
}
public bool BGBaseHigh
{
get { return ppu.reg_2000.bg_pattern_hi; }
}
public bool SPBaseHigh
{
get { return ppu.reg_2000.obj_pattern_hi; }
}
public bool SPTall
{
get { return ppu.reg_2000.obj_size_16; }
}
public byte[] GetPPUBus()
{
byte[] ret = new byte[0x3000];
for (int i = 0; i < 0x3000; i++)
{
ret[i] = ppu.ppubus_peek(i);
}
return ret;
}
public byte[] GetPalRam()
{
return ppu.PALRAM;
}
public byte[] GetOam()
{
return ppu.OAM;
}
public byte PeekPPU(int addr)
{
return Board.PeekPPU(addr);
}
public byte[] GetExTiles()
{
if (Board is ExROM)
{
return Board.VROM ?? Board.VRAM;
}
else
{
throw new InvalidOperationException();
}
}
public bool ExActive
{
get { return Board is ExROM && (Board as ExROM).ExAttrActive; }
}
public byte[] GetExRam()
{
if (Board is ExROM)
{
return (Board as ExROM).GetExRAMArray();
}
else
{
throw new InvalidOperationException();
}
}
public MemoryDomain GetCHRROM()
{
return _memoryDomains["CHR VROM"];
}
public void InstallCallback1(Action cb, int sl)
{
ppu.NTViewCallback = new PPU.DebugCallback { Callback = cb, Scanline = sl };
}
public void InstallCallback2(Action cb, int sl)
{
ppu.PPUViewCallback = new PPU.DebugCallback { Callback = cb, Scanline = sl };
}
public void RemoveCallback1()
{
ppu.NTViewCallback = null;
}
public void RemoveCallback2()
{
ppu.PPUViewCallback = null;
}
}
}