1
0
mirror of https://github.com/TomHarte/CLK.git synced 2025-11-24 13:17:41 +00:00

Implement MediaChangeObserver for the consoles.

This commit is contained in:
Thomas Harte
2025-02-25 23:03:45 -05:00
parent 4b19a3f4ed
commit 1f6f30ae9e
3 changed files with 27 additions and 12 deletions

View File

@@ -75,10 +75,11 @@ using Target = Analyser::Static::Atari2600::Target;
class ConcreteMachine: class ConcreteMachine:
public Machine, public Machine,
public MachineTypes::TimedMachine,
public MachineTypes::AudioProducer, public MachineTypes::AudioProducer,
public MachineTypes::JoystickMachine,
public MachineTypes::MediaChangeObserver,
public MachineTypes::ScanProducer, public MachineTypes::ScanProducer,
public MachineTypes::JoystickMachine { public MachineTypes::TimedMachine {
public: public:
ConcreteMachine(const Target &target) : frequency_mismatch_warner_(*this) { ConcreteMachine(const Target &target) : frequency_mismatch_warner_(*this) {
const std::vector<uint8_t> &rom = target.media.cartridges.front()->get_segments().front().data; const std::vector<uint8_t> &rom = target.media.cartridges.front()->get_segments().front().data;
@@ -187,6 +188,10 @@ public:
return confidence_counter_.get_confidence(); return confidence_counter_.get_confidence();
} }
ChangeEffect effect_for_file_did_change(const std::string &) const final {
return ChangeEffect::RestartMachine;
}
private: private:
// The bus. // The bus.
std::unique_ptr<Bus> bus_; std::unique_ptr<Bus> bus_;

View File

@@ -109,10 +109,11 @@ class ConcreteMachine:
public Machine, public Machine,
public CPU::Z80::BusHandler, public CPU::Z80::BusHandler,
public Configurable::Device, public Configurable::Device,
public MachineTypes::TimedMachine,
public MachineTypes::ScanProducer,
public MachineTypes::AudioProducer, public MachineTypes::AudioProducer,
public MachineTypes::JoystickMachine { public MachineTypes::JoystickMachine,
public MachineTypes::MediaChangeObserver,
public MachineTypes::ScanProducer,
public MachineTypes::TimedMachine {
public: public:
ConcreteMachine(const Analyser::Static::Target &target, const ROMMachine::ROMFetcher &rom_fetcher) : ConcreteMachine(const Analyser::Static::Target &target, const ROMMachine::ROMFetcher &rom_fetcher) :
@@ -356,6 +357,10 @@ public:
return confidence_counter_.get_confidence(); return confidence_counter_.get_confidence();
} }
ChangeEffect effect_for_file_did_change(const std::string &) const final {
return ChangeEffect::RestartMachine;
}
// MARK: - Configuration options. // MARK: - Configuration options.
std::unique_ptr<Reflection::Struct> get_options() const final { std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly); auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);

View File

@@ -80,14 +80,15 @@ class Joystick: public Inputs::ConcreteJoystick {
template <Analyser::Static::Sega::Target::Model model> class ConcreteMachine: template <Analyser::Static::Sega::Target::Model model> class ConcreteMachine:
public Machine, public Machine,
public CPU::Z80::BusHandler,
public MachineTypes::TimedMachine,
public MachineTypes::ScanProducer,
public MachineTypes::AudioProducer,
public MachineTypes::KeyboardMachine,
public MachineTypes::JoystickMachine,
public Configurable::Device, public Configurable::Device,
public Inputs::Keyboard::Delegate { public CPU::Z80::BusHandler,
public Inputs::Keyboard::Delegate,
public MachineTypes::AudioProducer,
public MachineTypes::JoystickMachine,
public MachineTypes::KeyboardMachine,
public MachineTypes::MediaChangeObserver,
public MachineTypes::ScanProducer,
public MachineTypes::TimedMachine {
public: public:
ConcreteMachine(const Analyser::Static::Sega::Target &target, const ROMMachine::ROMFetcher &rom_fetcher) : ConcreteMachine(const Analyser::Static::Sega::Target &target, const ROMMachine::ROMFetcher &rom_fetcher) :
@@ -180,6 +181,10 @@ template <Analyser::Static::Sega::Target::Model model> class ConcreteMachine:
audio_queue_.flush(); audio_queue_.flush();
} }
ChangeEffect effect_for_file_did_change(const std::string &) const final {
return ChangeEffect::RestartMachine;
}
void set_scan_target(Outputs::Display::ScanTarget *scan_target) final { void set_scan_target(Outputs::Display::ScanTarget *scan_target) final {
vdp_.last_valid()->set_tv_standard( vdp_.last_valid()->set_tv_standard(
(region_ == Target::Region::Europe) ? (region_ == Target::Region::Europe) ?