mirror of
https://github.com/zoriya/ComSquare.git
synced 2026-06-03 10:26:36 +00:00
Implementing TGUI
This commit is contained in:
+6
-1
@@ -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
|
||||
)
|
||||
@@ -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()
|
||||
|
||||
@@ -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).
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace ComSquare::Renderer
|
||||
|
||||
SFRenderer::~SFRenderer()
|
||||
{
|
||||
delete []this->_pixelBuffer;
|
||||
delete [] this->_pixelBuffer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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_
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user