1
0
mirror of https://github.com/TomHarte/CLK.git synced 2026-04-20 10:17:05 +00:00

Improve option naming, add one for dynamic crop.

This commit is contained in:
Thomas Harte
2025-10-29 17:19:15 -04:00
parent 3ef615f508
commit ecc623cd6c
27 changed files with 140 additions and 126 deletions
+24 -10
View File
@@ -25,10 +25,12 @@ ReflectableEnum(Display,
// ensure unified property naming.
//===
template <typename Owner> class DisplayOption {
namespace Options {
template <typename Owner> class Display {
public:
Configurable::Display output;
DisplayOption(Configurable::Display output) : output(output) {}
Display(const Configurable::Display output) noexcept : output(output) {}
protected:
void declare_display_option() {
@@ -37,26 +39,38 @@ protected:
}
};
template <typename Owner> class QuickloadOption {
template <typename Owner> class QuickLoad {
public:
bool quickload;
QuickloadOption(bool quickload) : quickload(quickload) {}
bool quick_load;
QuickLoad(const bool quick_load) noexcept : quick_load(quick_load) {}
protected:
void declare_quickload_option() {
static_cast<Owner *>(this)->declare(&quickload, "quickload");
static_cast<Owner *>(this)->declare(&quick_load, "quickload");
}
};
template <typename Owner> class QuickbootOption {
template <typename Owner> class QuickBoot {
public:
bool quickboot;
QuickbootOption(bool quickboot) : quickboot(quickboot) {}
bool quick_boot;
QuickBoot(const bool quick_boot) noexcept : quick_boot(quick_boot) {}
protected:
void declare_quickboot_option() {
static_cast<Owner *>(this)->declare(&quickboot, "quickboot");
static_cast<Owner *>(this)->declare(&quick_boot, "quickboot");
}
};
template <typename Owner> class DynamicCrop {
public:
bool dynamic_crop;
DynamicCrop(const bool dynamic_crop) noexcept : dynamic_crop(dynamic_crop) {}
protected:
void declare_quickboot_option() {
static_cast<Owner *>(this)->declare(&dynamic_crop, "dynamiccrop");
}
};
}
}
+2 -2
View File
@@ -509,13 +509,13 @@ private:
// MARK: - Configuration options.
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
options->quickload = accelerate_loading_;
options->quick_load = accelerate_loading_;
return options;
}
void set_options(const std::unique_ptr<Reflection::Struct> &str) final {
const auto options = dynamic_cast<Options *>(str.get());
accelerate_loading_ = options->quickload;
accelerate_loading_ = options->quick_load;
}
// MARK: - AudioProducer
+5 -5
View File
@@ -24,13 +24,13 @@ struct Machine {
const ROMMachine::ROMFetcher &rom_fetcher
);
class Options: public Reflection::StructImpl<Options>, public Configurable::QuickloadOption<Options> {
friend Configurable::QuickloadOption<Options>;
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::QuickLoad<Options> {
friend Configurable::Options::QuickLoad<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
Options(const Configurable::OptionsType type) :
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
declare_quickload_option();
+2 -2
View File
@@ -599,7 +599,7 @@ public:
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
options->output = get_video_signal_configurable();
options->quickload = allow_fast_tape_hack_;
options->quick_load = allow_fast_tape_hack_;
return options;
}
@@ -607,7 +607,7 @@ public:
const auto options = dynamic_cast<Options *>(str.get());
set_video_signal_configurable(options->output);
allow_fast_tape_hack_ = options->quickload;
allow_fast_tape_hack_ = options->quick_load;
set_use_fast_tape_hack();
}
+7 -7
View File
@@ -35,22 +35,22 @@ struct Machine {
/// Defines the runtime options available for an Electron.
class Options:
public Reflection::StructImpl<Options>,
public Configurable::DisplayOption<Options>,
public Configurable::QuickloadOption<Options>
public Configurable::Options::Display<Options>,
public Configurable::Options::QuickLoad<Options>
{
friend Configurable::DisplayOption<Options>;
friend Configurable::QuickloadOption<Options>;
friend Configurable::Options::Display<Options>;
friend Configurable::Options::QuickLoad<Options>;
public:
Options(const Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(
Configurable::Options::Display<Options>(
type == Configurable::OptionsType::UserFriendly ?
Configurable::Display::RGB : Configurable::Display::CompositeColour
),
Configurable::QuickloadOption<Options>(
Configurable::Options::QuickLoad<Options>(
type == Configurable::OptionsType::UserFriendly) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+2 -2
View File
@@ -1191,14 +1191,14 @@ public:
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
options->output = get_video_signal_configurable();
options->quickload = allow_fast_tape_hack_;
options->quick_load = allow_fast_tape_hack_;
return options;
}
void set_options(const std::unique_ptr<Reflection::Struct> &str) {
const auto options = dynamic_cast<Options *>(str.get());
set_video_signal_configurable(options->output);
allow_fast_tape_hack_ = options->quickload;
allow_fast_tape_hack_ = options->quick_load;
set_use_fast_tape_hack();
}
+7 -7
View File
@@ -32,19 +32,19 @@ struct Machine {
/// Defines the runtime options available for an Amstrad CPC.
class Options:
public Reflection::StructImpl<Options>,
public Configurable::DisplayOption<Options>,
public Configurable::QuickloadOption<Options>
public Configurable::Options::Display<Options>,
public Configurable::Options::QuickLoad<Options>
{
public:
Options(const Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(Configurable::Display::RGB),
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
Configurable::Options::Display<Options>(Configurable::Display::RGB),
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {}
private:
friend Configurable::DisplayOption<Options>;
friend Configurable::QuickloadOption<Options>;
friend Configurable::Options::Display<Options>;
friend Configurable::Options::QuickLoad<Options>;
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+5 -5
View File
@@ -24,15 +24,15 @@ struct Machine {
static std::unique_ptr<Machine> AppleII(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
/// Defines the runtime options available for an Apple II.
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
friend Configurable::DisplayOption<Options>;
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
friend Configurable::Options::Display<Options>;
public:
bool use_square_pixels = false;
Options(Configurable::OptionsType) :
Configurable::DisplayOption<Options>(Configurable::Display::CompositeColour) {}
Options(const Configurable::OptionsType) :
Configurable::Options::Display<Options>(Configurable::Display::CompositeColour) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+2 -2
View File
@@ -506,7 +506,7 @@ public:
// MARK: - Configuration options.
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
options->quickboot = quickboot_;
options->quick_boot = quickboot_;
return options;
}
@@ -515,7 +515,7 @@ public:
// It should probably be a construction option.
const auto options = dynamic_cast<Options *>(str.get());
quickboot_ = options->quickboot;
quickboot_ = options->quick_boot;
using Model = Analyser::Static::Macintosh::Target::Model;
const bool is_plus_rom = model == Model::Mac512ke || model == Model::MacPlus;
+4 -4
View File
@@ -21,11 +21,11 @@ struct Machine {
/// Creates and returns a Macintosh.
static std::unique_ptr<Machine> Macintosh(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
class Options: public Reflection::StructImpl<Options>, public Configurable::QuickbootOption<Options> {
friend Configurable::QuickbootOption<Options>;
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::QuickBoot<Options> {
friend Configurable::Options::QuickBoot<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::QuickbootOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
Options(const Configurable::OptionsType type) :
Configurable::Options::QuickBoot<Options>(type == Configurable::OptionsType::UserFriendly) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
+4 -4
View File
@@ -22,15 +22,15 @@ struct Machine {
static std::unique_ptr<Machine> AtariST(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
friend Configurable::DisplayOption<Options>;
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
friend Configurable::Options::Display<Options>;
public:
Options(Configurable::OptionsType type) : Configurable::DisplayOption<Options>(
Options(const Configurable::OptionsType type) : Configurable::Options::Display<Options>(
type == Configurable::OptionsType::UserFriendly ?
Configurable::Display::RGB : Configurable::Display::CompositeColour) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+5 -5
View File
@@ -21,15 +21,15 @@ struct Machine {
virtual ~Machine() = default;
static std::unique_ptr<Machine> ColecoVision(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
friend Configurable::DisplayOption<Options>;
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
friend Configurable::Options::Display<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
Options(const Configurable::OptionsType type) :
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
Configurable::Display::SVideo : Configurable::Display::CompositeColour) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+2 -2
View File
@@ -1173,7 +1173,7 @@ private:
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
options->output = get_video_signal_configurable();
options->quickload = allow_fast_tape_hack_;
options->quick_load = allow_fast_tape_hack_;
return options;
}
@@ -1181,7 +1181,7 @@ private:
const auto options = dynamic_cast<Options *>(str.get());
set_video_signal_configurable(options->output);
allow_fast_tape_hack_ = options->quickload;
allow_fast_tape_hack_ = options->quick_load;
set_use_fast_tape();
}
};
+8 -8
View File
@@ -26,19 +26,19 @@ struct Machine {
class Options:
public Reflection::StructImpl<Options>,
public Configurable::DisplayOption<Options>,
public Configurable::QuickloadOption<Options>
public Configurable::Options::Display<Options>,
public Configurable::Options::QuickLoad<Options>
{
friend Configurable::DisplayOption<Options>;
friend Configurable::QuickloadOption<Options>;
friend Configurable::Options::Display<Options>;
friend Configurable::Options::QuickLoad<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
Options(const Configurable::OptionsType type) :
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
Configurable::Display::SVideo : Configurable::Display::CompositeColour),
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {
}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+2 -2
View File
@@ -696,14 +696,14 @@ public:
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
options->output = get_video_signal_configurable();
options->quickload = allow_fast_tape_hack_;
options->quick_load = allow_fast_tape_hack_;
return options;
}
void set_options(const std::unique_ptr<Reflection::Struct> &str) final {
const auto options = dynamic_cast<Options *>(str.get());
set_video_signal_configurable(options->output);
allow_fast_tape_hack_ = options->quickload;
allow_fast_tape_hack_ = options->quick_load;
set_use_fast_tape();
}
+7 -7
View File
@@ -28,16 +28,16 @@ struct Machine {
class Options:
public Reflection::StructImpl<Options>,
public Configurable::DisplayOption<Options>,
public Configurable::QuickloadOption<Options>
public Configurable::Options::Display<Options>,
public Configurable::Options::QuickLoad<Options>
{
friend Configurable::DisplayOption<Options>;
friend Configurable::QuickloadOption<Options>;
friend Configurable::Options::Display<Options>;
friend Configurable::Options::QuickLoad<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
Options(const Configurable::OptionsType type) :
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
Configurable::Display::SVideo : Configurable::Display::CompositeColour),
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {
}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
+5 -5
View File
@@ -28,16 +28,16 @@ struct Machine {
static std::unique_ptr<Machine> Enterprise(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
/// Defines the runtime options available for an Enterprise.
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
friend Configurable::DisplayOption<Options>;
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
friend Configurable::Options::Display<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(
Options(const Configurable::OptionsType type) :
Configurable::Options::Display<Options>(
type == Configurable::OptionsType::UserFriendly ?
Configurable::Display::RGB : Configurable::Display::CompositeColour) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+2 -2
View File
@@ -815,14 +815,14 @@ public:
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
options->output = get_video_signal_configurable();
options->quickload = allow_fast_tape_;
options->quick_load = allow_fast_tape_;
return options;
}
void set_options(const std::unique_ptr<Reflection::Struct> &str) final {
const auto options = dynamic_cast<Options *>(str.get());
set_video_signal_configurable(options->output);
allow_fast_tape_ = options->quickload;
allow_fast_tape_ = options->quick_load;
set_use_fast_tape();
}
+8 -8
View File
@@ -23,18 +23,18 @@ struct Machine {
class Options:
public Reflection::StructImpl<Options>,
public Configurable::DisplayOption<Options>,
public Configurable::QuickloadOption<Options>
public Configurable::Options::Display<Options>,
public Configurable::Options::QuickLoad<Options>
{
friend Configurable::DisplayOption<Options>;
friend Configurable::QuickloadOption<Options>;
friend Configurable::Options::Display<Options>;
friend Configurable::Options::QuickLoad<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ? Configurable::Display::RGB : Configurable::Display::CompositeColour),
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
Options(const Configurable::OptionsType type) :
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ? Configurable::Display::RGB : Configurable::Display::CompositeColour),
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+5 -5
View File
@@ -21,15 +21,15 @@ struct Machine {
virtual ~Machine() = default;
static std::unique_ptr<Machine> MasterSystem(const Analyser::Static::Target *, const ROMMachine::ROMFetcher &);
class Options: public Reflection::StructImpl<Options>, public Configurable::DisplayOption<Options> {
friend Configurable::DisplayOption<Options>;
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::Display<Options> {
friend Configurable::Options::Display<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
Options(const Configurable::OptionsType type) :
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
Configurable::Display::RGB : Configurable::Display::CompositeColour) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+2 -2
View File
@@ -679,14 +679,14 @@ public:
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly);
options->output = get_video_signal_configurable();
options->quickload = use_fast_tape_hack_;
options->quick_load = use_fast_tape_hack_;
return options;
}
void set_options(const std::unique_ptr<Reflection::Struct> &str) final {
const auto options = dynamic_cast<Options *>(str.get());
set_video_signal_configurable(options->output);
set_use_fast_tape_hack(options->quickload);
set_use_fast_tape_hack(options->quick_load);
}
void set_activity_observer(Activity::Observer *observer) final {
+8 -8
View File
@@ -26,19 +26,19 @@ struct Machine {
class Options:
public Reflection::StructImpl<Options>,
public Configurable::DisplayOption<Options>,
public Configurable::QuickloadOption<Options>
public Configurable::Options::Display<Options>,
public Configurable::Options::QuickLoad<Options>
{
friend Configurable::DisplayOption<Options>;
friend Configurable::QuickloadOption<Options>;
friend Configurable::Options::Display<Options>;
friend Configurable::Options::QuickLoad<Options>;
public:
Options(Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ?
Options(const Configurable::OptionsType type) :
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ?
Configurable::Display::RGB : Configurable::Display::CompositeColour),
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly) {}
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+5 -5
View File
@@ -30,15 +30,15 @@ struct Machine {
/// Defines the runtime options [sometimes] available for a PC.
class Options:
public Reflection::StructImpl<Options>,
public Configurable::DisplayOption<Options>
public Configurable::Options::Display<Options>
{
friend Configurable::DisplayOption<Options>;
friend Configurable::Options::Display<Options>;
public:
Options(Configurable::OptionsType) :
Configurable::DisplayOption<Options>(Configurable::Display::RGB) {}
Options(const Configurable::OptionsType) :
Configurable::Options::Display<Options>(Configurable::Display::RGB) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+2 -2
View File
@@ -386,14 +386,14 @@ public:
std::unique_ptr<Reflection::Struct> get_options() const final {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly); // OptionsType is arbitrary, but not optional.
options->automatic_tape_motor_control = use_automatic_tape_motor_control_;
options->quickload = allow_fast_tape_hack_;
options->quick_load = allow_fast_tape_hack_;
return options;
}
void set_options(const std::unique_ptr<Reflection::Struct> &str) {
const auto options = dynamic_cast<Options *>(str.get());
set_use_automatic_tape_motor_control(options->automatic_tape_motor_control);
allow_fast_tape_hack_ = options->quickload;
allow_fast_tape_hack_ = options->quick_load;
set_use_fast_tape();
}
+5 -5
View File
@@ -26,17 +26,17 @@ struct Machine {
virtual bool get_tape_is_playing() = 0;
/// Defines the runtime options available for a ZX80/81.
class Options: public Reflection::StructImpl<Options>, public Configurable::QuickloadOption<Options> {
friend Configurable::QuickloadOption<Options>;
class Options: public Reflection::StructImpl<Options>, public Configurable::Options::QuickLoad<Options> {
friend Configurable::Options::QuickLoad<Options>;
public:
bool automatic_tape_motor_control = true;
Options(Configurable::OptionsType type):
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly),
Options(const Configurable::OptionsType type):
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly),
automatic_tape_motor_control(type == Configurable::OptionsType::UserFriendly) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {
+2 -2
View File
@@ -731,7 +731,7 @@ public:
std::unique_ptr<Reflection::Struct> get_options() const override {
auto options = std::make_unique<Options>(Configurable::OptionsType::UserFriendly); // OptionsType is arbitrary, but not optional.
options->automatic_tape_motor_control = use_automatic_tape_motor_control_;
options->quickload = allow_fast_tape_hack_;
options->quick_load = allow_fast_tape_hack_;
options->output = get_video_signal_configurable();
return options;
}
@@ -740,7 +740,7 @@ public:
const auto options = dynamic_cast<Options *>(str.get());
set_video_signal_configurable(options->output);
set_use_automatic_tape_motor_control(options->automatic_tape_motor_control);
allow_fast_tape_hack_ = options->quickload;
allow_fast_tape_hack_ = options->quick_load;
set_use_fast_tape();
}
+8 -8
View File
@@ -26,21 +26,21 @@ struct Machine {
class Options:
public Reflection::StructImpl<Options>,
public Configurable::DisplayOption<Options>,
public Configurable::QuickloadOption<Options>
public Configurable::Options::Display<Options>,
public Configurable::Options::QuickLoad<Options>
{
friend Configurable::DisplayOption<Options>;
friend Configurable::QuickloadOption<Options>;
friend Configurable::Options::Display<Options>;
friend Configurable::Options::QuickLoad<Options>;
public:
bool automatic_tape_motor_control = true;
Options(Configurable::OptionsType type) :
Configurable::DisplayOption<Options>(type == Configurable::OptionsType::UserFriendly ? Configurable::Display::RGB : Configurable::Display::CompositeColour),
Configurable::QuickloadOption<Options>(type == Configurable::OptionsType::UserFriendly),
Options(const Configurable::OptionsType type) :
Configurable::Options::Display<Options>(type == Configurable::OptionsType::UserFriendly ? Configurable::Display::RGB : Configurable::Display::CompositeColour),
Configurable::Options::QuickLoad<Options>(type == Configurable::OptionsType::UserFriendly),
automatic_tape_motor_control(type == Configurable::OptionsType::UserFriendly) {}
private:
Options() : Options(Configurable::OptionsType::UserFriendly) {}
Options() : Options( Configurable::OptionsType::UserFriendly) {}
friend Reflection::StructImpl<Options>;
void declare_fields() {