public void RefreshViewer() { PictureBox[] chrBanks = new PictureBox[] { this.picChrBank1, this.picChrBank2 }; UpdateDropdown(); for (int i = 0; i < 2; i++) { byte[] pixelData = InteropEmu.DebugGetChrBank(i + this.cboChrSelection.SelectedIndex * 2, this.cboPalette.SelectedIndex, this.chkLargeSprites.Checked, (CdlHighlightType)this.cboHighlightType.SelectedIndex); GCHandle handle = GCHandle.Alloc(pixelData, GCHandleType.Pinned); try { Bitmap source = new Bitmap(128, 128, 4 * 128, System.Drawing.Imaging.PixelFormat.Format32bppArgb, handle.AddrOfPinnedObject()); Bitmap target = new Bitmap(256, 256); using (Graphics g = Graphics.FromImage(target)) { g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.None; g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half; g.Clear(Color.Black); g.DrawImage(source, new Rectangle(0, 0, 256, 256), new Rectangle(0, 0, 128, 128), GraphicsUnit.Pixel); } chrBanks[i].Image = target; } finally { handle.Free(); } } }
public void GetData() { UInt32[] paletteData; _chrPixelData = InteropEmu.DebugGetChrBank(_chrSelection, 9, false, CdlHighlightType.None, false, false, out paletteData); bool isChrRam = InteropEmu.DebugGetMemorySize(DebugMemoryType.ChrRom) == 0; if (_chrSelection < 2) { byte[] chrData = InteropEmu.DebugGetMemoryState(DebugMemoryType.PpuMemory); Array.Copy(chrData, _chrSelection * 0x1000, _chrData, 0, 0x1000); } else { byte[] chrData = InteropEmu.DebugGetMemoryState(isChrRam ? DebugMemoryType.ChrRam : DebugMemoryType.ChrRom); int startIndex = (_chrSelection - 2) * 0x1000; if (startIndex >= chrData.Length) { //Can occur when switching games startIndex = 0; } Array.Copy(chrData, startIndex, _chrData, 0, 0x1000); } }
public void GetData() { for (int i = 0; i < 2; i++) { _chrPixelData[i] = InteropEmu.DebugGetChrBank(i + _chrSelection * 2, _selectedPalette + (_useAutoPalette ? 0x80 : 0), _useLargeSprites, _highlightType, out _paletteData[i]); } }
public void GetData() { for (int i = 0; i < 2; i++) { _chrPixelData[i] = InteropEmu.DebugGetChrBank(i + _chrSelection * 2, _selectedPalette, _useLargeSprites, _highlightType); } }
protected override void EmitDebugData() { //lock (emulatorLock) { if (OnRegisterUpdate != null) { _debugState.Memory.CpuData = InteropEmu.DebugGetMemoryState(DebugMemoryType.CpuMemory); _debugState.Memory.PpuData = InteropEmu.DebugGetMemoryState(DebugMemoryType.PpuMemory); _debugState.Memory.OamData = InteropEmu.DebugGetMemoryState(DebugMemoryType.SpriteMemory); _debugState.Memory.CgRam = InteropEmu.DebugGetMemoryState(DebugMemoryType.PaletteMemory); InteropEmu.DebugGetState(ref _debugState.NesState); _debugState.Memory.X = _debugState.NesState.CPU.X; _debugState.Memory.Y = _debugState.NesState.CPU.Y; _debugState.Sprites.PixelData = InteropEmu.DebugGetSprites(); _debugState.Sprites.Details = Sprite.GetNesSprites(_debugState.Memory.OamData, _debugState.NesState.PPU.ControlFlags.LargeSprites == 1); _debugState.CharacterData.PixelData[0] = InteropEmu.DebugGetChrBank(0, 0, false, CdlHighlightType.None, true, false, out _dummyPaletteData); _debugState.CharacterData.PixelData[1] = InteropEmu.DebugGetChrBank(1, 0, false, CdlHighlightType.None, true, false, out _dummyPaletteData); GetNametableData(); OnRegisterUpdate(_debugState); } } }
public void GetData() { for (int i = 0; i < 2; i++) { _chrPixelData[i] = InteropEmu.DebugGetChrBank( i + _chrSelection * 2, _selectedPalette, _useLargeSprites, _highlightType, _useAutoPalette, _showSingleColorTilesInGrayscale, out _paletteData[i] ); } _hdCopyHelper.RefreshData(); }