NESPPU - speedups to palette viewer

This commit is contained in:
andres.delikat 2011-08-27 21:31:47 +00:00
parent e75052923a
commit 278a9486b6
2 changed files with 95 additions and 72 deletions

View File

@ -70,9 +70,12 @@ namespace BizHawk.MultiClient
//Pattern Viewer //Pattern Viewer
for (int x = 0; x < 16; x++) for (int x = 0; x < 16; x++)
{ {
PaletteView.bgPalettesPrev[x] = new PaletteViewer.Palette(PaletteView.bgPalettes[x]);
PaletteView.spritePalettesPrev[x] = new PaletteViewer.Palette(PaletteView.spritePalettes[x]);
PaletteView.bgPalettes[x].SetValue(Nes.LookupColor(Nes.ppu.PALRAM[PaletteView.bgPalettes[x].address])); PaletteView.bgPalettes[x].SetValue(Nes.LookupColor(Nes.ppu.PALRAM[PaletteView.bgPalettes[x].address]));
PaletteView.spritePalettes[x].SetValue(Nes.LookupColor(Nes.ppu.PALRAM[PaletteView.spritePalettes[x].address])); PaletteView.spritePalettes[x].SetValue(Nes.LookupColor(Nes.ppu.PALRAM[PaletteView.spritePalettes[x].address]));
} }
if (PaletteView.HasChanged())
PaletteView.Refresh(); PaletteView.Refresh();
//Pattern Viewer //Pattern Viewer
@ -116,7 +119,7 @@ namespace BizHawk.MultiClient
} }
} }
PatternView.pattern.UnlockBits(bmpdata); PatternView.pattern.UnlockBits(bmpdata);
PatternView.Refresh(); //PatternView.Refresh();
/* /*
int SpriteNum, TileNum, Attr, MemAddr; int SpriteNum, TileNum, Attr, MemAddr;

View File

@ -22,6 +22,13 @@ namespace BizHawk.MultiClient
value = -1; value = -1;
} }
public Palette(Palette p)
{
address = p.address;
value = p.value;
color = p.color;
}
public int GetValue() public int GetValue()
{ {
return value; return value;
@ -45,6 +52,9 @@ namespace BizHawk.MultiClient
public Palette[] bgPalettes = new Palette[16]; public Palette[] bgPalettes = new Palette[16];
public Palette[] spritePalettes = new Palette[16]; public Palette[] spritePalettes = new Palette[16];
public Palette[] bgPalettesPrev = new Palette[16];
public Palette[] spritePalettesPrev = new Palette[16];
public PaletteViewer() public PaletteViewer()
{ {
SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true);
@ -65,27 +75,37 @@ namespace BizHawk.MultiClient
private void PaletteViewer_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { } private void PaletteViewer_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { }
private void Display(Graphics g) private void PaletteViewer_Paint(object sender, PaintEventArgs e)
{ {
unchecked unchecked
{ {
Rectangle rect; Rectangle rect;
for (int x = 0; x < 16; x++) for (int x = 0; x < 16; x++)
{
if (bgPalettes[x] != bgPalettesPrev[x])
{ {
rect = new Rectangle(new Point(x * 16, 1), new Size(16, 16)); rect = new Rectangle(new Point(x * 16, 1), new Size(16, 16));
g.FillRectangle(new SolidBrush(bgPalettes[x].GetColor()), rect); e.Graphics.FillRectangle(new SolidBrush(bgPalettes[x].GetColor()), rect);
} }
for (int x = 0; x < 16; x++) if (spritePalettes != spritePalettesPrev)
{ {
rect = new Rectangle(new Point(x * 16, 17), new Size(16, 16)); rect = new Rectangle(new Point(x * 16, 17), new Size(16, 16));
g.FillRectangle(new SolidBrush(spritePalettes[x].GetColor()), rect); e.Graphics.FillRectangle(new SolidBrush(spritePalettes[x].GetColor()), rect);
}
} }
} }
} }
private void PaletteViewer_Paint(object sender, PaintEventArgs e) public bool HasChanged()
{ {
Display(e.Graphics); for (int x = 0; x < 16; x++)
{
if (bgPalettes[x] != bgPalettesPrev[x])
return true;
if (spritePalettes[x] != spritePalettesPrev[x])
return true;
}
return false;
} }
} }
} }