mirror of
https://github.com/mamedev/mame.git
synced 2024-11-16 07:48:32 +01:00
59cbd883f8
Systems promoted to working --------------------------- Sega TV Ocha-Ken [QUFB] Software list items promoted to working (tvochken.xml) ------------------------------------------------------ TV to Ocha-Card: Ocha-Ken 'Ho' to Seikatsu [Vas Crabb]
85 lines
2.3 KiB
Lua
85 lines
2.3 KiB
Lua
-- license:BSD-3-Clause
|
|
-- copyright-holders:Carl
|
|
-- Layout scripts should return a table and a string. The table can have two optional keys reset and frame
|
|
-- which have functions for values called on reset and frame draw respectively and the string is a unique name.
|
|
local exports = {
|
|
name = "layout",
|
|
version = "0.0.1",
|
|
description = "Layout helper plugin",
|
|
license = "BSD-3-Clause",
|
|
author = { name = "Carl" } }
|
|
|
|
local layout = exports
|
|
|
|
local frame_subscription, stop_subscription
|
|
|
|
function layout.startplugin()
|
|
local scripts = {}
|
|
local function prepare_layout(file, script)
|
|
local env = {
|
|
machine = manager.machine,
|
|
emu = {
|
|
device_enumerator = emu.device_enumerator,
|
|
palette_enumerator = emu.palette_enumerator,
|
|
screen_enumerator = emu.screen_enumerator,
|
|
cassette_enumerator = emu.cassette_enumerator,
|
|
image_enumerator = emu.image_enumerator,
|
|
slot_enumerator = emu.slot_enumerator,
|
|
attotime = emu.attotime,
|
|
render_bounds = emu.render_bounds,
|
|
render_color = emu.render_color,
|
|
bitmap_ind8 = emu.bitmap_ind8,
|
|
bitmap_ind16 = emu.bitmap_ind16,
|
|
bitmap_ind32 = emu.bitmap_ind32,
|
|
bitmap_ind64 = emu.bitmap_ind64,
|
|
bitmap_yuy16 = emu.bitmap_yuy16,
|
|
bitmap_rgb32 = emu.bitmap_rgb32,
|
|
bitmap_argb32 = emu.bitmap_argb32,
|
|
print_verbose = emu.print_verbose,
|
|
print_error = emu.print_error,
|
|
print_warning = emu.print_warning,
|
|
print_info = emu.print_info,
|
|
print_debug = emu.print_debug },
|
|
file = file,
|
|
print = print,
|
|
pairs = pairs,
|
|
ipairs = ipairs,
|
|
string = string,
|
|
tonumber = tonumber,
|
|
tostring = tostring,
|
|
table = table }
|
|
local script, err = load(script, script, "t", env)
|
|
if not script then
|
|
emu.print_verbose("error loading layout script " .. err)
|
|
return
|
|
end
|
|
local hooks = script()
|
|
if hooks ~= nil then
|
|
table.insert(scripts, hooks)
|
|
end
|
|
end
|
|
|
|
emu.register_callback(prepare_layout, "layout")
|
|
frame_subscription = emu.add_machine_frame_notifier(function ()
|
|
if manager.machine.paused then
|
|
return
|
|
end
|
|
for num, scr in pairs(scripts) do
|
|
if scr.frame then
|
|
scr.frame()
|
|
end
|
|
end
|
|
end)
|
|
emu.register_prestart(function ()
|
|
for num, scr in pairs(scripts) do
|
|
if scr.reset then
|
|
scr.reset()
|
|
end
|
|
end
|
|
end)
|
|
stop_subscription = emu.add_machine_stop_notifier(function ()
|
|
scripts = {}
|
|
end)
|
|
end
|
|
|
|
return exports
|