Commit graph

40 commits

Author SHA1 Message Date
Vas Crabb
96ca1dbd96 More user experience improvements:
frontend: Allow clicking the adjuster arrows on menu items.  This allows
things like video options and DIP switches to be configured using a
mouse only.  Also fixed a bug preventing paging menus with a mouse if
the first item scrolled off the bottom is not selectable.

debugger: Allow wplist and bplist to accept a CPU argument to list
breakpoints/watchpoints for a single CPU only.

debugger: Fixed some corner cases in address space syntax in memory
accesses, and allowed memory region accesses to use tags relative to the
visible CPU.

emu/softlist.cpp: Ignore notes elements when loading software lists.
It's effectively a comment that isn't a comment syntactically, it's
being used for things that are not useful to display in the internal UI,
and it slows down startup.

docs: Updated three more pages of debugger documentation.  Also updated
more of the built-in debugger help.

minimaws: Fixed up schema for software list notes, made sofware list
notes display initially collapsed.
2021-10-14 08:00:04 +11:00
wilbertpol
eae75824d3
softlist.cpp: Add support for a 'notes' field to store information ab… (#8482)
* softlist.cpp: Add support for a 'notes' field to store information about a software list or software list item.  [Wilbert Pol]

* Add software list and software notes to minimaws
2021-10-05 19:16:42 +02:00
Vas Crabb
18188c7191 -minimaws: Changed geometry of disclosure triangles.
-util/delegate.cpp: Fixed typo in comment.
2021-09-29 14:27:57 +10:00
Vas Crabb
7a6e383cb9 minimaws: Added disclosure triangle controls to many sections. 2021-09-23 23:59:19 +10:00
Vas Crabb
d35ff4bca6 -minimaws: Made table sort widgets (and the code behind them) less ugly.
-util/delegate.cpp: Added a couple of comments about assumptions.
2021-09-23 17:03:20 +10:00
Vas Crabb
88f6393be8 minimaws: Better equality for devices. 2021-09-07 00:43:52 +10:00
Vas Crabb
fe9ac15ca9 -emu/devfind: More cleanup/consistency changes.
* Removed .mask(), as it’s not reliable in the general case.
 * Added asserts to things that assume power-of-two sizes.
 * Got rid of virtual qualifier on pointer-to-member operator.
 * Made helpers a bit more assertive about logging warnings.

-emu/rendlay.cpp: Use delegates to avoid hot conditional branches.

-docs: Finished off description of object finders and output finders.
2020-11-13 15:26:31 +11:00
Vas Crabb
6c156d2207 minimaws: dt, not dl (nw) 2019-12-24 23:50:14 +11:00
Vas Crabb
2ddf1de7b0 minimaws: don't accumulate (nw) 2019-12-24 23:46:42 +11:00
Vas Crabb
9334bf4eae minimaws: display software lists for selected slot options on machine pages 2019-12-19 14:50:59 +11:00
Vas Crabb
c10ef269c5 minimaws updates:
* reduce network operations when initially loading a machine page
* add rudimentary software lists to machine pages
2019-12-19 02:07:58 +11:00
Vas Crabb
87fa34f9c5 minimaws: load more stuff, link more stuff 2019-12-18 04:25:52 +11:00
Vas Crabb
d19acbf952 minimaws: refactored digest code, identify fixed bit patterns 2019-12-16 23:11:15 +11:00
Vas Crabb
87d31092e9 minimaws: identify software list dumps in CLI as well 2019-12-16 11:52:14 +11:00
Vas Crabb
53e3751bca minimaws: fix presentation issue (nw) 2019-12-16 11:14:14 +11:00
Vas Crabb
f43e9dbaa2 minimaws: add software list support to web-based romident
(nw) also removed unused member that was breaking clang builds
2019-12-16 01:46:47 +11:00
Vas Crabb
202d06ffb0 minimaws: fill in software list pages, load software list ROM information 2019-12-15 21:38:54 +11:00
Vas Crabb
1fda8836a7 minimaws: add rudimentary listing of software lists to web UI and work around a python issue on loading; also fix up more software list issues (nw) 2019-12-15 02:38:40 +11:00
Vas Crabb
d506479fdd minimaws: load and index some software list data (no way to display it yet)
also fix up some software lists with duplicate part features (nw)
2019-12-15 00:19:29 +11:00
Vas Crabb
bcfa6047c3 Build system maintenance:
* Re-write makedep.py for better performance and better parsing front-end
* Make srcclean deal with kinds of preprocessor abuse I never want to see in real life

(nw) The new parser front-end is better at recognising C++ syntax and
also substantially faster - bootstrapping a single-driver build should
be noticeably quicker.  Having a single parser for C++, .lst and .flt
files also gets us a bit closer to making it simpler to create custom
subtargets.
2019-10-04 22:55:01 +10:00
Vas Crabb
9a6e04b01f (nw) misc cleanup:
* subhuntr.cpp: S2636 PVI was seemingly uncommented by mistake in 93308b483e - 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
2019-10-02 02:11:58 +10:00
Vas Crabb
722e8720f9 minimaws: allow read-only database connections to be passed between threads (nw) 2019-09-30 23:03:21 +10:00
Vas Crabb
9fbded3fa1 minimaws: easier mod_wsgi deployment (nw) 2019-09-30 20:00:23 +10:00
Vas Crabb
fcbc60c183 minimaws: python 2 is more fussy about generator function distinction (nw) 2019-09-30 15:00:24 +10:00
Vas Crabb
85376ad4df minimaws: Chromium doesn't like in-place modification of returned JSON data (nw) 2019-09-30 14:54:25 +10:00
Vas Crabb
24544c9dfd minimaws: add web interface for identifying ROM dumps 2019-09-30 14:38:26 +10:00
Vas Crabb
8e31f22bcd minimaws: load ROMs and disks, and add a romident subcommand 2019-09-28 21:25:50 +10:00
Vas Crabb
ebcd71b7f1 minimaws: expose RAM size 2018-03-27 01:40:15 +11:00
Vas Crabb
7886efad95 Python 3.3 doesn't work right (nw) 2017-08-25 14:18:20 +10:00
Vas Crabb
5e9e7e0fc5 minimaws: add support for INI options preview and explicit defaults 2017-08-07 18:04:05 +10:00
Vas Crabb
4c9ded40ad minimaws: add buttons for restoring default BIOS/slot card, clean up and comment the JavaScript a bit more 2017-08-05 13:56:11 +10:00
Vas Crabb
b97e374cdb minimaws: expose system BIOS, better way of dropping tables 2017-08-04 19:23:18 +10:00
Vas Crabb
3eb9ddfa16 minimaws: remove need for explicit schema step 2017-08-04 18:26:40 +10:00
Vas Crabb
d96933356c minimaws: demonstrate slot card BIOS selection, requires exposing device BIOS sets in XML output 2017-08-04 17:13:34 +10:00
Vas Crabb
00f6156cbb minimaws: show compatible slots for devices [Vas Crabb]
(nw) Identify Donkey Kong Junior (Japan set F-1) [Corrado Comaselli]
2017-08-04 11:42:23 +10:00
Vas Crabb
8eb07ffe97 minimaws: add machine feature status flags and slot card selection with live update 2017-08-03 23:38:22 +10:00
Vas Crabb
c85c7c4c15 Load slot info in minimaws (not exposed yet), fix up some problems with
slots uncovered

(nw) It seems at some point someone didn't realise that choosing the
same option from a SLOT_INTERFACE in multiple slots creates multiple
instances of the same device type, and this got copy/pasted everywhere.
2017-08-02 20:13:13 +10:00
Vas Crabb
5d6815b6de rather crude way to override cache control header (nw) 2017-08-02 01:02:07 +10:00
Vas Crabb
14642adc5a minimaws web mode enhancements:
* Support serving static assets, use for stylesheet, script and images
* Better error pages, reject unsupported HTTP methods
* Replace lists with sortable tables with more detail (click headings to sort)
* Add pages for exploring source files, link from machine pages
 - Can start from full source file list at http://localhost:8080/sourcefile/

(nw) JavaScript performance can drop when sorting really big tables,
e.g. the list of all source files, or the list of machines in some of
the fruit machine drivers.  This update doesn't expose machine/device
information, just consolidating what's there.  The wsgiref server is
adding headers to prevent caching, I'll look for a workaround.
2017-08-02 00:41:09 +10:00
Vas Crabb
8981b40bd9 Add "minimaws" sample script demonstrating how to do some tasks with
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.
2017-08-01 02:55:25 +10:00