From dfc0aef74b35c54f2efaee4b9d1a7a02465eedf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Le=20Bihan?= Date: Fri, 7 May 2021 00:16:16 +0200 Subject: [PATCH] starting to implement test ui to try to connect window and sfmlQwidget --- CMakeLists.txt | 2 +- sources/Debugger/TileViewer.cpp | 58 +++++++++++++++++++++++ sources/Debugger/TileViewer.hpp | 80 ++++++++++++++++++++++++++++++++ ui/testSfml.ui | 82 +++++++++++++++++++++++++++++++++ 4 files changed, 221 insertions(+), 1 deletion(-) create mode 100644 sources/Debugger/TileViewer.cpp create mode 100644 sources/Debugger/TileViewer.hpp create mode 100644 ui/testSfml.ui diff --git a/CMakeLists.txt b/CMakeLists.txt index dbc442d..5aa595c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -237,7 +237,7 @@ add_executable(ComSquare sources/APU/DSP/Timer.cpp sources/APU/DSP/BRR.cpp sources/PPU/PPUUtils.cpp - ) + sources/Debugger/TileViewer.cpp sources/Debugger/TileViewer.hpp) target_compile_definitions(ComSquare PUBLIC DEBUGGER_ENABLED) diff --git a/sources/Debugger/TileViewer.cpp b/sources/Debugger/TileViewer.cpp new file mode 100644 index 0000000..e6c73f9 --- /dev/null +++ b/sources/Debugger/TileViewer.cpp @@ -0,0 +1,58 @@ +// +// Created by cbihan on 5/7/21. +// + +#include "TileViewer.hpp" +#include "../SNES.hpp" +#include +#include +#include +#include +#include "../Utility/Utility.hpp" + +namespace ComSquare::Debugger +{ + TileViewer::TileViewer(SNES &snes, ComSquare::PPU::PPU &ppu) + : _window(new ClosableWindow(*this, &TileViewer::disableViewer)), + _snes(snes), + _ui(), + _ppu(ppu) + { + this->_window->setContextMenuPolicy(Qt::NoContextMenu); + this->_window->setAttribute(Qt::WA_QuitOnClose, false); + this->_window->setAttribute(Qt::WA_DeleteOnClose); + + this->_ui.setupUi(this->_window); +// QMainWindow::connect(this->_ui.cgram_view, &QTableView::pressed, this, &TileViewer::tileClicked); + this->_window->show(); + QEvent::registerEventType(); + } + + void TileViewer::disableViewer() + { + return; + } + + void TileViewer::focus() + { + this->_window->activateWindow(); + } + + bool TileViewer::isDebugger() + { + return true; + } + + uint16_t TileViewer::read(uint8_t addr) + { + return this->_ppu.cgramRead(addr); + } + + void TileViewer::tileClicked(const QModelIndex &index) + { + return; + if (!index.isValid()) + return; + this->updateInfoTile(index.row(), index.column()); + } +} \ No newline at end of file diff --git a/sources/Debugger/TileViewer.hpp b/sources/Debugger/TileViewer.hpp new file mode 100644 index 0000000..d3444f6 --- /dev/null +++ b/sources/Debugger/TileViewer.hpp @@ -0,0 +1,80 @@ +// +// Created by cbihan on 5/7/21. +// + +#pragma once + +#include +#include "../PPU/PPU.hpp" +#include "../../ui/ui_cgramView.h" +#include +#include +#include +#include +#include "ClosableWindow.hpp" + +/* +//! @brief The qt model that bind the logs to the view. +class CGramModel : public QAbstractTableModel +{ +Q_OBJECT +private: + //! @brief The ppu to log the cgram. + ComSquare::PPU::PPU &_ppu; +public: + //! @brief The number of columns + const int column = 16; + //! @brief The number of rows + const int rows = 16; + int x; + int y; + explicit CGramModel(ComSquare::PPU::PPU &ppu); + CGramModel(const CGramModel &) = delete; + const CGramModel &operator=(const CGramModel &) = delete; + ~CGramModel() override = default; + + //! @brief The number of row the table has. + int rowCount(const QModelIndex &parent) const override; + //! @brief The number of column the table has. + int columnCount(const QModelIndex &parent) const override; + //! @brief Return a data representing the table cell. + QVariant data(const QModelIndex &index, int role) const override; +}; + */ + +namespace ComSquare::Debugger +{ + //! @brief window that allow the user to view all data going through the memory bus. + class TileViewer : public QObject { + private: + //! @brief The QT window for this debugger. + ClosableWindow *_window; + //! @brief A reference to the snes (to disable the debugger). + SNES &_snes; + //! @brief A widget that contain the whole UI. + Ui::CgramView _ui; + //! @brief A reference to the ppu + ComSquare::PPU::PPU &_ppu; + public: + //! @brief Called when the window is closed. Turn off the debugger. + void disableViewer(); + public: + explicit TileViewer(SNES &snes, ComSquare::PPU::PPU &ppu); + TileViewer(const TileViewer &) = delete; + TileViewer &operator=(const TileViewer &) = delete; + ~TileViewer() = default; + + //! @brief Read data at the CGRAM address send it to the debugger. + //! @param addr The address to read from. + //! @return The color value in BGR, looks like this xbbbbbgggggrrrrr. + uint16_t read(uint8_t addr); + //! @brief Focus the debugger's window. + void focus(); + //! @brief Return true if the Bus is overloaded with debugging features. + bool isDebugger(); + //! @brief Update the text fields with corresponding tile info + void updateInfoTile(int row, int column); + //! @brief Update call updateInfoTile with the correct address + void tileClicked(const QModelIndex &index); + }; +} diff --git a/ui/testSfml.ui b/ui/testSfml.ui new file mode 100644 index 0000000..3bc2b67 --- /dev/null +++ b/ui/testSfml.ui @@ -0,0 +1,82 @@ + + + TileViwer + + + + 0 + 0 + 577 + 478 + + + + Palette Viewer + + + + :/resources/Logo.png:/resources/Logo.png + + + + + + + 0 + + + + Tab 1 + + + + + Tab 2 + + + + + 250 + 170 + 83 + 25 + + + + PushButton + + + + + + 150 + 160 + 83 + 25 + + + + PushButton + + + + + + + + + + + 0 + 0 + 577 + 22 + + + + + + + + +