summaryrefslogtreecommitdiffstatshomepage
path: root/docs/source/techspecs
Commit message (Collapse)AuthorAgeFilesLines
* cpu/sharc: Implemented a bit more functionality and fixed bugs: Vas Crabb2026-03-071-1/+3
| | | | | | | | | * Implemented short word sign extension. * Fixed DAG2 (PM) register display in debugger. * Track AF dependencies when analysing instructions. * Log analysed instructions when logging UML code. * Removed misplaced break in cpu/sharc/sharcfe.cpp. * cpu/uml.h: Let C functions take any pointer/reference parameter.
* cpu/sharc: Better align FIX between interpreter and recompiler, pack/unpack ↵ Vas Crabb2026-02-061-2/+2
| | | | recompiler ASTAT for saved states.
* cpu/sharc: Small improvements: Vas Crabb2026-02-041-1/+2
| | | | | | | | | * Implemented bit-accurate RECIPS and RSQRTS in recompiler (fast approximation can be enabled by setting a macro). * Fixed/optimised RECIPS flag calculation for interpreter. * Fixed FIX for negative numbers when MODE1 TRUNC bit it set for interpreter and recompiler (should round towards negative infinity). * Don't regenerate static helpers on cache flush.
* noscreens.lay: no mame lingo in warning msg hap2026-01-201-2/+2
|
* noscreens.lay: make warning msg more generic and brief, and put it in a ↵ hap2026-01-181-2/+2
| | | | collection(toggle)
* -cpu/sharc/sharcdrc.cpp: Fixed bug in shift, obvious optimisations: Vas Crabb2026-01-171-1/+1
| | | | | | | | | | | | | | | | | * Fixed shift with variable count when count is positive (should shift left, was shifting right). * Use recently-introduced UML bit field extract instructions. * Don't follow arithmetic with redundant compare to zero if only zero flag is required. * Let the back-end take care of fetching source from memory or immediate for simple arithmetic. * Assume the back-end knows how to generate conditional CALLH. * Use BIT helper. * Don't assume x86-like magic sequence breaking on self-XOR. * Corrected a comment that didn't match the code. -docs: Corrected syntax for generating UML conditional CALLH instructions.
* Correct for my inability to type today. Vas Crabb2025-12-241-1/+1
|
* Tidy some stuff, bump version in documentation. Vas Crabb2025-12-241-18/+18
|
* add artfont option for changing default font of .lay files text elements hap2025-12-231-18/+19
|
* rendlay.cpp: Improve accuracy and performance calculating text aspect ratio, ↵ Christian Brunschen2025-11-301-3/+4
| | | | | | | | | | | | | (#14550) Also adds another text alignment option to stretch the text to fill its bounds horizontally. The current code calculating the aspect ratio for text involves looping, calculating the width of text for a variety of decreasing aspect ratios until the text's width is less than the available bounds. However, this string width calculation performs the same loop over the text each time, finally multiplying by the candidate aspect ratio. That text width calculation thus really only needs to be done once. Further, instead of trying different aspect ratios, the ratio can simply be calculated directly by dividing the width of the bounds by the string's width. This also calculates a more accurate aspect ratio, rather than always resulting in an aspect ratio of (0.95)^n. For example, when trying to fit a 101-pixel wide text into a 100-pixel wide space, the current code would result in an aspect ratio of 0.95, making the text 96 pixels wide, leaving 4 pixels unused; the new code will instead calculate the aspect ratio as 100/101 == 0.9900990099... , making the text use the full 100 available pixels. This in turn allows us to easily calculate the ratio also if we want to not just schrink but also stretch the text to fill the available space, so we add that as another text alignment option, number 3 (three). This PR also demonstrates this in the VFX family of layouts, where on the default Full view, the text "MUSIC PRODUCTION SYNTHESIZER" ("DYNAMIC COMPONENT SYNTHESIZER" on the VFX), the logo-like text "ensoniq", and the keyboard-specific markers "VFX", "VFX-SD", "SD-1" and "3 2 V O I C E" can now be made to fill their available space horizontally as they should, making it all look that much more like the real thing.
* cpu/uml.cpp: Added UML bit field extract instructions. (#14467) Vas Crabb2025-11-061-4/+92
| | | | | | cpu/drcbex64.cpp: Also added LZCNT implementation using x86 LZCNT instruction and optimised the BSR-based implementation. cpu/e132xs: Use bit field extract instructions.
* Reompiler improvements: Vas Crabb2025-10-041-0/+124
| | | | | | | | | | * cpu/drcbex64.cpp: Optimised GETFLGS: LEA to avoid the need to save/restore flags for more flag combinations, choose registers more wisely to avoid unnecessary copies and reduce REX prefixes, use more efficient strategy to save and restore flags. * cpu/drcbearm64.cpp: Save an instruction when calculating carry flag for shifts with immediate count. * docs: Documented the last of the UML instructions.
* -Recompiler improvements: Vas Crabb2025-10-031-3/+241
| | | | | | | | | | | | | | | | * cpu/drcbex64.cpp: Simplified and ptimised flag calculations for rotate instructions. * cpu/drcbex64.cpp, cpu/drcbex86.cpp: Mask flags when setting via SETFLGS or RESTORE to avoid possible buffer overrun, slightly optimised SETFLGS with an immediate operand. * cpu/drcbex64.cpp, cpu/drcbex86.cpp: Optimised FCMP when only the unordered flags is required. * drcbearm64.cpp, drcbec.cpp: Fixed default floating point rounding mode not applying after RESTORE. * drcbearm64.cpp: Optimised generated code for SETFLGS a little. * docs: Documented a few more UML instructions. -sound/l7a1045_l6028_dsp_a.cpp: More plausible loop point calculation.
* Recompiler improvements: Vas Crabb2025-10-021-9/+108
| | | | | | | | | | | * cpu/uml.cpp: Marked BREAK as clobbering all flags, and marked LOAD, LOADS, STORE, SET, FLOAD and FSTORE as not modifying flags. CPUs already depend on SET not modifying flags. * cpu/drcbex64.cpp, cpu/drcbex86.cpp: Clear the zero and carry flags for unordered floating point comparisons for consistency with the documentation and the other back-ends. * cpu/drcbex64.cpp: Slightly optimised flag calculation for some shifts and rotates.
* -Recompiler improvements: Vas Crabb2025-09-301-0/+253
| | | | | | | | | | | | | * cpu/drcbearm64.cpp: Use bfxil to save an instruction for smae cases of CARRY and ROLINS. * cpu/drcbec.cpp: Fixed code for ROLC that played fast and loose with integer promotion, producing incorrect results for some compilers/targets. * cpu/uml.cpp: Truncate immediate operands for CARRY. * docs: Documented a few more UML instructions. -igs/igs_m027xa.cpp: Got rid of some stuff carried over from igs_m027.cpp that no games on this platform seem to use.
* -cpu/drcbearm64.cpp: Improved code generation a bit: Vas Crabb2025-09-171-0/+144
| | | | | | | | | | | | | | | * Avoid unnecessary operand loads for add/subtract operations where both sources are identical. * Improved code generation for rotate through carry with immediate shift count and/or immediate zero source. -cpu/uml.cpp: Fixed potential assertion failure when a degenerate rotate through carry is converted to a move. -dynax/ddenlovr.cpp: Fixed DIP switch labels and added locations for Mahjong Dai Touyouken and Return of Sel Jan 2. -docs: Documented DRC UML rotate through carry instructions.
* cpu/uml.cpp: Added some simplification rules for multiply and divide. Vas Crabb2025-09-111-0/+248
| | | | | | | | | * cpu/drcbex64.cpp: Slightly optimised flag calculation for some variants of the multiply instructions. * docs: Documented the DRC UML integer multiplication and division instructions. * cpu/drcbearm64.cpp: Added NEON vector register assignments to the header comment.
* docs: fix assorted typos (#14152) Roman Donchenko2025-09-099-14/+14
|
* -bus/isa/ubpnic.cpp: Added side effect checks. Vas Crabb2025-09-091-0/+54
| | | | | | | | | -cpu/uml.cpp: Added a simplification rule for pathological cases of SEXT. -docs: Documented the DRC UML SEXT instruction. -Tidied some random stuff.
* -cpu/drcbec.cpp: Improved behaviour for float-to-int conversion. Vas Crabb2025-09-081-9/+343
| | | | -docs: Documented several DRC UML shift/rotate instructions.
* cpu/drcbearm64.cpp: Implemented float-to-int conversion using rounding mode. Vas Crabb2025-09-061-2/+2
| | | | | Also optimised code generation for UML ROL (rotate left) and slightly optimised carry flag calculation for left shift (save one instruction).
* docs: Documented more DRC UML floating point instructions. Vas Crabb2025-09-061-173/+408
| | | | | | | * cpu/uml.cpp: Added simplification rules for FFRINT and FFRFLT. * cup/drcumlsh.h: Use "src" rather than "src1" if there's only one source operand. * cpu/drcbearm64.cpp: Added a fixme comment.
* -docs: Documented some UML floating point arithmetic instructions. Vas Crabb2025-09-051-8/+454
| | | | | | | * Also replaced mathematical symbols for Boolean algebra with less desirable C operators as they were upsetting pdflatex. -cpu/uml.cpp: Got rid of a redundant assignment.
* Various small improvements: Vas Crabb2025-09-051-352/+961
| | | | | | | | | | | | | | | | | | | | misc/crystal.cpp: Added lamp outputs used by Office Yeoin Cheonha and Urachacha Mudaeri, and fixed button order/names for Urachacha Mudaeri. cpu/uml.cpp: Added a couple of simplification rules. ADDC's inputs are commutative, and TEST with an immediate zero operand effectively ignores the other operand. namco/namcos23.cpp: Treat spinny things as a dial rather than half a mouse. cpu/arm7: Removed the recompiler that had never been completed. cpu/drcumlsh.h: Removed helpers for generating the unimplemented JMPH instrcution. Trying to use it would cause a compile error. docs: Documented the most common DRC UML integer arithmetic and logical instructions.
* emu/rendlay.cpp: Make hit test priority match visual order (GitHub #14113). Vas Crabb2025-09-041-10/+4
| | | | | | | Also made order of parsing view element more logical (makes interation with parameter elements less confusing). Some layouts have been updated, others still need work.
* Aloow seperate display and configuration names for sound nodes Olivier Galibert2025-05-291-2/+4
|
* misc: small spelling correction hap2025-05-292-3/+3
|
* speaker: allow positioning unknown and don't map Olivier Galibert2025-05-251-0/+13
| | | | audiomix: fix mistake on microphone channel mapping
* sound: Add a compressor. May need some tuning Olivier Galibert2025-05-101-0/+1
|
* sound: correct sample timings Olivier Galibert2025-05-051-2/+34
|
* sound docs: small corrections after doing a quick read hap2025-04-284-36/+50
|
* New sound infrastructure. Olivier Galibert2025-04-274-0/+770
| | | | | | | | | | | | | | | | | Should be added soon: - mute - speaker/microphone resampling To be added a little later: - compression - reverb Needs to be added by someone else: - coreaudio - direct - portaudio - xaudio2 - js
* More recompiler fixes: Vas Crabb2025-04-121-0/+82
| | | | | | | | | | | * cpu/drcbec.cpp: Interpret index operand for load/store instructions as a signed value for consistency with other back-ends. * cpu/drcbec.cpp: Honour alignment rules when packing immediate values. * cpu/drcbex64.cpp: Don't special-case SEXT with an immediate source - the simplifier takes care of this. * cpu/drcbex86.cpp: Be explicit about preserving flags in load/store instructions. * docs: Added a couple more UML data movement instructions.
* Started moving UML instruction reference to main documentation, fixed more ↵ Vas Crabb2025-04-122-0/+1501
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | recompiler issues: * cpu/drcbearm64.cpp Interpret index operand for load and store instructions as a signed 32-bit value for consistency with x86-64. Moved code to interpret load and scale the index for integer load/store to a helper function to make it easier to update if it needs changes or fixes. * cpu/drcbearm64.cpp: Use and/orr to set carry flag directly rahter than using an intermediate register when both operands of a CARRY instruction are immediates. * cpu/drcbearm64.cpp: Fixed incorrect operand type assertion for FREAD. * cpu/drcbearm64.cpp: Use less verbose asmjit helper functions for shift operations and addressing modes. * cpu/drcbex64.cpp: Interpret index operand for floating point load/store as a signed 32-bit value for consistency with integer load/store. * cpu/drcbex64.cpp: Guard against any possibility of load and store instructions altering the flags. * cpu/drcbex64.cpp: Reduced copy/paste in floating point load/store instructions. * cpu/drcbex64.cpp: Cleaned up some casts between integer types with differing size and signedness. * docs: Added reference for UML flow control, data movement and emulated memory access instructions. * cpu/uml.cpp: Truncate immediates to size for a few more instructions. * cpu/uml.cpp: Added SPACE_OPCODES since it's a well-known address space now. * cpu/uml.cpp: Removed SCALE_DEFAULT. It's unimplemented by back-ends and unused by front-ends. * cpu/uml.h, cpu/drcumlsh.h: Less confusing names for parameters to read and write instruction generators. * cpu/drcbex86.cpp: Templated 64-bit multiplication helpers on the zero/sign flag source, cleaned up casting pointers to integers.
* 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.