* fixed target texture dimension when -intoverscan is used (this fixes the appereance of scanline and shadow mask)
* added target_scale and screen_count uniforms
* rounded corners now remain aligned with screen bounds when -intoverscan is used (single screen only)
* MACHINE_NODEVICE_MICROPHONE
For unemulated microphone;
* MACHINE_NODEVICE_CAMERA
For unemulated camera;
* MACHINE_NODEVICE_PRINTER
For unemulated printer
* MACHINE_NODEVICE_LAN
For unemulated linking multi-cabinet capabilities;
* MACHINE_NODEVICE_WAN
For unemulated networking capabilities;
Restructured MACHINE_FLAGS into FATAL / WARNING / BTANB main categories, in order to make them easier to expose.
List of ToDo:
* MACHINE_IS_SKELETON / MACHINE_IS_SKELETON_MECHANICAL needs to be sorted or nuked, your call;
* Verify outputted text for the new flags.
* Define if BTANB type flags should have yellow warning or not.
* Add examples (will do in next commit).
This change adds id() property to input_device, which represents the
unique device id. This allows the osd layer when creating a device to
pass a friendly display name along with a unique identifier.
Currently the device id is only used to map a physical controller device
to controller id, but can be used more generally in the future. For raw
input devices, we use the full raw input name as the device id. For all
other devices, we fall back to device name as the device id. The
"uniqueness" of the device id is not currently enforced in code.
This change adds support for configuring device to conrtoller id. This
allows for stable controller ids even if USB devices are plugged /
unplugged, system is rebooted, etc.
See documentation for additional context.
This addresses MT bug #6372. The prior issue is that creating serial and/or printer output relied on how image_load() would create images that were not there. This behavior was not universally desirable (the consensus was that it was wrong for disk images, up in the air for cassettes etc). This change makes it possible for devices to control this behavior.
Currently I have it associated with image_type(); this might not be the ideal fix.
Caveats:
1. Because of how this trick works, it is no longer possible to declare an option guide as static, so I had to make a bunch of changes
2. I'm going to want the hardcore C++ guys (i.e. - Vas) to review this with a fine toothed comb
- Mouse over GFX tiles to reveal pixel values
- Mouse over tilemap to reveal tile codes and colors
- UI tilemap scrolling controls are now orientation-relative
- Make mouse visible everywhere in UI graphics viewer by treating it like a menu
- Add all necessary getters to tilemap_t and a few more (nw)
- Add comment about role of decoder in tilemap creation (nw)
* Make iterators actually meet requirements of ForwardIterator (and by consequence, ForwardIterator, Iterator and EqualityComparable)
* Don't use function statics if they can be avoided - it isn't thread-safe
* Remove leftover crud from when dynamic_buffer and friends were templates in lib/util
It's still dangerous that the const behaviour of iterators doesn't match STL.
Also, simple_list members with similar functionality to STL container members should be renamed.
- Correct address space number for audiocpu_map in barni.cpp
- Add missing_dependencies check to airraid_dev (fixes segfault in tilemap viewer; yes, I know these tiles are 100% garbage)
- Add assert to device_gfx_interface::palette() to help catch dependency mistakes like the above
- Add MACHINE_IMPERFECT_SOUND to cshootert (music desyncs a lot)
The main point of this change is to C++-ify option_guide. It was changed from a struct array to a class, namespaced etc, with the ultimate hope of incorporating an in-emulation image creation UI.
Imgtool got hit with a number of changes; I'll probably have to bring that off of the backburner and touch that up too
- On the UI graphics viewer's palette screen, moving the mouse over a color rectangle will show the index of the entry and its RGB values in hexadecimal.
- For indirect pens, the index of the corresponding color will also be shown.
- For colors in normal RAM-based palettes, the raw (i.e. undecoded) value stored in memory will also be shown. This does not currently work with most buffered palettes (though the Seibu SPI driver has been updated for this purpose), and is totally incompatible with PROM-based or RAMDAC-based palettes.
(nw) The changes made to the core while implementing this feature may look more substantial than they really are. A whole batch of read methods have been made const, and palette_device now has a generic read_entry function that is used both internally and externally.
* Require dummy tag to be specified explicitly, magical defaults are unhelpful here as the more common case it to search for a real object
* Make the search methods private in concrete classes where possible as users should rely on the resolution process for these things
Still can't hide the memory bank find method since atari400.cpp subverts the resolution process.
Can't get rid of set_target on shared_ptr_finder as it's abused all over the place.
It sounds like whether it is up in the air whether softlist file types should be derived from file extensions. Fair enough. This patch alters the earlier proposal so this at the very least becomes opt in behavior so that an ugly hack does not have to be replicated in client code in a potentially inconsistent and buggy fashion.
* Eliminate a lot of boilerplate code from devfind.h
* Keep instantiation of templates in one place to improve build time
* Remove some dangerous accessors
-Wno-missing-braces is unfortunately now necessary to avoid errors on almost every single use of the std::array initializer in devfind.h. (Apparently C++14 does make double braces optional for std::array initializers, but clang and GCC's -Wmissing-braces never took that into proper account, which is why GCC may still have it disabled by default.)
Several other Clang-specific warnings have been undisabled; some might perhaps need to be locally reenabled if legacy 3rdparty code or sundry OSD includes happen to disagree with them. The only warning to require any code changes was -Wabsolute-value, which seems to have caught a minor render bug (and nothing more).
This seems to have been broken a long time. My guess is that when the ability to disable loop detection was added, the argument count was not changed to continue allowing the existing command argument.
- "identifier" for a potentially fully qualified way to reference a software item (e.g. - apple2gs:3stooges:flop1)
- "list_name" for the name of a list (e.g. - apple2gs or a800_flop)
- "software_name" for the name of a software item (e.g. - 3stooges)
- "part_name" for the name of a part (e.g. - flop1)
I'm somewhat surprised that this has not bit us until now. The implication of how it used to work is that device_image_interface::load() could actually create images; it is hard to eliminate the possibility that something might be incorrectly relying on this behavior. I've determined that this isn't the case for imgcntrl.cpp and floppycntrl.cpp
Turbosub had a ROM_COPY declaration with an expression ('ROM_COPY( "main_code", 0x18000 + 0x2000,...) and this simply did not work with the new model. This required changing ROM_* declarations to more resemble how they used to be and to perform the conversion on load.
Take note that I eliminated make_readonly(); here is why I think the calls were unnecessary:
1. All image loads through softlists are done through common_process_file(), and thus going to be readonly anyways
2. The cassette.cpp call to make_readonly() seems to be a residual hack, if a failure occurs the image will be unloaded anyways
- Create class ui::machine_info for holding calculated machine info and generating descriptive strings for the UI. This absorbs a number of unimportant core functions that existed only for the UI's convenience.
- Alter a bunch of address maps so all validity checks pass. These includes global address masks in Hexaa and the Newbrain FDC (regression testing should be done here).
- Remove the Lisa wraparound read/write handlers.
- In machines that store their settings and/or bookkeeping logs in some form of non-volatile memory, "Memory Reset" will reset them to some system-provided default.
- This replaces all existing inputs named "Memory Reset" and a few simply named "Reset" which are known to do this rather than reboot the system (a confusion to be avoided, though many systems will only acknowledge this input at boot time); others should be checked.
- The default key binding (F1) for this new input type is chosen partly to avoid conflicts with those used by gambling/mahjong games which are currently the only systems to use this, though broader use is envisioned.
to unpack tiny_rom_entry structures at runtime.
WARNING - I've done preliminary testing on a tiny build (pacman works), but nothing more. I know for a fact that a full compile fails
- Eliminate read_safe as a global function and make it a method of optional_ioport (and required_ioport, for which it makes less sense).
- New constructor for optional_ioport_array and required_ioport_array using std::initializer_list to specify tag list
- Remove pointer/reference conversion operators for required_ioport and optional_ioport. Explicit getters like found() and target() are now required when dereferencing isn't wanted. Many drivers have been changed to use required_ioport_array and optional_ioport_array to make this cleaner.
- Update numerous drivers that were using read_safe to use I/O port finders generally. Port names have been kept the same as far as possible to avoid breaking saves.(Some of the optional finders should probably be required.)
- Give edfbl and monkelf their own memory maps so hacky input reading routines can be removed.
- Clean up some legacy static handlers in amiga.cpp and cubo.cpp.
I'm still not 100% satisfied with this patch. While I got rid of the weird path when hook_proc() was called for a software list item,
I still don't like the whole m_init_phase infrastructure in devices, which seems to be an arbitrary piece of state. Baby steps...
This is a redo of the split first submitted in #137, with the following differences:
* The newly refactored rom_entry data structure is used
* I've kept the refactored softlist code in src/emu, in order to defer the mechanical process of moving it
* I've kept includes of softlist[_dev].h out of diimage.h, so that changes to either do not trigger an emu.h recompilation
* Obviously, this goes against the latest master
The issue is that I expected any softlist items passed to devices to be fully qualified (e.g. - apple2e:flop1:agentusa) when in reality, they might not be. Therefore, I changed the regex that identifies softlist items passed to devices from:
\\w+\\:\\w+\\:\\w+
to:
\\w+(\\:\\w+\\:\\w+)?
In the interests of removing burdens from client code, I also changed the following:
- filetype() will always return the file extension in lower case
- device_image_interface::filetype() will return the correct extension for files loaded as a part of softlists
- The code for extracting a file extension is now encapsulated in core_filename_extract_extension()
Client code has been updated