| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
| |
As a consequence of recent changes, we were not properly blocking the emulation from starting when a must_be_loaded() image had an unspecified image.
|
| |
|
|
|
|
|
|
|
|
| |
This should address outstanding concerns with PR#2231. I'm trying to turn emu_options into a self contained structure that encapsulates behaviors related to options, including the gymnastics pertaining to image/slot loading and interactions with get_default_card_software() and "just works".
When the MAME 0.186 development cycle starts up, I hope to take this further. I want to make core_options::entry an abstract base class so that the entries associated with image options and slot options can derive from it. This will eliminate the current need for emu_options to directly expose maps for image and slot options.
For now, I'm in stabilization mode, and I hope to get things working for a stable 0.185 release.
|
|
|
|
|
|
|
| |
Robbbert) (#2231)
This fix really doesn't go far enough. I added hooks so that options specified at the command line can also be responded to when parsed from INI files, but in the long run much of the logic that is currently in mame_options should go into emu_options so that when an option is specified, all of the wacko logic around slot/image specification "just works" because it is encapsulated within emu_options.
We have a release 11 days away; I want to be in stabilization mode.
|
|
|
|
|
|
|
|
|
|
| |
The goals with this change is to make get_default_card_software() a bit more standalone by making it a const method that does not mutate the state of the device_image_interface. This is done by passing in a small structure that encapsulates the minimum of information that get_default_card_software() needs.
This also eliminates the need for device_image_interface::open_image_file()
I agree with Sarayan that get_default_card_software() is terrible and needs to ultimately go away. This is a small step in that direction.
Lastly, I don't care for the name of get_default_card_software_hook (or get_default_card_software() for that matter). If anybody has better ideas, let me know.
|
|
|
|
|
|
| |
- Create device_palette_interface, which takes over most functionality from palette_device except for the initialization/decoding routines and RAM interface.
- Update screen_device and device_gfx_interface to use a device_palette_interface object rather than a palette_device. This necessitates slight alterations to a few drivers and devices.
- Modify v9938 and v9958 to use the new device_palette_interface rather than a subdevice. This entails breaking a cyclic dependency between device_video_interface and screen_device for this case.
|
|
|
|
|
|
|
|
|
|
| |
Prior to this change, options for images and slots were stored in the emu_options collection. Anything that might restart the emulation (such as slot changes and images that reset on load) had to manipulate the emu_options structure directly. The dynamic nature of images and slots meant that some elaborate conventions for setting up this collection had to be understood by clients.
After this change, emu_options has two new members (image_options and slot_options) that expose image and slot selections via an std::map. Anything that changes images or slots in a fashion that needs to persist across sessions needs to modify these data structures. Additionally, some of the hairly logic (e.g. - get_default_card_software) now records its data here rather than trying to subvert the core_options system.
This is how MT#6531 was fixed; now when diimage.cpp sees an image that resets on load, it just modifies the image_options structure and forces a reset. This allowed some further cleanups to happen within diimage.
This should be considered a very risky change, and scrutiny/feedback is welcome. In particular, there seems to be functionality surrounding device bioses that I'm not 100% sure how it works; the syntax seems to imply that it only works on slot devices.
|
|
|
|
|
|
| |
dupe entries
This was MT#6402
|
|
|
|
|
| |
- Fix a longstanding bug that prevented binding several ORed buttons to any input belonging to a non-root device.
- Fix a visual glitch when assigning inputs to analog sequences.
|
| |
|
|
|
|
| |
lua without needing a third party library (nw)
|
|
|
|
| |
Pernod found a regression introduced in the 0.183 softlist refactoring whereby multi-part softlist items would not distribute to multiple slots. The problem was that the old code was relying on the image slots being loaded into the core. This is not the way the new system works, so I've added a hook into software_list_device::find_mountable_image() that allows the new approach to work.
|
|
|
|
|
|
| |
(nw) This hashes all the files upfront, then does the expensive
driver/software scan only once. It also walks all devices so it can
identify ROMs for slot devices that aren't inserted by default.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
get_default_card_software() (#2122)
Tafoid brought to my attention a recent regression caused by my softlist changes. Specifically, this failed:
mame odyssey2 -cart1 voice -cart2 bees
The reason is that the recent refactoring caused some critical softlist logic to be bypassed. Essentially device_slot_interface::get_default_card_software() provides a technique for devices to inspect softlists and select slot options to be specified. In the case above, the selection of the "voice" software list item in the first cartridge slot requires get_default_card_software() to be called to specify the o2_voice slot device, which in turn adds the second cartridge slot. Skipping this caused '-cart2' to stop being recognized.
This is an attempt to fix the problem. In some ways, this doesn't go far enough - the astute observer will note that mame_options::reevaluate_slot_options() looks a lot like mame_options::update_slot_options(); part of me wants to just rip the latter out. In the long run, device_slot_interface::get_default_card_software() should be reevaluated; having a hook is a good idea but it should be a pure function that doesn't alter state.
|
|
|
|
| |
device data is being refactored
|
| |
|
|
|
|
| |
This undoes a small part of c6ef2746d4958359899d5d4b44e8507aeca343d0. Changing "*" to nullptr here looks like a fundamentally unsound hack, even though the validity checker now uses it as a convenient flag (see the similar change in 3ecdaafea65c7cedb2dffc4bd865611f069ec289).
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
- update_names no longer takes arguments; the device type can be obtained easily, and the custom instance names are now overrides. Devices might not need to explicitly call update_names in the future.
- Fix the frontend crash/assert failure resulting from instance names not being generated properly.
|
|
|
|
| |
sampleof=005 reported on all devices)
|
| |
|
|
|
|
|
|
| |
* MAME now walks all devices when generating -lx output irrespective of whether they're actually instantiated anywhere or not.
* -lx is at least 30% faster than previous implementation.
* Only possible drawback is that filtering drivers no longer filters devices.
|
| |
|
|
|
|
| |
It's still necessary to add slots with no selectable options to the option list, as otherwise the non-selectable options can't be installed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Make device_creator a variable template and get rid of the ampersands
* Remove screen.h and speaker.h from emu.h and add where necessary
* Centralise instantiations of screen and speaker finder templates
* Add/standardise #include guards in many hearers
* Remove many redundant #includes
* Order #includesr to help catch headers that can't be #included alone
(nw) This changes #include order to be prefix, unit header if applicable
then other stuff roughly in order from most dependent to least dependent
library. This helps catch headers that don't #include things that they
use.
|
|
|
|
|
|
|
| |
- Replace comparisons of software_entry() or part_entry() with nullptr with loaded_through_softlist() predicate.
- Eliminate the superfluous m_software_info_ptr member. The software_entry() accessor is still provided, but now rarely used.
- Eliminate two of the three arguments to load_software_part.
- Remove some unnecessary auto-typing in ui/inifile.cpp.
|
|
|
|
| |
Added device_slot_interface::has_selectable_options() to calculate whether a particular slot has selectable options
|
|
|
|
| |
e.g. - 'next -scsibus:1 "" -listdevices'
|
| |
|
| |
|
|\
| |
| |
| |
| |
| |
| | |
when they actually worked (#2081)
Conflicts:
src/frontend/mame/clifront.cpp
|
| |
| |
| |
| | |
The reason is that the LUA console, HTTP server and other features relied on the command line arguments being "pre-parsed". Part of the softlist cleanup was to sanitize where command line parsing occurs. This change moves the setup of the LUA console (and other capabilities such as the HTTP server) to the correct place in the new order.
|
| | |
|
|/
|
|
|
|
|
|
| |
when they actually worked
This change also changes around how command line arguments are passed around; specifically I changed argc/argv to be std::vector<std::string>
Note this is not passed around 'const', the reason being that the command line processing will now "eat" the vector
|
|
|
|
|
|
|
|
|
|
| |
* Eliminates the need for emu_options::update_cached_options() by providing a hook for when option values change
* This is a preliminary fix to the issue identified in PR#2065
* More softlist related refactoring:
- We now only parse the command line (with core_options::parse_command_line()) once
- Options that are set up during slot and image setup go through a 'value_specifier' function
- Eliminated the command line postprocessing
|
|
|
|
| |
std::string usage (#2073) (nw)
|
| |
|
|
|
|
| |
This reverts commit 17af0f9c661e0855607703faf66c1e807e888d82.
|
|
|
|
|
|
|
|
| |
* Use size_t for sizes and <algorithm> for algorithms
* Fix up some files that were getting linked into multiple libs
* Add missing virtual method to sh2 peripheral class
* Put shortname in driver struct for locality
* Use shared pointers in config LRU cache for safety
|
|
|
|
|
|
| |
- imgcntrl: don't assume first software part, find part with correct interface
- swlist: check all software parts for matching interface when populating list of software lists
- softlist_dev: check all software parts when finding approx matches
|
|
|
|
|
|
|
|
|
|
|
|
| |
Per Vas' request. If the compile fails for you (i'm thinking osx and
windows native debuggers here in particular), add '#include "emu.h"'
as first include of the cpp files that fail.
Due to our use of precompilation and forced inclusion, emu.h must be
included as the very first non-comment thing we do if we want to be
sure msvc compiles are identical to gcc/clang ones. Doing it directly
instead of through an include increases the correctness probability by
a magnitude.
|
|
|
| |
Made format changes to the output produced by many LIST commands to better deal with maximum limits of certain items. Fixed issue with -LISTROMS output not displaying hapyfsh2 rom sizes correctly. [Tafoid]
|
| |
|
|
|
|
| |
'enterprise-grade' C++
|