Adding SPM package

This commit is contained in:
Selim Mustafaev 2023-09-25 23:03:06 +03:00
parent d3eaacbe8a
commit cb12225d5e
12 changed files with 57 additions and 14 deletions

View File

@ -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)

27
Package.swift Normal file
View File

@ -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
)

View File

@ -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:

View File

@ -5,7 +5,7 @@
#ifndef NES_WINDOW_H
#define NES_WINDOW_H
#include "Ppu.h"
#include "../../src/Ppu.h"
#include <SDL.h>
#include <memory>

View File

@ -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 <functional>
#include <thread>
@ -22,7 +22,7 @@ int main() {
});
device.connect(std::make_shared<SdlKeyboardController>());
//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();

View File

@ -5,7 +5,10 @@
#include "Cpu.h"
#include "Nes.h"
#include <iostream>
#ifdef NES_LOGGING
#include <fmt/format.h>
#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) {

View File

@ -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;

View File

@ -32,4 +32,4 @@ namespace nes {
std::ofstream file(path, std::ios::binary);
file.write(reinterpret_cast<char*>(_data.get()), static_cast<std::streamsize>(_offset));
}
}
}

View File

@ -3,7 +3,10 @@
//
#include "Ppu.h"
#ifdef NES_LOGGING
#include <fmt/format.h>
#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);
}
}
}

View File

@ -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<void(const Pixel*)> onNewFrame;