BizHawk/BizHawk.MultiClient/NEStools/NESNameTableViewer.cs

104 lines
3.5 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
2011-03-30 00:22:51 +00:00
using BizHawk.Emulation.Consoles.Nintendo;
namespace BizHawk.MultiClient
{
public partial class NESNameTableViewer : Form
{
int defaultWidth; //For saving the default size of the dialog, so the user can restore if desired
int defaultHeight;
NES Nes;
public NESNameTableViewer()
{
InitializeComponent();
Closing += (o, e) => SaveConfigSettings();
}
private void SaveConfigSettings()
{
Global.Config.NESNameTableWndx = this.Location.X;
Global.Config.NESNameTableWndy = this.Location.Y;
}
public void UpdateValues()
{
int NTAddr;
int AttributeAddr;
if (!(Global.Emulator is NES)) return;
if (!this.IsHandleCreated || this.IsDisposed) return;
for (int table = 0; table < 4; table++)
2011-03-30 00:22:51 +00:00
{
for (int y = 0; y < 30; y++)
2011-03-30 00:22:51 +00:00
{
for (int x = 0; x < 32; x++)
{
NTAddr = (y * 32) + x;
AttributeAddr = 0x3C0 + ((y >> 2) << 3) + (x >> 2);
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
int cvalue = Nes.LookupColor(Nes.ppu.PALRAM[5]);
Color color = Color.FromArgb(cvalue);
this.NameTableView.nametables.SetPixel((x * 8) + i, (y * 8) + j, color);
}
}
}
2011-03-30 00:22:51 +00:00
}
}
NameTableView.Refresh();
}
public void Restart()
{
if (!(Global.Emulator is NES)) this.Close();
if (!this.IsHandleCreated || this.IsDisposed) return;
Nes = Global.Emulator as NES;
}
private void NESNameTableViewer_Load(object sender, EventArgs e)
{
defaultWidth = this.Size.Width; //Save these first so that the user can restore to its original size
defaultHeight = this.Size.Height;
if (Global.Config.NESNameTableSaveWindowPosition && Global.Config.NESNameTableWndx >= 0 && Global.Config.NESNameTableWndy >= 0)
this.Location = new Point(Global.Config.NESNameTableWndx, Global.Config.NESNameTableWndy);
Nes = Global.Emulator as NES;
}
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void autoloadToolStripMenuItem_Click(object sender, EventArgs e)
{
Global.Config.AutoLoadNESNameTable ^= true;
}
private void saveWindowPositionToolStripMenuItem_Click(object sender, EventArgs e)
{
Global.Config.NESNameTableSaveWindowPosition ^= true;
}
private void optionsToolStripMenuItem_DropDownOpened(object sender, EventArgs e)
{
autoloadToolStripMenuItem.Checked = Global.Config.AutoLoadNESNameTable;
saveWindowPositionToolStripMenuItem.Checked = Global.Config.NESNameTableSaveWindowPosition;
}
}
}