summaryrefslogtreecommitdiffstatshomepage
path: root/docs/source/techspecs
Commit message (Collapse)AuthorAgeFilesLines
* Updated Chinese localisation. [YuiFAN] Vas Crabb2021-05-311-1/+1
|
* Add 'wpsize' variable to access the data size from a watchpoint (#7837) Scott Percival2021-03-031-5/+5
|
* Change "mame64" to "mame" in docs (#7709) Firehawke2021-01-291-1/+1
|
* Merge tag 'mame0227' into mainline-master Vas Crabb2020-12-312-6/+3
|\ | | | | | | MAME 0.227
| * version bump for 0.227, some documentation clean-upmame0227 Vas Crabb2020-12-312-6/+3
| |
* | luareference.rst: Move the luareference-input properties together AJR2020-12-261-3/+3
| |
* | natkeyboard: Remove from ioport_manager AJR2020-12-261-5/+5
|/
* Expose a couple more things to Lua so the plugins can show the actual key ↵ Vas Crabb2020-12-272-20/+45
| | | | mapped to UI clear.
* docs: Fix up the instantiation sections in the Lua reference. Vas Crabb2020-12-271-60/+60
|
* More Lua interface cleanup - it's simpler with cleaner underlyng APIs. Vas Crabb2020-12-272-41/+555
| | | | | | | | | | | Made the sound manager mute controls readable, and got rid of system enable since it just controls system mute anyway. This was causing confusion: phantom2 was trying to use both independentlyt casuing the mute bit to be ignored. THe Lua interface changes are mostly changing methods to properties, some renames to make things clearer, and some additional properties for better control over snapshots.
* Fix some oversights and emergent behaviour with view selection. Vas Crabb2020-12-201-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Exposed the "native snapview" option on the video manager. Trying to use presence of a single view is a poor proxy that breaks with multi-screen systems. Allow rotation to be changed for native snapshot views, and disable the zoom to screen area control when it has no effect on the selected view. Treat an empty string identically to "auto" for view selectction. Previously this was being used for prefix matching so it would force the first view. (This caused the bad snapshot view selection. It had been relying on "internal" not being a common view name prefix so it fell through to automatic selection, but when changed to an empty string it forced the first view.) Documented "auto" as well as "native" for the -snapview option and changed the default to auto rather than an empty string for consistency with the -viewN options. Added [w]string_view handlers to the stuff that's instantiated in strformat.cpp since we'll be increasingly using them. Cleaned up and updated some documentation.
* More Lua engine clean-up and documentation, resulting in core cleanup. Vas Crabb2020-12-182-10/+608
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | More Lua interface cleanup, additional properties and methods, and documentation migration/expansion. Emulated switch inputs can have "not" codes applied to host input axis directions. It works the same way as host switch inputs - push twice for a "not" prefix. Input polling helpers no longer need to store state in the input device items. There’s less leakage, and less chance of things interfering with each other. Allow snapshot view options to be configured through the internal UI via the video options menu. Made video options menus place initial focus on the currently selected view item. Removed some crud from the menu base class. Fixed the description of the "snapview" option. The value to get raw screen pixels was changed to "native" a long time ago but the description was never updated. Re-arranged the Golden Poker button lamps so that the 6-button layouts for Jolli Witch and Wild Witch make sense. In 6-button mode, the hold buttons double as bonus game and bet buttons, but the lamp outputs don't change. The simplest way to deal with this without requiring the user to switch views or using layout scripting is to place the dedicated buttons directly below the hold buttons that correspond to them. Removed some software list data that was redundantly copied into device_image_interface (m_supported was never even set, so it didn't even work), and made crc() work better (previously it wasn't recalculuated after unloading and loading another image). Made strformat.h and devcb.h play nicer with C++17 and pre-standard C++20. Format precision now correctly limits the length of string views. Confirmed that strformat.{h,cpp} works with pre-standard C++20 support in GCC 9. Removed an auto_alloc from cpu/arm7.
* -Lua cleanup and documentation migration checkpoint. Vas Crabb2020-12-162-3/+1194
| | | | | | | | | | | | | | | | | | | | * Cleaned up some more of the Lua inteface. Mostly replacing methods with properties, some consistency fixes, a few renames, some more exposed functionality, and a couple of properties that have no business being set from scripts made read-only. * Moved a lot more Lua documentation out of source comments into the documentation, and expanded on it in the process. * Got more UI code out of the input manager. * Changed input sequence poller to a polymorphic class where you specify your intention upfront. * Changed the cheat plugin to use UI Clear to clear hotkey assignments and leave them unchanged if the user starts assignment but doesn't press any switches. * Ported AJR's fix for over-eager double-click recognition from SDL to Windows OSD. -goldnpkr.cpp: Cleaned up inputs, using standard keyout and payout types and key assignments.
* -luaengine.cpp: Clean up render classes and expose screen image adjustments. Vas Crabb2020-12-134-3/+1005
| | | | | | | | | | | | | | | | | | | | | * Started moving Lua class reference to docs. Expecting people to find the class reference material in the source isn’t going to help make it approachable. The docs allow longer explanations, better formatting, and cross reference links. * Added another layout scripting example to the docs. -goldnpkr.cpp: Minor clean-up. * Improved the short names for Witch Card and Witch Game clone sets. * Made Witch Up & Down artwork clickable. * Added working Video Klein sets where the parent is a working Video Klein set to the tiny subtarget. * Removed history from the header comment - we have version control for a readon.
* docs: Fix a bunch of errors from not reading what I wrote (thanks Ryan). Vas Crabb2020-12-091-9/+9
|
* -Lua engine cleanup, input edition: Vas Crabb2020-12-093-73/+292
| | | | | | | | | | | | | | | | | | | * Modernised and cleaned up Lua bindings for input classes. * Exposed the input_sequence_poller class to Lua and updated the autofire and cheat plugins to use it, rather than continuing to pretend it's part of the input manager. * Exposed more of the natural keyboard manager, including the ability to enable/disable individual keyboard and keypad devices like you can from the keyboard mode menu. * Exposed a few more things on ioport_port and input_device. -plugins/cheat: Fixed menu item not updating visually when disabling a cheat with UI Left. -plugins/cheatfind: Fixed not finding the first screen after screen enumerator was exposed as an object rather than using a table. -bwidow.cpp, pacman.cpp: Minor cleanup to recent changes.
* -luaengine_render.cpp: Work around MSVC ambiguous overload error. Vas Crabb2020-11-263-57/+81
| | | | | -docs: Clean up a little. * Includes typo fixes from Alexander Miller.
* Work around GNU libstdc++ wanting to stack large temporaries when vector ↵ Vas Crabb2020-11-231-7/+7
| | | | elements can be trivially constructed.
* Implement views, which are essentially bankdevs integrated into the Olivier Galibert2020-11-221-0/+97
| | | | memory map system. [O. Galibert]
* -emu/devfind: More cleanup/consistency changes. Vas Crabb2020-11-131-9/+366
| | | | | | | | | | | * 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.
* Got rid of a couple of easy auto_alloc_array Vas Crabb2020-11-091-1/+2
|
* -emu/dirom.{h,ipp}: Cleaned up and made it stricter. Vas Crabb2020-11-093-105/+180
| | | | | | | | * Made it an error to specify address map and explicit ROM region. * Made it an error if explicitly specified ROM region is not found. * Made the ROM region tag apply relative to the current device. -Cleaned up formatting for a couple more documentation pages.
* docs: Wrote another section of object finder documentation. Vas Crabb2020-11-093-343/+714
| | | | Also improved formatting of code snippets in a few pages.
* emu/devfind.h: Added missing memory_share_array_creator. Vas Crabb2020-11-081-0/+22
| | | | Also some miscellaneous tidying up.
* -emu/devfind.h: Made read_safe avaiable for optional I/O ports only. Vas Crabb2020-11-061-3/+236
| | | | -docs: Added the next couple of sections explaining object finders.
* -docs: Started writing page on object finders with worked examples. Vas Crabb2020-11-052-2/+208
| | | | | | -hp3478a.cpp: Removed outdated TODO comment from layout. -Hopefully fixed all remaining MSVC operator resolution failure errors.
* Clean-up and consistency fixes after memory system changes. Vas Crabb2020-11-031-15/+15
|
* emumem: Simplify memory management. [O. Galibert] Olivier Galibert2020-11-022-0/+604
| | | | | | | | | | | | | | | | | | | | API impact: - install_ram/rom/writeonly now requires a non-null pointer. If you want automatically managed ram, add it to a memory map, not in machine_start - install_*_bank now requires a memory_bank *, not a string - one can create memory banks outside of memory maps with memory_bank_creator - one can create memory shares outside of memory maps with memory_share_creator Memory maps impact: - ram ranges with overlapping addresses are not shared anymore. Use .share() - ram ranges touching each other are not merged anymore. Stay in your range Extra note: - there is no need to create a bank just to dynamically map some memory/rom. Just use install_rom/ram/writeonly
* docs: Add links to some internal layouts that demonstrate various features, ↵ Vas Crabb2020-10-281-0/+39
| | | | and udpate required MSYS64 packages for using lld.
* emu/rendlay.cpp: Fixed one more place where disk drawing had error ↵ Vas Crabb2020-10-191-2/+2
| | | | accumulation issues.
* Various improvements to image file handling: Vas Crabb2020-10-081-82/+268
| | | | | | | | | | | | | | | | | | | | | | | | Moved MS DIB parser out of ICO file reader and made it available for artwork and layout images. Added more efficient I/O and better error checking for JPEG file loading (MAME will no longer exit immediately on a bad JPEG file). Made caller responsible for opening files for loading images, to avoid decompressing images used in ZIP/7z artwork multiple times. Added support for JPEG and Windows DIB to picture_image_device. Added support for SVG image files in external artwork. Added support for using I/O port value for animation state and masking animation state values. Made bounds elements more flexible in layouts. Reworked headers to reduce dependencies. Updated layout file format documentation.
* emu/rendlay.cpp: Added parameter animation and state masks. Vas Crabb2020-09-161-8/+92
| | | | | | | | | | | | | | | | | | | Components may have multiple bounds and/or color child elements with state attributes, allowing for piecewise linear position/size/colour animation. Components may have a statemask attribute, allowing for things like using external images to draw a multi-segment LED/VFD display without requiring dozens of outputs for the individual lines or thousands of images for all possible states. (Texture caching still never releases anything, so MAME can still exceed the maximum number of textures, but that’s a separate issue.) Image components with alpha now blend over previously drawn components. Layouts have been changed to use yes/no for inputraw to match what's used for flipx/flipy. External layouts with 1/0 will still work, but complay.py will complain.
* Updated most of the layouts using <bezel> elements Vas Crabb2020-09-091-2/+2
|
* Finished adding new mechanism for allowing parts of views to be hidden. Vas Crabb2020-09-071-0/+45
| | | | | | | | | | | | | | | | | | | | | | 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.
* docs: Add naming conventions for certain things. Vas Crabb2020-08-243-77/+224
| | | | | | | | 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.
* emumem: A little more speedup. cache and specific change syntax, and are ↵ Olivier Galibert2020-05-251-12/+9
| | | | | | | | | | | | | | | | not pointers anymore [O. Galibert] 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).
* Happy New Year 2020 (nw) (#6128) Stiletto2020-01-041-2/+2
| | | Happy New Year 2020 (nw) (#6128)
* Allow per-layer blend modes supplied by driver for screens, as required Vas Crabb2019-07-271-3/+3
| | | | | | | | | 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.
* Make layout format more flexible: Vas Crabb2019-07-061-145/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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.
* (nw) Clean up the mess on master Vas Crabb2019-03-263-14/+16
| | | | | | | | | | | | | This effectively reverts b380514764cf857469bae61c11143a19f79a74c5 and c24473ddff715ecec2e258a6eb38960cf8c8e98e, restoring the state at 598cd5227223c3b04ca31f0dbc1981256d9ea3ff. 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.
* Revert "conflict resolution (nw)" andreasnaive2019-03-253-16/+14
| | | | | This reverts commit c24473ddff715ecec2e258a6eb38960cf8c8e98e, reversing changes made to 009cba4fb8102102168ef32870892438327f3705.
* layout doc: reword (nw) hap2019-03-251-5/+4
|
* layout doc: correction and add inputraw (this one actually does work the way ↵ hap2019-03-241-6/+9
| | | | inputmask was documented before) (nw)
* device_memory_interface.rst : Correct docs cam9002019-02-181-1/+1
|
* 2018 -> 2019 changes (nw) Stiletto2019-01-101-2/+2
| | | * 2018 -> 2019 changes (nw)
* Make informational verbs a bit more consistent, reduce copy/pasted code, a ↵ Vas Crabb2019-01-041-4/+4
| | | | slight performance improvement for reading localisation files, and more documentation clean-up/correction/clarification
* srcclean and cleanup (nw) Vas Crabb2018-10-281-0/+6
|
* Fixed broken document structure Wellington Uemura2018-10-041-18/+22
| | | | | | | * 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
* finish off layout documentation for now Vas Crabb2018-08-031-8/+112
|
* (nw) Further layout work: Vas Crabb2018-08-021-0/+191
| | | | | | | | * 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