Adding SPM package
This commit is contained in:
parent
d3eaacbe8a
commit
cb12225d5e
@ -6,7 +6,7 @@ set(CMAKE_CXX_STANDARD 23)
|
|||||||
add_compile_definitions(SDL_MAIN_HANDLED)
|
add_compile_definitions(SDL_MAIN_HANDLED)
|
||||||
|
|
||||||
add_executable(nes
|
add_executable(nes
|
||||||
main.cpp
|
examples/sdl/main.cpp
|
||||||
src/Cartridge.cpp
|
src/Cartridge.cpp
|
||||||
src/Cartridge.h
|
src/Cartridge.h
|
||||||
src/Nes.cpp
|
src/Nes.cpp
|
||||||
@ -17,16 +17,16 @@ add_executable(nes
|
|||||||
src/Mapper/Mapper.h
|
src/Mapper/Mapper.h
|
||||||
src/Mapper/Mapper0.cpp
|
src/Mapper/Mapper0.cpp
|
||||||
src/Mapper/Mapper0.h src/Ppu.cpp src/Ppu.h
|
src/Mapper/Mapper0.h src/Ppu.cpp src/Ppu.h
|
||||||
src/Window.cpp
|
examples/sdl/Window.cpp
|
||||||
src/Window.h
|
examples/sdl/Window.h
|
||||||
src/Shifter.cpp
|
src/Shifter.cpp
|
||||||
src/Shifter.h
|
src/Shifter.h
|
||||||
src/Logger.cpp
|
src/Logger.cpp
|
||||||
src/Logger.h
|
src/Logger.h
|
||||||
src/Controller.cpp
|
src/Controller.cpp
|
||||||
src/Controller.h
|
src/Controller.h
|
||||||
src/SdlKeyboardController.cpp
|
examples/sdl/SdlKeyboardController.cpp
|
||||||
src/SdlKeyboardController.h src/Dma.cpp src/Dma.h
|
examples/sdl/SdlKeyboardController.h src/Dma.cpp src/Dma.h
|
||||||
src/Oam.cpp
|
src/Oam.cpp
|
||||||
src/Oam.h)
|
src/Oam.h)
|
||||||
|
|
||||||
|
|||||||
27
Package.swift
Normal file
27
Package.swift
Normal 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
|
||||||
|
)
|
||||||
@ -5,7 +5,7 @@
|
|||||||
#ifndef NES_SDLKEYBOARDCONTROLLER_H
|
#ifndef NES_SDLKEYBOARDCONTROLLER_H
|
||||||
#define NES_SDLKEYBOARDCONTROLLER_H
|
#define NES_SDLKEYBOARDCONTROLLER_H
|
||||||
|
|
||||||
#include "Controller.h"
|
#include "../../src/Controller.h"
|
||||||
|
|
||||||
class SdlKeyboardController: public nes::Controller {
|
class SdlKeyboardController: public nes::Controller {
|
||||||
public:
|
public:
|
||||||
@ -5,7 +5,7 @@
|
|||||||
#ifndef NES_WINDOW_H
|
#ifndef NES_WINDOW_H
|
||||||
#define NES_WINDOW_H
|
#define NES_WINDOW_H
|
||||||
|
|
||||||
#include "Ppu.h"
|
#include "../../src/Ppu.h"
|
||||||
|
|
||||||
#include <SDL.h>
|
#include <SDL.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
@ -1,6 +1,6 @@
|
|||||||
#include "src/Nes.h"
|
#include "../../src/Nes.h"
|
||||||
#include "src/Window.h"
|
#include "Window.h"
|
||||||
#include "src/SdlKeyboardController.h"
|
#include "SdlKeyboardController.h"
|
||||||
|
|
||||||
#include <functional>
|
#include <functional>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
@ -22,7 +22,7 @@ int main() {
|
|||||||
});
|
});
|
||||||
device.connect(std::make_shared<SdlKeyboardController>());
|
device.connect(std::make_shared<SdlKeyboardController>());
|
||||||
//device.insertCartridge("/home/selim/Downloads/dk.nes");
|
//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");
|
//device.insertCartridge("C:\\Users\\selim\\Documents\\nestest.nes");
|
||||||
|
|
||||||
auto frameStart = std::chrono::steady_clock::now();
|
auto frameStart = std::chrono::steady_clock::now();
|
||||||
@ -5,7 +5,10 @@
|
|||||||
#include "Cpu.h"
|
#include "Cpu.h"
|
||||||
#include "Nes.h"
|
#include "Nes.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
#ifdef NES_LOGGING
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace nes {
|
namespace nes {
|
||||||
|
|
||||||
@ -223,6 +226,7 @@ namespace nes {
|
|||||||
_ticks = 8;
|
_ticks = 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NES_LOGGING
|
||||||
std::string Cpu::state() const {
|
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}",
|
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,
|
_instructions[_currentOpcode].name,
|
||||||
@ -237,6 +241,7 @@ namespace nes {
|
|||||||
(int)getFlag(Carry),
|
(int)getFlag(Carry),
|
||||||
_system->zpHash());
|
_system->zpHash());
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void Cpu::setFlag(CpuFlags flag, bool value) {
|
void Cpu::setFlag(CpuFlags flag, bool value) {
|
||||||
if(value) {
|
if(value) {
|
||||||
|
|||||||
@ -49,7 +49,10 @@ namespace nes {
|
|||||||
bool getFlag(CpuFlags flag) const;
|
bool getFlag(CpuFlags flag) const;
|
||||||
void setStartAddress(uint16_t address);
|
void setStartAddress(uint16_t address);
|
||||||
void nmi();
|
void nmi();
|
||||||
|
|
||||||
|
#ifdef NES_LOGGING
|
||||||
std::string state() const;
|
std::string state() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
private:
|
private:
|
||||||
size_t _ticks;
|
size_t _ticks;
|
||||||
|
|||||||
@ -3,7 +3,10 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
#include "Ppu.h"
|
#include "Ppu.h"
|
||||||
|
|
||||||
|
#ifdef NES_LOGGING
|
||||||
#include <fmt/format.h>
|
#include <fmt/format.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace nes {
|
namespace nes {
|
||||||
|
|
||||||
@ -422,6 +425,7 @@ namespace nes {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef NES_LOGGING
|
||||||
std::string Ppu::state() const {
|
std::string Ppu::state() const {
|
||||||
|
|
||||||
auto palettes = (uint32_t*)_paletteTable.get();
|
auto palettes = (uint32_t*)_paletteTable.get();
|
||||||
@ -445,6 +449,7 @@ namespace nes {
|
|||||||
_bgAttribShifter._lo,
|
_bgAttribShifter._lo,
|
||||||
_bgAttribShifter._hi);
|
_bgAttribShifter._hi);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void Ppu::writeOam(uint8_t address, uint8_t data) {
|
void Ppu::writeOam(uint8_t address, uint8_t data) {
|
||||||
_oam->write(address, data);
|
_oam->write(address, data);
|
||||||
|
|||||||
@ -107,11 +107,14 @@ namespace nes {
|
|||||||
void setPixel(uint16_t row, uint16_t column, Pixel pixel);
|
void setPixel(uint16_t row, uint16_t column, Pixel pixel);
|
||||||
void connect(Cartridge* cartridge);
|
void connect(Cartridge* cartridge);
|
||||||
void reset();
|
void reset();
|
||||||
[[nodiscard]] std::string state() const;
|
|
||||||
void writeOam(uint8_t address, uint8_t data);
|
void writeOam(uint8_t address, uint8_t data);
|
||||||
uint8_t internalRead(uint16_t address);
|
uint8_t internalRead(uint16_t address);
|
||||||
void internalWrite(uint16_t address, uint8_t value);
|
void internalWrite(uint16_t address, uint8_t value);
|
||||||
|
|
||||||
|
#ifdef NES_LOGGING
|
||||||
|
[[nodiscard]] std::string state() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
std::function<void(const Pixel*)> onNewFrame;
|
std::function<void(const Pixel*)> onNewFrame;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user