diff --git a/CMakeLists.txt b/CMakeLists.txt index e39093f..3fc5096 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,15 +32,19 @@ add_custom_target( ) add_library(${lib_name} - libplip/Plip.cpp - libplip/PlipCore.cpp + libplip/PlipInstance.cpp libplip/PlipIo.cpp - libplip/Core/PlipChip8.cpp + + libplip/Core/PlipCore.cpp + libplip/Core/Chip8/Chip8Instance.cpp + libplip/Input/PlipInput.cpp libplip/Input/PlipInputDefinition.cpp + libplip/Memory/PlipMemoryMap.cpp libplip/Memory/PlipMemoryRam.cpp libplip/Memory/PlipMemoryRom.cpp + libplip/Video/PlipVideo.cpp ) @@ -56,6 +60,7 @@ add_dependencies(${lib_name} GENERATE_LIB_VERSION_HEADER) add_executable(${gui_name} plip-sdl/main.cpp plip-sdl/Config.cpp + plip-sdl/SDL/SdlAudio.cpp plip-sdl/SDL/SdlEvent.cpp plip-sdl/SDL/SdlWindow.cpp diff --git a/libplip/Core/PlipChip8.cpp b/libplip/Core/Chip8/Chip8Instance.cpp similarity index 86% rename from libplip/Core/PlipChip8.cpp rename to libplip/Core/Chip8/Chip8Instance.cpp index 018f3ef..2687eb6 100644 --- a/libplip/Core/PlipChip8.cpp +++ b/libplip/Core/Chip8/Chip8Instance.cpp @@ -1,16 +1,16 @@ -/* PlipChip8.cpp +/* Chip8Instance.cpp * * A CHIP-8 implementation for Plip. * * (hahaha, more like PLIP-8 amirite) */ -#include "PlipChip8.h" -#include "../PlipIo.h" +#include "Chip8Instance.h" +#include "../../PlipIo.h" -#include -namespace Plip::Core { - PlipChip8::PlipChip8(PlipInput *input) : Plip::PlipCore(input) { +namespace Plip::Core::Chip8 { + Chip8Instance::Chip8Instance(PlipAudio *audio, PlipInput *input, PlipVideo *video) + : Plip::PlipCore(audio, input, video) { m_ram = new PlipMemoryRam(RamSize); m_memoryMap->AddBlock(m_ram); @@ -32,10 +32,10 @@ namespace Plip::Core { m_input->AddInput(0xF, PlipInputDefinition(PlipInputType::Digital, "F"), { .digital = false }); } - void PlipChip8::Delta(long ns) { + void Chip8Instance::Delta(long ns) { } - PlipError PlipChip8::Load(const std::string &path) { + PlipError Chip8Instance::Load(const std::string &path) { using io = Plip::PlipIo; if(!io::FileExists(path)) return PlipError::FileNotFound; @@ -58,7 +58,7 @@ namespace Plip::Core { return PlipError::Success; } - void PlipChip8::WriteCharacterSet(uint32_t address) { + void Chip8Instance::WriteCharacterSet(uint32_t address) { for(auto i = 0; i < m_charsetLength; i++) m_memoryMap->SetByte(address + i, m_charset[i]); } diff --git a/libplip/Core/PlipChip8.h b/libplip/Core/Chip8/Chip8Instance.h similarity index 84% rename from libplip/Core/PlipChip8.h rename to libplip/Core/Chip8/Chip8Instance.h index 872e17f..06f5c64 100644 --- a/libplip/Core/PlipChip8.h +++ b/libplip/Core/Chip8/Chip8Instance.h @@ -1,4 +1,4 @@ -/* PlipChip8.h +/* Chip8Instance.h * * A CHIP-8 implementation for Plip. * @@ -10,14 +10,15 @@ #include #include "../PlipCore.h" -#include "../PlipError.h" -#include "../Input/PlipInput.h" -#include "../Memory/PlipMemoryRam.h" +#include "../../PlipError.h" +#include "../../PlipInstance.h" +#include "../../Input/PlipInput.h" +#include "../../Memory/PlipMemoryRam.h" -namespace Plip::Core { - class PlipChip8 : public PlipCore { +namespace Plip::Core::Chip8 { + class Chip8Instance : public PlipCore { public: - explicit PlipChip8(PlipInput *input); + Chip8Instance(PlipAudio *audio, PlipInput *input, PlipVideo *video); void Delta(long ns) override; PlipError Load(const std::string &path) override; diff --git a/libplip/PlipCore.cpp b/libplip/Core/PlipCore.cpp similarity index 73% rename from libplip/PlipCore.cpp rename to libplip/Core/PlipCore.cpp index b5b5284..07241b2 100644 --- a/libplip/PlipCore.cpp +++ b/libplip/Core/PlipCore.cpp @@ -6,8 +6,10 @@ #include "PlipCore.h" namespace Plip { - PlipCore::PlipCore(PlipInput *input) { + PlipCore::PlipCore(PlipAudio *audio, PlipInput *input, PlipVideo *video) { + m_audio = audio; m_input = input; + m_video = video; } std::vector PlipCore::GetSupportedCores() { diff --git a/libplip/PlipCore.h b/libplip/Core/PlipCore.h similarity index 75% rename from libplip/PlipCore.h rename to libplip/Core/PlipCore.h index 1e418b5..94241ee 100644 --- a/libplip/PlipCore.h +++ b/libplip/Core/PlipCore.h @@ -6,11 +6,14 @@ #pragma once #include +#include #include -#include "PlipError.h" -#include "Input/PlipInput.h" -#include "Memory/PlipMemoryMap.h" +#include "../PlipError.h" +#include "../Audio/PlipAudio.h" +#include "../Input/PlipInput.h" +#include "../Video/PlipVideo.h" +#include "../Memory/PlipMemoryMap.h" namespace Plip { enum class PlipValidCore { @@ -32,9 +35,12 @@ namespace Plip { virtual PlipError Load(const std::string &path) = 0; protected: - explicit PlipCore(PlipInput *input); + explicit PlipCore(PlipAudio *audio, PlipInput *input, PlipVideo *video); + PlipAudio *m_audio; PlipInput *m_input; + PlipVideo *m_video; + PlipMemoryMap *m_memoryMap = new PlipMemoryMap(); private: diff --git a/libplip/Plip.cpp b/libplip/PlipInstance.cpp similarity index 58% rename from libplip/Plip.cpp rename to libplip/PlipInstance.cpp index efb2017..157a396 100644 --- a/libplip/Plip.cpp +++ b/libplip/PlipInstance.cpp @@ -1,36 +1,36 @@ -/* Plip.cpp +/* PlipInstance.cpp * * The main class for controlling the Plip emulation suite. */ -#include "Plip.h" +#include "PlipInstance.h" #include "PlipVersion.h" -#include "Core/PlipChip8.h" +#include "Core/Chip8/Chip8Instance.h" namespace Plip { - Plip::Plip(PlipVideo *video, PlipAudio *audio) { + PlipInstance::PlipInstance(PlipVideo *video, PlipAudio *audio) { m_audio = audio; m_video = video; } - PlipAudio* Plip::GetAudio() { + PlipAudio* PlipInstance::GetAudio() { return m_audio; } - PlipCore* Plip::GetCore() { + PlipCore* PlipInstance::GetCore() { return m_core; } - PlipInput* Plip::GetInput() { + PlipInput* PlipInstance::GetInput() { return m_input; } - std::vector Plip::GetSupportedCores() { + std::vector PlipInstance::GetSupportedCores() { return PlipCore::GetSupportedCores(); } - std::string Plip::GetVersion() { + std::string PlipInstance::GetVersion() { #ifndef GIT_FOUND return PRODUCT_NAME; #else @@ -42,14 +42,14 @@ namespace Plip { #endif // GIT_FOUND } - PlipVideo* Plip::GetVideo() { + PlipVideo* PlipInstance::GetVideo() { return m_video; } - PlipError Plip::Load(PlipValidCore core, const std::string &path) { + PlipError PlipInstance::Load(PlipValidCore core, const std::string &path) { switch(core) { case PlipValidCore::Chip8: - m_core = new Core::PlipChip8(m_input); + m_core = new Core::Chip8::Chip8Instance(m_audio, m_input, m_video); break; default: return PlipError::InvalidCore; @@ -58,7 +58,7 @@ namespace Plip { return m_core->Load(path); } - void Plip::Run(long ns) { + void PlipInstance::Run(long ns) { m_core->Delta(ns); } } diff --git a/libplip/Plip.h b/libplip/PlipInstance.h similarity index 84% rename from libplip/Plip.h rename to libplip/PlipInstance.h index 1be291c..cd0b905 100644 --- a/libplip/Plip.h +++ b/libplip/PlipInstance.h @@ -1,4 +1,4 @@ -/* Plip.h +/* PlipInstance.h * * The main class for controlling the Plip emulation suite. */ @@ -7,16 +7,16 @@ #include -#include "PlipCore.h" #include "PlipError.h" +#include "Core/PlipCore.h" #include "Audio/PlipAudio.h" #include "Input/PlipInput.h" #include "Video/PlipVideo.h" namespace Plip { - class Plip final { + class PlipInstance final { public: - explicit Plip(PlipVideo *video, PlipAudio *audio); + PlipInstance(PlipVideo *video, PlipAudio *audio); static std::string GetVersion(); static std::vector GetSupportedCores(); diff --git a/plip-sdl/main.cpp b/plip-sdl/main.cpp index a4e5200..ebbe60f 100644 --- a/plip-sdl/main.cpp +++ b/plip-sdl/main.cpp @@ -8,7 +8,7 @@ #include #include "cxxopts.hpp" -#include "Plip.h" +#include "PlipInstance.h" #include "Config.h" #include "SDL/SdlAudio.h" @@ -54,7 +54,7 @@ std::vector waveGen() { return res; } -void gameLoop(Plip::Plip *plip, PlipSdl::Config *config, PlipSdl::SdlEvent *event, PlipSdl::Timer *timer) { +void gameLoop(Plip::PlipInstance *plip, PlipSdl::Config *config, PlipSdl::SdlEvent *event, PlipSdl::Timer *timer) { auto audio = plip->GetAudio(); auto video = plip->GetVideo(); @@ -136,14 +136,14 @@ cxxopts::ParseResult parseCmdLine(int argc, char **argv) { int main(int argc, char **argv) { auto opts = parseCmdLine(argc, argv); - auto version = Plip::Plip::GetVersion(); + auto version = Plip::PlipInstance::GetVersion(); if(opts.count("version")) { std::cout << version << std::endl; return 0; } - auto coreList = Plip::Plip::GetSupportedCores(); + auto coreList = Plip::PlipInstance::GetSupportedCores(); if(opts["list-cores"].count()) { std::cout << "Supported cores:\n\n"; std::cout << " Name | Description\n"; @@ -210,7 +210,7 @@ int main(int argc, char **argv) { auto wnd = new PlipSdl::SdlWindow(videoScale, version); auto audio = new PlipSdl::SdlAudio(); - auto plip = new Plip::Plip(wnd, audio); + auto plip = new Plip::PlipInstance(wnd, audio); #ifdef UNIX auto timer = new PlipSdl::TimerPosix();