Commit graph

323 commits

Author SHA1 Message Date
Olivier Galibert
8027428e4d Fun with flags: Allows handlers to have user-defined flags set on
them, which can them be picked up on access with the
{read,write}_*_flags variants of the accessors.  Example use with the
i960 and its burstable rom/ram.
2021-11-28 17:51:46 +01:00
Firehawke
17b9b96af3
docs: Implemented download links in docs theme. (#8887)
Modified the RTD theme to add PDF and EPUB download links in the left pane.
2021-11-28 00:19:14 +11:00
Vas Crabb
5668590fcb -frontend: Fixed crashes switching between favourites and other filters.
* Also made the system and software selection menus a bit less eager to
  reselect the first item.

-docs: Bumped documentation version to 0.238.
2021-11-23 11:19:29 +11:00
Vas Crabb
5afce6cfab emu/render.cpp, emu/rendlay.cpp: Added scroll support for all elements. 2021-11-18 10:34:38 +11:00
Vas Crabb
014eb6369b input: Clarify docuemntation and a comment. 2021-11-06 14:11:49 +11:00
Vas Crabb
270276c4d3 -Enabled complex combinations for analog axes:
* Made it possible to add digital controls to axis settings as enables.
* Mix multiple analog controls assigned to an axis setting.
* Added a "reverse" modifier for analog controls (useful with mixing).
* Fixed an issue assigning mouse axes using multiple mouse-like devices
  with -nomultimouse.

-frontend: More cleanup:

* Got rid of some abuse of "special main menus".
* Added a helper class for auto-pause menus that don't spawn submenus.
* Got rid of the fake menu that schedules an exit on the first frame.
* Turned the confirm quit prompt into a menu, eliminated one more
  special-cased event loop.
* Fixed the confirm quit prompt resuming if you return to emulation if
  you weren't paused to begin with.

-bus/centronics: Fixed conflicting DIP locations, reversed order and
 inverted polarity for Epson printers.

* Also added the LX-810 (without L suffix) DIP switches for reference -
  we don't have a device for this printer yet.
2021-11-06 13:52:48 +11:00
Vas Crabb
07e55935cf plugins: Rewrote timer plugin fixing multiple issues.
Added emulated time recording as well as wall clock time.

Fixed recording time for multiple software items per system.  An
incorrect constraint on the database table meant that time was only
being recorded for a single software item per system.

Detect the "empty" driver so the time spent at the selection menu isn't
recorded (you'd get multiple entries for this due to the way options
leak when returning to the system selection menu).

Included schema migration code to update existing timer plugin
databases.  Also replaced some unnecessary floating point code with
integer maths, added log messages, and made the plugin unload unload its
database access code during emulation.

Changed other plugins' use of paths with trailing slashes as this causes
stat to fail on Windows.
2021-11-06 05:20:59 +11:00
Vas Crabb
18a6113655 Two small fixes (bad menu flags in cheat plugin, copy/paste in docs). 2021-11-04 11:41:46 +11:00
AJR
e44d51c21f luareference.rst: Clarify contract of as_hz, as_khz and as_mhz 2021-11-03 17:24:30 -04:00
Vas Crabb
13612bbe0f -emu/ioport.cpp: Fixed some default setting handling issues.
* Issues were unlikely to actually manifest unless you use controller
  configuration files to change specific system input defaults.

-src/emu/output.h: Added size accessor to multi-element output finder.

* std::size will work on the top rank of an outut finder now.  Sorry for
  hitting emu.h again so soon.

-lua: Exposed a couple more input related things.

* Exposed constructor and a few methods on input_seq required for
  scripts to properly clear assignments or restore default settings.
* Exposed ioport_manager::set_type_seq which is required to configure
  general input assignments properly.
* Removed unnecessary use of sol::overload in favour of optional
  parameters.
* Updated documentation and also fixed a few errors.

-docs: Added description for axis setting assignments.
2021-11-04 03:11:29 +11:00
Vas Crabb
d29287e092 -emu/ioport.cpp: Made default behaviour better.
* If an input is configured to some combination of controls that are not
  present at all, ignore the setting altogether for the session.
* Fixed relative axes with PORT_RESET not responding to absolute
  controls (MT07685).
* Fixed relative axes not responding to an absolute control if the value
  doesn’t change every frame (eg. holding a stick against the stop).
* Changed the scaling for absolute controls assigned to relative axes to
  make defaults more sane (e.g. arkanoid or spdheat with a joystick).

-frontend: Fixed some localisation issues in Analog Controls menu.

-docs: Added documentation on assigning inputs.
2021-11-03 19:41:40 +11:00
Vas Crabb
2d220c7ba8 Fixed Windows build as well - default input overrides in OSD modules are annoying. 2021-11-02 16:08:24 +11:00
Vas Crabb
d775a2731d plugins: Moved the timecode recording functionality to a plugin. 2021-11-02 15:31:03 +11:00
Vas Crabb
e4c0f2ddac docs: Fix an error in the Lua reference that I copy/pasted without noticing. 2021-11-02 08:22:09 +11:00
Vas Crabb
8ab63e2072 Fix various usability issues:
frontend: Made it so you can press UI On Screen Display to hide the
Analog Controls menu and see the response to your inputs without the
risk of changing settings, and see more axes at once and scroll them for
systems with very large number of axes.  Also ensure the axis being
configured is visible when the menu is visible, and made the menu behave
a bit more like the system input assignments menu (including
previous/next group navigation).

frontend: Allow Lua to draw to the UI container - this addresses the
main complaint in #7475.  Note that drawing to the UI container will
draw over any UI elements, including menus.  Plugins can check
menu_active to avoid drawing over menus.  Also removed some unnecessary
use of sol::overload.

frontend: Improved info/image box navigation on the system/softwre
selection menus, and cleaned up some leftover code that came from the
copy/pasted event handling functions.

frontend: Fixed sliders menu not handling Alt+Shift as intended (thanks
Coverity).  Fixed a couple of harmless Coverity errors, too.

emu/inpttype.ipp: Made the default assignment for Save State recognise
right shift.

plugins: Added next/previous group navigation to input macro edit menu.

docs: Added basic description of the system and software selection
menus, and corrected a couple of errors in the Lua reference.
2021-11-02 07:53:18 +11:00
Vas Crabb
d64ea5331b
-frontend: Refactored menu event handling and fixed a number of issues. (#8777)
* Moved common code for drawing about box, info viewer, and other text box menus to a base class; removed the last of the info viewer logic and the multi-line item hack from the base menu class.
* Added previous/next group navigation for general inputs and plugin input selection menus.
* Moved message catalog logic to lib/util, allowing osd and emu to use localised messages.
* Made the base menu class use the UI manager’s feature for holding session state rather than a static map and mutex.
* Improved menu event handling model, and fixed many issues, particularly with menus behaving badly when hidden/shown.
* Added better support for menus that don’t participate in the usual menu stack, like the menuless sliders and the save/load state menus.
* Made a number of menus refresh state when being shown after being hidden (fixes MT08121 among other issues).
* Fixed indication of mounted slot option in the slot option details menu.
* Improved appearance of background menus when emulation isn't running - draw all menus in the stack, and darken the background menus to make the edges of the active menu clearer.
* Fixed locale issues in -listxml.

-debugger: Made GUI debuggers more uniform.
* Added new memory view features to Win32 debugger.
* Fixed spelling of hexadecimal in Cocoa debugger and added decimal address option.
* Fixed duplicate keyboard shortcut in Cocoa debugger (Shift-Cmd-D was both new device window and 64-bit float format).
* Made keyboard shortcuts slightly more consistent across debuggers.

-plugins: Moved input selection menu and sequence polling code to a common library.  Fixed the issue that prevented keyboard inputs being mapped with -steadykey on.

-docs: Started adding some documentation for MAME's internal UI, and updated the list of example front-ends.

-Regenerated message catalog sources.  For translators, the new strings are mostly:
* The names of the inputs provided by the OS-dependent layer for things like fullscreen and video features. These show up in the user interface inputs menu.
* The names for automatically generated views. These show up in the video options menu - test with a system with a lot of screens to see more variants.
* The input macro plugin UI.
* A few format strings for analog input assignments.
* A few strings for the about box header.
2021-10-31 12:31:16 +11:00
Vas Crabb
5ab93130eb Plugin updates:
Changed the hiscore plugin to save inside the "hiscore" folder in the
plugin data directory.  The old hiscore path setting has already been
removed from MAME for some time.  This means the plugin was always
saving in the "hi" folder in the working directory with no way to change
it, which is problematic on Linux and macOS, particularly for distro
packagers.  There are lots of plugin and UI changes in this release, so
we may as well get this out of the way now.  Also made it possible to
change the "timed save" option from the Plugin Options menu, and save
that in the data folder, too.

Documented the input macro plugin.  The only undocumented plugins now
are the cheat plugin, the cheat finder plugin, and the port name plugin.
2021-10-24 09:38:03 +11:00
Vas Crabb
669b1f6ade -docs: Started documenting plugins.
* Also added a couple of missing command-line options, and added a local
  table of contents to the (rather long) command line options page.

-Added a separate CI target for localisation updates that produces an
 artefact, and removed the message catalogs from the trigger paths for
 the Linux CI build.
2021-10-24 05:48:05 +11:00
Vas Crabb
2a14b9446d docs: Still more cleanup on the FAQ page. 2021-10-22 07:39:06 +11:00
Vas Crabb
95ae7be39a docs: More adjustments. 2021-10-22 07:19:32 +11:00
Robbbert
a6055409ba commonissues.rst: Fixed bad English. 2021-10-22 04:17:26 +11:00
Vas Crabb
aa3643d5b7 plugins/timer: Fixed ticking when menu is left on the screen. 2021-10-22 03:46:00 +11:00
Vas Crabb
5e07099f05 docs: Fix a copy/paste error. 2021-10-21 08:51:40 +11:00
Vas Crabb
0a9ea09a9a Tie up a few loose ends:
debugger: Octal cheats for octal address spaces.

frontend: Pass events for automatically generated menu items to the
plugin - they will have index zero.

frontend: Don't try calling the data plugin from the main menu if the
system isn't starting yet - doing so will prevent the data plugin from
loading at all.
2021-10-20 02:03:43 +11:00
Vas Crabb
7834d689bd -docs: Documented debugger's built-in functions for expressions.
-Fixed a couple of coverity warnings.
2021-10-19 10:01:02 +11:00
Vas Crabb
08ee39da70 -debugger: Finished updating commands and documentation.
* Updated cheat commands to work with arbitrary devices and address
  spaces.  You can still only search RAM areas in a single address space
  at a time, but any address space of any device can be used now.
* Made the cheatinit/cheatrange commands not affect current state if the
  arguments are invalid.  Also fixed some bugs in the cheat commands.
* Updated documentation for cheat commands, and added a simple worked
  example.  Also added single-sentence descriptions of what
  (break|watch|register)points are to the top of the relevant pages.

-frontend improvements:

* Added a bit more info to the about box, moved the VCS revision to the
  heading.
* Don't show "not" codes in prompts - they're not helpful.
2021-10-19 05:35:30 +11:00
Vas Crabb
40a30af10f Still more user experience improvements:
Changed the default mapping for UI select to not trigger on Alt+Enter
fullscreen toggle.  (Fullscreen toggle still doesn't work in menus -
actually fixing that is complicated.)

frontend: Made the about box wrap text properly, made the title and
backtrack menu item always visible, and added a footer with the VCS
revision.

frontend: Don't highlight the favourites and info toolbar buttons if
there's no selection (can happen if filters produce no results).  Also
made the info viewer appear even if no info is available - it's less
confusing to see an empty menu than wonder why clicking the button does
nothing.

debugger: Added a register points view to the GUI debuggers, to go with
the breakpoints and watchpoints views.

debugger: Extended [brw]p(clear|(en|dis)able) commands to accept
multiple arguments to perform the same action on multiple
(break|watch|register)points at once.  Also made rplist accept a CPU for
showing a single CPU's register points ([bw]plist already support this).

docs: Updated registerpoints debugger commands page, and updated other
pages for latest extensions to syntax.
2021-10-18 08:22:21 +11:00
Vas Crabb
22bc3486c3 More user experience improvements:
frontend: Made it possible to cancel a media audit while it's in
progress.  Also made the media audit multi-threaded so it's faster.

frontend: Made the DIP switches in the DIP switch preview clickable.

frontend: Made the system and software selection menus leave focus on
the same system when clearing the search rather than jumping to the
first item.  Also fixed a couple of bugs in the logic for keeping the
selected item visible.

frontend: Fixed a few places that weren't showing localised system
names.

frontend: Made UI Cancel clear a search in the file manager the same way
it does on the system and sofware selection menus.

frontend: Made it possible for plugin menus to handle UI Cancel more
naturally, backing up to the previous plugin menu rather than dropping
straight back to the list of plugins.  Updated the autofire, cheat and
cheatfind plugins, and fixed a few other issues in the cheatfind plugin.

debugger: Made the mount and unmount commands accept instance names as
well as brief instance names.  Also updated another page of debugger
documentation.
2021-10-15 10:12:56 +11:00
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
Vas Crabb
ca338f7372 Various improvements to the user experience:
Extended the memory access prefixes in debugger expressions to support
address space names.

Made the debugger history command aware of how much history it has
collected, and added a help topic for it to the built-in debugger help.

Started updating the documentation for the web site, and corrected some
of the more misleading built-in debugger help.

Made some corrections to Chinese localisation after discussion with
YuiFAN.

Darkened the UI red colour a little.

cpu/m6502/st2205u.h: Marked sound imperfect.
2021-10-13 10:59:38 +11:00
Vas Crabb
fd6309ee91 frontend: Keep cleaning up.
Got rid of one of the UI audit inputs.  There only needs to be one, and
the options can be presented in the confirmation menu.  Two secret
keystrokes is too confusing.  Also got rid of the long-obsolete UI
Toggle Debugger input.

Added audit media button to the toolbar so it's a bit less opaque, and
it can be accessed with a mouse/trackball (not just by knowing the key
mapping).

Made default I/O port names localisable.

Made autofire plugin save port fields using the { port, mask, type }
tuple, the same way MAME does.  Unfortunately this will break existing
autofire configuration, but it should be more stable going forward.

Added some more UI keys to the default key mappings documentation.
2021-10-11 13:14:31 +11:00
Vas Crabb
38082ccbee
Overdue internal UI enhancements (#8674)
* frontend: Added support for message context to localisations.
* frontend: Added string_view versions of the message lookup functions.
* frontend: Added a few more folder options to the internal UI.
* emu/softlist.cpp: Use more appropriate containers.
* Switched to Python 3 by default - this will become a requirement.
* Updated msgfmt.py for message context support.
* frontend: Show all software item info in the internal UI.
* frontend: Search alternate titles in software selection menu.
* 3rdparty/utf8proc: Updated to v2.6.1 (has several fixes).
* frontend: Added software filters for common info fields.
* frontend: Allow UI manager to hold onto persistent session data.
* frontend: Cache software lists for eight machines.
* frontend: Added support for loading localised system names.
* frontend: Add UI for selecting localised system names.
2021-10-09 12:16:17 +11:00
0kmg
4395d59216
emu/video.cpp: Set file names via -snapname when exiting in -seconds_… (#8633) 2021-09-30 16:22:43 -04:00
hap
9db8443a30 docs: explain compressor a bit again 2021-09-24 21:39:40 +02:00
hap
95bcb4551d docs: explain compressor a bit 2021-09-24 20:00:07 +02:00
hap
c9c3cac6c2 sound: make the compressor optional (clamp overdrive to -1.0-1.0 when off) 2021-09-24 19:40:10 +02:00
Vas Crabb
da1af2b0d6 -delegates: Fixed structure return with MSVC C++ ABI.
* Automatically use delegate_mfp_compatible to generate an adaptor for
  member functions that return non-scalar, non-reference types
  (partially addresses #8597).
* Enabled the MSVC delegate implemenation for MSVC on AArch64.
* Switched back to neater delegate types for layout item bounds and
  colour.

-docs: Updated the example layout links to point to 0.235 - this means
 there's now an example of embedded SVG.
2021-09-21 01:02:11 +10:00
Aaron Giles
21ff9a8b79
Update the RTD theme to the 1.0.0rc1 release. I noticed no issues building docs with this, and it includes sphinx 4 CSS fixes. (#8544) 2021-09-07 08:18:38 +02:00
Aaron Giles
b63e260756 docs: Update css for sphinx_rtd_theme to latest version, which includes selectors missing from old version. 2021-09-05 21:54:43 -07:00
Vas Crabb
4f495994c4 -ui: Made zoom controls a bit more intuitive.
* The UI controls are described as zoom in/out, but they had the
  opposite effect on the palette and tile viewers.  That has been
  changed to make them consistent with the tilemap viewer.
* Made the default zoom key not act as a toggle.  People are familiar
  with the function of Ctrl+0/=/- in web browsers, so making them behave
  similarly in MAME should make it more approachable.  Also added the
  default zoom key to the relevant documentation page.
* Implemented the default zoom key for the palette and tile viewers.
* In the tilemap viewer, if the view is in default expand to fit mode,
  zoom in/out starting from the actual zoom ratio.  Once again, this
  behaves more like the zoom controls in a web browser displaying an
  image so it should be more intuitive.
* Made more messages from the tilemap viewer localisable.

-util/zippath.cpp: Fixed MT08074.

* There were multiple issues at play here.  After #8443 was applied,
  is_root was simply never returning true on Windows, as OSD_WINDOWS
  isn't actually defined outside libosd and libocore.  This caused
  phantom parent items to appear in disk roots on Windows, but it meant
  that the check in zippath_resolve would always fail so the trailing
  backslash would be trimmed.  Fixing the macro test in is_root meant
  the trailing backslash from C:\ would no longer be trimmed, which
  caused the stat in zippath_resolve to fail.

-bigbord2.cpp: Hooked up floppy DRQ that had somehow got lost.

-Reduced tag map lookups in several drivers and devices.

-util/coretmpl.h: Removed an overload of bitswap that can be avoided
 using if constexpr.

-Added doxygen comments to some classes, and fixed several doxygen
 warnings.

-util, osd: Test for _WIN32 rather than WIN32.

* In C++17 mode, WIN32 is no longer a predefined macro, although various
  things in 3rdparty define it to maintain legacy support.  We're better
  off moving forward anyway for when WIN32 disappears entirely.  (WIN32
  is not a reserved name, while _WIN32 is, starting with an underscore
  follwed by an uppercase letter.)
2021-09-06 06:34:42 +10:00
Aaron Giles
1c6b317d24 Add docs for poly_manager. 2021-09-04 16:37:57 -07:00
Vas Crabb
3715746131 API cleanups and miscellaneous fixes.
emu/ioport.cpp: Allow controller files to override input sequences for
inputs that don't use defaults, and to override the toggle setting for
digital inputs.

emu/config.cpp: Expose configuration level (mostly matters for
controller files), improved verbose diagnostic messages, and moved a few
things out of the global and preprocessor namespaces.

docs: Added documentation for some controller configuration file
features.  The device mapping feature documentation will be merged in at
some point.

util/unicode.cpp, emu/input.cpp: API cleanups.
2021-07-15 13:54:40 +10:00
Vas Crabb
1f26f20fc9 Updated Chinese localisation. [YuiFAN] 2021-05-31 03:06:47 +10:00
Olivier Galibert
6209c13ae8 Remove leftover mame64 from docs 2021-05-25 15:45:13 +02:00
Vas Crabb
73cd2b55b8 Docmumentation update/expansion. [Firehawke, Vas Crabb] 2021-05-07 03:41:10 +10:00
algestam
cc438d9ef2
docs: Update build requirements for Ubuntu (#8010) 2021-04-28 20:37:41 -04:00
Vas Crabb
fbd73c8bf7 docs: Update build requirements for Fedora - someone should do this for other distros. 2021-04-25 23:43:09 +10:00
Stiletto
e5772b05e8
Updated compiling document to reflect that MSVC 2019 is working and recommended.
Source Changes
--------------
Updated compiling document to reflect that MSVC 2019 is working and recommended.
2021-04-16 22:51:24 -04:00
Scott Percival
5f4c4708ca
Add 'wpsize' variable to access the data size from a watchpoint (#7837) 2021-03-03 11:01:17 +01:00
mac-a-r0ni
f5302cddec
Suggested changes to MacOS to build reqs (#7715)
Update compilingmame.rst
* Changes in macOS section regarding current build requirements
* Added basic info for Apple Silicon to macOS build instructions.
2021-01-29 23:15:35 -05:00