summaryrefslogtreecommitdiffstatshomepage
path: root/src/frontend (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Make MCFG_DEVICE_ADD and callable device types more flexible: Vas Crabb2018-05-045-12/+12
| | | | | | | | | | | | | | | | | | | | | * Allows defaulted clocks (see subtle example with vboy) * Allows additional constructors (see RS232 port in tranz330) * Allows use of device finder in place of tag in MCFG_DEVICE_ADD * Requires out-of-line destructor for devices using incomplete types * Requires XTAL or explicit u32 for clocks for devices with private types Devices must still define the standard constructor. When writing additional constructors, be aware that the constructor runs before device_add_mconfig in the context of the existing device, not the new device. See osborne1, zorba, tranz330, and vboy for examples of this in use. Compilation is a bit slower, but this is temporary while refactoring is in progress. Eliminated the need for MCFG_SOUND_ROUTE_EX. Removed macros from slot option configuration - they just obfuscated code and slowed it down with needless dynamic casts, but didn't actually simplify it.
* plugins/cheat: translate debugger expressions by space index as the debugger ↵ cracyc2018-05-022-2/+2
| | | | | | does (nw) pc9801: use correct video clock, fixes policenauts video speed (nw)
* well that was dumb (nw) Vas Crabb2018-04-301-2/+2
|
* Make devopt menu localisable. Vas Crabb2018-04-284-91/+97
| | | | Make machine_config aware of device being configured so owner doesn't need to be passed everywhere.
* only show RAM options that can actually be controlled from the command line ↵ Vas Crabb2018-04-031-16/+21
| | | | - the others are practically useless (nw)
* luaegine: save a ref to waiting coroutine to prevent it from being gc'd (nw) cracyc2018-03-271-2/+9
|
* Reshuffle some stuff: Vas Crabb2018-03-281-7/+4
| | | | | | * Move around the debugger hooks to get a small but measurable performance increase * Remove emucore from external tools * Improve performance of DSP16 interpreter a little by generating six variants of execution loop
* minimaws: expose RAM size Vas Crabb2018-03-271-2/+2
|
* Always show default RAM size in XML output Vas Crabb2018-03-261-6/+17
|
* Remove all uses of first_screen() from core files, nw Ryan Holtz2018-03-113-7/+16
|
* luaengine: use screen_device_iterator rather than first_screen (nw) cracyc2018-03-031-4/+3
|
* fix end()/cend() on output_finder (nw) Vas Crabb2018-03-041-1/+1
|
* start getting brutal on output.h (nw) Vas Crabb2018-03-021-1/+1
|
* support multiple patterns and devices in -listfull verb Vas Crabb2018-02-241-10/+68
|
* plugins/cheatfind: fix (nw) cracyc2018-01-291-2/+3
|
* Etc...etc...etc.. (nw) Olivier Galibert2018-01-282-12/+6
|
* Work around glibstdc++ allocator not dealing with T & being the same thing ↵ Vas Crabb2018-01-261-1/+1
| | | | as T const & because T is already const-qualified. Note that this makes the code less safe because modifying elements of the list can cause the addresses of the data to change. (nw)
* misc fix/cleanup (nw) Vas Crabb2018-01-262-9/+14
|
* Eliminate core_strdup (nw) AJR2018-01-242-1/+3
|
* Convert zippath directory to a C++ interface Vas Crabb2018-01-102-8/+11
|
* fixed MT06816 (alloc-dealloc-mismatch in menu.cpp) (nw) firewave2018-01-071-1/+1
|
* plugins/portname: new wip plugin for loading translations or alt names for ↵ cracyc2017-12-301-0/+21
| | | | input port fields [Carl]
* fmtowns_cd: hand fix rbisland (nw) cracyc2017-12-201-1/+1
| | | | | load_dat.lua: fix crlf issue (nw) selsoft: fix off-by-one crash (nw)
* Revert "Revert "Merge branch 'master' of https://github.com/mamedev/mame"" Firehawke2017-12-135-93/+109
| | | | This reverts commit 54155441e9ba9941e85d80c4834a66376a11e791.
* Revert "Merge branch 'master' of https://github.com/mamedev/mame" Firehawke2017-12-135-109/+93
| | | | | This reverts commit f537428e5a40ba6dde8ca9bf0fe9ae6b1f189ac4, reversing changes made to 0d70d798107d4e4e8fb9f230410aeb1e888d65c5.
* Trigger a fatal error when console was asked but the console plugin not ↵ Sylvain Glaize2017-12-141-1/+8
| | | | | | | | | | | | found. (#2914) * Add a message when the console plugin is not found, rather than crash. In absence of the console plugin, the option entry was not found in m_plugins, making the set_value() crash when deferencing the result of get_entry(). Instead, an error message is logged telling the plugin is not found. * Trigger a fatal error when console was asked but the console plugin not found.
* Fix build (nw) AJR2017-12-061-0/+1
|
* fix MT06785 Vas Crabb2017-12-072-92/+93
|
* Rewind feature and RAM savestates. vadosnaprimer2017-12-062-0/+7
| | | | | | | | | | | | | | This starts the work requested in #2398. How RAM states work. Implemented using util::vectorstream. Instead of dumping m_save.m_entry_list to file, it writes them as binary to vectorstream. Compression is not used, as it would slow down the process. The header is written as usual, also in binary. When a state is loaded, the savestate data gets binary-read from vectorstream. How rewind works. Rewind is optional, it can be turned off through MAME GUI while not running. Rewind capacity is available there too. Rewind step hotkey is available from the standard hotkey menu. In the debugger you have the "rewind" command ("rw" shortcut) that works the same as the hotkey. Every time you advance a frame (pause step), rewinder captures a RAM savestate of the frame you were at. It does the same when you do step into/over/out in the debugger. Every time it captures a new state (and when you unpause), it marks as invalid all its states that go after the current machine time, because input might change, so they are not relevant anymore. It keeps their buffers allocated though, for future use. When rewinder runs out of allowed amount of savestates it can have, it invalidates the first state in the list and tosses its unique_ptr to the end of the list, then it uses its buffer to capture a new state. When you hit the rewind step key, or use "rewind" command in the debugger, it loads a state that is immediately before the current machine time. Invalid states between valid ones are not allowed to appear, as that breaks rewinder integrity and causes problems. Rewinder keeps its own set of ram states as a vector of unique_ptr's. All rewinder operations and errors get reported using machine().popmessage().
* Fix -listdevices' misplacement of subdevices in some configurations AJR2017-12-011-1/+9
|
* (nw) misc cleanup: start replacing auto_alloc_* with smart pointers, get Vas Crabb2017-12-012-6/+6
| | | | | rid of reference constants in the debugger in favour of capturing the value in the bind/lambda (less ugly casting)
* emumem: API change [O. Galibert] Olivier Galibert2017-11-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * direct_read_data is now a template which takes the address bus shift as a parameter. * address_space::direct<shift>() is now a template method that takes the shift as a parameter and returns a pointer instead of a reference * the address to give to {read|write}_* on address_space or direct_read_data is now the address one wants to access Longer explanation: Up until now, the {read|write}_* methods required the caller to give the byte offset instead of the actual address. That's the same on byte-addressing CPUs, e.g. the ones everyone knows, but it's different on the word/long/quad addressing ones (tms, sharc, etc...) or the bit-addressing one (tms340x0). Changing that required templatizing the direct access interface on the bus addressing granularity, historically called address bus shift. Also, since everybody was taking the address of the reference returned by direct(), and structurally didn't have much choice in the matter, it got changed to return a pointer directly. Longest historical explanation: In a cpu core, the hottest memory access, by far, is the opcode fetching. It's also an access with very good locality (doesn't move much, tends to stay in the same rom/ram zone even when jumping around, tends not to hit handlers), which makes efficient caching worthwhile (as in, 30-50% faster core iirc on something like the 6502, but that was 20 years ago and a number of things changed since then). In fact, opcode fetching was, in the distant past, just an array lookup indexed by pc on an offset pointer, which was updated on branches. It didn't stay that way because more elaborate access is often needed (handlers, banking with instructions crossing a bank...) but it still ends up with a frontend of "if the address is still in the current range read from pointer+address otherwise do the slowpath", e.g. two usually correctly predicted branches plus the read most of the time. Then the >8 bits cpus arrived. That was ok, it just required to do the add to a u8 *, then convert to a u16/u32 * and do the read. At the asm level, it was all identical except for the final read, and read_byte/word/long being separate there was no test (and associated overhead) added in the path. Then the word-addressing CPUs arrived with, iirc, the tms cpus used in atari games. They require, to read from the pointer, to shift the address, either explicitely, or implicitely through indexing a u16 *. There were three possibilities: 1- create a new read_* method for each size and granularity. That amounts to a lot of copy/paste in the end, and functions with identical prototypes so the compiler can't detect you're using the wrong one. 2- put a variable shift in the read path. That was too expensive especially since the most critical cpus are byte-addressing (68000 at the time was the key). Having bit-adressing cpus which means the shift can either be right or left depending on the variable makes things even worse. 3- require the caller to do the shift himself when needed. The last solution was chosen, and starting that day the address was a byte offset and not the real address. Which is, actually, quite surprising when writing a new cpu core or, worse, when using the read/write methods from the driver code. But since then, C++ happened. And, in particular, templates with non-type parameters. Suddendly, solution 1 can be done without the copy/paste and with different types allowing to detect (at runtime, but systematically and at startup) if you got it wrong, while still generating optimal code. So it was time to switch to that solution and makes the address parameter sane again. Especially since it makes mucking in the rest of the memory subsystem code a lot more understandable.
* (nw) File Manager -> Reset : sometimes it was ignored Robbbert2017-11-201-3/+4
|
* plugins/hiscore: add option to hiscore.ini to only_save_at_exit (nw) cracyc2017-11-101-4/+4
|
* viewgfx: fix tilemap live updates regression (nw) hap2017-11-051-1/+2
|
* inputmap.cpp: Avert potential crash when populating DSW menu (nw) AJR2017-10-181-18/+21
|
* MT 06711 Robbbert2017-10-121-11/+7
|
* Expose condition for DIP switches, configuration entries, and adjusters. Vas Crabb2017-10-082-328/+343
| | | | | | | | | | | | This eliminates ambiguities between settings with different conditions and allows a frontend/tool to generate a DIP switch preview. (nw) Reduce number of calls to fprintf - saves overhead of setting up the formatting engine. (nw) Add the previously commented osborne1 chargen ROM for v1.4 BIOS now that we've established that ROM BIOS applies to multiple regions and -listxml reports it correctly.
* Merge pull request #2696 from BraiNKilleRGR/master ajrhacker2017-10-061-8/+8
|\ | | | | Small fixes to general info panel on internal UI
| * Small fixes to general info panel BraiNKilleRGR2017-10-041-8/+8
| |
* | Actually make sure OSD options are included when saving through UI AJR2017-10-061-1/+4
| |
* | Fixed an options overhaul regression (#2530) npwoods2017-10-062-1/+1
|/ | | | | | | | | | | | This crash (discovered by Wizz) had the following symptoms: 1. Start MAME 2. Choose "Configure Machine" 3. Choose "Video Options" CRASH This was the result of the options editor not having a fully formed list of options where it was expecting one. The fix is to change the declaration of emu_options to one that have full OSD options (it is possible that SDLMAME needs something slightly different) I created a osd_setup_osd_specific_emu_options(emu_options &) function that given an emu_options, will slap on system specific options. I see this as only marginally less gross, and I have zero opinion on whether this should be changed to return an emu_options (rather than have a reference parameter), be a static method on emu_options, or what have you.
* Xcode 9 compile fix. (nw) Curt Coder2017-10-031-1/+1
|
* (nw) Improve localisation: Vas Crabb2017-10-032-28/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Change makefile rules to treat mame.pot as a target so rules can depend on it * Put mame.pot inside the build directory so it will get cleaned * Couldn't get xgettext to scrape lua and C++ in the same command and still remove stale strings * Use larger strings and format specifiers to fix some localisation issues - Issue with "None" lacking context in Russian and Turkish translations - Issue with "Not implemented" changing depending on the noun in Serbian - Issues with lua plugins not allowing for languages with different grammar/punctuation Strings that need to be translated after this change - most of these are existing text that's been made into larger chunks or reworded slightly: "Mechanical Machine\tYes\n" "Mechanical Machine\tNo\n" "Requires Artwork\tYes\n" "Requires Artwork\tNo\n" "Requires Clickable Artwork\tYes\n" "Requires Clickable Artwork\tNo\n" "Support Cocktail\tYes\n" "Support Cocktail\tNo\n" "Driver is BIOS\tYes\n" "Driver is BIOS\tNo\n" "Support Save\tYes\n" "Support Save\tNo\n" "Screen Orientation\tVertical\n" "Screen Orientation\tHorizontal\n" "Requires CHD\tYes\n" "Requires CHD\tNo\n" "ROM Audit Result\tOK\n" "ROM Audit Result\tBAD\n" "Samples Audit Result\tNone Needed\n" "Samples Audit Result\tOK\n" "Samples Audit Result\tBAD\n" "ROM Audit Disabled\t\n" "Samples Audit Disabled\t\n" "Activated: %s = %s" "Activated: %s" "Enabled: %s" "Disabled: %s" "%s added" "Default name is %s" "Cheat written to %s and added to cheat.simple" "Unable to write file\n" "Ensure that cheatpath folder exists"
* Generate layouts for systems with three or more screens Vas Crabb2017-09-291-2/+2
|
* add lua translation to makefile and update translations cracyc2017-09-292-17/+0
|
* remove deprecated attributes from DTD as well (nw) Vas Crabb2017-09-251-4/+0
|
* fix for clang 5 unused lambda capture errors (nw) smf-2017-09-243-7/+7
|
* remove deprecated attributes from -listxml output (nw) Vas Crabb2017-09-241-17/+0
|
* Start adding stuff for iterating ROM entries in a more C++ way without ↵ Vas Crabb2017-09-227-89/+75
| | | | needing to allocate everywhere, improve performance of -listxml by another 10% or so