summaryrefslogtreecommitdiffstatshomepage
path: root/scripts/minimaws/minimaws.py
Commit message (Collapse)AuthorAgeFilesLines
* minimaws: load more stuff, link more stuff Vas Crabb2019-12-181-1/+1
|
* minimaws: load and index some software list data (no way to display it yet) Vas Crabb2019-12-151-0/+1
| | | | also fix up some software lists with duplicate part features (nw)
* (nw) misc cleanup: Vas Crabb2019-10-021-15/+13
| | | | | | | | * subhuntr.cpp: S2636 PVI was seemingly uncommented by mistake in 93308b483ee73cecc46a6b44fccc126edf3c512a - offsets and sound routing seem to be copy/pasted from somewhere * phi: prettier config * scramble.cpp, wallc.cpp: avoid some calls to subdevice<...>(...) * makedep.py: open source files as UTF-8 (GitHub #5482) * minimaws: be less trusting
* minimaws: easier mod_wsgi deployment (nw) Vas Crabb2019-09-301-3/+9
|
* minimaws: add web interface for identifying ROM dumps Vas Crabb2019-09-301-2/+3
|
* minimaws: load ROMs and disks, and add a romident subcommand Vas Crabb2019-09-281-0/+10
|
* Python 3.3 doesn't work right (nw) Vas Crabb2017-08-251-1/+1
|
* minimaws: expose system BIOS, better way of dropping tables Vas Crabb2017-08-041-4/+1
|
* minimaws: add machine feature status flags and slot card selection with live ↵ Vas Crabb2017-08-031-2/+72
| | | | update
* Add "minimaws" sample script demonstrating how to do some tasks with Vas Crabb2017-08-011-0/+59
output from -listxml verb. Compatible with Python 2.7 or Python 3. Requires at least SQLite 3.6.19 for foreign key support. This serves a few purposes: * Demonstrating some things that can be done with -listxml output * Providing a reference implementation for useful queries * Helping ensure our XML output isn't completely useless * Providing additional queries over MAME's auxiliary verbs * Proper glob support unlike the broken implementation in MAME right now Right now, it's a bit ugly to use. You can only load into a completely clean database, and you need to manually create the schema. I'll address this later. The default database filename is minimaws.sqlite3 (you can override this with --database before the verb on the command line). Loading isn't particularly fast, but query performance is very good. Create a database first: rm -f minimaws.sqlite3 sqlite3 minimaws.sqlite3 < scripts/minimaws/schema.sql Now you can load it using a MAME binary or XML output (use one of these options, not both): python scripts/minimaws/minimaws.py load --executable ./mame python scripts/minimaws/minimaws.py load --file mame0188.xml Once that's done you can do queries: python scripts/minimaws/minimaws.py listfull python scripts/minimaws/minimaws.py listclones "*cmast*" python scripts/minimaws/minimaws.py listsource "*mous*" python scripts/minimaws/minimaws.py listbrothers "intl*" These work much like the equivalent MAME verbs, but without the overhead of loading MAME's static data. But there's one already query that you can't easily do with MAME: python scripts/minimaws/minimaws.py listaffected "src/devices/cpu/m6805/*" src/devices/sound/qsound.cpp This will list all runnable systems that use a device defined in any file under devices/cpu/m6805 or in devices/sound/qsound.cpp (you can specify and arbitrary number of files or glob patterns). This may be useful for planning regression tests. Another thing this does (that gives rise to the name) is serving information over HTTP. It's implemented as a WSGI, and it mainly uses GET requests. This means it can run hosted in Apache mod_wsgi, or cached by Apache mod_proxy, Squid, nginx, or something else. It can also run out-of-the-box using wsgiref.simple_server components. The default port is 8080 but this can be changed with the --port option. Start the web server with the serve verb (stop it with keyboard interrupt ^C or similar): python scripts/minimaws/minimaws.py serve Right now it's rather crude, and doesn't list devices for you. This means you have to know the shortname of a machine to get a useful URL. For example, you can look at a driver and see its parent set and the devices it references: http://localhost:8080/machine/kof2000n Or you can look at a device, and see the devices it refereces, as well as the devices/systems that reference it: http://localhost:8080/machine/zac1b11142 The links between devices/systems are clickable. They might 404 on you if you used a single-driver build with broken parent/clone relationships, but they should all work in a full build that passes validation. There's still a lot to do. In particular I want to demonstrate how to do live DIP switch preview and dynamic slot discovery. But I've already discovered stuff in the -listxml output that's less than ideal with this, so it's helping.