diff --git a/Machines/ColecoVision/ColecoVision.cpp b/Machines/ColecoVision/ColecoVision.cpp index 8faedc7d0..722a33c9b 100644 --- a/Machines/ColecoVision/ColecoVision.cpp +++ b/Machines/ColecoVision/ColecoVision.cpp @@ -17,6 +17,7 @@ #include "../CRTMachine.hpp" #include "../JoystickMachine.hpp" +#include "../../Configurable/StandardOptions.hpp" #include "../../ClockReceiver/ForceInline.hpp" #include "../../Outputs/Speaker/Implementation/CompoundSource.hpp" @@ -31,6 +32,12 @@ const int sn76489_divider = 2; namespace Coleco { namespace Vision { +std::vector> get_options() { + return Configurable::standard_options( + static_cast(Configurable::DisplaySVideo | Configurable::DisplayCompositeColour) + ); +} + class Joystick: public Inputs::ConcreteJoystick { public: Joystick() : @@ -107,6 +114,7 @@ class ConcreteMachine: public Machine, public CPU::Z80::BusHandler, public CRTMachine::Machine, + public Configurable::Device, public JoystickMachine::Machine { public: @@ -357,6 +365,30 @@ class ConcreteMachine: return confidence_counter_.get_confidence(); } + // MARK: - Configuration options. + std::vector> get_options() override { + return Coleco::Vision::get_options(); + } + + void set_selections(const Configurable::SelectionSet &selections_by_option) override { + Configurable::Display display; + if(Configurable::get_display(selections_by_option, display)) { + set_video_signal_configurable(display); + } + } + + Configurable::SelectionSet get_accurate_selections() override { + Configurable::SelectionSet selection_set; + Configurable::append_display_selection(selection_set, Configurable::Display::CompositeColour); + return selection_set; + } + + Configurable::SelectionSet get_user_friendly_selections() override { + Configurable::SelectionSet selection_set; + Configurable::append_display_selection(selection_set, Configurable::Display::SVideo); + return selection_set; + } + private: inline void page_megacart(uint16_t address) { const std::size_t selected_start = (static_cast(address&63) << 14) % cartridge_.size(); diff --git a/Machines/ColecoVision/ColecoVision.hpp b/Machines/ColecoVision/ColecoVision.hpp index 54f989476..750e5bcbe 100644 --- a/Machines/ColecoVision/ColecoVision.hpp +++ b/Machines/ColecoVision/ColecoVision.hpp @@ -9,12 +9,15 @@ #ifndef ColecoVision_hpp #define ColecoVision_hpp +#include "../../Configurable/Configurable.hpp" #include "../../Analyser/Static/StaticAnalyser.hpp" #include "../ROMMachine.hpp" namespace Coleco { namespace Vision { +std::vector> get_options(); + class Machine { public: virtual ~Machine(); diff --git a/Machines/Utility/MachineForTarget.cpp b/Machines/Utility/MachineForTarget.cpp index 2ab1f0dac..c975b6978 100644 --- a/Machines/Utility/MachineForTarget.cpp +++ b/Machines/Utility/MachineForTarget.cpp @@ -133,6 +133,7 @@ std::map>> Machin options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::AmstradCPC), AmstradCPC::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::AppleII), AppleII::get_options())); + options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::ColecoVision), Coleco::Vision::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::Electron), Electron::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::MSX), MSX::get_options())); options.emplace(std::make_pair(LongNameForTargetMachine(Analyser::Machine::Oric), Oric::get_options())); diff --git a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm index ea8725b9a..8dcdff8c0 100644 --- a/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm +++ b/OSBindings/Mac/Clock Signal/Machine/StaticAnalyser/CSStaticAnalyser.mm @@ -196,6 +196,7 @@ static Analyser::Static::ZX8081::Target::MemoryModel ZX8081MemoryModelFromSize(K case Analyser::Machine::AmstradCPC: return @"CompositeOptions"; case Analyser::Machine::AppleII: return @"AppleIIOptions"; case Analyser::Machine::Atari2600: return @"Atari2600Options"; + case Analyser::Machine::ColecoVision: return @"CompositeOptions"; case Analyser::Machine::Electron: return @"QuickLoadCompositeOptions"; case Analyser::Machine::MasterSystem: return @"CompositeOptions"; case Analyser::Machine::MSX: return @"QuickLoadCompositeOptions";