public void RunDemo() { const uint screenWidth = 250; const uint screenHeight = 250; GLWindow window = new GLWindow((int)screenWidth, (int)screenHeight, 4, 4, AppName); PixelGameEngine pge = new PixelGameEngine(AppName); pge.Construct(screenWidth, screenHeight, window); pge.OnFrameUpdate += (sender, frameUpdateArgs) => { Random rnd = new Random(); for (uint x = 0; x < pge.ScreenWidth; x++) { for (uint y = 0; y < pge.ScreenHeight; y++) { pge.Draw(x, y, new Pixel((byte)rnd.Next(255), (byte)rnd.Next(255), (byte)rnd.Next(255))); } } pge.DrawString(0, 0, "Sup?", Pixel.WHITE); }; pge.Start(); }
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)); }