diff --git a/CMakeLists.txt b/CMakeLists.txt index 8c932497..74c33f87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -93,7 +93,7 @@ endif() set(SOURCE_FILES src/main.cpp src/emulator.cpp src/io_file.cpp src/config.cpp src/core/CPU/cpu_dynarmic.cpp src/core/CPU/dynarmic_cycles.cpp - src/core/memory.cpp src/renderer.cpp src/httpserver.cpp src/stb_image_write.c + src/core/memory.cpp src/renderer.cpp src/httpserver.cpp src/stb_image_write.c src/httpserver.cpp ) set(CRYPTO_SOURCE_FILES src/core/crypto/aes_engine.cpp) set(KERNEL_SOURCE_FILES src/core/kernel/kernel.cpp src/core/kernel/resource_limits.cpp diff --git a/include/PICA/gpu.hpp b/include/PICA/gpu.hpp index 929881b7..753ec728 100644 --- a/include/PICA/gpu.hpp +++ b/include/PICA/gpu.hpp @@ -85,6 +85,7 @@ class GPU { GPU(Memory& mem, EmulatorConfig& config); void initGraphicsContext() { renderer->initGraphicsContext(); } void display() { renderer->display(); } + void screenshot(const std::string& name) { renderer->screenshot(name); } void fireDMA(u32 dest, u32 source, u32 size); void reset(); diff --git a/include/renderer.hpp b/include/renderer.hpp index c7315739..91dd287b 100644 --- a/include/renderer.hpp +++ b/include/renderer.hpp @@ -27,6 +27,8 @@ class Renderer { virtual void displayTransfer(u32 inputAddr, u32 outputAddr, u32 inputSize, u32 outputSize, u32 flags) = 0; // Perform display transfer virtual void drawVertices(PICA::PrimType primType, std::span vertices) = 0; // Draw the given vertices + virtual void screenshot(const std::string& name) = 0; + virtual void setFBSize(u32 width, u32 height) = 0; virtual void setColourFormat(PICA::ColorFmt format) = 0; diff --git a/include/renderer_gl/renderer_gl.hpp b/include/renderer_gl/renderer_gl.hpp index 24301a11..4c059f05 100644 --- a/include/renderer_gl/renderer_gl.hpp +++ b/include/renderer_gl/renderer_gl.hpp @@ -1,7 +1,8 @@ #pragma once +#include + #include #include -#include #include "PICA/float_types.hpp" #include "PICA/pica_vertex.hpp" diff --git a/src/core/renderer_gl/renderer_gl.cpp b/src/core/renderer_gl/renderer_gl.cpp index 22484608..1546761d 100644 --- a/src/core/renderer_gl/renderer_gl.cpp +++ b/src/core/renderer_gl/renderer_gl.cpp @@ -1034,7 +1034,7 @@ void RendererGL::displayTransfer(u32 inputAddr, u32 outputAddr, u32 inputSize, u OpenGL::draw(OpenGL::TriangleStrip, 4); // Actually draw our 3DS screen } -void Renderer::screenshot(const std::string& name) { +void RendererGL::screenshot(const std::string& name) { constexpr uint width = 400; constexpr uint height = 2 * 240;