mirror of
https://github.com/TomHarte/CLK.git
synced 2025-03-24 14:32:39 +00:00
Add has_msx_music flag.
This commit is contained in:
parent
b89076cb72
commit
a6ebfe2ce2
@ -18,6 +18,7 @@ namespace Analyser::Static::MSX {
|
||||
|
||||
struct Target: public ::Analyser::Static::Target, public Reflection::StructImpl<Target> {
|
||||
bool has_disk_drive = false;
|
||||
bool has_msx_music = false;
|
||||
std::string loading_command;
|
||||
|
||||
ReflectableEnum(Model,
|
||||
@ -36,6 +37,7 @@ struct Target: public ::Analyser::Static::Target, public Reflection::StructImpl<
|
||||
Target(): Analyser::Static::Target(Machine::MSX) {
|
||||
if(needs_declare()) {
|
||||
DeclareField(has_disk_drive);
|
||||
DeclareField(has_msx_music);
|
||||
DeclareField(region);
|
||||
AnnounceEnum(Region);
|
||||
DeclareField(model);
|
||||
|
@ -131,7 +131,7 @@ class AYPortHandler: public GI::AY38910::PortHandler {
|
||||
|
||||
using Target = Analyser::Static::MSX::Target;
|
||||
|
||||
template <Target::Model model>
|
||||
template <Target::Model model, bool has_opll>
|
||||
class ConcreteMachine:
|
||||
public Machine,
|
||||
public CPU::Z80::BusHandler,
|
||||
@ -978,10 +978,18 @@ using namespace MSX;
|
||||
|
||||
Machine *Machine::MSX(const Analyser::Static::Target *target, const ROMMachine::ROMFetcher &rom_fetcher) {
|
||||
const auto msx_target = dynamic_cast<const Target *>(target);
|
||||
switch(msx_target->model) {
|
||||
default: return nullptr;
|
||||
case Target::Model::MSX1: return new ConcreteMachine<Target::Model::MSX1>(*msx_target, rom_fetcher);
|
||||
case Target::Model::MSX2: return new ConcreteMachine<Target::Model::MSX2>(*msx_target, rom_fetcher);
|
||||
if(msx_target->has_msx_music) {
|
||||
switch(msx_target->model) {
|
||||
default: return nullptr;
|
||||
case Target::Model::MSX1: return new ConcreteMachine<Target::Model::MSX1, true>(*msx_target, rom_fetcher);
|
||||
case Target::Model::MSX2: return new ConcreteMachine<Target::Model::MSX2, true>(*msx_target, rom_fetcher);
|
||||
}
|
||||
} else {
|
||||
switch(msx_target->model) {
|
||||
default: return nullptr;
|
||||
case Target::Model::MSX1: return new ConcreteMachine<Target::Model::MSX1, false>(*msx_target, rom_fetcher);
|
||||
case Target::Model::MSX2: return new ConcreteMachine<Target::Model::MSX2, false>(*msx_target, rom_fetcher);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user