private void pge_OnUpdate(object sender, FrameUpdateEventArgs frameUpdateArgs) { pge.Clear(Pixel.DARK_BLUE); if (runEmulation) { if (residualTime > 0.0f) { residualTime -= frameUpdateArgs.ElapsedTime; } else { residualTime += (1.0 / 60.0988) - frameUpdateArgs.ElapsedTime; handleControllerInputs(pge.Platform.KeyboardState); do { nesBus.clock(); playAudioWhenReady(); } while (!nesBus.PPU.FrameComplete); nesBus.PPU.FrameComplete = false; _frameCount++; if (DateTime.Now - dtStart >= TimeSpan.FromSeconds(1)) { dtStart = DateTime.Now; _fps = _frameCount; _frameCount = 0; } } } pge.DrawString(360, 2, $"FPS: {_fps}", Pixel.WHITE); // Draw rendered output pge.DrawSprite(0, 0, nesBus.PPU.GetScreen(), 1); pge.DrawString(0, 265, "X, Z - A, B", Pixel.WHITE); pge.DrawString(0, 280, "A, S - START, SELECT", Pixel.WHITE); // Draw Ram Page 0x00 //DrawRam(2, 2, 0x0000, 16, 16); //DrawRam(2, 182, 0x0100, 16, 16); //DrawCpu(416, 2); //DrawCode(416, 72, 26); //DrawOam(270, 10, 0, 8, true); //DrawOam(270, 140, 0, 32); //DrawOam(500, 140, 32, 32); // Draw Palettes & Pattern Tables //DrawPalettes(516, 340); // Draw selection recticle around selected palette //pge.DrawRect(516 + selectedPalette * (swatchSize * 5) - 1, 339, (swatchSize * 4), swatchSize, Pixel.WHITE); // Generate Pattern Tables //pge.DrawSprite(316, 10, nesBus.PPU.GetPatternTable(0, (byte)selectedPalette)); //pge.DrawSprite(448, 10, nesBus.PPU.GetPatternTable(1, (byte)selectedPalette)); }
private void updateFrame(object sender, FrameUpdateEventArgs frameUpdateArgs) { pge.Clear(Pixel.BLUE); pge.PixelBlendMode = csPixelGameEngineCore.Enums.BlendMode.MASK; //testAnimation[1].CopyTo(pge.DefaultDrawTarget, 0, 0, -100, -100); //pge.DrawSprite(0, 0, testAnimation[1]); //pge.DrawDecal(new vec2d_f(), testAnimationDecal[1]); _rotation += _rotationStep % _fullCircle; pge.DrawRotatedDecal(new vec2d_f(testAnimationDecal[1].sprite.Width / 2.0f, testAnimationDecal[1].sprite.Height / 2.0f), testAnimationDecal[1], _rotation, new vec2d_f(testAnimationDecal[1].sprite.Width / 2.0f, testAnimationDecal[1].sprite.Height / 2.0f)); pge.DrawWarpedDecal(testAnimationDecal[1], new vec2d_f[] { new vec2d_f(400.0f, 200.0f), new vec2d_f(780.0f, 550.0f), new vec2d_f(10.0f, 500.0f), new vec2d_f(200.0f, 120.0f) }); showCursorPos(0, 20); showMouseWheelDelta(0, 30); showMouseButtonState(0, 40, 0); showMouseButtonState(0, 50, 1); showMouseButtonState(0, 60, 2); //pge.PixelBlendMode = csPixelGameEngineCore.Enums.BlendMode.NORMAL; //pge.DrawCircle(100, 100, 100, Pixel.RED); //pge.FillCircle(500, 500, 30, Pixel.GREEN); //pge.PixelBlendMode = csPixelGameEngineCore.Enums.BlendMode.ALPHA; //pge.FillTriangle(new vec2d_i(304, 200), // new vec2d_i(544, 381), // new vec2d_i(444, 500), // Pixel.MAGENTA); //pge.PixelBlendMode = csPixelGameEngineCore.Enums.BlendMode.NORMAL; //drawRandomPixels(); _curFrameCount++; if ((DateTime.Now - _dtStartFrame) >= TimeSpan.FromSeconds(1)) { _fps = _curFrameCount; _curFrameCount = 0; _dtStartFrame = DateTime.Now; } pge.DrawStringDecal(0, 10, $"FPS: {_fps}", Pixel.BLACK); }