Implementing TGUI

This commit is contained in:
AnonymusRaccoon
2020-02-14 18:24:24 +01:00
9 changed files with 84 additions and 11 deletions
+6 -1
View File
@@ -119,7 +119,11 @@ add_executable(ComSquare
sources/CPU/Instructions/InternalInstruction.cpp
sources/Ram/ExtendedRam.cpp
sources/Ram/ExtendedRam.hpp
sources/Debugger/DebugCpu.cpp sources/Debugger/DebugCpu.hpp)
sources/Debugger/DebugCpu.cpp
sources/Debugger/DebugCpu.hpp
sources/Renderer/TGUIRenderer.cpp
sources/Renderer/TGUIRenderer.h
)
target_link_libraries(ComSquare
sfml-graphics
@@ -127,4 +131,5 @@ target_link_libraries(ComSquare
sfml-system
sfml-audio
sfml-network
tgui
)
-1
View File
@@ -11,7 +11,6 @@ namespace ComSquare::Debugger
: CPU::CPU(basicCPU), _renderer(600, 1000, 60), _snes(snes)
{
this->_renderer.setWindowName("CPU's Debugger");
std::cout << "CPU debugging enabled!" << std::endl;
}
unsigned CPUDebug::update()
+2 -1
View File
@@ -8,6 +8,7 @@
#include "../CPU/CPU.hpp"
#include "../Renderer/SFRenderer.hpp"
#include "../SNES.hpp"
#include "../Renderer/TGUIRenderer.h"
namespace ComSquare::Debugger
{
@@ -15,7 +16,7 @@ namespace ComSquare::Debugger
class CPUDebug : public CPU::CPU {
private:
//! @brief The debug window.
Renderer::SFRenderer _renderer;
Renderer::TGUIRenderer _renderer;
//! @brief If this is set to true, the execution of the CPU will be paused.
bool _isPaused = true;
//! @brief A reference to the snes (to disable the debugger).
+2
View File
@@ -206,6 +206,7 @@ namespace ComSquare::PPU
int inc = 0;
//uint32_t pixelTmp = 0xFFFFFFFF;
//pixelTmp |= this->_inidisp.brightness;
//std::cout << "update" << std::endl;
if (!this->_inidisp.fblank) {
for (int x = 0; x < 448; x++) {
for (int y = 0; y < 512; y++) {
@@ -216,6 +217,7 @@ namespace ComSquare::PPU
}
}
}
//std::cout << "cgadata2" << std::endl;
this->_renderer.drawScreen();
}
+1 -1
View File
@@ -28,7 +28,7 @@ namespace ComSquare::Renderer
SFRenderer::~SFRenderer()
{
delete []this->_pixelBuffer;
delete [] this->_pixelBuffer;
}
+3 -3
View File
@@ -24,7 +24,7 @@ namespace ComSquare::Renderer
};
class SFRenderer : public IRenderer {
private:
protected:
//! @brief The Renderer for the window.
sf::RenderWindow _window;
//! @brief Video Mode containing the height and width of the window.
@@ -45,9 +45,9 @@ namespace ComSquare::Renderer
//! @param X horizontal index.
//! @param Y vertical index.
//! @param rgba The color of the pixel.
void putPixel(unsigned y, unsigned x, uint32_t rgba) override ;
void putPixel(unsigned y, unsigned x, uint32_t rgba) override;
//! @brief Get the inputs from the Window
void getEvents();
virtual void getEvents();
//! @brief Constructor that return the window component of the SFML.
//! @param height height of the window.
//! @param width width of the window.
+33
View File
@@ -0,0 +1,33 @@
//
// Created by anonymus-raccoon on 2/14/20.
//
#include "TGUIRenderer.h"
#include <TGUI/TGUI.hpp>
namespace ComSquare::Renderer
{
TGUIRenderer::TGUIRenderer(unsigned int height, unsigned int width, int maxFPS) :
SFRenderer(height, width, maxFPS),
_gui(this->_window)
{
}
void TGUIRenderer::drawScreen()
{
this->_gui.draw();
this->_window.display();
}
void TGUIRenderer::getEvents()
{
sf::Event event;
while (this->_window.pollEvent(event)) {
if (event.type == sf::Event::Closed) {
this->shouldExit = true;
break;
}
this->_gui.handleEvent(event);
}
}
}
+33
View File
@@ -0,0 +1,33 @@
//
// Created by anonymus-raccoon on 2/14/20.
//
#ifndef _TGUIRENDERER_H_
#define _TGUIRENDERER_H_
#include <TGUI/Gui.hpp>
#include "SFRenderer.hpp"
namespace ComSquare::Renderer
{
class TGUIRenderer : public SFRenderer {
private:
tgui::Gui _gui;
public:
//! @brief Constructor that return the window component of the SFML.
//! @param height height of the window.
//! @param width width of the window.
//! @param maxFPS the number of maximum FPS for the window.
TGUIRenderer(unsigned int height, unsigned int width, int maxFPS);
TGUIRenderer(const TGUIRenderer &) = delete;
TGUIRenderer &operator=(const TGUIRenderer &) = delete;
~TGUIRenderer() = default;
//! @brief Draw the screen and renderer ui elements.
void drawScreen() override;
//! @brief Get closing events and input for buttons...
void getEvents() override;
};
}
#endif //_TGUIRENDERER_H_
+4 -4
View File
@@ -57,7 +57,7 @@ Test(PPU_write, obsel_111_object_size_and_all_null)
pair.first->write(0x2101, 0b11100000);
cr_assert_eq(pair.second.ppu->_obsel.objectSize, 0b111);
cr_assert_eq(pair.second.ppu->_obsel.nameSelect, 0b00);
cr_assert_eq(pair.second.ppu->_obsel.baseSelect, 0b000);
cr_assert_eq(pair.second.ppu->_obsel.nameBaseSelect, 0b000);
}
Test(PPU_write, obsel_data_full)
@@ -66,7 +66,7 @@ Test(PPU_write, obsel_data_full)
pair.first->write(0x2101, 0b11111111);
cr_assert_eq(pair.second.ppu->_obsel.objectSize, 0b111);
cr_assert_eq(pair.second.ppu->_obsel.nameSelect, 0b11);
cr_assert_eq(pair.second.ppu->_obsel.baseSelect, 0b111);
cr_assert_eq(pair.second.ppu->_obsel.nameBaseSelect, 0b111);
}
Test(PPU_write, obsel_data_full_nameselect)
@@ -75,7 +75,7 @@ Test(PPU_write, obsel_data_full_nameselect)
pair.first->write(0x2101, 0b00011000);
cr_assert_eq(pair.second.ppu->_obsel.objectSize, 0b000);
cr_assert_eq(pair.second.ppu->_obsel.nameSelect, 0b11);
cr_assert_eq(pair.second.ppu->_obsel.baseSelect, 0b000);
cr_assert_eq(pair.second.ppu->_obsel.nameBaseSelect, 0b000);
}
Test(PPU_write, obsel_data_full_baseselect)
@@ -84,7 +84,7 @@ Test(PPU_write, obsel_data_full_baseselect)
pair.first->write(0x2101, 0b00000111);
cr_assert_eq(pair.second.ppu->_obsel.objectSize, 0b000);
cr_assert_eq(pair.second.ppu->_obsel.nameSelect, 0b00);
cr_assert_eq(pair.second.ppu->_obsel.baseSelect, 0b111);
cr_assert_eq(pair.second.ppu->_obsel.nameBaseSelect, 0b111);
}
Test(PPU_write, oamaddl_data_full)