summaryrefslogtreecommitdiffstatshomepage
path: root/docs/source/techspecs (follow)
Commit message (Collapse)AuthorAgeFilesLines
* idsoccer: improve adpcm emulation hap2024-11-171-2/+2
| | | | | | | | Clones promoted to working -------------------------- Indoor Soccer (set 2) [hap] Indoor Soccer (Tecfri) [hap] American Soccer (Japan) [hap]
* devcpu: add retry_access and document Olivier Galibert2024-11-161-2/+64
|
* docs: Proofreading [Robert] Olivier Galibert2024-05-182-5/+5
|
* memory: Document taps, contention/interruptibility Olivier Galibert2024-05-143-7/+317
|
* -seta/ssv.cpp: Cleaned up key matrix code. Vas Crabb2024-05-091-1/+1
| | | | -docs: Fixed editing error.
* -merit/mtouchxl.cpp: Added touch-enabled layout. Vas Crabb2024-05-091-2/+2
| | | | | | -ui/tapectrl.cpp: Ensure device monitored for media change is up-to-date. -osd/windows: Changed a pointer to a const reference in an API.
* emu/rendlay.cpp, ui/ui.cpp: Allow layout views to control pointer display. Vas Crabb2024-04-141-0/+5
|
* Initial touch input support: Vas Crabb2024-04-122-5/+101
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Feed mouse/pen/touch pointer events through UI input manager with Win32 and SDL. * Started migrating UI code to use new API and reworking mouse/touch interaction. * emu/render.cpp: Support pressing multiple clickable layout items simultaneously. * emu/render.cpp: Allow UI elements to be drawn in any window. * emu/rendlay.cpp, luaengine_render.cpp: Added layout view events for pointer input. * ui/ui.cpp: Allow the UI handler to control pointer display. * ui/analogipt.cpp: Added mouse/touch and more keys for navigating field state list. * ui/menu.cpp: Use vertical swipe to scroll and horizontal swipe to adjust. * ui/menu.cpp: Draw after processing input - greatly improves responsiveness. * ui/menu.cpp: Ignore keyboard/gamepad input during pointer actions. * ui/selmenu.cpp: Made left/right info pane arrows repeat when held. * ui/selmenu.cpp: Use middle click to move keyboard focus. * ui/selmenu.cpp: Let filter list scroll if it's too tall, and use a bit of horizontal padding. * ui/selmenu.cpp: Improved divider sizing. * ui/state.cpp: Don't allow clicks to pass through the confirm deletion prompt to the menu. * ui/simpleselgame.cpp: Fixed error message display and graphics/sound status not showing. * ui/simpleselgame.cpp: Allow tap/click to dismiss error message. * ui/utils.cpp: Show UI for choice filters when there are no choices - it's less confusing. * modules/input/input_sdl.cpp: Made scaling for mouse scroll better match RawInput and DirectInput. * modules/input/input_rawinput.cpp: Added support for horizontal scroll axis. * modules/input/input_win32.cpp: Added support for scroll axes and more buttons to mouse/lightgun. * modules/debugger/debugimgui.cpp: Don't fight over events with the UI manager - it breaks menus. * osd/windows/window.cpp: Translate mouse position to window cooridinates for scroll wheel events. * osd/sdl/window.cpp: Supply last mouse position for scroll wheel events if possible. * scripts/build/complay.py: Made zero input mask an error - it was only being used to block clicks.
* sega/sega_beena.cpp: Hooked up barcode cards. Vas Crabb2023-12-141-0/+4
| | | | | | | | | | Systems promoted to working --------------------------- Sega TV Ocha-Ken [QUFB] Software list items promoted to working (tvochken.xml) ------------------------------------------------------ TV to Ocha-Card: Ocha-Ken 'Ho' to Seikatsu [Vas Crabb]
* Miscellaneous simple changes: Vas Crabb2023-12-021-8/+11
| | | | | | * docs: Updated example layout links to latest tagged release (0.261). * capcom/1943.cpp: Improved DIP switch setting labels (MT08797). * sega/sms.cpp: Original Master System/Gam*Boy wasn't numbered (MT08754).
* sega/sega_beena.cpp: Added basic book page display. Vas Crabb2023-11-041-0/+22
| | | | | | | | | sega_beena_cart.xml: Put page scans in individual data areas. frontend/mame/luaengine_mem.cpp: Added a raw read function for memory regions. plugins/layout: Added bitmap classes to layout sandbox.
* docs: Fixed a number of grammatical errors and editing errors. (#11578) Tom Cariello2023-10-0111-43/+43
|
* docs: Moved Lua API reference to its own section - the page was far too long. Vas Crabb2023-07-064-4611/+33
|
* Allow loading PNG/JPEG/MS DIB bitmaps from Lua, and cleanup. Vas Crabb2023-04-131-0/+4
| | | | | | | | | | | Use VirtualAlloc rather than VirtualProtect on Windows to change page protection, as the latter can cause severe performance issues with some antivirus software. Added noexcept to lots of hash- and bitmap-related things, and added a little more error checking. Yes, I realise it will abort if an allocation fails while printing a log message, but if you get to that point, you're probably screwed already.
* -Improved some Lua APIs: Vas Crabb2023-04-072-10/+90
| | | | | | | | | | | | | | | | * Moved several machine lifecycle callbacks to the notifier/subscriber model. The old callback registration model is still available for them for now, but prints a deprecation warning. * Added pre-save/post-load notifications. * Use a single allocated timer rather than one anonymous timer per waiter. Waiters no longer prevent saved states from being loaded. * Clean up outstanding waiters on stop or state load rather than just leaking them. * Started documenting parts of the emulator interface object that should be relatively stable. -imagedev/avivideo.cpp: Fixed an object leak on unload. Also changed some other media image devices to use smart pointers.
* API change for device_image_interface AJR2023-03-301-5/+6
| | | | | | | | | - Remove the seterror method for recording error messages and conditions. Condition codes have been made return values for call_load, call_create and various related callbacks. Error messages (which many devices weren't generating) are now displayed through osd_printf_error. - Eliminate the image_init_result and image_verify_result pass/fail enumeration types. Update many functions that were returning these enumerations or simply bools to return std::error_condition instead. In some cases, this type is now passed down from internal parsing/loading functions which were already returning it. In various other cases, the former default UNSPECIFIED has been used as a catchall for I/O errors; anticipated future refactorings should make these error returns more specific. - Expand the image_error categories to include INVALIDLENGTH, NOSOFTWARE and BADSOFTWARE. The first is largely self-explanatory. The second is generated by the core to indicate failure to find software items in lists. The third is provided for devices to indicate semantic errors in software list entries. - Change the return type of floppy_image_device::identify to a pair so the potential error condition can be passed along to the UI without storing it in a member variable. - Move device_image_interface::message down into snapshot_image_device and change its implementation to use string_format instead of printf. - Correct a typo in the shortname of the generic snapshot device.
* Retired the over-stretched "system type" flags. Vas Crabb2023-03-231-2/+2
| | | | | | | | | | | | | | | | Functionally, the only difference between the system definitions is that GAMEL lets you specify an additional internal layout and SYST lets you specify a compatible system. COMP and CONS are just aliases for SYST - the aliases can be phased out. Removed arcade.flt and mess.flt altogether - opinion seems to be split between misinterpreting them as fully supported and considering them unnecessary. They were marginally useful as a performance test for makedep.py, but that isn't important. We still have nl.flt as an example .flt file (although it doesn't use "-" exclude directives). Moved the UI active flag from the machine to the UI manager. Nothing else uses it anyway (it's still accessible to scripts).
* -luaengine.cpp: Expose UI controls toggle state. Vas Crabb2023-03-231-0/+2
| | | | -ui/ui.cpp: Honour UI enable for machines without keyboards.
* dimemory: Add the target address space to translate, wrap the constants Olivier Galibert2023-03-181-5/+8
| | | | divtlb: Wrap the constants
* Lua engine: Better bindings for device_state_interface. Vas Crabb2023-03-121-0/+45
| | | | | | | | | | | | This avoids creating a table every time the state property of a device is accessed, adds proper support for getting/setting floating/point state entries from Lua, calls the state entry's formatting method to convert to a string (for flags fields, etc.) and exposes more properties. This is a breaking change as the exposed properties on state entries have changed, and the value property has different semantics for floating-point state entries.
* Various updates, mostly around Lua: Vas Crabb2023-03-071-7/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Compile Lua as C++. When Lua is compiled as C, it uses setjmp/longjmp for error handling, resulting in failure to unwind intermediate stack frames. Trying to ensure no objects with non-trivial destructors are in scope when raising a Lua error is error-prone. In particular, converting an exception to a Lua error becomes convoluted, and raising a Lua error from a constructor is effectively impossible. Updated Lua to 5.4.4 - this includes a brand-new garbage collector implementation with better performance. The main thing removed is the deprecated bitlib. Updated sol2 to version 3.3.0 - this adds support for Lua 5.4 and fixes a number of issues, including not correctly handling errors when Lua is built as C++. Updated LuaFileSystem to version 1.8.0 - this adds support for symbolic links on Windows, as well as Lua 5.4 compatibility. Updated LuaSQLite3 to version 0.9.5 - this fixes issues in multi-threaded environments, as well as Lua 5.4 compatibility. Fixed double-free after attempting to construct a debugger expression from Lua with an invalid string, and exposed expression error to Lua in a better way. Added warning level print function to Lua. Fixed saving cheats with shift operators in expressions, although this code isn't actually used as there's no cheat editor.
* Input refactoring: Vas Crabb2023-02-181-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | osd/modules/input, emu/inpttype.cpp: Made most default joystick assignments supplied by input modules. Input modules take available controls into consideration when generating default assignments. emu/inpttype.ipp: Added a separate "Back" UI input separate from Cancel. You may want an easier to hit combination for moving to the previous menu than for exiting or cancelling input. They both default to Escape. emu/inpttype.ipp: Added a UI Help control. Currently only used by analog inputs menu emu/inpttype.h: Moved I/O port field type enum to its own header and sorted UI controls so they appear in a more logical order. ui: Don't use UI Select to restore defaults - people should be getting used to the UI Clear input by now. UI Select cycles multi-value items instead. ui/inputmap.cpp: Don't use immediate cancel to cycle between clearing and restoring default assignment (use UI Clear instead). osd: Reduced the number of files needing to include the dreaded emu.h. Got some implementation out of headers.
* Small batch of input refactoring: Vas Crabb2023-02-051-1/+3
| | | | | | | | | | | | | | | | | | | | | emu/input.cpp: Fixed regression in display of some joystick inputs. osd/interface: Split up interface classes into a few more files to reduce where the input device interface class needs to be included. Made OSD independent of concrete input_device class. osd/modules/input, emu/inputdev.cpp, emu/ioport.cpp: Allow input devices to provide tokens for controls without standard item types and additional default input assignments. Fixes issues assigning Yen and Backslash on Japanese keyboards. ui/textbox.cpp: Added a fixed-content text box menu class for future use. Got main.h out of emu.h as it’s only used in a very small number of places, mostly for getting the application name. Added eminline.h to attotime.h as it's used without emu.h. Cleaned up forward declarations in emufwd.h a little.
* docs: Added an introduction to the input system for developers. Vas Crabb2023-02-032-0/+459
| | | | | emu/ioport.cpp: Removed a long-outdated comment that is now rather misleading.
* C++ guidelins update and cleanup: Vas Crabb2022-12-221-4/+0
| | | | | | | | | | | | | | | docs: Expanded C++ guidelines following suggestions by P. Mackinlay. ui/inifile.cpp: Got rid of the check for "arcade" systems - it broke managing favourites for the slotted Neo Geo. luaengine.cpp: Removed the "type" property from system driver metadata. It's effectively deprecated. bus/vme/vme_fcisio.cpp, commodore/mps1230.cpp: Fixed inappropriate use of machine type flag constants. megadriv.xml: Made notes about the two Galaxy Force 2 sets more explcit.
* docs: Added preliminary guide for would-be contributors. (#10717) [Ryan ↵ Vas Crabb2022-12-222-70/+19
| | | | Holtz, Vas Crabb, O. Galibert]
* Renamed n2a03 to rp2a03 throughout source tree. (#10343) 0kmg2022-09-201-3/+3
|
* Patched up some gaps in functionality and fixed some bugs. Vas Crabb2022-09-021-8/+288
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ui: Added some missing functionality: * Added an option to copy input device IDs to the relevant menus. * Added an item for setting the software lists files path (-hashpath) to the folder setup menu. * Allow pasting text from clipboard in most places that allow typing (searching, entering filenames, entering barcodes). * Changed the software selection menu heading to be a bit less misleading. * Made barcode menu less eager to rebuild itself unnecessarily, and removed some confusing and apparently pointless code. Exposed more Lua bindings: * Added low-level palette objects. * Added indexed bitmap types. * Added a bitmap method for extracting pixels from a rectangular area as a packed binary string. * Changed screen device pixels method to return width and height in addition to the pixels. osd: Added some functionality and cleaned up a little: * Added a function for copying text to the clipboard. * Moved function for converting Windows error codes to standard error conditions to winutil.cpp so it can be used from more places. * Removed duplicate declaration of osd_get_clipboard_text and made the function noexcept (including fixing implementations). * Made macOS implementation of osd_get_clipboard_text skip the encoding conversion if it finds UTF-8 text first. * Changed the default -uimodekey setting so it doesn't lose the "not shift" that stops the default from interfering with UI paste. Various bug fixes: * util/unicode.cpp: Fixed the version of utf8_from_uchar that returns std::string blowing up on invalid codepoints. * util/bitmap.h: Fixed wrapping constructors for indexed bitmaps taking the wrong parameter type (nothing was using them before). * util/bitmap.cpp: Fixed potential use-after-free issues with bitmap palettes. * emu/input.cpp, emu/inputdev.cpp: Log 1-based device numbers, matching what's shown in the internal UI and used in tokens in CFG files. * emu/emumem.cpp: Added the bank tag to a fatal error message where it was missing. docs: Reworked and expanded documentation on configuring stable controller IDs. For translators, the changes are quite minor: * There's a menu item for copying a device ID to the clipboard, and associated success/failure messages. * There's the menu item for setting the software list file search path. * One of the lines in the software selection menu heading has changes as it could be interpreted as implying it showed a software list name.
* -nintendo/gb.cpp: Use taps to handle the boot ROM overlay. Vas Crabb2022-08-241-6/+8
| | | | | | -Moved some stuff out of misc and skeleton: * Moved Innovative Concepts machines to their own project. * Moved various things out of skeleton to existing company projects.
* Lua scripting enhancements: Vas Crabb2022-08-231-14/+406
| | | | | | | | | | | | Added minimal support for manipulating bitmaps and drawing them in render containers. Y'CbCr 4:2:2, RGB and ARGB are supported. Argument order doesn't always match the underlying classes to make the Lua interface more consistent with render bounds and render containers. Added bindings for device_palette_interface. Fixed some errors in the documentation as well as documenting new functionality.
* ui, docs: Added menus to fill a couple of gaps, improved consistency. (#9915) Vas Crabb2022-06-111-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Added menus for controlling toggle inputs, and showing recognised input devices and control state. Moved input menu options off main menu to a submenu, as there are a lot of them now. Moved menu heading drawing into base class, added headings to more menus, and made headings more consistent with the menu items used to reach them. Also made terminology more consistent. Changed the default names for buttons and hat switches/D-pads to use 1-based numbering. DirectInput still returns 0-based button numbers for some devices. Removed local copy of MinGW xaudio2.h as it’s now included in the MSYS2 package. Also fixed building the DirectSound sound output module with the SDL OSD on Windows - the Windows headers are sensitive to include order. Started adding documentation for menus, to hopefully help people find menus they remember seeing but can't recall how to access. For translators, this makes terminology more consistent. In particular: * "Settings" is preferred over "configuration" in a number of places, as the latter can be construed as referring specifically to settings stored in .cfg files in the cfg_directory folder. Also, references to saving machine configuration could be interpreted as relating to the settings on the "Machine Configuration" menu. * The controls on host input devices (e.g. keys, buttons, joystick axes) are referred to as "controls", while emulated inputs are referred to as "inputs". * The menus for assigning host controls to emulated inputs are called "input assignments" menus to distinguish them from other input settings menus. * Combinations of controls that can be assigned to emulated inputs are referred to as "combinations" rather than "sequences". * The potentially confusing term "ROM set" has been removed altogether. Use "short name" to refer to a device or system's identifier. * "System" is used in almost places to refer to a complete, runnable system rather than "Machine". * "Driver" is now only used to refer to source files where systems or devices are defined - it is no longer used to refer to individual systems. * A few more menus have message context for the messages. This makes it a bit easier to guess where the messages are used. It also means you can use different translations in different places if necessary (e.g. if the same English text should be translated differently as an item in one menu and as a heading in another).
* docs: Fixed a copy/paste typo in the Technical Specifications. (#9452) 0kmg2022-03-221-1/+1
|
* Fixed some debugger memory view annoyances and cleaned up Lua bindings. Vas Crabb2022-03-161-0/+12
| | | | | | | | | | | | Made the debugger memory view not depend on isprint which is affected by the global locale. Assume the OSD will display as ISO-8869-1 and replace problematic printable characters. Started changing Lua function bindings to use set_function to avoid potential issues related to ThePhD/sol2#608, and worked out what was causing problems with symbol table read_memory/write_memory. (They aren't really essential - you can do the same thing with the address space object itself, but they're easier to parameterise.)
* New working machines hap2022-03-051-2/+2
| | | | | -------------------- TC7: Air Traffic Control [hap, Sean Riddle]
* emu/devcb.h: Cleaned up a little using C++17 type traits helpers. Vas Crabb2022-02-281-3/+3
| | | | | Also made Lua I/O port field sensitivity nil for digital fields and put in some more const.
* Lua engine: Make setting analog I/O port field values user-friendly. (#9322) feos2022-02-281-3/+10
| | | | | Exposed minimum/maximum values for analog fields. together with defvalue, they can be used to check range of values and neutral position. Previously you had to send a normalised value between -65535 and 65535 which would be scaled depending on machine specifics. You could read the scaled value from the port, but you couldn't send scaled values in. This allows scripts to set scaled values as seen by the machine.
* rendlay: remove led8seg_gts1 hap2022-02-261-8/+0
|
* remove vestiges of artwork dotmatrix element hap2022-02-261-15/+0
|
* Revert "rendlay: add optional alpha attribute to digit elements" hap2022-02-261-19/+25
| | | | This reverts commit d196d072ff54277a7c3ad0c5048f8fdc6b7e18c8.
* docs: Fixed a couple errors in the Technical Specifications. (#9340) 0kmg2022-02-262-2/+2
| | | These seemed like copy paste errors in their contexts.
* rendlay: add optional alpha attribute to digit elements hap2022-02-251-25/+19
|
* Addressed some Lua scripting pitfalls. (#9294) Vas Crabb2022-02-121-65/+72
| | | | | | | | | | | | | | | | | | | | | | | | | Addressed pure virtual function call crash on end of emulation session if you haven't explicitly removed all address space taps, memory corruption on end of emulation session if you haven't explicitly removed all address space change notifiers, and symbol being garbage-collected out from under you while you have parsed expressions or other symbol tables that depend on them. Removed the copy constructor for parsed expressions as the underlying C++ copy constructor appears to be broken, and simplified symbol table constructors. Also made symbol table add methods return the new entry to avoid the need for an extra lookup. Fixed breakpoint/watchpoint objects being inappropriately copied into the tables returned by bplist() and wplist(), allowing the enabled property to be modifiable for breakpoint and watchpoint objects in Lua. Fixed drivers and devices causing a new memory pass-through handler to be allocated on each soft reset, and fixed multiple instances of taps being installed in the event the machine is reset before the tap is removed. Added classes for managing broadcast subscriptions, and adapted address spaces to use this for change notifications.
* frontend: Exposed memory pass-through handlers (address space taps) to Lua. Vas Crabb2022-02-101-2/+108
|
* Clean up various loose ends: Vas Crabb2022-02-031-16/+252
| | | | | | | | | | | | | | | | | | | | | frontend: Exposed debug symbol tables and parsed expressions to Lua (these can be used when the debugger is not active). Also made it simpler to walk input types. imagedev/bitbngr.cpp: Added software list loader support (used by sitcom). sitcom.cpp: Replaced bankdev with a memory view. Also added a bar graph for the timer DAC output, and made the DL1414 displays squarer in the layout like they are in real life. They still don't look right because the internal segment drawing code doen't draw the segments the right width. docs: Fixed broken links and added missing links in command line options index. Also removed documentation for an option that no longer exists and fixed some inconsistent terminology. Separated includes by module in various drivers.
* Fun with flags: Allows handlers to have user-defined flags set on Olivier Galibert2021-11-281-21/+43
| | | | | | 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.
* emu/render.cpp, emu/rendlay.cpp: Added scroll support for all elements. Vas Crabb2021-11-183-19/+178
|
* luareference.rst: Clarify contract of as_hz, as_khz and as_mhz AJR2021-11-031-3/+6
|
* -emu/ioport.cpp: Fixed some default setting handling issues. Vas Crabb2021-11-041-35/+96
| | | | | | | | | | | | | | | | | | | | | | * 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.
* plugins: Moved the timecode recording functionality to a plugin. Vas Crabb2021-11-021-0/+80
|
* docs: Fix an error in the Lua reference that I copy/pasted without noticing. Vas Crabb2021-11-021-2/+2
|