Changed name of element to "collection" and initial visibility attribute
to "visible", and added them to documentation. Also added them to
complay.py.
Fixed issue with collection inside group, and improved initial view
selection behaviour.
Updated some internal layouts to demonstrate new features, including
et3400, irrmaze, ltcasino, mekd3/mekd4, seawolf and vgmplay.
Removed all uses of cpanel, marquee and overlay from internal layouts
and removed them from complay.py to actively discourage use. Also
cleaned up view names in layouts that were using them in place of
spaces, and removed some superfluous name attributes on elements that
won't do anything useful with an output value anyway.
Made vgmplay cycle visualiser modes when visualiser screen is clicked.
Fixed a copy/paste error in bus/rs232/hlemouse.cpp while I'm at it.
This isn’t supposed to be too prescriptive. The C++ stuff just codifies
some things we’ve managed to mostly agree on for public interfaces. The
stuff for titles/descriptions is also just codifying existing rules so
there’s something to point people towards. This will need to be refined
as we go forward.
* First completed pass of commandline parameters. (nw)
* Further refinements on commandline (nw)
* Get the audio latency numbers right and add PortAudio info.
* FreeSync/GSync information cleanup.
* Minor additions to G-Sync/FreeSync.
* Add tip for keyboardprovider, remove biospath, correct anchor positioning (nw)
* A few corrections per Vas (nw)
The last(?) two changes are:
- Add a template parameter to everything (theoretically the address
space width, in practice a level derived from it to keep as much
compatibility between widths as possible) so that the shift size
becomes a constant.
- Change the syntax of declaring and initializing the caches and
specifics so that they're embedded in the owner device. Solves
lifetime issues and also removes one indirection (looking up the base
dispatch pointer through the cache/specific pointer).
* Removed empty nl_examples from dist.mak
* Added copyright acknowledgements and full text of licenses to binary distribution
* Fixed up the list of third-party libraries
* Moved WDL fft.c to 3rdparty
* Update MAME docs revision to 0.216
* Add FAQ question about autofire with walkthrough of setup process.
* Add VSCode .gitignore for RST compilation temporary folder (/docs/source/_build)
* Add a caveat about autofire+normal fire mapping
* Add -lowlatency to the docs.
fundamental change to show device delegates are configured.
Device delegates are now aware of the current device during
configuration and will resolve string tags relative to it. This means
that device delegates need a device to be supplied on construction so
they can find the machine configuration object. There's a
one-dimensional array helper to make it easier to construct arrays of
device delegates with the same owner. (I didn't make an n-dimensional
one because I didn't hit a use case, but it would be a simple addition.)
There's no more bind_relative_to member - just call resolve() like you
would for a devcb. There's also no need to cast nullptr when creating a
late bind device delegate. The flip side is that for an overloaded or
non-capturing lambda you'll need to cast to the desired type.
There is one less conditional branch in the hot path for calls for
delegates bound to a function pointer of member function pointer. This
comes at the cost of one additional unconditional branch in the hot
path for calls to delegates bound to functoids (lambdas, functions that
don't take an object reference, other callable objects). This applies
to all delegates, not just device delegates.
Address spaces will now print an error message if a late bind error is
encountered while installing a handler. This will give the range and
address range, hopefully making it easier to guess which memory map is
faulty.
For the simple case of allowing a device_delegate member to be
configured, use a member like this:
template <typename... T> void set_foo(T &&...args) { m_foo_cb.set(std::forward<T>(args)...); }
For a case where different delegates need to be used depending on the
function signature, see src/emu/screen.h (the screen update function
setters).
Device delegates now take a target specification and function pointer.
The target may be:
* Target omitted, implying the current device being configured. This
can only be used during configuration. It will work as long as the
current device is not removed/replaced.
* A tag string relative to the current device being configured. This
can only be used during configuration. It will not be callable until
.resolve() is called. It will work as long as the current device is
not removed/replaced.
* A device finder (required_device/optional_device). The delegate will
late bind to the current target of the device finder. It will not
be callable until .resolve() is called. It will work properly if the
target device is replaced, as long as the device finder's base object
isn't removed/replaced.
* A reference to an object. It will be callable immediately. It will
work as long as the target object is not removed/replaced.
The target types and restrictions are pretty similar to what you already
have on object finders and devcb, so it shouldn't cause any surprises.
Note that dereferencing a device finder will changes the effect. To
illustrate this:
...
required_device<some_device> m_dev;
...
m_dev(*this, "dev")
...
// will late bind to "dev" relative to *this
// will work if "dev" hasn't been created yet or is replaced later
// won't work if *this is removed/replaced
// won't be callable until resolve() is called
cb1.set(m_dev, FUNC(some_device::w));
...
// will bind to current target of m_dev
// will not work if m_dev is not resolved
// will not work if "dev" is replaced later
// will be callable immediately
cb2.set(*m_dev, FUNC(some_device::w));
...
The order of the target and name has been reversed for functoids
(lambdas and other callable objects). This allows the NAME macro to
be used on lambdas and functoids. For example:
foo.set_something(NAME([this] (u8 data) { m_something = data; }));
I realise the diagnostic messages get ugly if you use NAME on a large
lambda. You can still give a literal name, you just have to place it
after the lambda rather than before. This is uglier, but it's
intentional. I'm trying to drive developers away from a certain style.
While it's nice that you can put half the driver code in the memory map,
it detracts from readability. It's hard to visualise the memory range
mappings if the memory map functions are punctuated by large lambdas.
There's also slightly higher overhead for calling a delegate bound to a
functoid.
If the code is prettier for trivial lambdas but uglier for non-trivial
lambdas in address maps, it will hopefully steer people away from
putting non-trivial lambdas in memory maps.
There were some devices that were converted from using plain delegates
without adding bind_relative_to calls. I fixed some of them (e.g.
LaserDisc) but I probably missed some. These will likely crash on
unresolved delegate calls.
There are some devices that reset delegates at configuration complete or
start time, preventing them from being set up during configuration (e.g.
src/devices/video/ppu2c0x.cpp and src/devices/machine/68307.cpp). This
goes against the design principles of how device delegates should be
used, but I didn't change them because I don't trust myself to find all
the places they're used.
I've definitely broken some stuff with this (I know about asterix), so
report issues and bear with me until I get it all fixed.
* New working software list additions
-----------------------------------
apple2_flop_orig: Gauntlet, Go (Hayden), Ghostbusters, Galactic Wars, Guderian [4am, Firehawke]
* Add details on compiling MAME documentation. (nw)
for Laserdisc overlays.
This is a change in behaviour, and it means that games like Golly!
Ghost! will need an explicit blend mode specified in the XML. I'm not
entirely happy with the situation, but a better, more general solution
than this would require some serious refactoring to MAME's renderer.
* There is no longer a concept of "layers" - there are only screens and elements.
* Elements are now instantiated with <element ref="...">
* Screens and elements can have explicit blending mode specified with blend="..."
* Default blending mode for screens is "add" and default for other elements is "alpha"
* Other supported modes are "none" and "multiply"
* This removes the options to enable/disable layers individually - use views instead
* Legacy layouts can still be loaded, and support won't be removed for at least a year
The current artwork model is over-stretched. It's based on a Space
Invaders cabinet model, and isn't applicable to a lot of the systems
MAME emulates now. The fact that MAME has to switch to an "alternate"
mode to deal with games like Golly! Ghost! without requiring pre-matted
bitmaps shows that the Space Invaders model wasn't even adequate for
general arcade use. It shows in that for a lot of the systems that
heavily depend on artwork, people just seem to randomly choose layers
for elements until they get something that works. Also, the fact that
MAME will switch to an alternate (Golly! Ghost!) mode depending on the
combination of elements is a trap for people learning to make artwork.
There are cases that the current approach of implying the blending mode
from the layer doesn't work with. Examples include LEDs behind
diffusers (requires additive blending for layout elements), and mutliple
stacked LCD panels (requires RGB multiplication for screens).
For configurability, it's now a lot easier to make multiple views using
groups. For example, if you want to make it possible to hide the
control panel section of your layout, you can put the control panel
elements in a group and create views with and without it.
I will gradually migrate the internal artwork to use the new approach.
I have an XSLT stylesheet that helps with this, but I'm not comfortable
adding it because it isn't a complete solution and it still requires
manul steps.
I wanted to get the re-worked pointer handling done sooner so I could
push them both at the same time, but unfortunately various things have
prevented me from progressing as quickly as I wanted to. Sorry guys,
that stuff's going to have to wait.
This cleans up spelling and other issues in the original text.
This work is still prototype and will probably require fine-tuning between Vas and myself.
This effectively reverts b380514764 and
c24473ddff, restoring the state at
598cd52272.
Before pushing, please check that what you're about to push is sane.
Check your local commit log and ensure there isn't anything out-of-place
before pushing to mainline. When things like this happen, it wastes
everyone's time. I really don't need this in a week when real work™ is
busting my balls and I'm behind where I want to be with preparing for
MAME release.
* Document cross-compilation options
* Use lowercase for some libraries that are lowercase in system32 on Windows anyway
* Make USE_BUNDLED_LIB_SDL2=0 not use the bundled SDL
* Update copyrights and docs revision (nw)
Updates copyright on existing 2018 entries to 2019 (and one 2016)
Updates the docs compilation script to MAME 0.205 and 2019 copyright.
* Further formatting overhauling (nw)
Clamp to 80 column where possible; it makes it easier to track errant
line breaks, etc.
Also begin standardizing tab formatting and two spaces after period.
* Further corrections to command line materials (nw)
* More adjustments for Cuavas (nw)
Getting closer to acceptable.
* Case sensitivity training for INI (nw)
The world is not 100% Windows, so case sensitvity is needed.
* Further standardization of the formatting (nw)
More to go...
* Pass 2 of new formatting wave (nw)
More to go, though.
* wave 3 of formatting cleanup (nw)
Further adjustments and cleanups, including unwanted tabs.
* Correct filtering instructions (nw)
* Those chapter numbers are auto generated by sphinx
* Fix the chapters not been bold like the rest of the documentation
* Fix chapter numbers not in sync with the rest of the documentation
* Change the last two chapters to keep up with the document consistency
* Fix bold for nscsi_full_device
* Allow <orientation> and <color> to work on group references
* Fix some corner cases where group bounds could be miscalculated
* Fix a corner case where MAME could incorrectly refuse to instantiate groups
* Add more checks to complay.py
* Document more of the layout format
* Clean up some corner cases in layouts with repeating blocks
* Make complay.py validate many more elements and attributes
* Make complay.py easier to use for just validating a layout
* Remove redundant view from Sega VMU layout
* Make buttons visually respond to input in whousetc.lay
* Add view with LED displays as well as terminal for aim65_40 and use repeats
* Clean up some outdated "game" terminology in clifront.cpp
* Initiaise a couple of members in tap/tun network module
* Start documenting layout format
* Missed a couple escape sequences. (nw)
* A little more escaping, acronym fixes, fix oddity in symlist (nw)
* Update debugger internal help to match docs (nw)
* Lowercasing for CPU in command parameters, fix casing on ASCII. (nw)
* The first set of commandline overhauls. (NW)
* Correct case on headings, further improvements to index, spelling fix
* More updates to the index and cleanup to the commandline stuff. [NW]
* More core options in the index. [NW]
* Finished multiplatform commandline index [NW]
* Completion of first revision commandline index [NW]
- reset scheduler savestate to what it was for years before rewind
-- changing saved variables should be done after thorough testing. right now, adding some vars breaks some machines, adding other vars breaks others
- switch to megabyte-wise capacity
-- savestate size greatly differs between machines, relying on state count is unstable
- switch to internal indexing
-- no longer depends on inaccurate machine time
- rewind accelerator key in debugger (Ctrl+F11)
- report capacity hit (once), with some useful info
- make error reports saner
- mention rewind and rewind_capacity in the docs
Disassemblers are now independant classes. Not only the code is
cleaner, but unidasm has access to all the cpu cores again. The
interface to the disassembly method has changed from byte buffers to
objects that give a result to read methods. This also adds support
for lfsr and/or paged PCs.
- 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.
- removed -antialias option (does not exist anymore)
- added missing -vector_beam_smooth option
- fixed suggested default values for -bloom_lvl_weights options (were messed up in the last update)
This change adds id() property to input_device, which represents the
unique device id. This allows the osd layer when creating a device to
pass a friendly display name along with a unique identifier.
Currently the device id is only used to map a physical controller device
to controller id, but can be used more generally in the future. For raw
input devices, we use the full raw input name as the device id. For all
other devices, we fall back to device name as the device id. The
"uniqueness" of the device id is not currently enforced in code.
This change adds support for configuring device to conrtoller id. This
allows for stable controller ids even if USB devices are plugged /
unplugged, system is rebooted, etc.
See documentation for additional context.
* added simple procedural texture for vectors with rounded line ends and beam smoothness
* added optional -vector_beam_smooth option
* removed -antialias option, antialiasing is now always applied, except for plain D3D
- vector_length_ratio is now independent from screen size
- changed vector_length_ratio range from [0.0, 1000.0] to [0.0, 1.0]
- updated display name and description of vector_length_scale vector_length_ratio
- separated curvature parameter into distortion, cubic_distortion and distort_corner
- distortion and cubic_distortion can be negative, to compensate each other
- distort_corner is intependent from the image distortion
- reduced raster bloom level to 8
- extended vector bloom level to 15
- changed vector bloom to be less blocky
- removed bloom_lvl9_weight and bloom_lvl10_weight options
- options are reset to loaded preset when game is closed
- changed default values of options to result in no effects activated
- init_slider_list() does not returns but sets g_slider_list directly
- removed unnecessary oriented_vector_texcoords
- HLSL now uses NPOT sized target surfaces (breaks compatibility with
graphics cards based on R300/R400/NV30 and older)
- HLSL target surfaces now have the size of the screen canvas
- removed HLSL pre-scale factor
- HLSL now uses a sharp bilinear interpolation to pre-scale textures to
screen canvas size, based on [Themaister's] implementation
- improved overall performance (based on the previously required
pre-scale factor, you might notice a 5-50% speed-up depending on your
graphics card, more if you used a higher pre-scale factor)
- improved shadow mask quality (pixel-perfect) in screen-mode
- fixed half source texel offset of bloom level alignment
- removed ./hlsl/artwork_support folder
- all shaders after pre-scale are now based on screen coordinate
(workaground, till both raster and vector pass can work on texture
coordinates)
- disabled distortion shader for more than one screen and for artworks
in full mode, does not affect artworks in copped mode (workaground, till
both raster and vector pass can work on texture coordinates)
- moved compute_texture_size() from texture_info to texture_manager (nw)
- merged YIQ encode and decode pass into one NTSC pass
- added options for most NTSC settings
- reduced sample count to 64
- changed default O value to 0
- fit NTSC signal jitter between a reasonable limit of 0 and 1
- fit A and B value between a reasonable limit of -1 and 1
- fit scanline jitter between a reasonable limit of 0 and 1
- added hum bar simulation based on [MooglyGuy's] GLSL port of the mame
shader pipeline
- added monochrome-chessboard.png
- added slot-mask-aligned.png (to simulate a TFT LCD)
- added shadow mask type option to choose between "Screen" and "Source"
tile mode ("Screen" is the default as before)
- added bloom type option to choose between "Addition" and "Darken"
blend mode ("Addition" is the default as before)
- the alpha channel of a shadow mask is now filled with the background
color of the screen by the amount of the inverted alpha value
- added monochrome-matrix.png which can be used in combination with
"Source" tile mode and "Darken" blend mode to simulate a STN LCD, for
example
I'm purposefully leaving /src/emu/bus/cbmiec/c1541.c's kernal.bin
as it is, as this particular spelling mistake was originally made
by Robert Russell, therefore is canon. See
http://en.wikipedia.org/wiki/KERNAL for details.
I'm also leaving /src/emu/machine/nscsi_bus.c's RECIEVE as I don't
want to break anything, but it's worth someone looking into.
I renamed some variables in /src/mame/drivers/sfbonus.c,
/src/mame/video/tia.c and /src/mame/video/tia.h, so if anyone wants
to verify I didn't break anything, that would be nice.
This commits add some initial documentation for current API
exposed via luaengine. This doc is meant to be a quick
walkthrough for script writers coming from mame-rr.
Full methods reference is not yet included, as the API is still
rapidly changing.
Signed-off-by: Luca Bruno <lucab@debian.org>
Squashed commit of the following:
commit 8d8a0d9713d4614b22f06fda4cf948d4d5561de0
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Tue Dec 2 17:15:42 2014 +0000
Revert fixes to libraries
I'll fix those at the source, where possible.
commit 5dde94e3e60dcc622d5b782acaa62e590c62bafb
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Tue Dec 2 16:57:32 2014 +0000
Add apostrophes
commit b27e168b58861f1ad0ca7af1c6ca1629cc6730ce
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Mon Dec 1 16:28:58 2014 +0000
Fix some more word duplication
I've left some instances of " in in " in, as they're ambiguous and
may actually be correct.
commit a3dfd10cd501c3a521010942f950f5ca2c5395a7
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Mon Dec 1 10:35:03 2014 +0000
Fix another typo
commit 01a3702209d9e880ac8f60dc4d74f26d426234fb
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Mon Dec 1 10:33:57 2014 +0000
Fix more typos
commit 56c6fffd8769cdfab62c59c04d41b98b7f425262
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Mon Dec 1 10:30:19 2014 +0000
Hopefully fix typos
I'm not entirely sure about src/mame/drivers/nova2001.c line 933,
as it could plausibly be either "which is not the top bit" or "which
is now the top bit", with almost opposite meaning.
commit 906507b221de0175d236e252dc51f122cb56db23
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Mon Dec 1 08:39:55 2014 +0000
Fix another typo
commit 14fcd939ae1c0570c10aacf00c6ea86724086f92
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Mon Dec 1 08:38:16 2014 +0000
Fix some more word doubling in comments
commit d21283a447b94b28a38ec742a09fe425d77b55b2
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Sun Nov 30 23:06:07 2014 +0000
Fix some more typos
commit 59b14d204af6d5983ea6dea2f5c8ad5bcc80460c
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Sun Nov 30 22:56:53 2014 +0000
Tidy more
commit 9b3c9a868596c04c1a61b35aa8c96fb82c885149
Author: Zoë Blade <zoe@bytenoise.co.uk>
Date: Sun Nov 30 22:43:30 2014 +0000
Tidy more comments
relative to -state_directory (whose usage remains unchanged). Syntax is basically the same
as snapname, allowing for the / character as path separator, %g as the driver name, and
%d_[media] as the image name mounted in the "media" device.
For example, using -statename foo/%g when running "mame wrally" will store save states into
the folder sta/foo/wrally/ ; using -statename %g/%d_cart when running "mess nes -cart smb"
will store save states into the folder sta/nes/smb/ ; using -statename %g/%d_cdrm when
running "mess pce -cart cdsys -cdrm draculax" will store save states into sta/pce/draculax/
Specifying a media switch which is not available (e.g. %d_cdrm in a c64) or a media switch
where no image is mounted (e.g. %d_cdrm in pce while playing a hucard game) will revert
the option to its default value %g and save states will be stored in sta/*gamename*/ as in
previous versions. [Fabio Priuli]
Needless to say, this option is very useful with home computers and consoles in MESS since it
allows to have 36 save slots for each game instead of 36 for the whole system library
Notice that a clean compile is required, due to the addition to the running_machine class
if it owns a given font (based on the name), and if it does, it is
responsible for generating bitmaps on the fly as characters are requested.
Added new option -uifont to specify the UI font. It can be set to a filename,
in which case a BDF font will be loaded. It can also be set to a font name
(assuming the OSD support is present), in which case the OSD font by that
name is used. The default value is 'default' which can be used by the OSD
to substitute a default font or by the OSD, which will default to ui.bdf
as before. In all cases, it falls back to the built-in font by default if
none of the previous options works.
On Windows, the OSD will default to Tahoma as the font name. Also on
Windows, font names can be specified with [b] to indicate bold or [i] to
indicate italic.
Moved -effect implementation out of OSD code and into core since
the implementations were identical across Windows/SDL and implemented
in the core itself.
specifies the number of seconds after the last video update that will
cause auto-termination of MAME. Also modified it to output a message
when the watchdog triggers the exit.
Updated windows.txt to reflect this option and the debugger_font options
which were never previously documented.
-numprocessors <auto|value>
Specify the number of processors to use for work queues. Specifying
"auto" will use the value reported by the system or environment
variable OSDPROCESSORS. To avoid abuse, this value is internally limited
to 4 times the number of processors reported by the system.
The default is "auto".
result, you will need a full recompile with this change, since the
bitmap formats enum was altered.
Introduced new feature -burnin, which can be used to generate a PNG
that represents the overall brightness seen during the course of
running a game. This PNG can be used as a fake "bezel" that overlays
the screen via the artwork systems (with a low alpha, say 0.1 or 0.2)
to simulate running a game with a monitor that has been burned in
from another game.
Fixed the -crsshairpath option to be spelled properly.
* Added Crosshair Options menu
- ability to individually enable/disable crosshairs
- ability for them to automatically disappear after a set amount of time
- ability to select crosshair graphic
- all settings are saved in the cfg file
* Removed F1 toggle for crosshairs
* Added new command option -crsshairpath
- store all selectable graphics here
- see config.txt for further info
OSD NOTE: render_load_png() has been changed to no longer force usage of the artwork directory.
Do a search for "render_load_png(" and replace with "render_load_png(OPTION_ARTPATH, " if needed.
----------------------------
F1 is now free to use for something new. I was thinking it would be perfect for a context sensitive help file. Each menu item could have a help tag, that it would look up and display info from an HTML file.
on a command-line parameter and the configuration. Changed Windows OSD
code to use this instead of its own logic. Changed -snapview to share the
logic as well, enabling 'auto' as a -snapview option.
Enabled by default for snapshots and movie rendering.
Added new option: -snapsize, which lets you specify the target
resolution for snapshots and movies. The existing behavior is still
the default: create snapshots and movies at native pixel
resolutions.
Added new option: -snapview, which lets you specify a particular
view to use for rendering snapshots and movies. The existing
behavior is still the default: use a special internal view and
render each screen to its own snapshot in its own file. When using
this option to specify a view other than 'internal', only a single
snapshot file will be produced regardless of how many screens the
game has.
Improved AVI and MNG recording to properly duplicate/skip frames
as appropriate to keep the correct framerate.
names are generated.
Added new astring functions astring_del, astring_replace, and astring_replacec
to help perform simple search/replace substitution.
to write RGB bitmaps. Unfortunately, the only option is fully
uncompressed, which means the resulting AVIs are *HUGE* and
may not play correctly in realtime due to high data rate. The
intention is that these uncompressed AVIs are post-processed
by other utilities to compress the video and produce a
realtime playable result.
Added new command-line option -aviwrite which works just like
-mngwrite, except it produces AVIs and streams sound to them.
Updated documentation accordingly.
Shift+F12 still produces MNGs for now, though this might change
in the future.
Modified fileio.c to retain the full pathname to the file so
that it can be queried while the file is open.