mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-22 11:49:14 -05:00
fix: list MAME's hash, plugins and floppy sounds
The libretro core passes system/mame/{hash,plugins,samples} (retro_init.cpp:111-155). Software lists are required in mamemess, where softlists are on by default. The trees and the 19 floppy samples are collected from libretro/mame at the pin.
This commit is contained in:
1 parent
57d5c3ffd0
commit
74514930d0
877 files changed
+2734365
No files matched your search
@@ -0,0 +1,91 @@
|
||||
-- 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
|
||||
|
||||
local reset_subscription
|
||||
|
||||
function data.set_folder(path)
|
||||
plugindir = path
|
||||
end
|
||||
|
||||
function data.startplugin()
|
||||
local data_scr = {}
|
||||
local valid_lst = {}
|
||||
local cur_set
|
||||
local cur_list
|
||||
|
||||
reset_subscription = emu.add_machine_reset_notifier(
|
||||
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
|
||||
Reference in new issue
Block a user