update UI and XML output for additional emulation status flags

This commit is contained in:
Vas Crabb 2019-03-17 13:33:49 +11:00
parent 0f520ff3bb
commit 82ac7de9b7
3 changed files with 78 additions and 29 deletions

View File

@ -168,7 +168,7 @@ const char info_xml_creator::s_dtd_string[] =
"\t\t\t<!ATTLIST driver cocktail (good|imperfect|preliminary) #IMPLIED>\n"
"\t\t\t<!ATTLIST driver savestate (supported|unsupported) #REQUIRED>\n"
"\t\t<!ELEMENT feature EMPTY>\n"
"\t\t\t<!ATTLIST feature type (protection|palette|graphics|sound|controls|keyboard|mouse|microphone|camera|disk|printer|lan|wan|timing) #REQUIRED>\n"
"\t\t\t<!ATTLIST feature type (protection|timing|graphics|palette|sound|capture|camera|microphone|controls|keyboard|mouse|media|disk|printer|tape|punch|drum|rom|comms|lan|wan) #REQUIRED>\n"
"\t\t\t<!ATTLIST feature status (unemulated|imperfect) #IMPLIED>\n"
"\t\t\t<!ATTLIST feature overall (unemulated|imperfect) #IMPLIED>\n"
"\t\t<!ELEMENT device (instance?, extension*)>\n"
@ -1639,19 +1639,26 @@ void info_xml_creator::output_features(device_type type, device_t::feature_type
{
static constexpr std::pair<device_t::feature_type, char const *> features[] = {
{ device_t::feature::PROTECTION, "protection" },
{ device_t::feature::PALETTE, "palette" },
{ device_t::feature::TIMING, "timing" },
{ device_t::feature::GRAPHICS, "graphics" },
{ device_t::feature::PALETTE, "palette" },
{ device_t::feature::SOUND, "sound" },
{ device_t::feature::CAPTURE, "capture" },
{ device_t::feature::CAMERA, "camera" },
{ device_t::feature::MICROPHONE, "microphone" },
{ device_t::feature::CONTROLS, "controls" },
{ device_t::feature::KEYBOARD, "keyboard" },
{ device_t::feature::MOUSE, "mouse" },
{ device_t::feature::MICROPHONE, "microphone" },
{ device_t::feature::CAMERA, "camera" },
{ device_t::feature::MEDIA, "media" },
{ device_t::feature::DISK, "disk" },
{ device_t::feature::PRINTER, "printer" },
{ device_t::feature::TAPE, "tape" },
{ device_t::feature::PUNCH, "punch" },
{ device_t::feature::DRUM, "drum" },
{ device_t::feature::ROM, "rom" },
{ device_t::feature::COMMS, "comms" },
{ device_t::feature::LAN, "lan" },
{ device_t::feature::WAN, "wan" },
{ device_t::feature::TIMING, "timing" } };
{ device_t::feature::WAN, "wan" } };
device_t::feature_type const flags(type.unemulated_features() | type.imperfect_features() | unemulated | imperfect);
for (auto const &feature : features)

View File

@ -28,20 +28,27 @@ constexpr machine_flags::type MACHINE_WARNINGS = machine_flags::NO_COCKTAIL | m
constexpr machine_flags::type MACHINE_BTANB = machine_flags::NO_SOUND_HW | machine_flags::IS_INCOMPLETE;
constexpr std::pair<device_t::feature_type, char const *> FEATURE_NAMES[] = {
{ device_t::feature::PROTECTION, __("protection") },
{ device_t::feature::PALETTE, __("color palette") },
{ device_t::feature::GRAPHICS, __("graphics") },
{ device_t::feature::SOUND, __("sound") },
{ device_t::feature::CONTROLS, __("controls") },
{ device_t::feature::KEYBOARD, __("keyboard") },
{ device_t::feature::MOUSE, __("mouse") },
{ device_t::feature::MICROPHONE, __("microphone") },
{ device_t::feature::CAMERA, __("camera") },
{ device_t::feature::DISK, __("disk") },
{ device_t::feature::PRINTER, __("printer") },
{ device_t::feature::LAN, __("LAN") },
{ device_t::feature::WAN, __("WAN") },
{ device_t::feature::TIMING, __("timing") } };
{ device_t::feature::PROTECTION, __("protection") },
{ device_t::feature::TIMING, __("timing") },
{ device_t::feature::GRAPHICS, __("graphics") },
{ device_t::feature::PALETTE, __("color palette") },
{ device_t::feature::SOUND, __("sound") },
{ device_t::feature::CAPTURE, __("capture hardware") },
{ device_t::feature::CAMERA, __("camera") },
{ device_t::feature::MICROPHONE, __("microphone") },
{ device_t::feature::CONTROLS, __("controls") },
{ device_t::feature::KEYBOARD, __("keyboard") },
{ device_t::feature::MOUSE, __("mouse") },
{ device_t::feature::MEDIA, __("media") },
{ device_t::feature::DISK, __("disk") },
{ device_t::feature::PRINTER, __("printer") },
{ device_t::feature::TAPE, __("magnetic tape") },
{ device_t::feature::PUNCH, __("punch tape") },
{ device_t::feature::DRUM, __("magnetic drum") },
{ device_t::feature::ROM, __("solid state storage") },
{ device_t::feature::COMMS, __("communications") },
{ device_t::feature::LAN, __("LAN") },
{ device_t::feature::WAN, __("WAN") } };
} // anonymous namespace

View File

@ -1075,6 +1075,21 @@ void menu_select_game::general_info(const game_driver *driver, std::string &buff
else
str << _("Sound\tOK\n");
if (flags.unemulated_features() & device_t::feature::CAPTURE)
str << _("Capture\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::CAPTURE)
str << _("Capture\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::CAMERA)
str << _("Camera\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::CAMERA)
str << _("Camera\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::MICROPHONE)
str << _("Microphone\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::MICROPHONE)
str << _("Microphone\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::CONTROLS)
str << _("Controls\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::CONTROLS)
@ -1090,15 +1105,10 @@ void menu_select_game::general_info(const game_driver *driver, std::string &buff
else if (flags.imperfect_features() & device_t::feature::MOUSE)
str << _("Mouse\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::MICROPHONE)
str << _("Microphone\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::MICROPHONE)
str << _("Microphone\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::CAMERA)
str << _("Camera\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::CAMERA)
str << _("Camera\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::MEDIA)
str << _("Media\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::MEDIA)
str << _("Media\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::DISK)
str << _("Disk\tUnimplemented\n");
@ -1110,6 +1120,31 @@ void menu_select_game::general_info(const game_driver *driver, std::string &buff
else if (flags.imperfect_features() & device_t::feature::PRINTER)
str << _("Printer\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::TAPE)
str << _("Mag. Tape\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::TAPE)
str << _("Mag. Tape\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::PUNCH)
str << _("Punch Tape\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::PUNCH)
str << _("Punch Tape\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::DRUM)
str << _("Mag. Drum\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::DRUM)
str << _("Mag. Drum\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::ROM)
str << _("(EP)ROM\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::ROM)
str << _("(EP)ROM\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::COMMS)
str << _("Communications\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::COMMS)
str << _("Communications\tImperfect\n");
if (flags.unemulated_features() & device_t::feature::LAN)
str << _("LAN\tUnimplemented\n");
else if (flags.imperfect_features() & device_t::feature::LAN)