mirror of
https://github.com/mamedev/mame.git
synced 2024-11-18 10:06:19 +01:00
923ef2c25d
* Use the plugin data folder for storing the cache. The history folder may be read-only or shared with different configurations. * Don't create the cache database or surrounding folder if there's nothing to store in it. * Actually use prepared queries multiple times rather than always destroying them after a single use. * Added proper error checking for most database operations. * Improved query performance by avoiding outer joins and table scans. -bus/nubus: Made the Macintosh Display Cards map the blue channel to white with monochrome monitors. Also added logging for PLL configuration to help debug how CRTC and RAMDAC clocks work in the future.
89 lines
1.8 KiB
Lua
89 lines
1.8 KiB
Lua
-- license:BSD-3-Clause
|
|
-- copyright-holders:Carl
|
|
-- A data script should contain two functions check which takes a set name and returns the data
|
|
-- heading if it supports the set otherwise nil and get which returns the data
|
|
-- the script should be named data_<name>.lua
|
|
-- this is set default on in the plugin.json
|
|
local exports = {
|
|
name = 'data',
|
|
version = '0.0.2',
|
|
description = 'Data plugin',
|
|
license = 'BSD-3-Clause',
|
|
author = { name = 'Carl' } }
|
|
|
|
local data = exports
|
|
|
|
local plugindir
|
|
|
|
function data.set_folder(path)
|
|
plugindir = path
|
|
end
|
|
|
|
function data.startplugin()
|
|
local data_scr = {}
|
|
local valid_lst = {}
|
|
local cur_set
|
|
local cur_list
|
|
|
|
emu.register_start(
|
|
function ()
|
|
data_scr = {}
|
|
for file in lfs.dir(plugindir) do
|
|
local name = string.match(file, '^(data_.*).lua$')
|
|
if name then
|
|
local script = require('data/' .. name)
|
|
if script then
|
|
table.insert(data_scr, script)
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
emu.register_callback(
|
|
function (set)
|
|
local ret = {}
|
|
if set == '' then
|
|
set = emu.romname()
|
|
end
|
|
if set == cur_set then
|
|
return cur_list
|
|
end
|
|
cur_set = set
|
|
if not set then
|
|
return nil
|
|
end
|
|
valid_lst = {}
|
|
for num, scr in ipairs(data_scr) do
|
|
local setname, softname = set:match('^([^,]+),?(.*)$')
|
|
if softname == '' then
|
|
softname = nil
|
|
end
|
|
local name = scr.check(setname, softname)
|
|
if name then
|
|
table.insert(ret, name)
|
|
table.insert(valid_lst, scr)
|
|
end
|
|
end
|
|
cur_list = ret
|
|
return ret
|
|
end,
|
|
'data_list')
|
|
|
|
emu.register_callback(
|
|
function (num)
|
|
return valid_lst[num + 1].get()
|
|
end,
|
|
'data')
|
|
|
|
emu.register_callback(
|
|
function (num)
|
|
local ver
|
|
if valid_lst[num + 1].ver then
|
|
ver = valid_lst[num + 1].ver()
|
|
end
|
|
return ver or ''
|
|
end,
|
|
'data_version')
|
|
end
|
|
|
|
return exports
|