From fc0d2a5e801447173941d2d244b2c56d09493477 Mon Sep 17 00:00:00 2001 From: Daniel Brooks Date: Sun, 17 Nov 2019 22:22:14 -0800 Subject: [PATCH] add an autoboot option for MAMELoader, and make IA's emulator_start metadata use it --- loader.js | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/loader.js b/loader.js index 2371eca..85b4aa9 100644 --- a/loader.js +++ b/loader.js @@ -250,6 +250,10 @@ var Module = null; } else if (module) { // MAME config_args.push(cfgr.driver(modulecfg.driver), cfgr.extraArgs(modulecfg.extra_args)); + let emulator_start_item = metadata.getElementsByTagName("emulator_start"); + if (emulator_start_item.length > 0) { + config_args.push(cfgr.autoboot(emulator_start_item.item(0).textContent)); + } } splash.setTitle("Downloading game data..."); @@ -745,8 +749,9 @@ var Module = null; var config = Array.prototype.reduce.call(arguments, extend); config.emulator_arguments = build_mame_arguments(config.muted, config.mame_driver, config.nativeResolution, config.sample_rate, - config.peripheral, config.extra_mame_args, - config.keep_aspect, config.scale); + config.peripheral, config.autoboot, + config.extra_mame_args, config.keep_aspect, + config.scale); config.runner = MAMERunner; return config; } @@ -770,6 +775,10 @@ var Module = null; return { extra_mame_args: args }; }; + MAMELoader.autoboot = function (path) { + return { autoboot: path }; + }; + /** * VICELoader */ @@ -891,7 +900,7 @@ var Module = null; return { extra_np2_args: args }; }; - var build_mame_arguments = function (muted, driver, native_resolution, sample_rate, peripheral, extra_args, keepaspect, scale) { + var build_mame_arguments = function (muted, driver, native_resolution, sample_rate, peripheral, autoboot, extra_args, keepaspect, scale) { scale = scale || 1; var args = [driver, '-verbose', @@ -916,6 +925,10 @@ var Module = null; } } + if (autoboot) { + args.push('-autoboot_command', autoboot, '-autoboot_delay', '2'); + } + if (extra_args) { args = args.concat(extra_args); }