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