Debugger: Tile Viewer - Fixed bg/oam presets
This commit is contained in:
parent
234c494c3e
commit
665d6e8a3d
1 changed files with 27 additions and 13 deletions
|
@ -404,32 +404,46 @@ namespace Mesen.GUI.Debugger
|
|||
cboFormat.SetEnumValue(format);
|
||||
|
||||
if(_state.Ppu.BgMode == 7) {
|
||||
nudAddress.Value = 0;
|
||||
_selectedTile = 0;
|
||||
RefreshViewer();
|
||||
ctrlImagePanel.ScrollTo(0);
|
||||
} else {
|
||||
int bytesPerRow = GetBytesPerTile() / 8 * _options.Width;
|
||||
int scrollRow = ((_state.Ppu.Layers[layer].ChrAddress << 1) / bytesPerRow) & 0xFFF8;
|
||||
_selectedTile = scrollRow * bytesPerRow / GetBytesPerTile();
|
||||
if(nudAddress.Maximum < _state.Ppu.Layers[layer].ChrAddress) {
|
||||
int gap = _state.Ppu.Layers[layer].ChrAddress - (int)nudAddress.Value;
|
||||
int bytesPerRow = GetBytesPerTile() / 8 * _options.Width;
|
||||
int scrollRow = (gap / bytesPerRow) & ~0x7;
|
||||
_selectedTile = scrollRow * bytesPerRow / GetBytesPerTile();
|
||||
} else {
|
||||
_selectedTile = 0;
|
||||
}
|
||||
nudAddress.Value = _state.Ppu.Layers[layer].ChrAddress;
|
||||
RefreshViewer();
|
||||
ctrlImagePanel.ScrollTo(scrollRow * ctrlImagePanel.ImageScale);
|
||||
}
|
||||
ctrlImagePanel.ScrollTo(0);
|
||||
}
|
||||
}
|
||||
|
||||
private void GoToOamPreset(int layer)
|
||||
{
|
||||
int bpp = _layerBpp[_state.Ppu.BgMode, layer];
|
||||
TileFormat format = TileFormat.Bpp4;
|
||||
int address = _state.Ppu.OamBaseAddress + (layer == 1 ? _state.Ppu.OamAddressOffset : 0);
|
||||
address *= 2;
|
||||
|
||||
cboMemoryType.SetEnumValue(SnesMemoryType.VideoRam);
|
||||
cboFormat.SetEnumValue(format);
|
||||
cboFormat.SetEnumValue(TileFormat.Bpp4);
|
||||
|
||||
int bytesPerRow = GetBytesPerTile() / 8 * _options.Width;
|
||||
int scrollRow = (address * 2 / bytesPerRow) & 0xFFF8;
|
||||
_selectedTile = scrollRow * bytesPerRow / GetBytesPerTile();
|
||||
RefreshViewer();
|
||||
ctrlImagePanel.ScrollTo(scrollRow * ctrlImagePanel.ImageScale);
|
||||
if(nudAddress.Maximum < address) {
|
||||
int gap = address - (int)nudAddress.Value;
|
||||
int bytesPerRow = GetBytesPerTile() / 8 * _options.Width;
|
||||
int scrollRow = (gap / bytesPerRow) & ~0x7;
|
||||
_selectedTile = scrollRow * bytesPerRow / GetBytesPerTile();
|
||||
} else {
|
||||
_selectedTile = 0;
|
||||
}
|
||||
if(ctrlPaletteViewer.SelectedPalette < 8) {
|
||||
ctrlPaletteViewer.SelectedPalette = 8;
|
||||
}
|
||||
nudAddress.Value = address * 2;
|
||||
ctrlImagePanel.ScrollTo(0);
|
||||
}
|
||||
|
||||
private void ctrlImagePanel_MouseClick(object sender, MouseEventArgs e)
|
||||
|
|
Loading…
Add table
Reference in a new issue