- memory_translate now returns an address space number rather a boolean flag, permitting addresses in part of one space to map to an entirely different space. This is primarily intended to help MCUs which have blocks of internal memory that can be dynamically remapped, but may also allow for more accurate emulation of MMUs that drive multiple external address spaces, since the old limit of four address spaces per MAME device has been lifted.
- memory_translate has also been made a const method, in spite of a couple of badly behaved CPU cores that can't honestly treat it as one.
- The (read|write)_(byte|word|dword|qword|memory|opcode) accessors have been transferred from debugger_cpu to device_memory_interface, with somewhat modified arguments corresponding to the translate function it calls through to if requested.
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.