Browse Source

Now passing all subsystems to cores / refactoring.

* Renamed all classes that shared a name with their parent instance.
    * Moved core files to more appropriate locations.
    * Renamed PlipChip8 to Chip8Instance
master
Ian Burgmyer 4 years ago
parent
commit
067c960035
  1. 11
      CMakeLists.txt
  2. 18
      libplip/Core/Chip8/Chip8Instance.cpp
  3. 15
      libplip/Core/Chip8/Chip8Instance.h
  4. 4
      libplip/Core/PlipCore.cpp
  5. 14
      libplip/Core/PlipCore.h
  6. 26
      libplip/PlipInstance.cpp
  7. 8
      libplip/PlipInstance.h
  8. 10
      plip-sdl/main.cpp

11
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

18
libplip/Core/PlipChip8.cpp → 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 <iostream>
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]);
}

15
libplip/Core/PlipChip8.h → libplip/Core/Chip8/Chip8Instance.h

@ -1,4 +1,4 @@
/* PlipChip8.h
/* Chip8Instance.h
*
* A CHIP-8 implementation for Plip.
*
@ -10,14 +10,15 @@
#include <string>
#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;

4
libplip/PlipCore.cpp → 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<PlipCoreDescription> PlipCore::GetSupportedCores() {

14
libplip/PlipCore.h → libplip/Core/PlipCore.h

@ -6,11 +6,14 @@
#pragma once
#include <string>
#include <tuple>
#include <vector>
#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:

26
libplip/Plip.cpp → 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<PlipCoreDescription> Plip::GetSupportedCores() {
std::vector<PlipCoreDescription> 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);
}
}

8
libplip/Plip.h → 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 <string>
#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<PlipCoreDescription> GetSupportedCores();

10
plip-sdl/main.cpp

@ -8,7 +8,7 @@
#include <vector>
#include "cxxopts.hpp"
#include "Plip.h"
#include "PlipInstance.h"
#include "Config.h"
#include "SDL/SdlAudio.h"
@ -54,7 +54,7 @@ std::vector<float> 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();

Loading…
Cancel
Save