using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BizHawk.Emulation.Common;
namespace BizHawk.Emulation.Cores.Nintendo.NES
{
///
/// supports the PPU and NT viewers. do not modify any returned arrays!
///
public interface INESPPUViewable : IEmulatorService
{
///
/// get the 512 color overall palette in use
///
///
int[] GetPalette();
///
/// true if bg tile indexes start at 0x1000 instead of 0x0000
///
bool BGBaseHigh { get; }
///
/// true if sp tile indexes start at 0x1000 instead of 0x0000 (8x8 mode only)
///
bool SPBaseHigh { get; }
///
/// true if sprites are 8x16
///
bool SPTall { get; }
///
/// get the first 0x3000 bytes of ppu data
///
///
byte[] GetPPUBus();
///
/// get the 32 byte palette ram
///
///
byte[] GetPalRam();
///
/// returns the object attribute memory
///
///
byte[] GetOam();
///
/// return one byte of PPU bus data
///
///
///
byte PeekPPU(int addr);
///
/// get MMC5 extile source data
///
///
byte[] GetExTiles();
///
/// true if MMC5 and ExAttr mode is active
///
bool ExActive { get; }
///
/// get MMC5 exram for exattr mode
///
///
byte[] GetExRam();
///
/// get memory domain for chr rom; return null if RAM or other N/A. for direct viewing of ROM tiles.
///
///
MemoryDomain GetCHRROM();
///
/// install a callback to run at a particular scanline
///
///
///
void InstallCallback1(Action cb, int sl);
///
/// install a callback to run at a particular scanline
///
///
///
void InstallCallback2(Action cb, int sl);
///
/// remove previously installed callback
///
void RemoveCallback1();
///
/// remove previously installed callback
///
void RemoveCallback2();
}
}