Example #1
0
        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();
                }
            }
        }
Example #2
0
        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);
            }
        }
Example #3
0
 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]);
     }
 }
Example #4
0
 public void GetData()
 {
     for (int i = 0; i < 2; i++)
     {
         _chrPixelData[i] = InteropEmu.DebugGetChrBank(i + _chrSelection * 2, _selectedPalette, _useLargeSprites, _highlightType);
     }
 }
Example #5
0
        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);
                }
            }
        }
Example #6
0
 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();
 }