summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author cracyc <cracyc@users.noreply.github.com>2019-05-13 14:53:08 -0500
committer GitHub <noreply@github.com>2019-05-13 14:53:08 -0500
commit072ae8d701132632e633698315bc4af65655cf00 (patch)
treeef06f20c2ec9cc21369296cfe920af15b686a38e
parent6fa973d6b0840aac7990878aceacb3610c747c4f (diff)
parentb08bb5b244e88eef3914650c91894b1c17df4236 (diff)
luaengine: add machine_flags library (#5048)
-rwxr-xr-xsrc/frontend/mame/luaengine.cpp66
1 files changed, 65 insertions, 1 deletions
diff --git a/src/frontend/mame/luaengine.cpp b/src/frontend/mame/luaengine.cpp
index 1aa29704db7..80706f0b7f5 100755
--- a/src/frontend/mame/luaengine.cpp
+++ b/src/frontend/mame/luaengine.cpp
@@ -1283,6 +1283,18 @@ void lua_engine::initialize()
* driver.manufacturer
* driver.compatible_with
* driver.default_layout
+ * driver.orientation - screen rotation degree (rot0/90/180/270)
+ * driver.type - machine type (arcade/console/computer/other)
+ * driver.not_working - not considered working
+ * driver.supports_save - supports save states
+ * driver.no_cocktail - screen flip support is missing
+ * driver.is_bios_root - this driver entry is a BIOS root
+ * driver.requires_artwork - requires external artwork for key game elements
+ * driver.clickable_artwork - artwork is clickable and requires mouse cursor
+ * driver.unofficial - unofficial hardware modification
+ * driver.no_sound_hw - system has no sound output
+ * driver.mechanical - contains mechanical parts (pinball, redemption games, ...)
+ * driver.is_incomplete - official system with blatantly incomplete hardware/software
*/
sol().registry().new_usertype<game_driver>("game_driver", "new", sol::no_constructor,
@@ -1293,7 +1305,59 @@ void lua_engine::initialize()
"year", sol::readonly(&game_driver::year),
"manufacturer", sol::readonly(&game_driver::manufacturer),
"compatible_with", sol::readonly(&game_driver::compatible_with),
- "default_layout", sol::readonly(&game_driver::default_layout));
+ "default_layout", sol::readonly(&game_driver::default_layout),
+ "orientation", sol::property([](game_driver const &driver) {
+ std::string rot;
+ switch (driver.flags & machine_flags::MASK_ORIENTATION)
+ {
+ case machine_flags::ROT0:
+ rot = "rot0";
+ break;
+ case machine_flags::ROT90:
+ rot = "rot90";
+ break;
+ case machine_flags::ROT180:
+ rot = "rot180";
+ break;
+ case machine_flags::ROT270:
+ rot = "rot270";
+ break;
+ default:
+ rot = "undefined";
+ break;
+ }
+ return rot;
+ }),
+ "type", sol::property([](game_driver const &driver) {
+ std::string type;
+ switch (driver.flags & machine_flags::MASK_TYPE)
+ {
+ case machine_flags::TYPE_ARCADE:
+ type = "arcade";
+ break;
+ case machine_flags::TYPE_CONSOLE:
+ type = "console";
+ break;
+ case machine_flags::TYPE_COMPUTER:
+ type = "computer";
+ break;
+ default:
+ type = "other";
+ break;
+ }
+ return type;
+ }),
+ "not_working", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::NOT_WORKING) > 0; }),
+ "supports_save", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::SUPPORTS_SAVE) > 0; }),
+ "no_cocktail", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::NO_COCKTAIL) > 0; }),
+ "is_bios_root", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::IS_BIOS_ROOT) > 0; }),
+ "requires_artwork", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::REQUIRES_ARTWORK) > 0; }),
+ "clickable_artwork", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::CLICKABLE_ARTWORK) > 0; }),
+ "unofficial", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::UNOFFICIAL) > 0; }),
+ "no_sound_hw", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::NO_SOUND_HW) > 0; }),
+ "mechanical", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::MECHANICAL) > 0; }),
+ "is_incomplete", sol::property([](game_driver const &driver) { return (driver.flags & machine_flags::IS_INCOMPLETE) > 0; }
+ ));
/* debugger_manager library (requires debugger to be active)