From cb12225d5e7fae251811d9ef89c5f6e52bd8ac82 Mon Sep 17 00:00:00 2001 From: Selim Mustafaev Date: Mon, 25 Sep 2023 23:03:06 +0300 Subject: [PATCH] Adding SPM package --- CMakeLists.txt | 10 +++---- Package.swift | 27 +++++++++++++++++++ .../sdl}/SdlKeyboardController.cpp | 0 {src => examples/sdl}/SdlKeyboardController.h | 2 +- {src => examples/sdl}/Window.cpp | 0 {src => examples/sdl}/Window.h | 2 +- main.cpp => examples/sdl/main.cpp | 8 +++--- src/Cpu.cpp | 5 ++++ src/Cpu.h | 3 +++ src/Logger.cpp | 2 +- src/Ppu.cpp | 7 ++++- src/Ppu.h | 5 +++- 12 files changed, 57 insertions(+), 14 deletions(-) create mode 100644 Package.swift rename {src => examples/sdl}/SdlKeyboardController.cpp (100%) rename {src => examples/sdl}/SdlKeyboardController.h (87%) rename {src => examples/sdl}/Window.cpp (100%) rename {src => examples/sdl}/Window.h (97%) rename main.cpp => examples/sdl/main.cpp (89%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 670dcc2..0233603 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ set(CMAKE_CXX_STANDARD 23) add_compile_definitions(SDL_MAIN_HANDLED) add_executable(nes - main.cpp + examples/sdl/main.cpp src/Cartridge.cpp src/Cartridge.h src/Nes.cpp @@ -17,16 +17,16 @@ add_executable(nes src/Mapper/Mapper.h src/Mapper/Mapper0.cpp src/Mapper/Mapper0.h src/Ppu.cpp src/Ppu.h - src/Window.cpp - src/Window.h + examples/sdl/Window.cpp + examples/sdl/Window.h src/Shifter.cpp src/Shifter.h src/Logger.cpp src/Logger.h src/Controller.cpp src/Controller.h - src/SdlKeyboardController.cpp - src/SdlKeyboardController.h src/Dma.cpp src/Dma.h + examples/sdl/SdlKeyboardController.cpp + examples/sdl/SdlKeyboardController.h src/Dma.cpp src/Dma.h src/Oam.cpp src/Oam.h) diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..7b44676 --- /dev/null +++ b/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version: 5.9 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "NesKit", + platforms: [ + .macOS(.v13), + .iOS(.v16) + ], + products: [ + // Products define the executables and libraries a package produces, making them visible to other packages. + .library( + name: "NesKit", + targets: ["NesKit"]), + ], + targets: [ + // Targets are the basic building blocks of a package, defining a module or a test suite. + // Targets can depend on other targets in this package and products from dependencies. + .target(name: "NesKit", + path: "./src", + exclude: ["Logger.cpp", "Logger.h"], + publicHeadersPath: ".") + ], + cxxLanguageStandard: .cxx20 +) diff --git a/src/SdlKeyboardController.cpp b/examples/sdl/SdlKeyboardController.cpp similarity index 100% rename from src/SdlKeyboardController.cpp rename to examples/sdl/SdlKeyboardController.cpp diff --git a/src/SdlKeyboardController.h b/examples/sdl/SdlKeyboardController.h similarity index 87% rename from src/SdlKeyboardController.h rename to examples/sdl/SdlKeyboardController.h index cb1b649..b00469c 100644 --- a/src/SdlKeyboardController.h +++ b/examples/sdl/SdlKeyboardController.h @@ -5,7 +5,7 @@ #ifndef NES_SDLKEYBOARDCONTROLLER_H #define NES_SDLKEYBOARDCONTROLLER_H -#include "Controller.h" +#include "../../src/Controller.h" class SdlKeyboardController: public nes::Controller { public: diff --git a/src/Window.cpp b/examples/sdl/Window.cpp similarity index 100% rename from src/Window.cpp rename to examples/sdl/Window.cpp diff --git a/src/Window.h b/examples/sdl/Window.h similarity index 97% rename from src/Window.h rename to examples/sdl/Window.h index 790504c..3cb8816 100644 --- a/src/Window.h +++ b/examples/sdl/Window.h @@ -5,7 +5,7 @@ #ifndef NES_WINDOW_H #define NES_WINDOW_H -#include "Ppu.h" +#include "../../src/Ppu.h" #include #include diff --git a/main.cpp b/examples/sdl/main.cpp similarity index 89% rename from main.cpp rename to examples/sdl/main.cpp index 991fdab..bb023d7 100644 --- a/main.cpp +++ b/examples/sdl/main.cpp @@ -1,6 +1,6 @@ -#include "src/Nes.h" -#include "src/Window.h" -#include "src/SdlKeyboardController.h" +#include "../../src/Nes.h" +#include "Window.h" +#include "SdlKeyboardController.h" #include #include @@ -22,7 +22,7 @@ int main() { }); device.connect(std::make_shared()); //device.insertCartridge("/home/selim/Downloads/dk.nes"); - device.insertCartridge("/Users/20910606/Documents/smb.nes"); + device.insertCartridge("/Users/selim/Documents/smb.nes"); //device.insertCartridge("C:\\Users\\selim\\Documents\\nestest.nes"); auto frameStart = std::chrono::steady_clock::now(); diff --git a/src/Cpu.cpp b/src/Cpu.cpp index d9d21b2..445677d 100644 --- a/src/Cpu.cpp +++ b/src/Cpu.cpp @@ -5,7 +5,10 @@ #include "Cpu.h" #include "Nes.h" #include + +#ifdef NES_LOGGING #include +#endif namespace nes { @@ -223,6 +226,7 @@ namespace nes { _ticks = 8; } +#ifdef NES_LOGGING std::string Cpu::state() const { return fmt::format("{} ({:02X}), PC: {:X}, SP: {:X}, A: {:02X}, X: {:02X}, Y: {:02X}, [N:{}, V:{}, B{}, D{}, I{}, Z:{}, C:{}], H: {:08X}", _instructions[_currentOpcode].name, @@ -237,6 +241,7 @@ namespace nes { (int)getFlag(Carry), _system->zpHash()); } +#endif void Cpu::setFlag(CpuFlags flag, bool value) { if(value) { diff --git a/src/Cpu.h b/src/Cpu.h index 4295105..ff84c0b 100644 --- a/src/Cpu.h +++ b/src/Cpu.h @@ -49,7 +49,10 @@ namespace nes { bool getFlag(CpuFlags flag) const; void setStartAddress(uint16_t address); void nmi(); + +#ifdef NES_LOGGING std::string state() const; +#endif private: size_t _ticks; diff --git a/src/Logger.cpp b/src/Logger.cpp index e297a00..f841d99 100644 --- a/src/Logger.cpp +++ b/src/Logger.cpp @@ -32,4 +32,4 @@ namespace nes { std::ofstream file(path, std::ios::binary); file.write(reinterpret_cast(_data.get()), static_cast(_offset)); } -} \ No newline at end of file +} diff --git a/src/Ppu.cpp b/src/Ppu.cpp index 231fc49..cc9ca77 100644 --- a/src/Ppu.cpp +++ b/src/Ppu.cpp @@ -3,7 +3,10 @@ // #include "Ppu.h" + +#ifdef NES_LOGGING #include +#endif namespace nes { @@ -422,6 +425,7 @@ namespace nes { } } +#ifdef NES_LOGGING std::string Ppu::state() const { auto palettes = (uint32_t*)_paletteTable.get(); @@ -445,8 +449,9 @@ namespace nes { _bgAttribShifter._lo, _bgAttribShifter._hi); } +#endif void Ppu::writeOam(uint8_t address, uint8_t data) { _oam->write(address, data); } -} \ No newline at end of file +} diff --git a/src/Ppu.h b/src/Ppu.h index 0a3a073..acc876b 100644 --- a/src/Ppu.h +++ b/src/Ppu.h @@ -107,10 +107,13 @@ namespace nes { void setPixel(uint16_t row, uint16_t column, Pixel pixel); void connect(Cartridge* cartridge); void reset(); - [[nodiscard]] std::string state() const; void writeOam(uint8_t address, uint8_t data); uint8_t internalRead(uint16_t address); void internalWrite(uint16_t address, uint8_t value); + +#ifdef NES_LOGGING + [[nodiscard]] std::string state() const; +#endif public: std::function onNewFrame;