 Generic changes to the MESS source
====================================
        Edited by AntoPISA
Info from Official MESS whatsnew.txt
====================================
      Right from 0.1 to 0.281
   Latest editing:  Oct 11, 2025


0.281:
======
- .github/workflows/includeguards.yml: Fix pull_request property [Angelo Salese].
- Basic fix for pc_chd support in imgtool (#14148): imgtool: Take ownership of stream in pc_chd_image_open: `imgtool::image::internal_open` passes an rvalue reference to the stream to the `open` function of the image format module. It expects the `open` function to take ownership if it keeps a reference to the stream. If `open` does not do so, the `stream` is going to be destroyed at the end of `internal_open`; `pc_chd_image_open` fails to take ownership, yet it persists a reference to the stream as part of `info->hard_disk`. This causes an use-after-free condition. imgtool: Correct determination of total sectors of a FAT volume: The number of total sectors of a FAT volume is stored either in the 16-bit word at offset 19 or, if that word is zero, in the 32-bit word at offset 32 instead. The 32-bit word is not a high word to build a 48-bit value in conjunction with the 16-bit word at offset 19, but it supersedes it [Michael Karcher].
- Correct markup for file moved from one project to another [Vas Crabb].
- docs: Belatedly updated system requirements, bumped version to 0.281. Also tidied some system descriptions [Vas Crabb].
- docs: Documented several DRC UML shift/rotate instructions [Vas Crabb].
- docs: Documented some UML floating point arithmetic instructions. Also replaced mathematical symbols for Boolean algebra with less desirable C operators as they were upsetting pdflatex [Vas Crabb].
- docs: Documented the DRC UML SEXT instruction [Vas Crabb].
- docs: Documented the most common DRC UML integer arithmetic and logical instructions [Vas Crabb].
- docs: Fix assorted typos (#14152) [Roman Donchenko].
- emu/debug: Extended memory commands for region and space (#13767) [holub].
- emu/rendlay.cpp: Make hit test priority match visual order (GitHub #14113): 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 [Vas Crabb].
- emumem: Avoid splitting handlers on dup-ing, avoiding tons of extra allocations [Olivier Galibert].
- emumem: Optimize a specific but useful case. emumem_mview: Add forgotten range checks [Olivier Galibert].
- flopimg.cpp: add a default implementation for `supports_save` (#14156): Since the default implementation of `save` is a stub that always fails, it makes sense to also add a default implementation of `supports_save` that returns `false`. That way, there's one fewer method that needs to be implemented for read-only image formats; remove the now-redundant implementations in concrete format classes [Roman Donchenko].
- imagedev/floppy.cpp: Allow images loaded from software lists to be write protected (#14094) [ajrhacker].
- imgtool/modules/fat.cpp: Fix build [AJR].
- lib/netlist/build/create_lib_entries.py: Fix missing EoF marker [Angelo Salese].
- misc: Update some internal artwork after prev rendlay commit [hap].
- scripts/build/llvm-objdump-filter.py: Manage objdump processes from Python. Avoids issues with inconsistent shell behaviour [Vas Crabb].
- Split multiple languages/developers into separate info elements in all software lists (#14101) [holub].
- srcclean and cleanup in preparation for MAME 0.281 freeze [Vas Crabb].
- Tidied various things, added side effect checks for some reads [Vas Crabb].
- tiny.lua: Another venture->videogames folder here [hap].
- Update ci.flt and tiny.lst after venture folder rename [hap].
- Various drivers: Removed some unused / unneeded MACHINE_START / MACHINE_RESET/ VIDEO_STARTs [Ivan Vangelista].


0.280:
======
- 3rdparty/bgfx: Fix SPIRV shader builder compilation error with newer standard library that doesn't implicitly include stdint in as many places [Vas Crabb].
- chdman: Request write permission when opening file for verify --fix; allow SHA1 fixes for CHDs otherwise treated as not writeable (#14019) [lucinda lovebuny].
- debug/debugcmd.cpp: Made the code for symlist marginally less dreadful [Vas Crabb].
- debugger/debugwin.cpp: Don't repeatedly get the focussed window in a loop [Vas Crabb].
- mameinfo/messinfo.dat plugins: Support driver sourcefile path [hap].
- palette: Do assert() check before accessing array [hap].
- source org: Move thepit/thepit.cpp to taito/roundup.cpp, thepit/timelimt.cpp to misc/timelimt.cpp, midway/sspeedr.cpp to taito/sspeedr.cpp, venture/suprridr.cpp to taito/suprridr.cpp [hap].
- Updated Japanese translations (#14026) [Fujix].

0.279:
======
- 3rdparty.lua: Fix LZMA PPMD support (#13981) [lucinda lovebuny].
- audiomix: Add full/channel route via menu instead of f/c keys. dd not initialzed message when entering menu too early (eg. pressing tab on the red warning screen). Put devtag in add ful/channel menu entry. Let's move those new full/channel menus up [hap].
- compressor: Correction to input gain calc. Increase max input db so input gain won't distort the signal. Re-add infinite release option, and also infinite ratio. Add a header to advanced settings  [hap].
- debug/win: Requiring every debugger window class to care about the console window's views is bad design.  That's a clear case of unnecessary coupling  [Vas Crabb].
- docs: Explicitly state that installing a read/write tap returns the pass-through handler [Vas Crabb]. Update text about hq resampler. Add note about compressor. Asterisk typo. Add note about audio effect defaults [hap].
- emu/debug/debugcmd.cpp: Have print command insert spaces between numbers [AJR].
- filter: Move notch filter check to UI [hap].
- MinGW/MSYS2 mktime() cannot handle dates before the Unix epoch, so use a precalculated offset between the Unix and MacOS epochs [R. Belmont, Peter Ferrie].
- resampler: Clamp final output to -32768, 32767. Safety check for filter len [hap].
- Resorted mame.lst in a few places and other minor cleanups [David Haywood].
- sound: Fix initial -volume setting [hap]. Fix problem when default devices are missing [Olivier Galibert].
- tiny.lua: Added SN76496 [Ivan Vangelista].
- ui/widgets.cpp: Use a smooter, symmetrical highlight texture (MT09095) [Naoki Saito].
- ui: Finer control over hq resampler settings. Update prev commit (keeping max settings same as before) [hap].
- Windows: Do not drop into debugger when no MAME window has focus (#13902): On Windows, the debugger has a special Windows-specific feature that drops the user into the debugger if the key sequence is pressed. This seems to be present so that the key sequence triggers dropping into the debugger not just from the main window, but also from debugger windows; this has also created an oddity where pressing the debugger key sequence from a MAME window will cause a "User-initiated break" but pressing it from a debugger window will cause "Internal breakpoint" to be displayed; however, while this logic has a check to not apply when to a MAME window, it seems to also activate even if MAME itself is not in focus. This change ensures that a stray debugger sequence in a completely unrelated application won't cause the user to be dropped in the debugger [npwoods].

0.278:
======
- [win] debugger crash: Add fallback to "0" if address evaluation fails (#13686): Memory window address field: If address string evaluation fails, we'd fall back to the last-known-working string. This works great if the failure is due to the user changing the string.  But if the user changes the source, that also can cause failures (different symbol table used for evaluation), and this fallback does not help; the fix is to add a second fallback: Use "0" as the address string when all else fails [dave-br].
- 3rdparty/expat: Updated expat to version 2.7.1 (#13643) [holub].
- 3rdparty: Cherry-pick upstream fixes for clangcl [Patrick Mackinlay].
- Add language translation: Belarusian (#13471) [holub].
- Add resampler configuration saving and documentation [Olivier Galibert].
- Added technical documentation, including detailed notes and an ASCII schematic diagram for gtipokrc daughterboard, and marked the set as machine unemulated protection [Roberto Fresca].
- audio compressor: Make it a little less enthusiastic [Olivier Galibert].
- audio_effect: Add reset_all for resetting all variable settings. Small update to prev commit [hap].
- audio_effect: Add space between value and unit [hap].
- audio_effect: Fix some limit issues [hap].
- audio_effect: Move effect title to header (no need to know effect entry number here) [hap].
- audio_effects/reverb.cpp: Add more missing initialization [AJR].
- audioeffects: Fix conflict between effect and resampler menu entries. LR_ALWAYS flag is not applicable her [hap].
- audioeffects: Gray out hq resampler settings if resampler is not HQ [hap].
- audioeffects: Like with the rest of the UI, press Del to set resampler settings to default [hap].
- audiomix: Add LR_REPEAT flag when cursor is on db [hap].
- audiomix: Fix rounding issue with db adjust [hap].
- audiomix: Update docs after prev commit. More control over db adjustment (like with sliders, hold shift for +/- 0.1, hold ctrl for +/- 10). Use fat triangles instead of arrows for L/R indicators [hap].
- bgfx/chainmanager: Correct a printf parse issue (compiler didn't care) [hap].
- build: Update vs/msbuild settings to reflect current clangcl (#13633) [Patrick Mackinlay].
- Cleaned up some use of COM and COM-like things [Vas Crabb].
- compressor: Add infinite release option (eg. combine with input gain of 12db for some sort of replaygain option) [hap].
- compressor: change channel link range to 0-1. Change most floats to 2-decimals [hap].
- compressor: Remove printf spam [hap].
- compressor: Reorder settings a bit. add separator before the 'expert' settings [hap].
- coreaudio_sound.cpp: Promote to level 2, prep for 3 [R. Belmont].
- coreaudio_sound.cpp: Rebuild the device list when the default devices change, fixes a crash when a new default device is connected. Add a callback for each active device to see if it becomes unavailable. Move default device change check to get_generation so it happens regularly [R. Belmont].
- coreaudio_sound.cpp: Use property listeners to determine configuration changes instead of polling: Device additions are now tracked in addition to removals; changing channel configuration in Audio/MIDI Setup is now tracked [R. Belmont].
- coreaudio_sound: Fix Mac compile [R. Belmont].
- debugcmd: No need to try to convert string_view to const char*, fix possible nullptr access [hap].
- debugger cleanup: Use enums for m_views indices (#13687): For the wininfos that participate as individual panes in the main console window, their viewinfos are referenced via the m_views[] array with hard-coded indices of 0, 1 and 2: Define & use enums for those indices (VIEW_IDX_DISASM, VIEW_IDX_STATE, VIEW_IDX_CONSOLE); change MAX_VIEWS from a hard-coded constant of 4 to the last enum in that list, which changes it to 3 (I don't think it should have been 4 in the first place); wininfos that NEVER appear as panes in the main console window (e.g., logwin_info, pointswin_info, etc.) continue to use m_views[0] [dave-br].
- debugger: symlist usability + symbol table extensibility (#13694). Address issue #6655 (symlist command usability), add a bit of plumbing for future extensibility; symlist with no arguments displays all global *and* :maincpu symbols, with clear header text for each list. At the bottom, prints helper text to make user aware of the cpu form; to allow for adding new kinds of symbols in the future, this adds an enum field to symbol table for its 'type', for prettier printing from symlist. Symlist now traverses symbol table chain completely [dave-br]. 
- device_mixer_interface: Set rate to SAMPLE_RATE_OUTPUT_ADAPTIVE (highest samplerate of device it outputs to) [hap].
- dipalette: add shadow config to savestates, and might as well rename hilight to highlight [hap].
- dislot: Add set_option_device_input_defaults_all [hap].
- docs: A few sound documentation updates [Vas Crabb].
- docs: Fix spacing after prev commit [hap].
- docs: Remove mentions of removed compressor cmdline option [hap].
- docs: Remove unneeded note on -speed setting [hap].
- docs: Updated the list of supported sound modules [Vas Crabb].
- Don't show the audio menus when there are no audio devices [Olivier Galibert].
- effects: Fix reverb decays, disable by default reverb and compressor [Olivier Galibert].
- effects: Recompute filters after loading the configuration [Olivier Galibert].
- emu/audio_effects: Fixed some localisation issues [Vas Crabb].
- emu/sound.cpp: Fixed GCC uninitialised local variable warnings in sound_manager::run_effects() [Vas Crabb].
- emu/sound.cpp: Fixed localisation issues, less temporary objects [Vas Crabb].
- emu/validity.cpp: Fix typo in error message [AJR].
- emu/validity.cpp: Validate device input defaults (#13758). Also do input validation on non-default slot options [AJR].
- equalizer: Change default bands to 100,330,1k,3,3k,10k. check band mask instead of db when building filter [hap].
- equalizer: Change freq to u32, apply same nyquist freq fix as 1e71f7a0d3bd11974993dd16467432c3bcbb9126 [hap].
- equalizer: Finer control over settings [hap].
- file/winfile.cpp: Added note about file handle buffering [Vas Crabb].
- filter, equalizer: Add separators to menu. change default q to sqrt(2)/2. Do limit rounding with roundf instead of manually [hap].
- filter: Allow finer control of frequency with shift+alt [hap].
- filter: Correction to prev commit [hap].
- filter: Don't try to filter above nyquist freq (or slightly below it) [hap].
- filter: Ron't repeat min/max freq values in multiple places [hap].
- isa/sblaster.cpp: Hookup command logs thru logmacro.h [Angelo Salese].
- lofi resampler: Better step precision to avoid crackling [Olivier Galibert].
- luaengine: Add set_speed_factor [hap].
- monitor/monitor_dxgi.cpp: Fixed an object leak [Vas Crabb].
- monitor/monitor_module.h: Got rid of a C string pointer, avoid the need for a static string object [Vas Crabb].
- options: Fix range checker with negative values [hap].
- osd audio interface: Initialize channel positions in header file (prevents channel_position constructor initializing after initializing array of channel_position in sound backends) [hap].
- osd/eigcc.h: Moved helpers that use the __int128 type here, and fixed availability detection for them [Vas Crabb].
- osd/eigccx86.h: Added fast multiply/divide helpers for x86-64 [Vas Crabb].
- osd/eminline.h: Made multiply/divide helper names a bit more consistent with other functions [Vas Crabb].
- osd/interface/audio.h: Added missing header for clang [Vas Crabb].
- osd/interface/audio.h: Implemented movable and swappable patterns (reduces allocation and copying) [Vas Crabb].
- osd/modules/file: define buffer size for openpty() (#13837). There is no defined size for the slave name returned by openpty(); OSes that have a PATH_MAX constant usually use that as limit. Create a custom OPENPTY_PATH_MAX constant specifically for openpty(), even in case PATH_MAX is not available: in that situation, use 8192 as buffer size, which hopefully should be "good enough".
- osd/osdfile.h: Ensure size isn't passed to ::operator delete when destructing directory entries [Vas Crabb].
- osd: Preliminary revised macOS CoreAudio backend: Supports multiple input and output streams to multple devices simultaneously; audio_latency now is a floating-point number of 50 Hz audio frames. 0 is valid now; channel layouts are determined when available (many devices don't support them); external effects support removed; it may return later [R. Belmont].
- osd: Remove redundant checks when setting BASE_TARGETOS/SDLOS_TARGETOS (#13830): The vast majority of the OSes use BASE_TARGETOS=unix and SDLOS_TARGETOS=unix, which are set as default values; the few exceptions (Windows and macOS) already have their own selections; hence drop all the empty if statements for other OSes than Windows and macOS, as actually redundant [Pino Toscano].
- osd: Small cleanup to copy pasted header comment [hap].
- osd_stat allocates additional space following the directory entry to store the name. A regular delete may pass sizeof(entry) to ::operator delete, which won't match the allocated size. This causes a problem if the runtime library checks it (may suppress the warning in MT09137) [Vas Crabb].
- pa_sound: Add api info to device names [hap].
- pa_sound: Add device name to error message [hap].
- pa_sound: Add error messages [hap].
- pa_sound: Lower latency interval steps. Add support for audio latency and samplerate options [hap].
- pa_sound: Popmessage instead of printf if there's a device conflict while fiddling in the audio mixer menu [hap].
- plugins/autofire, plugins/inputmacro: Allow deleting autofire buttons or input macros without needing to use the UI Clear input [Vas Crabb].
- portaudio: Do not mess up on shift-f3 [Olivier Galibert].
- Reenabling the write accessor for the LUA input_class enabled property (#7564). This is used by BletchMAME to toggle mouse capture on and off [npwoods].
- Remove obsolete options (compressor will be in effects, speaker report should go into a lua plugin) [Olivier Galibert].
- Remove obsolete wave (cassette sound) device [hap].
- reverb.cpp: Trying again on Windows [R. Belmont].
- reverb: Detect preset when entering menu [hap].
- reverb: Fix config_load typo. Add more to default_changed [hap].
- reverb: Remove del key on load preset again, it's awkward [hap].
- reverb: srcclean and blind attempt at Windows fix [R. Belmont].
- reverb: Update to prev commit, don't hardcode "Default" in preset string [hap].
- Revert "compressor: Add infinite release option (eg. combine with input gain of 12db for some sort of replaygain option)". This reverts commit 9033932679e00151b4dcb417c67fdd99a395313a [hap].
- Revert "device_mixer_interface: set samplerate to osd rate, like how it was before sound rewrite". This reverts commit 99fc7b2c7f45562a10dea68c754015c29173b537 [hap].
- Revert "sound_module: set default sink node to 0". This reverts commit 0f7b4dc5facc301e9ff6a57dbfa78e941f11a424 [hap].
- Rework a case where the sound defaults are not put in place in correct order (when starting a system with mandatory cart without one) [Olivier Galibert].
- samples: Set stream samplerate to sample samplerate. Fix off by 1 error when interpolating [hap].
- samples: Update notes, fix new regression with start_raw at very low samplerate. Remove unneeded samples_start callback [hap].
- sdl sound: Make system default work, hopefully [Olivier Galibert].
- sound docs: Small corrections after doing a quick read [hap].
- Sound frequencies are estimated from a video of the real game, as schematics do not exist. The clickable artwork colors were taken from the same video. An output is pulsed when you finish a game after scoring enough points to replay, it's purpose is unknown. Better pictures of the PCB are required to confirm the layout [smf].
- sound sliders: Correction to prev commit. Multiply internal value by 10 to allow fine grained slider controls (left/right while holding Shift). Press Del to set to 0db like before (mute is alt+left) [hap].
- sound/[va_eg, va_vca, dac76]: Automatically adapt to the input and output connections (#13868): sound/va_eg.cpp: automatically determine if streaming is enabled. Removed disable_streaming() function, updated drivers that were using it. sound/[va_vca, dac76]: Automatically detecting streaming CV. Removed va_vca::configure_streaming_cv(). dac76: Remove forgoten instance variable. Correct comments about inputs. :configure_streming_iref(). Adapted cps2000 to new sound engine [m1macrophage].
- sound/js_sound.cpp: Hopefully fix Emscripten build; zx81_cass.xml: Fixed an obvious typo. Blind attempt at updating for base class changes [Vas Crabb].
- sound/none.cpp: Don't pretend it can create output streams [Vas Crabb].
- sound/pa_sound.cpp: Fixed a non-const global that should be const [Vas Crabb].
- sound/sdl_sound.cpp: Allow MAME to be built with SDL 2.0.14 or 2.0.15 with limited functionality [Vas Crabb].
- sound/sdl_sound.cpp: Corrected SDL verson detection macro [Vas Crabb].
- sound/sdl_sound.cpp: Don't try to call SDL_GetDefaultAudioInfo for SDL older than 2.24.0 [AJR].
- sound/sound_module.cpp: Moved default implementation stuff out of the header, use algorithm library in place of memcpy [Vas Crabb].
- sound/sound_module.cpp: Recirculate buffers rather than removing them to reduces allocations. Scale the number of samples to skip on overrun according to the packet size. [Vas Crabb].
- sound/wasapi_sound.cpp: Fixed clang ARM error [Vas Crabb].
- sound: Add a compressor. May need some tuning [Olivier Galibert].
- sound: Add sync time to savestates [hap].
- sound: Allow to compile without threads, by defining SOUND_DISABLE_THREADING [Olivier Galibert].
- sound: Avoid anything that could possibly depend on static initialisation order across transaltion units. Allow speaker positio names to be localised [Vas Crabb].
- sound: Better handling of -sound none. Correct handling of streams closed on the osd side [Olivier Galibert].
- sound: Change audio_latency meaning similar to what it was before (20ms steps for portaudio, xaudio2, wasapi), old mame.ini default setting of 2 should work fine [hap].
- sound: Change audio_latency to seconds (float), so people with existing mame.ini won't get broken sound [hap].
- sound: Correct dreadful typo that killed stereo [Olivier Galibert].
- sound: Correct sample timings [Olivier Galibert].
- sound: Disable error.log "Sound reset" message by default [hap].
- sound: Do not interpolate when not changing rate, fixes pbobble2 and gunlock. Fix save states [Olivier Galibert].
- sound: Enhance portaudio support: Sadly, portaudio is limited to the worst case of all OSes audio supports (and ALSA est rather bad) and does not yet handle hotplug. So the result is quite limited; aAlso, the devices when running portaudio over emulated alsa over pulseaudio are quite ugly.  Still works though [Olivier Galibert].
- sound: Fix crash after loadstate with different resampler setting [hap].
- sound: Fix default.cfg load not applying default effects, and rename default.cfg default_audio_effects to audio_effects (same as system.cfg, there's no clash) [hap].
- sound: Fix extremely subtle and rare problem that could happen when changing stream frequency [Olivier Galibert].
- sound: Fix incorrect detection of config loading when the driver file was not yet created. Better decoupling of the effects thread [Olivier Galibert].
- sound: Fix sync issue when starting a stream that was stopped [Olivier Galibert].
- sound: Fix synchronous streams [Olivier Galibert].
- sound: Got rid of dependencies on emu and frontend. We're working to reduce circular dependencies. Adding more is a regression [Vas Crabb].
- sound: Make sure m_samples_to_update is 0 when returning from update() [hap].
- sound: move positions to osd interface add special-casing for LFE add reverb (currently too subtle, need to find out why) [Olivier Galibert].
- sound: No need to save master volume of 0 [hap].
- sound: Only rebuild resamplers when necessary [hap].
- sound: Print verbose message if module doesn't support audio_latency option, docs: small update, remove references to dsound [hap].
- sound: Random fixes [Olivier Galibert].
- sound: Re-add support for -volume option (works same as before sound rewrite) [hap].
- sound: Remove references to portaudio options that were removed. Change audio_latency duration option to milliseconds [hap].
- sound: Removed DirectSound sound module [Vas Crabb].
- sound: Set SOUND_DISABLE_THREADING for Emscripten target [Justin Kerk].
- sound: Simplify prev commit [hap].
- sound: Suppress some warnings [Patrick Mackinlay].
- sound: Tell the osd about the update [Olivier Galibert].
- sound: Update mapping when changing audio mixer configuration (fixes issues in audio mixer menu, like randomly adding new entries when pressing l/r, cursor randomly moving to 1st entry when pressing l/r, and portaudio errors when switching devices) [hap].
- sound: Update prev commit (sound reset msg is not OSD) [hap].
- sound: Update prev commit with different init detection (retry). Update prev commit with different init detection [hap]. Avoid updating at t=0, the environment may not be not initialized enough [Olivier Galibert].
- sound_module: Set default sink node to 0 [hap].
- speaker: Allow positioning unknown and don't map audiomix: fix mistake on microphone channel mapping [Olivier Galibert].
- tatsumi: Minor source reorganization [AJR].
- ui/audio_effect_reverb.cpp: Fix assert in debug build [AJR].
 -ui/confswitch.cpp: Fixed copy/paste error [Vas Crabb].
- ui/confswitch.cpp: Fixed layout issue when DIP switch bank with the most switches has the shortest name, and reduced space between name and switches a bit [Vas Crabb].
- ui/info.cpp: Fixed some non-bug "warnings" going missing [Vas Crabb].
- ui/info.cpp: Root device is special for non-working message [Vas Crabb].
- ui/info.cpp: Treat incorrect ROM content as a severe warning [Vas Crabb].
- ui/selmenu.cpp, ui/imgcntrl.cpp: Use terse messages for bad media. Making these messages longer hasn't reduced support burden. Adding the version will just perpetuate the myth that you need to redownload all your ROMs for every release [Vas Crabb].
- ui/sliders.cpp: Hiding the menu should preserve state. This is a design choice [Vas Crabb].
- ui/ui.cpp: Allow info screens to be dismissed by mouse clicks or touches [Vas Crabb].
- ui: Add mame version info to the 'missing roms' error msg [hap].
- ui: Improve control over audio filter cutoff freq [hap].
- ui: Remove master volume slider if driver has no sound [hap].
- ui: The new menus were unusable with a touchscreen, and not conducive to localisation. It's still not possible to add sound routes with a touchscreen, but at least it's possible to configure routes that exist [Vas Crabb].
- ui: Use ui text/bg color for osd text popups [hap].

0.277:
======
- 3rdparty/bgfx: Updated ImGui to 1.91.9b: This was not straightforward, and we're now ahead of the ImGui version in upstream bgfx; updated the bgfx-specific memory editor widget rather than just partially removing the code; had to add an explicit template instantiation to imgui_widgets.cpp to avoid a link error in the bgfx-specific range slider widget; got the imgconfig.h header a lot closer to the template from upstream ImGui [Vas Crabb].
- 3rdparty/bimg: Re-added hack to work around GitHub CI issues [Vas Crabb].
- 3rdparty/portmidi: Another batch of K&R function declarations that upset clang [Vas Crabb].
- 3rdparty/portmidi: Another place that needs const hit by Linux [Vas Crabb].
- 3rdparty/portmidi: Another undefined macro warning [Vas Crabb].
- 3rdparty/portmidi: Disable another warning to help clang on Windows [Vas Crabb].
- 3rdparty/portmidi: Fix the right uninitialised local variable [Vas Crabb].
- 3rdparty/portmidi: Fixed more discarded const and undefined macro errors [Vas Crabb].
- 3rdparty/portmidi: Fixed more macOS errors [Vas Crabb].
- 3rdparty/portmidi: Fixes for Linux and clang builds [Vas Crabb].
- 3rdparty/portmidi: More cases of ignoring const in the macOS code [Vas Crabb].
- 3rdparty/portmidi: Try to get PortMidi into a state where it will build with sane compiler settings. [Vas Crabb].
- 3rdparty/portmidi: Updated to PortMidi 2.0.4 [Vas Crabb].
- 3rdparty/softfloat3: Proper way to detect presence of __int128 on GCC/clang [Vas Crabb].
- 3rdparty/zlib: Updated to 1.3.1 (#13505) [holub].
- Added Windows 64-bit ARM build to GitHub Actions CI matrix [Vas Crabb].
- Avoid the need to set MINGW32 or MINGW64 environment variables when using a standard MSYS environment on Windows [Vas Crabb].
- build: Fixed QT6 build for macosx (#13510) [holub].
- Cleaned up build scripts and compiling documentation: Made it a bit easier to cross-compile for x86-64 or i686 on an AArch64 Windows system; choose the default native recompiler back-end based on predefined macros rather than requiring the build scripts to set it; don't require every target without a native recompiler to declare this; got rid of the code that was supposed to set -m32 or -m64 when building GENie (it didn't work - it tried to use ARCHITECTURE before setting it); avoid relying on the unreliable PROCESSOR_ARCHITECTURE environment variable; got rid of stuff for versions of Xcode that are definitely no longer supported; got rid of workarounds for very old Linux distros; use newer makefile syntax for if/else/if structures, comment some else and endif statements for clarity [Vas Crabb].
- Correct syntax for template instantiation [Vas Crabb].
- Corrected some Chinese UI translations [aGuGu].
- debugcmd: Correct trace file append [hap].
- debugcmd: Update prev commit: change out+app to in+out+ate [hap].
- debugger/qt: Fix Qt6 deprecation warning (see GitHub #13207) [Vas Crabb].
- docs: Link more configuration options to their descriptions [Vas Crabb].
- emu/debug, osd/modules/debugger: Added an option to show exceptionpoints in breakpoints windows [Vas Crabb].
- emu/emumem.h: Optimized cache line detection (#13584): Optimized cache line detection; use EXPECTED macro instead [holub].
- Fixed numerous errors: Software list item in the wrong list; incorrect parent/clone releationships; various bad descriptions [Vas Crabb].
- language/Swedish/strings.po: Update Swedish translation (#13541) [Daniel Nylander].
- makefile: Add note about cpu arch [hap].
- makefile: Change windows cpu arch reg query /v to -v [hap].
- makefile: Detect Windows for 64-bit ARM and set PLATFORM accordingly [Vas Crabb].
- makefile: Don't use else after the over-eager pattern [Vas Crabb].
- makefile: Get windows cpu arch from registry instead of wmic [hap].
- mame.lst: Fix validation [AJR].
- osd: Got rid of the gross globals and functions for manipulating them in the network modules [Vas Crabb]. Remove mac address filter from osd (fixes #13586) (#13614). dp8390: Improve address filtering. Remove mac address filter from osd (fixes #13586) [Patrick Mackinlay].
- Sorting mame.lst [Roberto Fresca].
- srcclean in preparation for release [Vas Crabb].
- Started moving UML instruction reference to main documentation, fixed more recompiler issues: 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; use and/orr to set carry flag directly rahter than using an intermediate register when both operands of a CARRY instruction are immediates; fixed incorrect operand type assertion for FREAD; use less verbose asmjit helper functions for shift operations and addressing modes [Vas Crabb].
- toolchain.lua: Correct typo, xmen: add todo note about weird mcfg issue. Attempt to enable SSE features explicitly specified in ARCHOPTS. It will still fall back to SSE 2 if you just use -march= to enable later SSE features [hap].

0.276:
======
- 3rdparty/expat: Hopefully fix macOS build properly. Added dummy expat_config.h to hopefully fix macOS buid. Updated to expat 2.6.4 [Vas Crabb].
- 3rdparty/lua: Updated to Lua 5.4.7 [Vas Crabb].
- debugger/debugwin.cpp: Fixed clang build [Vas Crabb].
- debugger/win: Added option to disable window grouping. Option is in debugger console window Settings menu.  Changes apply on hard reset or restarting MAME. Setting is saved to default.cfg [Vas Crabb].
- docs: Fixed paper size selection (GitHub #13439). Also set paper size to widespread A4 for dist.mak and CI [Vas Crabb].
- Fixed some -listxml issues: frontend/mame/infoxml.cpp: Recursively discover device types when filtering output; frontend/mame/infoxml.cpp: Don't waste time/memory collecting device types when not filtering; scripts/target/mame: Sort driver projects and sources within driver projects to give more determinisitc output on filesystems that don't enumerate in order by filename (e.g. XFS or ext) [Vas Crabb].
- Fixed some things causing save states to be unportable: emu/save.cpp: Don't save block stride as it depends on alignment rules; windows/winmain.cpp: Don't send display orientation to machine outputs [Vas Crabb].
- frontend/mame/clifront.cpp: Added newline at end of -version output [Vas Crabb].
- frontend/mame/infoxml.cpp: Added null check [Vas Crabb].
- imagedev/floppy.cpp: Return INVALIDIMAGE from floppy_image_device::identify if no format scores [AJR].
- screen: Fix possible race condition at reset_origin if vblank start == vblank end [hap].
- screen: Remember last partial updates reset time because of scheduler time travel issue [hap].
- scripts/src/cpu.lua: Update comment [AJR].
- softfloat: Remove unused global LITTLEENDIAN/BIGENDIAN macros, as well as TRUE/FALSE macros [hap]
- util/chd.cpp: Hacked around GitHub #13029 (issues creating delta CHDs): The code depends on getting away with trying to read at least one hunk past the end of the parent CHD. Previously it just ignored any errors from reading the parent CHD, but adding error checking broke it; this hack just ignores that specific error. Also cleaned up some gross flow control and made more things const; the code should obviously be fixed properly, but that's non-trivial. This gets it to a state no worse than it was in 0.270 [Vas Crabb].

0.275:
======
- cdrom: Fixed wrong track number in error messages [Robbbert].
- mame.lst: Remove unused nws286 entry (it's a commented out NO_DUMP set in driver) [hap].
- mame.lst: Removed majority of comments: A lot of them were empty anyway, or years at risk of getting out of synch with the source files. There's still a commented system entry for some Nokia PC, and the comment at the top of the file; also sorted systems for some PC source files [Vas Crabb].
- tiny.lst: Remove comments from file [hap].
- util/mfpresolve.cpp, emu/emumem_aspace.cpp: Moved some member function pointer manipulation stuff into the library. Gives another slight reduction in the size of libemu [Vas Crabb].

0.274:
======
- 3rdparty/bgfx: Cherry-picked upstream improvements for Wayland desktops [Belegdol].
- 3rdparty/lzma: Don't treat K&R function definitions as an error (#13080). Some AArch64-specific code in C/CpuArch.c uses () when it should be using (void) [FlykeSpice].
- bgfx: Fix compile error after https://github.com/mamedev/mame/commit/ba6f5853e9382a959af8ff81980c0f06a6ffe80e [hap].
- Expose mame_ui_manager::show_menu() to LUA (#13031) [npwoods].
- Fix issue with k input IRQ, add buzzer envelope [hap].
- floppy: Start the ready dance on insertion even if motor is always on [Olivier Galibert].
- frontend/luaengine.cpp: Expose mame_ui_manager::show_menu() to scripts [Nathan Woods].
- imagedev/flopdrv.cpp: Removed code supporting functionality that’s no longer used [Priit Laes].
- osd/interface/inputcode.h: Fixed enumeration range warnings in debug builds [AJR].
- osd: Added helper for getting CPU cache line size [Vas Crabb].
- README.md: Remove obsolete reference to MESS [Dirk Best].
- ui/selmenu.cpp: Don't rescale icons that are close to the target size [Vas Crabb].
- ui/widgets.cpp: Use a smooter, symmetrical highlight texture (MT09095) [Vas Crabb].
- Updated README.md (#13142): Rearranged sections and updated links; updated brief instructions for compiling with Visual Studio; add repobeats activity graphs; linked CI badges to workflow pages [Dirk Best].
- Updated README.md links and compiling instructions, and rearranged for readability [Dirk Best].
- util/corestr.cpp, sound/sdl_sound.cpp: Added missing standard library headers [Belegdol].
- util/coretmpl.h: Added constexpr to the bitswap with explicit count. This was a hangover from poor implementation of constexpr in older compilers [Vas Crabb].
- util/mfpresolve.cpp: Moved member function resolution code to a common location. util/delegate.cpp, cpu/drcbex64.cpp, cpu/drcbearm64.cpp: Use common member function resolution code [Vas Crabb].
- util/mfpresolve.h: Use references for some things that must not be null pointers. Fix build with MSVC ABI. All ABI paths must be valid C++ - can't use a static assertion. Linux wants <cstddef> for ptrdiff_t [Vas Crabb].

0.273:
======
- Actually demote tautological-compare to a warning [Vas Crabb].
- Demote tautological-compare to a warning again [Vas Crabb]: clang on Windows x86-64 is getting upset about code that is making no assumptions about the relative sizes of uint64_t and long; also, fixed more #include guards.
- devices: Fixed a bunch more #include guards that don't match file paths [Vas Crabb].
- docs: Updated compiling instructions to refer to Visual Studio 2022, bumped version to 0.273 [Vas Crabb].
- emu/ioport.h: Retire PORT_VBLANK / PORT_HBLANK [Angelo Salese].
- Enable tautological-compare warning as error. If it causes too much trouble with a supported compiler, it can be downgraded to a warning [Vas Crabb].
- Fixed cross-compiling bgfx for MinGW under Linux (#13073) [FlykeSpice].
- Fixed some more #include guards and added a CI task to check them in src/devices and src/mame [Vas Crabb].
- frontend/mame/luaengine.cpp: Exposed the session phase as a property of the running machine class [Nathan Woods].
- Natural keyboard improvements: NUL is no longer a reserved character, and PORT_CHAR(0) is meaningful now. The ioport_field structure now uses a reserved Unicode character rather than 0 as a filler; PORT_CHAR() with no arguments (formerly illegal) may be used to skip over shift positions that produce no useful codes: - ioport.h: Use the empty string rather than nullptr as default tag for ioport_condition. (ioport_condition::operator== was blindly passing the null pointers to strcmp) [AJR].
- srcclean and cleanup [Vas Crabb].
- tools/imgtool/modules/vzdos.cpp: Fixed function returning floperr_t value as imgtoolerr_t [Vas Crabb].
- tools/imgtool/modules: Fixed remaining calss memory access warnings [Vas Crabb].
- ui/filemngr.cpp: Show warnings at the bottom [Vas Crabb].
- ui/menu.cpp: Fix calculation mistake that resulted in NaNs being passed to the renderer, causing assertion failures in debug builds [AJR].
- ui/selmenu.cpp: Allow icons to be scaled up as well as down (#12851) [jflatt].
- ui/selmenu.cpp: Scale up small icons (for cases where icons were designed for a much lower pixel density) [jflatt].
- ui/ui.cpp: Make failure to mount required media fatal if file manager can't be displayed. ui/filemngr.cpp: Show warnings in a box above the menu so they can be wrapped rather than being truncated to the point of being useless [Vas Crabb].
- Updated GENie and changed Visual Studio target to Visual Studio 2022 [Patrick Mackinlay].

0.272:
======
- debugger/osx: Don't use uninitialised NSRect when creating pop-up button: The initial size doesn't really matter because the pop-up button is resized before being added to the container that holds it and the expression field. The disassembly viewer apparently wasn't updated properly like the memory viewer when the auto-sizing code was refactored. Hopefully this will fix the debugger crashing when restoring window positions from configuration (although I would have thought this would cause crashes in more situations if it was the cause of that)  [Vas Crabb].
- emu/input.cpp: Guard against automatic integer promotion on arithmetic [Vas Crabb].
- emu/romload.cpp: Resolve tags for ROM_COPY relative to current device properly. Tags can contain multiple colon-separated parts. Also, we really don't need tag manipulation code proliferating throughout the codebase [Vas Crabb].
- emu/schedule.cpp: Mark one path as EXPECTED [AJR].
- file selector: Add midi connection selection to MIDI ports [Olivier Galibert].
- Fixed build, corrected a few more #include guards [Vas Crabb].
- formats/all.cpp: Fix typo that excluded VTech disk formats from floptool [AJR].
- mame/luaengine.cpp: Expose the full build version string in the emu table [Nathan Woods].
- misc: Add some missing ATTR_COLD [hap].
- nscsi/cd.cpp: Support ZuluSCSI/BlueSCSI Toolbox commands for uploading and downloading files to the MAME share_directory. CD switching commands are not (yet) supported but may be in the future [R. Belmont].
- osd/windows, osd/sdl: Only check for hold/drag conversion on losing pointer if it hasn't already happened [Vas Crabb].
- scripts/3rdparty.lua: Enabled -Wno-tautological-compare for BGFX in order to evaluate turning it off for MAME [R. Belmont].
- sdl/window.cpp: Removed assertion that click count is not negative when a pointer is lost [AJR].
- srcclean and cleanup: Started fixing #include guards that don't match the file path. There are still plenty more in src/devices, but it's a start. When there are none left in src/devices and src/mame, a CI task can be added to catch them [Vas Crabb].
- tools/chdman.cpp: Added a sink for osd_printf_ family function output [987123879113].
- ui/selsoft.cpp: Fixed sorting (fixes MT08966): Clones should match parent on list name and short name, instance name of first part is irrelevant. List names actually need to be compared [Vas Crabb].
- ui/viewgfx.cpp: Fixed palette display when indirect pens are present [cam900].
- Updated the Ukrainian UI translation [Stanley Kid].
- Updating Ukrainian translation (#12871). Ukrianian translation updated to actual 0.270. There were minor cosmetic corrections and translating empty problematic strings (that was noted in #9100) [StanleyKid-22].
- util/cdrom.cpp: Change fprintf(stderr, ...) calls to osd_printf_error [AJR].
- util/cdrom.cpp: Fixed issues with CUE, TOC and GDI parsers (#12948): Rewrote GDI parser to be more robust and identify more kinds of invalid input. Don't ignore the last line in CUE and TOC files if there is no terminating newline. Use osd_printf_ family functions for output [987123879113].
- util/cdrom.cpp: Fixed issues with the CUE, TOC and GDI parsers [Windy Fairy].

0.271:
======
- addrmap: Allow ioport finders in portr/w/rw: Convert a number of drivers to use ioport finders in the memory map. This is not entirely gratuitous. The idea is to ensure all the ports are in the class, so that eventually ioport finders become ioport creators. The ultimate aim is to C++-ify port descriptions which would be made way nicer by getting rid of the need for PORT_START [Olivier Galibert].
- emu/debug, osd/modules/debugger/qt: Clean up #includes a bit [AJR].
- Fix clang error: 'pointer_options' defined as a struct here but previously declared as a class; this is valid, but may result in linker errors under the Microsoft C++ ABI [-Werror,-Wmismatched-tags].
- ui/selmenu.cpp: Don't ignore character input when no pointer is active [Vas Crabb].
- ui/menu.cpp: Handle menus resetting items from custom pointer handlers better [Vas Crabb].
- Added cold attribute to common life cycle member functions for many files in src/mame [holub].
- Added cold attribute to common life cycle member functions for many files in src/devices [holub].
- docs: Improved notes about the DirectX SDK and added a link in compiling instructions (fixed GitHub #12849) [veganaiZe].
- Use the latest GitHub CI checkout and upload-artifacts actions, and don’t fetch entire revision history [Margen67].
- source org: Move Chess King drivers to chessking folder [hap].
- Added ATTR_COLD to common lifecycle methods for many files in src/mame (#12789) [holub].
- ui/videoopt.cpp, ui/ui.cpp: Allow pressing UI Clear to restore default pointer timeout settings [Vas Crabb].
- Added ATTR_COLD to common lifecycle methods for many files in src/devices (#12822) [holub].
- imagedev/floppy.h: Remove #include "screen.h" [AJR].
- ioport: Add piano keyboard definitions and automatic names [Olivier Galibert].
- ioport.h: Preemptive srcclean [AJR].
- docs: Improved notes about DirectX SDK and added a link in compiling instructions (#12848). Also fixed typo "SDL" in place of "SDK" [veganaiZe].
- util/chd.cpp, util/chdcodec.cpp: Made some APIs return errors rather than throwing exceptions. Mostly salvaged from 901a68e2e0bb0d9178ffdb59e128718c1495250f [AJR].
- chd.cpp: More API changes: Have metadata_find return std::error_condition instead of throwing an exception. Replace the is_XXX predicates with check_is_XXX methods that return a std::error_condition, enabling improved error reporting for cdrom_image_device. Retain read error information in chd_file_compressor. Make a bunch of methods noexcept. This mostly restores the changes from cc772072fa635146b1df39a5694d2a8f8aa5a34f [AJR].
- tools/chdman.cpp: Throw errors when examining metadata to determine compression defaults [AJR].
- util/chd.cpp: Made a few more member functions return error conditions. Also mark error paths as unexpected to optimise against them [Vas Crabb].
- util/chd.cpp, util/chdcodec.cpp: Added a safer way to let codecs do special stuff with hunks [Vas Crabb].
- source org: Move dedicated dave soundchip to enterprise folder [hap].

0.270:
======
- Added out-of-line destructors to various device classes that aren't templates and aren't in anonymous namespaces [Vas Crabb].
- Bumped GitHub CI to three simuataneous jobs for Windows and Linux - this should be OK with 16GB RAM [Vas Crabb].
- Don't use image_error::BADSOFTWARE for things that aren't software list errors [Vas Crabb].
- emu/ioport.cpp: Made DIP switch location validity errors more precise [Vas Crabb].
- emu/ioport.h: Got rid of [DECLARE_]CUSTOM_INPUT_MEMBR - it's just obfuscation at this point [Vas Crabb].
- emumem: Add support for passing mem_mask parameter on 8-bit handlers [hap].
- Fixed a number of places where comments said "complaint" when they meant "compliant" (#12697) [Michael Sanborn].
- Floppy hard-sector support.  Mix of Eric Anderson's and Mark Gallager's patches. Removal of the flux screen experiment. Removal of the unused get_pos() [Eric Anderson].
- floppy.cpp: Use standard drives for hard-sectored systems. Fix typo (#12727) [Mark Garlanger].
- imagedev/floppy.cpp: Add single-density 3" drive types [AJR].
- imagedev/floppy.cpp: Set sectoring mode on the floppy connector rather than using different drive devices [Mark Garlanger].
- input_sdl: Empty event queue on resets [hap].
- misc: Added proper error messages to COM quickload (MT 08915) [Robbbert].
- misc: Comment out s100 rdy to z80 wait pin as it looks like it's not fully implemented in bus/s100 [hap].
- misc: Simplify bootrom bankswitch from before memory_view was added [hap].
- scripts/minimaws: Removed Python 2 support [Vas Crabb].
- scripts/minimaws: Use python3 superclass method call syntax [Vas Crabb].

0.269:
======
- ctrlr: Add XML tag to cfg files [hap].
- debugger/debuggdbstub.cpp: Added an option to set the IP address to listen on [Ramiro Polla].
- debugger/debugqt.cpp: Don't sleep waiting for events on debugger update [Vas Crabb].
- debugger/win/debugwininfo.cpp: Don't restrict maximum window sizes [dave-br].
- emu/debug/dvdisasm.cpp: Fixed bad display if view is scrolled horizontally (#12679) [dave-br].
- emu/debug/dvdisasm.cpp: Fixed horizontal scrolling; debugger/win: Don’t restrict maximum window width [dave-br].
- floppy: Remove HFE image format from the general list for rewrite [Michael Zapf].
- ioport: Offset analog value by half a step because of rounding issue when crossing 0 (crossing 0 now takes 1 step instead of 2, and there's 0.5 step wiggle room at edges) [hap].
- memory_view: Fix possible nullptr crash, add exists() getter [hap].
- selmenu/simpleselgame: Change driver status "Overall:" to "Status:", misc: some company string corrections [hap].
- sliders: Fix regression after a75bb5341d9c39a84e6aecab10b734bafc1d6d9d [hap].
- ui pointer options: Allow 0.0s hide delay to disable pointer [hap].
- ui pointer options: Revert reset options to default when pressing Del (conflict with ctrlr cfg) [hap].
- ui pointer options: Set inc/dec to 1s (hold shift for shorter 0.1s), reset options to default when pressing Del [hap]
- ui pointer options: Warning message if delay is set to 0.0s [hap].
- ui/menu.cpp: Avoid floating point equality comparison. Fixes pointer input not working on menus at some window sizes in 32-bit x86 builds [Vas Crabb].
- ui: be consistent with custom_render passed variable names [hap].

0.268:
======
- debugger/qt: Fixed crash on hard reset [Vas Crabb].
- floptool: Fix HP 9121 format #4 (#12511). With this change, all the SSDD disks from hpmuseum can be read, and the size of the disk matches. While at it, also fix a typo [Sven Schnelle].
- nscsi/cd.cpp: Fixed no-disc status for Apple CD drive and implemented eject command. Dragging a CD into the Trash on MacOS now properly unloads it [R. Belmont].
- srcclean and cleanup [Vas Crabb].
- ui/selmenu.cpp: Dismiss error messages on pressing left or right [Vas Crabb].
- Updated "CPU Tester" sample code so it will mostly build and work again. Only remaining issue is that m_icountptr is now private, so it can't set remaining cycles [Vas Crabb].

0.267:
======
- 3rdparty/softfloat3. Softfloat3 was always being built for a big-endian host, causing incorrect math on LE x64 and AArch64 machines. Fixed up Softfloat3 to build properly as part of MAME and up-ported the Bochs extensions. In latest Bochs, they were only partially up-ported and Softfloat3 had been hacked up to be more like 2; here they're fixed to work with stock Softfloat3 [R. Belmont].
- BugFix#08870 [Debugger] debugger: The tracesym command uses a view of a destructed temporary string [Patrick Mackinlay].
- debug: Fix MT#08870, debugger tracesym regression [Patrick Mackinlay].
- docs: Added sections with recommendations for submitting machines that require media and/or user intervention to start up [R. Belmont].
- docs: Fix markup on the links that were added [R. Belmont].
- drivenum.cpp: Fix undefined behavior in find_approximate_matches (#12441): If`it points to the last element of `penalty, the `resize` call invalidates it, and the subsequent call to `emplace` is undefined. This causes a crash in MSVC debug mode. Fix it by resizing _after_ emplacing [Roman Donchenko].
- emu/drivenum.cpp: Avoid using an invalidated iterator in find_approximate_matches [Roman Donchenko].
- emu/emucore.h: Fixed build with compilers that require exceptions to be copyable (GitHub #11316) [Roman Donchenko].
- emu/emupal.cpp: Added helper for GGGGRRRRBBBBxxxx format [cam900].
- emucore.h: Fix build error on VC++ (#12383) [Roman Donchenko].
- Fixed various warnings [Vas Crabb].
- formats/fs_coco_rsdos.cpp: Added basic support for writing [Wilbert Pol].
- imagedev/floppy.cpp: Fix out-of-bounds access to the seek sample (#12452): Currently, when`floppy_sound_device::step` selects a new seek sample, the value of `m_seek_samplepos` remains the same as it was the last time a seek sample was played. This might be an invalid position for the new sample, since the seek samples have different lengths. When this is the case, the next call to`floppy_sound_device::sound_stream_update` makes an out-of-bounds memory access as it reads the sample data. Fix this by resetting `m_seek_samplepos` to 0 when a new seek sample is selected. This also makes the seek sounds more consistent, since previously they would start from a semi-random position each time [Roman Donchenko].
- imagedev/floppy.cpp: Fixed failure to locate the first flux transition on a track [Roman Donchenko].
- imagedev/floppy.cpp: Fixed out-of-bounds access to “seek” audio samples [Roman Donchenko].
- imagedev/floppy: Fix a bug with reading the first 1-bit on a track (#12439) [Roman Donchenko]. floppy_image_device::find_index` uses binary search to find the index for which `buf[spos] <= position < buf[spos + 1]`. However, the algorithm behaves incorrectly when `position < buf[0]`. In this case, the algorithm returns 0, as if `position` was between `buf[0]` and `buf[1]`. The effect of this is that if`get_next_transition` is called with a timestamp that is between the start of the revolution and the first transition, then instead of returning the timestamp of that transition, it returns the timestamp of the second transition instead. Essentially, the first 1-bit on the track gets flipped to a 0. I have encountered this in Apple II emulation, where this bug manifests as sporadic I/O errors. Fix it by doing two things: 1. Replace `find_index` with a call to `upper_bound` from the standard library, which behaves correctly in edge cases. 2. If `upper_bound` signals that `position < buf[0]`, then adjust `base` and `index` to point to the last transition of the previous revolution.
- input_sdl.cpp: Add missing #include <cmath> for std::lround() [Thomas Klausner].
- luaengine: Fix what looks like a copypaste error with screen_type_enum [hap].
- machine/wd_fdc.cpp: Lower DRQ output when track write completes [Mark Garlanger].
- osd/windows: Ensure WM_MOUSE* to WM_POINTER* event translation is always disabled [Vas Crabb].
- plugins/hiscore: Added support for Game & Watch Donkey Kong Jr (New Wide Screen) [udance4ever].
- scripts/minimaws: Fixed deprecation warning in Python 3.11 (CGI module deprecated) [Vas Crabb].
- sound/coreaudio_sound.cpp: Simplify [Vas Crabb].
- srcclean and manual cleanup [Vas Crabb].
- tools/aueffectutil.mm: Fix build [Vas Crabb].
- ui/selmenu.cpp: Fixed out-of-bounds access when no primary items are visible (fixes GitHub #12429). Also fixed separator being highlighted as though it were selectable [Vas Crabb].
- util/corefile.cpp: Fixed core_file failing to propagate write errors [Vas Crabb].
- util/ioprocs.cpp: Count zero actual bytes written on a write call as an error. Fixes lock-up writing to a write-protected image [R. Belmont, Peter Ferrie].
- util/ioprocs.cpp: Reverted gross hack. [Vas Crabb].
- Various cleanups [Vas Crabb]: tools/aueffectutil.mm: Fixed more deprecation warnings. Got rid of some sprintf and strcat (generates warnings on macOS). cpu/mipsx: Got stuff out of headers that shouldn't be there.

0.266:
======
- 3rdparty/asio: Updated to 1.30.2. Patch config.hpp to hopefully work with strict preprocessor warnings [Vas Crabb].
- 3rdparty/sol2: Worked around apparent regression in clang 18: When taking a pointer to a static member function template in a class template, clang reports a substitution error if the noexcept specification uses an expression that depends on class template arguments. See llvm/llvm-project#91362 on GitHub. Work around another place where noexcept depends on class template arguments [Vas Crabb].
- emu/http.cpp, util/server_http_impl.hpp: Added override qualifiers for overridden virtual member functions [Vas Crabb].
- Fixed a few more class memory access warnings, and a little cleanup [Vas Crabb].
- Fixed copy/paste error in build script [Vas Crabb].
- Fixed various issues in internal layouts [Vas Crabb]: plugins/layout: Log script errors at warning level rather than verbose level. microtouch.lay, pntnpuzl.lay: Improved pointer mapping code. Reordered all layouts to place views after element and group definitions and scripts last. This matches how layout files are interpreted by MAME. Fixed various errors identified by validating layout files against an XSD schema.
- formats/fs_cbmdos.cpp: More const. Fixed failure to display all directory entries. Add partial write support (can only write PRG type files to first 35 tracks) [Wilbert Pol].
- formats/fs_fat.cpp: Added write support [Wilbert Pol].
- lib/formats/fs_cbmdos.cpp: Add partial write support (#12389) [Wilbert Pol].
- lib/formats/fs_fat.cpp: Add write support (#12363) [Wilbert Pol].
- memory: Document taps, contention/interruptibility [Olivier Galibert].
- opengl/gl_shader_tool.h: Clarified licensing. This was originally distributed as GPLv2.  Sven Gothel permitted distribution as BSD-3-Clause in 2015 [Vas Crabb].
- osd/asio.h: Removed leftover C++03 support helpers [Vas Crabb].
- osd/windows: Changed a pointer to a const reference in an API [Vas Crabb].
- Set Win32 API version to 0x0600 for Windows SDL builds [Vas Crabb].
- ui/selmenu.cpp: Fixed issue with focus rotation when filter matches no items [Vas Crabb].
- ui/tapectrl.cpp: Ensure device monitored for media change is up-to-date [Vas Crabb].
- util/cdrom, machine/t10mmc: Add preliminary support for multisession CD-ROMs, indexes, and track flags (#12201): util/cdrom: Refactoring. Read all indexes from cue files. Read in track flags from cues. Multisession support for cues. machine/t10mmc: Playback from current head, other misc cleanup. machine/t10mmc: Implement T10MMC_CMD_MECHANISM_STATUS. machine/t10mmc: Implement TOC_FORMAT_FULL_TOC, TOC_FORMAT_SESSIONS, and return proper indexes for T10MMC_CMD_READ_SUB_CHANNEL [987123879113].
- util/cdrom.cpp, formats/fs_fat.cpp: More const, less copying [Vas Crabb].
- util/cdrom.cpp, machine/t10mmc.cpp: Added initial support for multi-session discs, indexes and track flags [Windy Fairy].

0.265:
======
- 3rdparty/asmjit: Updated to upstream version 1.13.0 [Patrick Mackinlay].
- Add C compiler flags for Wayland EGL from pkgconfig to OSD build options on Linux (#12194). This will hopefully fix compiling on openSUSE where Wayland headers are in /usr/include/wayland [Julian Sikorski].
- Add C compiler flags for Wayland EGL from pkgconfig to OSD build options on Linux [Belegdol].
- Add C compiler flags from pkgconfig for Wayland EGL to BGFX build options [Belegdol].
- cheat: Make string.char and string.format available to cheats (#12183) [eientei95].
- Cleared inappropriate execute bits on a few source files [Davide Cavalca].
- debug/express.cpp: Fix bad iterator comparison in postfix conversion (#12197). One iterator was being compared with another from the wrong container. I observed this by chance when I hit an assert in a debug MSVC build with checked iterators enabled. This bug could cause dereferencing of a past-the-end iterator in expressions ending with an operator [invertego].
- debug/express.cpp: Fixed comparison of iterators from different containers [invertego].
- debugger/debuggdbstub.cpp: Don't write data to socket in text mode [Vas Crabb].
- debugger/debugimgui.cpp: Refuse to break if unable to take over UI input [Vas Crabb].
- Disabled GCC stringop-overflow warning due to numerous false positives [Vas Crabb].
- docs: Removed unnecessary repetition in othertools.rst (#12224) [Angelo Salese].
- docs: Updated RTD to 2.0.0 and removed dependency on jQuery (#12253) [Firehawke].
- Drop support for GCC < 10.3, clang 6, SDL < 2.0.14 and Qt 5.10 [Vas Crabb].
- emu/gamedrv.h: Got rid of the "clickable artwork" system flag [Vas Crabb].
- emu/rendlay.cpp, ui/ui.cpp: Allow layout views to control pointer display [Vas Crabb].
- Fixed a few class memory access warnings [Vas Crabb].
- Fixed a few more class memory access warnings [Vas Crabb].
- Fixed a few more class memory access warnings [Vas Crabb].
- formats/wavfile.cpp: Fixed a class memory access warning [Vas Crabb].
- Initial touch input support: 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 [Vas Crabb].
- lib/formats/dmk_dsk.cpp: Header byte 4 is not reserved. Fixes MT 8851 (#12232) [Wilbert Pol].
- makefile: srcclean batches of twenty files; improves performance when process creation or filesystem walk is expensive [Vas Crabb].
- Misc internal artwork: Add clickthrough attribute [hap].
- Misc internal artwork: Disable orange mouse pointer (false positive clickable artwork detection) [hap].
- osd/sdl/video.cpp: Fixed a class memory access warning (osd_window_config initialises all members to zero in constructor) [Vas Crabb].
- osd/strconv.cpp: Handle UTF-8 Windows code page internally in osd_uchar_from_osdchar (#12131) [invertego].
- osd/strconv.cpp: Handle UTF-8 Windows code page internally in osd_uchar_from_osdchar [invertego].
- plugins/cheat: Added string.char and string.format to the environment for Lua cheats [einstein95].
- shared/dcs.cpp: Implemented device_mixer_interface for sound output (#12252) [cam900]: Suppress side effects for debugger reads. Reduced use of literal tags. Reduces public class members. Use C++ style line comments.
- shared/dcs.cpp: Replaced another literal tag [Vas Crabb].
- shifter overlay: Remove vertical widescreen views. Remove orange mouse pointer/block clickable input. Add opaque shifter option [hap].
- tools/chdman.cpp: Added support for extracting cue/bin GD-ROM images and producing one binary file per track (#12191). Use --splitbin/-sb option for extractcd to produce one binary file per track. When producing one binary file per track, the binary file name must contain a %t format conversion for the track number [987123879113].
- tools/chdman.cpp: Added support for extracting cue/bin GD-ROM images and producing one binary file per track [Windy Fairy].
- ui/menu.cpp, ui/selmenu.cpp: Handle mouse wheel units properly [Vas Crabb].
- ui/ui.cpp, ui/videoopt.cpp: Made pointer activity timeout configurable [Vas Crabb].
- ui/videoopt.cpp: Hold Ctrl to jump to the next one-second interval for pointer timeout [Vas Crabb].
- util/cdrom.cpp: Zero entire output TOC structure in cdrom_file::parse_metadata (#12219). Fixes issues with fields that are not explicitly assigned in all situation [MetalSlug].
- videoopt: Force left-align for view list [hap].

0.264:
======
- coreutil.h: Eliminate core_crc32 wrapper function in favor of util::crc32_creator [AJR].
- debugger/debuggdbstub.cpp: Fixed some M68000 register mappings and strip line endings from XML [Bartman/Abyss].
- docs: Get rid of swlist folder [Angelo Salese]. Described EMULATOR make option [Firehawke]. Corrected docmented default for ui_mouse option. Clarified description of EMULATOR make option [Vas Crabb].
- emu/debug/debugcmd.cpp: Added NUL-terminated string argument support to printf/logerror [Patrick Mackinlay].
- emu/diimage.h: Removed fread overloads that allocate memory for output [Vas Crabb].
- emu/save.cpp: Made illegal save state registrations always fatal [Vas Crabb].
- formats/dmk_dsk.cpp: Improved format identification checks. Improve checks in identify. Add structure checks in identify. Use less strong FIFID flags [Wilbert Pol].
- formats/flopimg.cpp: Fix apparent logic error in write splice setting test [AJR].
- imagedev/cassette.cpp, formats/flacfile.cpp: Added support for saving cassette images in FLAC format. util/flac.cpp: Implemented seek/tell callbacks for FLAC library. Added support for saving cassette images in FLAC format [Wilbert Pol].
- input/input_rawinput.cpp: Properly align buffers for RAWINPUT header [Vas Crabb].
- input_common.cpp: Added default names for keys mapped to MAME's "other switch" type [Vas Crabb].
- input_common.h: Got rid of the DirectInput key code macros. DirectInput headers are always available on Windows - it's just an opportunity for bygs [Vas Crabb].
- input_rawinput.cpp: Simulate Pause key being held for 30ms, similarly to what's done for Caps Lock on macOS with SDL. Also added a gross hack to give "correct" names for Pause and Num Lock [Vas Crabb].
- input_sdl.cpp: Get default key names from SDL. Not really that useful as it isn't aware of the current keyboard layout. Key map files are still needed for anything other than a US ANSI layout. Also added some comments [Vas Crabb].
- mame.lst: Corrected error [Ivan Vangelista].
- Misc chess: Small tweak to leds [hap].
- osd/modules/input: Various cleanup and minor enhancements [Vas Crabb]. 
- osd/osdnet.cpp: Removed dependency from OSD network device to libemu. This allows save states to be created and loaded when network interfaces are present. Device_network_interface may need some more attention to get save states taken while receiving a packet to work properly [Vas Crabb].
- OSD: Cleaned up MIDI and network interfaces a little more [Vas Crabb].
- scripts/build/verinfo.py: Use a raw string literal for regular expression (fixes Pylint warnings) [Kelvin Sherlock].
- source org: Move yeno drivers to yeno folder [hap].
- tools/chdman.cpp: Fixed splitframes handling. Added warning when extracting GD-ROM CHDs to cue/bin format [987123879113].
- util/cdrom.cpp: Refactored parse_cue and parse_gdicue (should fix GitHub #12081). This should greatly improve data integrity when creating and extracting GD-ROM images. Refactored parse_cue to handle GD-ROMs. Don't discard any data from GD-ROM cue/bin input including pre-gap data [987123879113].
- util/core_file.cpp: Changed output size of load to size_t [Vas Crabb].
- util/ioprocs.cpp: Added wrappers to simplify common patterns [Vas Crabb].
- util/unzip.cpp: Work around spurious maybe uninitialised warning with certain GCC versions [Vas Crabb].

0.263:
======
- chdman: Fixed a couple of issues and added preliminary web docs. tools/chdman.cpp: Added  - hunksize/-hs option for createdvd command and default to 4K hunks (2 sectors, same size as hard disk hunks). Also removed - outputbin/-ob option from extractdvd command - it did nothing as it's CD-specific. docs: Added preliminary chdman documentation. Most common options have at least basic descriptions, supported options are listed for all commands, and supported compression algorithms are described. docs: Cleaned up heading levels in tools section.
- cheatopt: Indicate if no cheats were found. Add the global cheat enable toggle to the menu  [hap].
- debugimgui: Fix lockup and debug assert [Barry Rodewald].
- Default UI keys cleanup: Pause moved from P to F5. Step single frame moved from Shift-P to Shift-F5. Create save state moved from Shift-F7 to F6. Toggle cheats moved from F6 to Shift-F6 [hap, R. Belmont].
- docs: Combine description for fastforward key [hap]
- emu/memarray.cpp: Fixed little Endian byte reads and writes for 64-bit areas [amameuser].
- Fixed OSD interaction with updated default keys [R. Belmont].
- formats/fs_fat.cpp: Add the 5.25" disk formats [AJR].
- formats/fs_fat.cpp: Various fixes. Get the volume label from the root directory, rather than from the extended BPB (which is less reliable). Ignore long file name entries for now. floptool: Add new line to error message report [AJR].
- formats/fs_prodos.cpp: Feature updates. Allow floptool to use ProDOS filesystem with 140K 5.25" disks. Actually list OS and date/time file attributes. Fix decoding of dates to match Apple II ProDOS. Skip header entries in a less hacky way [AJR].
- imagedev/cdrom.cpp: Report unsuitable CHDs as "invalid image" rather than "unsupported operation" [Vas Crabb].
- imagedev/floppy.cpp: Delete unused getter that leaked details [AJR]. 
- imagedev/harddriv.cpp: Report unsuitable CHDs rather than crashing [Vas Crabb].
- input_windows: Remove doubled key [hap].
- machine: Add filename to save/load state message [hap].
- mainmenu: Readd separator after favorites [hap].
- MAME default keys: Move rewind step from shit+tilde to shift+f4, move cheat from shift+f6 to shift+f8, move quick save/load from (none) to shift+f6/f7 [hap].
- mamemenus.rst: Mention the changed pause key [hap].
- NVRAM: Delete file on save if there's a write error or result file is 0 bytes [hap].
- OSD SDL default keys: remove ctrl-blocks on f3 and f4, move opengl filter from lctrl+f5 to lalt+f10 [hap].
- OSD Windows default keys: move post processing key from lctrl+lalt+f5 to lalt+f10 [hap].
- osdsdl: Move prescale keys from ctrl+f6/f7 to alt+f8/f9 [hap].
- Removed some unnecessary backslash line continuations in C++ and Python code [amameuser].
- sdl modify_prescale: Don't indicate max value [hap].
- swlist: Swap columns when sorted by shortname. Don't add switch item ordering menu entry when there's only 1 swlist item. Add ui header [hap]
- tools/chdman.cpp: Fixed numerous issues, including: Support input start/size options for createdvd. Fixed not reporting an error on unrecognised command line options. Fixed --fix/-f option for verify command not working. Report an error when conflicting options are supplied (e.g. hard disk template and C/H/S geometry, or input start offset in both bytes and hunks). Previously the results would be unpredictable. Detect more invalid combinations of options, and detect when output unit size or hunk size doesn't match parent. Changed order of processing options for createhd so using a template cannot not inadvertently result in an invalid combination of sector size and hunk size. Don't require an explicit unit size for createraw if an output parent CHD file is supplied. Fixed an object leak in createcd [Vas Crabb].
- tools/chdman.cpp: Helps to git add everything (fixes variable scoping issue). Fixed bogus uninitialised local warning. It would never use template_id uninitialised because the same condition applied for assigning it and using it, but compilers are dumb [Vas Crabb].
- UI menu: Readjust visible width if heading width exceeds that of the menu [hap].
- ui: Add quick save/load state shortcut, default key undecided [hap].
- UI: Move decrease frameskip key from F8 to Shift F9 [hap].
- ui: remove separator between Add/remove favorite and About MAME, ugly even though the 2 are unrelated, fix reset(reset_options::REMEMBER_REF); with add/remove favorite [hap].
- Update copyright years [Vas Crabb].
- util/bitstream.cpp: Fixed cases where bits would be dropped when reading and writing. [Windy Fairy]
- util/bitstream.h: Adjust m_doffset based on m_dbitoffs when flushing (fixes errors reading LaserDisc CHDs) [Windy Fairy].
- util/cdrom.cpp: Removed unreachable additional handler for MODE2/2336 tracks (GitHub #9084) [stonedDiscord].
- util/chd.cpp: Calculate pessimistic size for buffer needed to store compressed hunk map (fixes GitHub #12023) [balrog].
- util/options.h: Use forwarding header [AJR].
- various drivers: Removed some unneeded flipscreen related trampolines. Removed a few more flip screen trampolines [Ivan Vangelista].
- Various XML format and spacing fixes [skip ci].
- video.lua: fix a couple shortsights [Angelo Salese].

0.262:
======
- 3rdparty/libflac: Updated to version 1.4.3 and also removed FLAC documentation - it's a lot of bloat [Vas Crabb].
- 3rdparty/libjpeg: Updated to version 9e [Vas Crabb].
- 3rdparty/lzma: Updated to version 23.01 [Vas Crabb].
- 3rdparty/utf8proc: Updated to 2.9.0 [Vas Crabb].
- 3rdparty/zlib: Updated to 1.3.0 [Vas Crabb].
- 3rdparty: Renamed libflac to flac - it's a full FLAC distribution, libFLAC is just a small part of it [Vas Crabb].
- Added a build option to disable the main emulator target (simplifies building tools only) [Miodrag Milanović].
- Added support for Zstandard compression in zip archives and CHD media images [Vas Crabb].
- ci-windows.yml: mingw-w64-x86_64-llvm is required for llvm-ar [Dirk Best].
- debugger/debuggdbstub.cpp: Added aliases for some MOS 6502-compatible CPUs [John Byrd].
- DOCs: Fixed typo in -wavwrite option example [Angelo Salese].
- DOCs: Updated example layout links to latest tagged release (0.261). Removed reference to directory that isn't added yet [Vas Crabb].
- emu/diimage.cpp: Added media change notifier and exposed to LUA: This allows interested parties to receive notifications on media changes. This is demonstrated by the file manager and media image information menus now updating immediately if the system ejects a mounted image, or a mounted image is changed by a script or something. ui/filemngr.cpp, ui/info.cpp: Update file manager and media image information menus immediately on media image changes. ui/menu.cpp: Return index of added item from item_append. bus/generic/slot.cpp: Use out-of-line virtual destructors to avoid vtable link errors in certain single-driver builds. bus/nubus: Tidy up some #include statements [Vas Crabb].
- emu/ioport.cpp: Allow punching holes in IPT_UNUSED and IPT_UNKNOWN [Vas Crabb].
- Ensure that the has_* file actually has data in them. The previous PR had clearly never been tested [Olivier Galibert].
- formats/flacfile.cpp: Added support for compact cassette images in FLAC format [Wilbert Pol].
- formats/flacfile.cpp: Removed unnecessary calls to decoder.reset() [Wilbert Pol].
- frontend/mame/clifront.cpp: Fixed misleading error messages from -verifysoftware [Vas Crabb].
- frontend/mame/clifront.cpp: Removed unused variable picked up by clang but not GCC [Vas Crabb].
- imagedev/cassette.cpp: Fixed sound output routing for multi-channel tape images [Wilbert Pol].
- imagedev/cdromimg.cpp: Fixed object lifecycles when loading from softlist or ROM region. Reverted workaround 4c0957d7f0ba6a72e7267270db07ee06fe717109. Cleaned up a few things [Vas Crabb].
- imagedev/floppy.cpp: Changed data member names to use “m_” prefix consistently [Mark Garlanger].
- imgtool/modules/vzdos.cpp: Use util::sum16_creator [AJR].
- lib/util/cdrom.h: Fix out-of-bounds MAME init crash when disc is 99 tracks [Angelo Salese].
- Misc artwork: Remove obsolete text bg rect [hap].
- Sound: removed cfg defvol/newvol (was already deprecated) [hap].
- srcclean and manual cleanup in preparation for release branch [Vas Crabb].
- Tied up loose ends: Updated copyright for FLAC. Enabled some more warnings for LZMA now that upstream is cleaner. Removed Subversion attributes from .gitattributes[Vas Crabb].
- tools/unidasm.cpp: Support number radix prefixes for -skip and -count options [invertego].
- Use C++ swappable idiom correctly, clean up #include guards for headers that were moved [Vas Crabb].
- util/cdrom.cpp: Don’t strip GD-ROM track pre-gaps when reading cue sheet files [Maxime Gauduin].
- util/cdrom.h: Fixed size of track info array. Also made it possible to enable VERBOSE in cdrom.cpp without link errors [Vas Crabb].
- util/flac.cpp: Added support for FLAC data with sample sizes other than 16-bit [Wilbert Pol].

0.261:
======
- 3rdparty/portaudio: Suppress clang unused label warning. Fixed inadvertent assignment in PulseAudio callback [Vas Crabb]. Enabled PulseAudio backend for Linux [invertego].
- 3rdpary/asio: Fixed error check in sockatmark() [Alex Brown].
- Added some additional layout functionality and script bindings [Vas Crabb]: Also corrected some copy/paste errors in documentation, and bumped documentation version as it now describes features that will appear in an upcoming release.
- chd.cpp, chdcodec.cpp: Minor refactoring [AJR]: Return std::error_condition from set_raw_sha1 and set_parent_sha1 instead of throwing exceptions. Fix a few cases where error codes could be swallowed. Catch exceptions in is_XXX predicates. Add const qualifier to SHA-1 extraction methods. Add noexcept qualifier to a few internal functions. Clean up various comments.
- chd.cpp: Refactoring, part 2 [AJR]: Change is_XXX to return std::error_condition instead of bool so that errors can be passed down the line; rename these to check_is_XXX to indicate that they are no longer basic predicates. Change return type of internal function metadata_find to std::error_condition so that errors can be returned rather than thrown. imagedev/cdromimg.cpp: Fix bug where cdrom_file object could be constructed twice in a row for CD-ROMs and once for DVDs.
- Cleaned up some recent changes a little [Vas Crabb].
- Disallow zero-length regions in ROM definitions and software lists [AJR].
- Docs: Added option for Wayland support to compiling guide. Clarified behaviour of memory region read/write methods [Vas Crabb].
- Fixed some editing errors in Turkish UI translation [Vas Crabb].
- formats/imd_dsk.cpp: Implemented get_sectors_per_track() (required by imgtool) [Lubomir Rintel].
- formats/nabupc_dsk.cpp: Added NABU PC floppy disk formats [Brian Johnson].
- frontend/mame/luaengine_mem.cpp: Added a raw read function for memory regions [Vas Crabb].
- imgtool/modules/bml3.cpp: Fixed crash when floppy disk format doesn’t implement get_sectors_per_track() [Lubomir Rintel].
- luaengine.cpp: Fixed jobs waiting for frame updates sleeping forever. Restored ability for wait functions to yield values from coroutines. Made the documentation on what it's supposed to do a bit clearer [Vas Crabb].
- Made generation of feature headers more deterministic [Bernhard M. Wiedemann].
- misc/nabupc_kbd.cpp: Corrected direction of analog paddle axes [Brian Johnson].
- netlist/tools/nl_convert.cpp: Report source line number when an exception is thrown. Convert resistor arrays to individual resistors [stonedDiscord].
- Revert "3rdparty/portaudio: Enabled PulseAudio backend for Linux. [invertego]". This reverts commit c5927d37e7ccf9d67d4faa535b90d417f0c42f45. PortAudio's PulseAudio backend currently has issues.  We'll sit this out until that's sorted out upstream [Vas Crabb].
- tools/imgtool/main.cpp: Check for unrecognized command line options [Lubomir Rintel].
- ui/menu.h: Refactor probably-unsafe code referencing temporary object [AJR].

0.260:
======
- 3rdparty/bgfx: Fixed duplicate import of GL functions on Linux when using OpenGL ES 2.0 [Romain Tisserand].
- 3rdparty/portaudio: Updated to latest upstream version (resolves issues building with Visual Studio) [invertego].
- Allow clone CHDs to use parent CHDs as parents [Vas Crabb]: util/chd.cpp: Allow caller to provide a helper for finding parent CHDs and expose (recursive) missing parent status. emu/romload.cpp: Search parent systems/devices/software for parent CHDs on encountering a delta CHD. Report error on delta CHDs when parent can't be found. Check parents for matching CHDs with different names for devices as well as systems and software.
- chdman.cpp, imgtool/modules: Use multibyte.h functions [AJR].
- Corrected grammar of several German UI message translations [Sönke Joppien].
- docs: Fixed a number of grammatical errors and editing errors. Fixed many editing errors and spelling errors and an outdated link to the contributing guidelines. Removed a stray backtick character in examples for debugger gtime command [Tom Cariello].
- docs: Fixed a title underline too short warning [Firehawke].
- docs: Updated for changes to media loading behaviour. Bumped docs version since this now describes behaviour of the upcoming release [Vas Crabb].
- emu/romload.cpp: Don't search parent device search path for software media [Vas Crabb]: This was a piece of emergent behaviour in the original implementation of software media loading.  It was preserved in the last big refactor of ROM loading, but it can be removed now to simplify the code.
- emu/romload.cpp: Removed apparently obsolete FIXME comment. Tidy up some of the code a little [Vas Crabb].
- Fix clang error: private field 'm_sound_p1' is not used [-Werror,-Wunused-private-field].
- Floppy format API refinements: Add noexcept to format information overrides and several simple floppy_image accessors. Be more const-correct and use references instead of raw pointers wherever applicable. In particular, floppy_image_device::load and floppy_image_device::save now take a reference to floppy_image rather than a pointer, const-qualified in the latter case [AJR].
- formats: Reduced compile-time dependencies in filesystem headers [AJR].
- imagedev/floppy.cpp: Workaround for index timing regression [AJR].
- makefile: Update some outdated stuff [hap].
- Normalize terminology for retitled bootlegs and hacks of arcade games, preferring "bootleg/hack of <title>" to "<title> bootleg/hack", which might be confused with bootlegger names or regions. Label a few more sets as hacks [AJR].
- Remove flopimg.h and fsmgr.h from floppy device header [AJR].
- Updated Turkish (Türkçe) UI translation [Kadir Ekşi].

0.259:
======
- avhuff.cpp, cdrom.cpp, msdib.cpp, unzip.cpp, vbiparse.cpp: Use multibyte.h functions [AJR].
- bus/nscsi: Added SCSI tape drive device using SIMH tape image format [Miëtek Bak].
- chd.cpp, chdcodec.cpp, flac.cpp: Use multibyte.h functions. multibyte.h: Add functions for reading and writing 48-bit values [AJR].
- Fixed MinGW AArch64 build issues [invertego].
- formats/td0_dsk.cpp: Recognize SSDD images for 3(.5)-inch floppy drives. Fixes loading of CP/M Plus v 1.5 on pcw8256 [AJR].
- formats: Use multibyte.h functions in more files [AJR].
- frontend/mame/luaengine.cpp: Corrected spelling of screen device xoffset and yoffset property names [Golden Child].
- imagedev/floppy.cpp: Add hard-sector floppy support [Eric Anderson].
- imagedev/floppy.cpp: Added support for hard-sectored floppy disk formats [Eric Anderson].
- misc handheld: Update notes about sound [hap].
- Miscellaneous cleanups of recent commits. cpu/z80: Keep all member initialisations in the constructor initialiser list. Added a validity check for impossibly low cycle counts. Reformatted an if/else tree. bus/spectrum: Gave the ZXBUS devices a short name prefix.
- osd/sdl: Don’t specify SDL_WINDOW_BORDERLESS for full-screen windows [Davidian1024].
- osd/sdl: Fixed interpretation of result of SDL_GetDesktopDisplayMode [Davidian1024].
- Remove x file attribute from some source files [hap].
- Revert "Set C++ standard to C++17 via environment for bgfx shader build CI job." This reverts commit 63b00cabc302c17c70c285a337a06a4f89d39f40 [Vas Crabb].
- romload.cpp: Use std::string_view in determine_bios_rom [AJR].
- samples: Move interface variables to protected [hap].
- Set C++ standard to C++17 via environment for bgfx shader build CI job. The SPIRV tools require C++17 but it isn't set anywhere in the build files supplied with bgfx [Vas Crabb].
- sound: Deprecate cfg defvol, and change newvol to value. Add configurable speaker panning [hap].
- Updated bgfx, bx and bimg to current upstream versions. Reverted "macOS, iOS: Removed OpenGL/OpenGLES support (commit 4693983242a698eaafed87faf4ffef1789adc8f9). Reverted "Fix macOS build" (commit ce2c2c13eda7d699051f75f598e740a447343a88). Reverted "macOS: Fixed deprecated warnings." (commit 10a8cb61f882ebc9bb376ee2341d003880b7037f). Added bgfx/README.mame explaining deviations from upstream [Julian Sikorski].

0.258:
======
- emu/devcb.h: Removed set_log and append_log. These helpers were unintuitive and inflexible. In particular, set_log on a write handler would only log when the value is non-zero, which doesn't appear to be the desired behaviour for several uses [Vas Crabb].
- frontend/infoxml.cpp: Consolidated source file path formatting in one place [Vas Crabb].
- pluginopts: Don't add library plugins to plugin.ini, clifront: Don't write plugin.ini file if no plugins were found [hap].
- plugins: Enable layout plugin by default [hap].
- render.cpp: Use std::clamp for clamping aspect ratio [AJR].
- samples: Add getters for num channels and loaded samples, advision: add 2 more options to configuration, minspace: make controls analog [hap].
- srcclean, #include order cleanup, and self-closing XML tag cleanup before MAME 0.258 release branch [Vas Crabb].
- Tidied up some recent changes, and more use of BIT helper [Vas Crabb].
- ui/devopt.cpp: Get decimal separator from C++ locale [Vas Crabb].
- ui/info.cpp, ui/simpleselgame.cpp: Replaced imprecise "driver" with "source file". Also flipped include order in bus/nscsi/cd.cpp to put module header immediately after prefix header [Vas Crabb].
- ui/info.cpp: Get decimal separator from C++ locale. Also random cleanup. emu/machine.cpp, emu/render.cpp: Catch exceptions by const reference. Various spacing and #include order cleanup [Vas Crabb].
- ui/info: Swap notworking/mechanical warnings, only add initial \n if there were warnings before it. Add \n before btanb warning strings, misc: replace pi constant with M_PI [hap].
- ui/selmenu.cpp: Show system source file in general info [Vas Crabb].
- ui/utils: Added a source file filter for system selection menu [Vas Crabb].
- various drivers: Removed some output().set_value() calls [Ivan Vangelista].

0.257:
======
- Allow building against Qt 6 on Linux [Jindřich Makovička].
- docs: Moved Lua API reference to its own section - the page was far too long. Remove link to Gaming-History/Arcade-History since the front page is covered in dodgy gambling links [Vas Crabb].
- osd/modules.lua: Fixed Qt MOC tool path detection [Jindřich Makovička].
- plugins/hiscore: Fixed detection of software item lines, and added support for Mega Drive Sonic Spinball [GregWeil].

0.256:
======
- bgfx: Hopefully fix glslang build with newer GNU C/C++ standard library verisons [Vas Crabb].
- Clean up several sprintf() deprecation warningss in non-3rdparty code [R. Belmont].
- cpu.lua: Correct name of header [AJR].
- emu/devcb.h and emu/devcb.h: Eliminated the need to call resolve() on callbacks [Vas Crabb].
- emu/devfind.h: Added a lookup() member function to device finders. This simplifies looking up the target device during configuration. It is useful when configuring child devices in things like CPUs with integrated peripherals [Vas Crabb].
- emu/device.h: Allow templated subdevice() and siblingdevice() to work with classes that don't derive from device_t (e.g. classederive that derive from device_interface) [Vas Crabb].
- emu/device.h: Removed device read/write line member macros in favor of explicit function signatures [Ryan Holtz].
- Metadata cleanups: update descriptions, added region and language info tag, moved XML comments to XML notes tag [ArcadeShadow].
- Moved PC VGA classes to separate source files, and added some additional variants [Angelo Salese].
- OSD/modules: Cleaned up most macOS deprecation warnings up to and including 10.13. This raises the hard minimum macOS and SDK versions to 10.13. In practice, the minimum since 0.252 has been macOS 11 Big Sur. 10.13/10.14/10.15 can be built and run with this unsupported patch:    https://gist.github.com/rb6502/8a1736ee3775f998e8e71faa47ae4b59 The patch works for me, but no guarantees are offered and it may break at any time [R. Belmont].
- Some more sprintf() deprecation warning fixes [R. Belmont].
- util/delegate.h: Added more noexcept.  Won't make much difference as most of the affected member functions are inline anyway [Vas Crabb].
- various: Add missing precompiled header [Patrick Mackinlay].

0.255:
======
- 3rdparty/lzma: Updated to LZMA SDK version 22.01 [Vas Crabb].
- Bugfix#08620 [Crash/Freeze] UI: Data plugin viewer crashes when loose software is mounted [Vas Crabb].
- Bugfix#08625 [Interface] UI: Systems that only require device ROMs may be incorrectly reported as not present [Vas Crabb].
- Bugfix#08644 [Gameplay] (nintendo/gb.cpp) gbcolor [konamic2,konamic4]: Game crashes before reaching the title screen [Vas Crabb].
- CHD: Add dvd support. better abstraction in general, multi-image support in arcade-type drivers [Olivier Galibert].
- chdman: Add extractdvd command [Olivier Galibert].
- Corrected capalisation of "SpongeBob SquarePants" and "SpongeBob Schwammkopf" in various software lists [Vas Crabb].
- image: Fix initialisation order, fix file menu enable, refine gdrom support. Executive decision: disk regions used the owner name (e.g., no :image) [Olivier Galibert].
- OSD/mac, OSD/sdl: Really inhibit full screen toggle in debug mode to prevent accidental crashes [AJR].
- softlist_dev.cpp: Validate characters in software list names [AJR].
- UI Refinements/fixes: UI/filemngr.cpp: Don't use facets of destructed locales. For an empty media device, look for another device with a mounted software item that has compatible parts before falling back to the file manager. This is useful when mounting a multi-part item via the menus, or for a system like the X68000 with multiple drives where the boot disk remains mounted but another application disk is automatically ejected when you're prompted for the next disk. UI/datmenu.cpp: Don't assume mounted images are always from software lists (fixes MT08620), and take the first image mounted from a software list rather than the last [Vas Crabb].
- util/unzip.cpp: Update for latest LZMA SDK [Vas Crabb].

0.254:
======
- 3rdparty/linenoise: Support keypad Enter on Windows [feos].
- Allow loading PNG/JPEG/MS DIB bitmaps from Lua, and cleanup. 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 [Vas Crabb].
- Apply workaround for debugger history command consuming ridiculous amounts of memory when jumping around large address spaces [AJR].
- bus/generic/slot.h: Added a variant of the non-power-of-two installer function that generates a decode mask [Vas Crabb].
- clifront.cpp: Changed -listbios to work more like -listslots, showing all BIOS options in a system [Vas Crabb].
- emu/emumem.h: Allow emu::rw_delegate to work with device finders [Vas Crabb].
- emu/emumem.h: Encourage use of read/write delegate creator helper functions (demo on Game Boy cartridges) [Vas Crabb].
- emu/recording.cpp: Set more precise frame rate for AVI files [feos].
- frontend/mame/luaengine.ipp Fixed i686 Linux GCC build [Vas Crabb].
- imagedev/avivideo.cpp: Fixed an object leak on unload.  Also changed some other media image devices to use smart pointers [Vas Crabb].
- Improved some Lua APIs: 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 [Vas Crabb].
- LUA engine: Dispose of notifiers before closing Sol. [Vas Crabb].
- Miscellaneous improvements: infoxml.cpp: Thread device processing. Gives about a 10% speed improvement overall, and avoids the need to mess with the locale of the ultimate output stream. debugger/win/consolewininfo.cpp: Show image mount/create error messages on the console. emu/devdelegate.h, util/delegate.h: Added deduction guides for common delegate creation patterns (only used in sega/segas16a.cpp so far). More noexcept on things that have no business throwing exceptions [Vas Crabb].
- OSD/windows: Create single-threaded COM apartment on main thread [Vas Crabb].
- Restored ability of for image devices to report specific error messages. Moved responsibility for displaying the error message in the UI to the caller rather than device_image_interface, and made device_image_interface always log the error along with the full path and error condition content. Gave several image devices more detailed error messages. Added some FIXME comments for apparent bugs [Vas Crabb].
- Small fixes and cleanup: emu/devfind.h: Allow range-based for loops on memory share finders. emu/emucore.h: Choose correct emu_fatalerror constructor when format string is an rvalue [Vas Crabb].


0.253:
======
- BugFix#08573 [Graphics] artwork: Text components are not correctly aligned horizontally [hap].
- Drop support for libc++ 6 altogether - it's missing std::unordered_map::extract [Vas Crabb].
- emu/devcb.h: Allow base device to be specified directly in delegate setters [Vas Crabb].
- emu/ioport.cpp: Changed config save/load behaviour for conditional fields. Only save configuration for enabled fields. Apply loaded configuration to all matching fields [Vas Crabb].
- emu/profile.h: Hopefully convince clang that profile scope helpers are important even in non-profile builds [Vas Crabb].
- emu/profiler.cpp: Disable assertion that profiler isn't enabled/disabled with profile scope active. Abort if the profile stack overflows rather than throwing an exception.  This is a developer feature and if it overflows, the code is broken. Calling a noreturn noexcept function generates less code than throwing an exception, which adds up [Vas Crabb].
- emu/profiler.h: Actually use scope-based profiling helpers. This makes the comment at the top of emu/profile.h less dishonest, and makes it easier to write exception-safe code. Got rid of some do { ... } while (0) loops that only existed so break could be used like a goto [Vas Crabb].
- emumem: Implement the passthrough handler priority ordering, fixes a number of 68000 interrupt problems. 68000: Ensure start_interrupt_vector_lookup/end_interrupt_vector_lookup are called only once per lookup. Fix delegates on delay methods m68000: Fix the vpa timings mac128: Use vpa for the via. First try at wait states [Olivier Galibert].
- emumem_mview: Add the forgotten key, allows to distinguish ram zones at the same address in different views, including recursively [Olivier Galibert]
- hlsl: Fixed regression in distortion shader. [Ryan Holtz].
- imagedev/floppy: Eliminate superfluous return value for load callback [AJR].
- input/input_dinput.h: Work around inability to have stdcall non-capturing lambdas (fixes 32-bit MinGW build) [Vas Crabb].
- language/Czech: removed some obsolete outdated translations. [Vas Crabb].
- LUA engine: Run everything in coroutines. Better bindings for device_state_interface. 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 [Vas Crabb].
- LUA: Be more strict with concurrency and multiple contexts [Vas Crabb].
- luaengine.cpp: Try to get around the clang error, attempt two. Hopefully fix clang builds. Expose UI controls toggle state [Vas Crabb].
- luaengine: Fix msvc link failure due to mismatched signature [Patrick Mackinlay].
- opengl/gl_shader_mgr.cpp: Hopefully work with more GL implementations [Vas Crabb].
- OSD/modules/input/input_dinput.cpp: Adjusted heuristics to work better with newer DualShock/DualSense controllers [Vas Crabb].
- OSD/modules/input: Modernised interface for enumerating DirectInput devices. Gets rid of some state in the winhybrid joystick module that's only used during initialisation. Always use DirectInput with desktop window in background mode. There are multiple issues with what MAME was doing, but the most glaring is that it violates the DirectInput interface contrac that requires the window associated with an open device must not be destroyed.  See documentation for IDirectInputDevice8::SetCooperativeLevel: "This parameter must be a valid top-level window handle that belongs to the process. The window associated with the device must not be destroyed while it is still active in a DirectInput device."  The previous code also prevented DirectInput controllers from working when using multiple windows if any window other than the first window had focus. Also fixed SDL builds not correctly recognising when all windows lose focus, and save state menu not appearing [Vas Crabb].
- OSD/SDL: Do not raise fatal error on -video auto with Wayland video driver [Belegdol].
- OSD: Cleaner way of dealing with input updates. Don't pump events when reading inputs. This was a drain on performance.  If anything is trying to poll inputs in a loop, it needs to call input_update() to ensure it gets up-to-date state. Removed support for SDL < 2.0.6; apple/apple2video.cpp: Code style cleanups [Vas Crabb].
- OSD: Fixed various OpenGL issues - fixes -nowaitvsync not working on Windows with -video opengl. Turned shader tool/shader manager into a class so multiple screens/windows don't nuke each other. Don't try to get supported extensions without a valid GL context with Windows OSD. Use per-context GL function pointers for shader manager and for all functions when using GL dispatch.  Windows doesn't guarantee extension functions from one context are valid for another [Vas Crabb].
- OSD: Moved some windows-specific stuff into osd/windows/window.{h,cpp} [Vas Crabb].
- plugins/autofire, plugins/inputmacro: Don't be so eager to create empty settings folders [Vas Crabb].
- plugins/console: Fixed tab completion after linenoise update. Can now cycle through candidates by repeatedly pushing Tab. Also cleaned up Lua thread context object a little, and made it possible to pass any Lua object as a status value [Vas Crabb].
- plugins/data: Use local sqlite3 library variable [Vas Crabb].
- Reduce warnings that need to be suppressed to build linenoise [Vas Crabb].
- Removed from source arcade.flt and mess.flt files [Vas Crabb].
- Removed local copy of SDL source and updated Android build support [Miodrag Milanović].
- render/d3d/d3dhlsl.cpp: Fixed alpha value when clearing target [Ryan Holtz].
- render/sdlglcontext.h: Added missing override qualifier [Vas Crabb].
- rendlay: Fix accumulated rounding error when drawing text [hap].
- Retired the over-stretched "system type" flag.  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) [Vas Crabb].
- scripts/minimaws: Fixed last-minute change to zipfile use. Let command-line romident identify media inside zip archives [Wilbert Pol].
- tools/srcclean.cpp: Escape 'high' Unicode characters found in strings rather than nuking them [Vas Crabb].
- tools/srcclean.cpp: Use the same rules for character literals and strings in C++ [Vas Crabb].
- UI/menu.cpp: Don't pass IPT_UI_BACK event to the implementation when dismissing the menu [Vas Crabb].
- UI/ui.cpp: Honour UI enable for machines without keyboards. Cleaned out more leftover crud and removed debug printfs [Vas Crabb].
- Update accumulating relative inputs exactly once per frame. This fixes "amplification" effects that would happen if the frame rate rose above 100 Hz (whether by unthrottling or otherwise). Synchronise with wall clock any time inputs are read.  Not doing this has weird effects on relative inputs with frame skipping and contributes to unresponsiveness of menus. Reduce visual latency for mouse movement on menus when paused or skipping frames.  The rest of the code changes to menus won't provide benefits until draw can happen after event handling [Vas Crabb].
- Updated Czech and Slovak UI translations. [Milan Galcik].
- Updated forked linenoise to latest upstream. This removes the need to force it to build as C++, and adds proper UTF-8 support for Windows. Since this is a fork of linenoise, there's no hope for getting lua-linenoise to sync with it upstream. I made the bare minimum changes to keep it working, but didn't add bindings for new functionality (e.g. multi-line editing) [Vas Crabb].
- Updated Greek UI translation [BraiNKilleRGR].
- Updated Japanese UI translation [Katsuhiko Kagami].
- util/bitmap.cpp, util/palette.cpp: Marked lots of things constexpr. Bitmaps don't throw exceptions on allocation failure, they just become invalid. Almost nothing in MAME actually checks for this [Vas Crabb].
- util/strformat.cpp: Traded away some unnecessary flexibility for more compact code. The stream objects must derive from std::basic_ostream now - they can't just be any old objects with the expected operators [Vas Crabb].
- Various cleanups: Isolated the speedup code in the Eolith base state, so eolith16 and vegaeo aren't inheriting a pile of stuff they don't need. Got rid of a few of the remaining MCFG macros [Vas Crabb].
- Various devices: Correct placement of U integer suffix in definitions of shifted LOG_xxx constant macros [AJR].
- Various updates, mostly around LUA: 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 [Vas Crabb].
- windows: Blind fix for the debugger [Olivier Galibert].

0.252:
======
- 3rdparty/bimg: Fixed compilation on MinGW [Justin Kerk]. Just disable SSE on all 32-bit builds to be safe. Try to keep all the builds working. Disable SSE on 32-bit x86 - it assumes x86-64 integer ALU is available when using SSE [Vas Crabb].
- 3rdparty: Suppress unused variabe warnings for SQLite3 - clang 15.0.5 for Windows considers sqlite3_os_type unused [Vas Crabb].
- Added GitHub issue template for bug reports [Firehawke, Vas Crabb].
- BGFX, render/d3d: Improved NTSC parameter descriptions and ranges [benrg].
- BGFX: Refined configuration handling: sort screen chains by none, default, then collation order (rather than whatever order the filesystem yields). Correctly persist settings across fullscreen toggle when explicit screen chains are configured. If chains are specified for a single window only, apply them to all windows. Treat empty string for screen chain as "default" rather than crashing. Changed default setting for bgfx_screen_chains to an empty string so chain selection will be saved/restored per system with mame.ini file created by -cc with no other settings [Vas Crabb]. Back out some formatting changes to minimise conflicts. Save values of most sliders per-system [Vas Crabb].
- debugger/win: Cascade positions of new debugger windows [Vas Crabb].
- debughlp.cpp: Use ovectorstream instead of static char array and sprintf [AJR]
- DOCS: Updated default joystick providers [Vas Crabb].
- 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. Moved I/O port field type enum to its own header and sorted UI controls so they appear in a more logical order. Added a UI Help control. Currently only used by analog inputs menu. Renamed inputs that were causing confusion. "Bill" and "Track" were causing confusion for translators and hence likely causing confusion for many users, especially those who are not native English speakers. "Track" as an abbreviation for "Trackball" was frequently being mistranslated, e.g. in the sense of a CD track selection button or even in the sense of a railway track. There's no reason to abbreviate it.  "Bill" in the US English sense as a banknote is too ambiguous and was causing confusion for translators. It's better to use the less ambiguous "Banknote". Corrected Greek translations of "Trackball" [Vas Crabb].
- EMU/input.cpp: Fixed unintuitive behaviour when an absolute field is assigned an OR combination of a relative control folled by an absolute control (e.g. Mouse X or Joy 1 LSX). Also fixed reading axis input sequences where an axis code is followed by a switch code (these can only be produced by manually editing configuration files, not through MAME's UI), and fixed the returned type when multiple relative axes sum to zero. Use a better strategy for assembling input code names that uses fewer temporary strings and doesn't require use of the non-Unicode-aware space trimming function (fixes MT08552) [Vas Crabb].
- EMU/inputdev.cpp: Separateed analog axis deadzone and switch threshold settings, reduced default deadzone, and fixed a potential division by zero if the deadzone and saturation settings are equal [Vas Crabb].
- EMU/ioport.cpp: Fixed behaviour of absolute analog fields where range passes through zero - it previously only worked for specific combinations of mask, minimum and default.  Removed a workaround from universal/getaway.cpp that is no longer necessary [Vas Crabb].
- emu/romentry.h: Got rid of long-obsolete ROMENTRYTYPE_CARTRIDGE, and improved comments on ROM entry type constants [Vas Crabb].
- EMU/validity.cpp: Added check to catch I/O port fields using UI input types [Vas Crabb].
- Filled in a few Chinese translations [Vas Crabb].
- font_sdl: Avoid variable-length array. Better fix for variable-length array [Patrick Mackinlay].
- Hopefully fix SDL version detection macros for controller types [Vas Crabb].
- image_handler.cpp: Eliminate use of sprintf for error messages [AJR].
- Implemented probe for D3D module to detect lack of D3D9 sooner [Vas Crabb].
- mame/a*: put drivers in anonymous namespaces where applicable, updated #ifndef guards to the current tree structure [Ivan Vangelista].
- 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.  Enabled dinput, xinput and winhybrid modules for Windows SDL builds, and enabled background input for dinput and xinput (and by extension winhybrid) modules. Also fixed some COM and X11 resource leaks. Flipped SDL mouse button order to match Windows, and exposed vertical and horizontal scroll as Z and rZ axes. Moved SDL UI event handling out of input devices into OSD object. Fixed Linux build [Vas Crabb].
- OSD/modules/input_dinput.cpp: Fixed hat switches being stuck in up position when input is suspended in the background. Improved polling logic [Vas Crabb].
- OSD/modules/input_rawinput.cpp: Changed lightgun Z axis token so it's correctly identified as a relative axis (it maps to the scroll wheel equivalent) [Vas Crabb].
- OSD/render/draw13.cpp: Got rid of a simple_list. Fixed leaked/double freed texture data. The texture malloc's its own storage if the copy info doesn't have the passthrough flag set - the test was reversed [Vas Crabb].
- OSD/tools: xinput.h depends on windows. Avoid use of non-standard variable-length arrays [Patrick Mackinlay].
- OSD/windows/winutil.cpp: Better way to get module handle. This was leftover support for Windows 2000 and earlier that hadn't been cleaned up [Vas Crabb].
- OSD: Turned video modules into actual modules, fixed various issues. Don't ignore the return status of OSD module initialisation. Attempt to fall back to an alternate module if the selected module fails to initialise. Log more useful diagnostic information at verbose level. Fixed BGFX crash on exit after toggling fullscreen. Also persist more settings than just the selected chains across toggling fullscreen. Turned video modules into OSD modules in the same sense as all the other OSD modules. They now use the same selection/fallback mechanism as all the other modules without special extra code in the OSD implementations. Untangled some object ownership mess. Windows own renderers, OSD objects own windows. Fixed a refrence loop that caused the first window object to always leak. Don't create renderer object until after underlying window has been created.  Fixed issues with order creation/destruction when toggling fullscreen or changing prescale in fullscreen with -switchres in SDL builds. Use more smart pointers in BGFX and Direct3D render modules.  Most of the code now reutrns a smart pointer when handing over ownership or a naked pointer when retaining ownership.  Fixed a few leaks and simplified cleanup code. Encapsulated various OSD modules better. Supply OSD object to modules on initialisation. Encapsulated some event handling in the OSD objects rather than leaving it in free functions. Put various stuff in namespaces. Made various parts of the input code less dependent on concrete emu objects, and reduced inappropriately passing around the machine object. Made input modules less dependent on OSD implementation. Encapsulated some stuff and got rid of some vestigial newui and SDL1 support code. Cleaned up some interfaces.  Moved OSD options classes to their own files. Prepare to remove main.h from emu.h - it's mostly used to get the application name, which the vast majority of emulated devices don't need to do. Improved XInput guitar support and added XInput Rock Band keyboard support. Better button names for NVIDIA Shield and Xbox One controllers with SDL game controller module. Added option to accept SDL game controller/joystick input when losing UI focus. I am officially incapable of keeping track of which OSD I'm working with on each change (fix SDL build). Work around another observed invalid XInput capabilities report. Added support for guitar and drum kit controllers via XInput. Fixed BGFX crash on toggling fullscreen on Linux. Also fixed draw13.cpp upsetting older versions of clang. Allow BGFX to bounce cleanly when toggling fullscreen on Windows with multiple output screens/windows. Fixed names of DualSense controller buttons with SDL Game Controller provider. Fixed names of face buttons on Switch Pro Controller with SDL Game Controller provider. Include mapping string in verbose output when enumerating SDL game controllers. Improved SDL Game Controller joystick provider: Allow fallback to joystick API for devices without game controller mappings. Detect controller reconnection. Force Switch Pro Controller ZL/ZR to act like buttons. Added button names for Google Stadia controller. Also fixed dumb copy/paste error on my part in Windows clipboard code. Added support for mapping files to sdlgame joystick provider and made it default with SDL. This changes behaviour, however I think it's a net positive: Most games using Steam Input or SDL2 to read game controllers have this behaviour, so users have come to expect it. This module is better at giving meaningful names to buttons on common controller, and assigning axes consistently. Button/axis mapping files using a widely-used format are supported. The old behaviour is still available with `-joystickprovider sdljoy` if anyone wants it.The new option for controller mapping files is in the general OSD options rather than SDL options as it can be extended to DirectInput in the future. Work around bad XInput capabilities report from Retro-Bit Saturn pad. Recognise Joy-Con pairs with sdlgame input module. Fixed constant name (helps to build the right OSD). Better XInput and SDL game controller input enhancements: Added initial support for XInput controller subtypes, starting with driving, arcade and flight controllers. Check XInput capabilities to ignore buttons and hats that aren't present. Added preliminary SDL Game Controller joystick provider.  Reconnection and mixed Game Controller/Joystick devices are unsupported. Show the input token for the highlighted control on input device menus. Better XInput rhythm game controller support on Windows: Better support for extended controller type information. Support for velocity sensitive six-drum controller. Don't ignore button capabilites for keyboard controller. Still more XInput rhythm game controller support for Windows: Added support for DJ Hero turntable controller. Added support for Rock Band keyboard controller pedal. Fixed pickup selector switch on guitar controllers. Added an option to choose the network provider module. Mostly useful if you build with both TUN/TAP and pcap support included, or if you want to disable emulated networking completely. Added option to select MIDI provider module (currently only PortMidi and the dummy module are available). Also put various things in namespaces, and fixed builds including SDL sound module with native Windows OSD [Vas Crabb]. Better scaling factors for XInput DJ Hero turntable dials [DarkMoS].
- render/bgfx: Fixed Linux build. Got rid of a lot of unnecessary object copying during setup. Fixed texture object lifecycle issues [Vas Crabb]. Fixed per-pass blend handling issues (addresses MT07586 and MT07587) [Ryan Holtz].
- render/drawd3d.cpp: Fixed prescaling without HLSL - WRL COM pointer has some surprises. Also added some additional error checking [Vas Crabb].
- Small batch of input refactoring: 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 [Vas Crabb].
- softfloat: De-conflict include guards [Patrick Mackinlay].
- srcclean and bump copyright date on language files to 2023 [Vas Crabb].
- UI/analogipt.cpp: Fixed bar graph display for fields with ranges that wrap through zero. Fixed failure to display localised analog input adjustments help [Vas Crabb].
- UI/inputmap.cpp: Don't use immediate cancel to cycle between clearing and restoring default assignment (use UI Clear instead) [Vas Crabb].
- UI: Allow menus to set required space above and below menu when metrics change.  Fixes the initial bad layout on the system selecton menu, or bad layout after resizing windows. Don't use UI Select to restore defaults - people should be getting used to the UI Clear input by now.  UI Select cycle multi-value items instead. Reduced the number of files needing to include the dreaded emu.h. Got some implementation out of headers. Give menus an opportunity to recompute metrics on window resize. Also reworked calculation of menu geometry in general, and limited width of left panel on system/software selection menus. Fixes images in the right panel and icons on the system/software selection menus not being scaled correctly when the window is resized (MT08539 is an example of this). Fixes bad font size selection at low resolutions when using bitmap fonts like uismall.bdf (GitHub #7105). Fixes collapse/expand arrows on left/right panels of system/softwre selection menus getting bigger if the window is made narrower. Got rid of more UI globals. Cache more metrics in system/software selection menus. Don't lose a BDF font specified on the command line when changing font size via the UI. For win32 debugger, behave as though most recent history item was just entered when restoring session state [Vas Crabb].
- unzip.cpp: Minor logging improvement [AJR].
- Updated BGFX, BX and BIMG [Miodrag Milanović].
- Updated Chinese UI translations [YuiFAN].
- Updated Japanese UI translation (added new messages, fixed some inconsistencies) [Katsuhiko Kagami].
- Updated png.py to 0.0.20 (last version before Python 3.4 support dropped) [Vas Crabb].
- Updated Ukrainian UI translation [Stanley Kid].
- Use EQUIVALENT_ARRAY to avoid issues with std::size on member arrays, enable warnings for VLAs in C++ [Vas Crabb].
- validity.cpp: Be a bit more paranoid with null pointer checks; also disallow empty strings in BIOS definitions [AJR].
- Win32 debugger: don't skip a history item when initially pressing down [Vas Crabb].
- xmlfile.cpp: Replace implementation of normalize_string with similar one in infoxml.cpp that returns a new std::string instead of a static buffer [AJR].

0.251:
======
- Added recently-added system driver source files to arcade and MESS filter files [MASH].
- Bugfix#08535 [Crash/Freeze] All: Entering full-screen mode with multiple output windows can cause MAME to crash [Ryan Holtz].
- C++ guidelins update and cleanup: 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 [Vas Crabb].
- debugger: Improved session save/restore. Qt: Save expression for memory and disassembly views. Made command history behave more like Cocoa. Added expression history and made behaviour more like Cocoa. Refactored global notifications to use signals. Win32: Increased command/expression history size to 100 items. Cocoa: Save state of device info viewer windows. Qt/Win32/Cocoa: Save command/expression history. Add missing override qualifiers in Qt debugger. Hopefully fix undefined names in Cocoa debugger [Vas Crabb].
- DOCS: Added preliminary guide for would-be contributors [Ryan Holtz, Vas Crabb, O. Galibert].
- DOCS: Fixed editing errors in C++ coding guidelines [Vas Crabb].
- Fixed some errors in Brazilian Portuguese translation [cd4053b, Wellington Uemura].
- frontend: Load INI files for the 'empty' driver that runs under the system selection menu [Vas Crabb].
- imagedev: Allow command-line creation for tapes/memory cards/printouts. Also made image devices not request read access when creating files for write-only devices [Vas Crabb].
- imgtool/stream: Remove some unused functions [AJR].
- OSD/modules/file: Don’t magically substitute environment variables when opening files [Nathan Woods].
- OSD/windows: Fixed a potential crash when toggling full-screen mode (MT08535) [Ryan Holtz].
- Software list update: megadriv.xml, pce.xml, pcecd.xml, x68k_flop.xml: Added cotroller support usage notes for a few games. pcecd.xml: Noted the required CD-ROM system cards in usage notes, fixed capitalisation and removed unnecessary markup in descriptions. megadriv.xml: Added compatibility tag for gforce2a (broken graphics on PAL consoles) [Vas Crabb].
- UI: Rationalised right panel behaviour: Removed the "default" state for the image tab where it would show different things for different types of machine - it just confused users. Remember the selected tab and image in the right panel. State for system selection menu is remembered across sessions. Last used state for software selection menus is remembered across sessions. Within a session, state is remembered separately for recently selected machines, similarly to the way filter selection is remembered. Fixed some focus order issues in the software selection menu [Vas Crabb].
- util/options.cpp: Fixed overriden default option values from OSD . Fixed issue when copying options that don't carry values [Vas Crabb].
- util/xmlfile.cpp: Fixed bug where copyInto failed to copy nodes [Vas Crabb].

0.250:
======
- DOCS: Fixed a markup error. Update instructions for adding mame package repository in MSYS2 [Vas Crabb].
- EMU/devdelegate.h: Fixed use-after-move in functoid constructor [Vas Crabb].
- EMU/sound.cpp: Don’t force lower sample rate for dummy sound output module [feos].
- emumem: Fix range tracking when creating a subdispatch [Olivier Galibert].
- FORMATS/dmk_dsk.cpp: Implemented FM and mixed FM/MFM read support (addresses MT08507) [pnp2084].
- HASH/*: Remove zero offsets from cassette and CD-ROM setup floppy lists [kmg].
- hiscore.dat: Updates [Leezer].
- imgtool.cpp: Future-proofing [AJR].
- MISC: Remove unneeded calls to driver_device [hap].
- Move debugger command parameter validation helpers into debugger_console [AJR].
- OSD/eigccx86.h: Added optimised rotate helpers. These perform better than the constexpr function when the value is not known at compile time.  If the value is known at compile time, you probably shouldn't be using these utilities anyway [Vas Crabb].
- OSD/modules/monitor: Fixed an apparent bug in what appears to be a setter member function [Vas Crabb].
- PLUGINS/autofire, plugins/inputmacro: Use clear_value to release I/O port fields [Vas Crabb].
- UI/selgame.cpp: Fixed display of software favourites [Vas Crabb].
- UI/state.cpp: Use path concatenation utility function [Vas Crabb].
- Updated Brazilian Portuguese UI translation. [Felipe]. Updated Czech and Slovak translations [Milan Galcik]. Updated Greek user interface translation [BraiNKilleRGR].
- UTIL/path.h: Fixed narrowing warning from older versions of clang. [Vas Crabb].
- UTIL/unzip.cpp: Fixed integer promotion issue in ZIP16 member header handling [Vas Crabb].
- UTIL/xmlfile.cpp: Got rid of custom allocator functions that have alignment issues and no longer provide value [Vas Crabb].

0.249:
======
- Added Windows clang build to GitHub CI workflows [invertego].
- Changed GitHub CI to include chdman and unidasm in artefacts, and build the tiny subtarget with GCC on Linux [Vas Crabb].
- corefile.h: Move filename utilities to path.h [AJR].
- debugger/osx: Avoid error when MAC_OS_X_VERSION_10_15 is not defined when using older SDKs [Kelvin Shelock].
- device_palette_interface: Make information overrides noexcept [AJR] 
- diagnostics/diagnostics_win32.cpp: Fixed const correctness, fixing clang Windows build [invertego].
- eminline.h: Add mul_16x16 inline function to perform a signed 16x16-bit multiplication with 32-bit result. This was moved from cpu/e132xs to unite it with the analogous 32x32 operations. Add rotl_32, rotr_32, rotl_64 and rotr_64 inline functions to perform 32-bit and 64-bit circular shifts in either direction by the specified number of places, modulo 32 or 64. It is anticipated that these will eventually be replaced by standard functions in C++20's <bit> header, and so they have been given similar signatures and semantics (which are also validity-checked). Remove LSL, LSR, ROL and ROR macros from cpu/arm and cpu/arm7 to ameliorate unnecessary obfuscation [AJR].
- floptool: Added support for specifying volume attributes in when creating a formatted image [Nathan Woods].
- formats/fs_isis.cpp: Added support for Intel ISIS-II filesystem [F. Ulivi].
- imgtool: Make the Apple formats build, but they will not function (did they before?) [R. Belmont].
- luaengine_input.cpp: Fixed input device items upper bound [Golden Child].
- mactoolbox.h: Move std::function template deduction guide to more accessible core header [AJR] 
- Move UTF8_xxx string literal macros to new header in lib/util [AJR].
- Regenerated UI translation files [Vas Crabb].
- Remove legacy logging functions in various drivers and devices [AJR].
- UI: Added support for showing localised system names in Favorites [Katsuhiko Kagami].
- Updated German UI translation [Raf Tacker].
- Updated Ukrainian UI translation [Stanley Kid].
- util/corestr.cpp: Refactored core_strwildcmp and core_iswildstr to accept std::string_view arguments [Nathan Woods].

0.248:
======
- Added a crude dark theme for the Win32 debugger. Also made a start on weaning the Qt debugger off its weird configuation objects.  It can now save more view state with less string comparisons on memory labels, but it can't restore all of it yet [Vas Crabb].
- Adding missing emu.h include [Olivier Galibert].
- bgfx: Removed obsolete sample layout files, updated documentation [Vas Crabb].
- debugger/win: Added capability to save/restore window arrangement. Format is mostly compatible with the Cocoa debugger, besides reversed vertical positioning. Made Qt debugger more compatible with configuration format used by Win32 and Cocoa debuggers [Vas Crabb].
- debugger: Added exception points as a new class of "points" triggering on specific exception numbers, with a similar set of commands to breakpoints and registerpoints. Removed the per-instruction callback hook from device_debug. Only one driver was using this (rmnimbus.cpp), and what it was doing with it could be done more cleanly with exception points. Change the type of the action string parameter for "points"-creating methods and make some parameters optional for those. Change trace file logging to use a std::ostream instead of FILE * to take better advantage of strformat [AJR]. Made closing the Qt debugger console window hide all debugger windows and run the emulated machine (debugger windows will be shown on next user break or breakpoint hit).  This matches the behaviour of the Win32 and Cocoa debuggers. Made Qt debugger clean up its windows on exit rather than on subsequent starts.  This fixes GitHub #9789. Made Qt debugger less reliant on global variables, and made code to save and load configuration a bit less convoluted. It still needs more refactoring on this front, but it's in slightly better shape now. Made Qt debugger a bit less crashy on invalid configuration.  Still plenty of ways to crash it, but every little bit counts. Made Qt debugger do less comparisons on menu item names and object names - it might be possible to localise one day. Moved all the C++ debugger implementations into namespaces. They're using awfully generic class names, so it's about time [Vas Crabb].
- debugview.mm: Raise requirement for Dark Mode to 10.15. [R. Belmont, kmg].
- diagnostics: Ignore all but type 0x20 symbols [Patrick Mackinlay].
- docs: Corrected parent menu for input devices menu. 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 [Vas Crabb]. Updated build prerequisite package names for newer Ubuntu versions [Golden Child].
- emu/config.cpp: Preserve elements with no registered handlers in default and system configuation files [Vas Crabb].
- emu/emumem.cpp: Added the bank tag to a fatal error message where it was missing [Vas Crabb].
- 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 [Vas Crabb].
- emu/video.cpp: Added a space before %FPS in speed text [kmg].
- formats/fs_fat.cpp: Fixed use-after-std::move issue in constructor [Nathan Woods].
- formats/fsmgr.cpp: Changed fs::manager_t::enumerate_f to simplify logic in file system implementations [Nathan Woods].
- imagedev/picture.cpp: Added extensions for supported BMP and JPEG formats [Vas Crabb].
- Language updates, software demotions and minor code cleanup: Updated Chinese UI translations. [YuiFAN]. Updated Ukrainian UI translation. [Stanley Kid].
- OSD/modules/debugger/debugqt.cpp: Don't try closing windows if debugger console wasn't created [Vas Crabb].
- OSD/network interface cleanup. Move osd_midi_device from osdcore.h to osdepend.h Move osd_list_network_adapters from osdcore.h to osdnet.h (was already defineduniquely in osdnet.cpp). Move #include <cstdarg> from osdcore.h to emu.h. Remove dinetwork.h from emu.h [AJR].
- 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 [Vas Crabb].
- schedule: rename add_scheduling_quantum to add_quantum, added perfect_quatum and use that for most cases of boost_interleave [hap]
- 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 [Vas Crabb].
- Update docs on romcmp [AJR].
- util/bitmap.cpp: Fixed potential use-after-free issues with bitmap palettes [Vas Crabb].
- util/bitmap.h: Fixed wrapping constructors for indexed bitmaps taking the wrong parameter type (nothing was using them before) [Vas Crabb].
- util/corestr.cpp: Changed core_stricmp to take std::string_view parameters [Nathan Woods].
- util/unicode.cpp: Fixed the version of utf8_from_uchar that returns std::string blowing up on invalid codepoints [Vas Crabb].

0.247:
======
- bus.lua, machine.lua: fixed a couple of entries [Ivan Vangelista].
- bus: Get rid of some dubious tag manipulation. The implementation details of how the cartridges allocate storage for memory really shouldn't be part of the interface. Having tags in the headers encourages people to depend on these implementation details. This gets rid of it in most of the headers. A few particularly leaky abstractions (bbc/rom, electron/cart, gba, generic, jakks_gamekey, m5) depend on this, so it can't be  removed in those cases without further refactoring to encapsulate the slot devices better. This doesn't change behaviour, it just mechanically removes stuff from the headers and uses device_t::subtag rather than string manipulation on tags.  Most of the cartridge devices shouldn't have rom_alloc member functions at all - the region created by the software list loader can be used directly when loading from the software list, and the slot can allocate a region with the same tag when loading loose software.  This avoids creating an extra region and copying the data when loading from the software list.  See vboy for an example that doesn't allocate a superfluous region [Vas Crabb].
- chdman.cpp: Fixed TOC session type detection when extracting CD-ROM images [Windy Fairy].
- Cleaned up extraneous spaces in various software lists [kmg].
- debuggdbstub.cpp: implement thread alive command [Sandro Ronco].
- debugger/debuggdbstub.cpp: Attach to first CPU device found in system rather than expecting fixed tag [Nathan Woods].
- debugger/debuggdbstub.cpp: Fixed failure to find CPU [Vas Crabb].
- docs: Updated instructions for compiling with Emscripten. Update emscripten compile instructions to reflect recent source rearrangement [algestam].
- emu/validity.cpp, ui/info.cpp: Base "no sound" check on speaker devices. Currently the speaker device is the only way sound can get to the OSD layer, so its presence or absence determines whether the emulated system is capabale of producing sound.  A few systems use chips with sound capability for other purposes (typically I/O or video) while leaving the sound outputs disconnected. These systems should display the notice about the absence of sound output [Vas Crabb].
- emu: make memory_share_creator endianness param optional, it is nonsense for byte-width RAM [hap].
- Fix up software list cleanup. There are a number of places where multiple spaces were being used intentionally (extracted directly from disk labels, separating titles from subtitles, tabulation, etc.). Also fixed misspelled Twinbee Yahho titles [Vas Crabb].
- formats/fdos_dsk.cpp: Added FDOS disk format for the SWTPC 6800 [Michael R. Furman].
- formats/flex_dsk.cpp: Added FLEX 1.0 (MiniFLEX) disk format for the SWTPC MF-68 Disk System [Michael R. Furman].
- formats/fs_fat.cpp: Added preliminary read-only FAT file system implementation [Nathan Woods].
- formats/fs_oric_jasmin.cpp, floptool.cpp: Fixed some compiler warnings about unused variables [napobear].
- frontend: Swallow save state slot key/button [Vas Crabb].
- hash\*.xml:  Cleanup of some software lists of various spacing and format issues.  More to come. Cleanup of some software lists of various spacing and format issues (part 2).  More to come [Tafoid].
- Lua scripting enhancements: 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 [Vas Crabb].
- misc: Remove unused variables that may give compiler warning [hap].
- 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 [Vas Crabb].
- osd/modules/input: Include device serial number in ID when available for SDL joysticks [Vas Crabb].
- render: give cloneof ext artwork priority over internal artwork [hap].
- Switched to shorter type names. Tightened up spacing in function declarations and definitions. Removed some now-unnecessary trampoline functions. Hooked up Rx and Tx clocks for MIDI port 1; MIDI in/out now works [MooglyGuy].
- Tweaked MAME icon: Use flat gradient style rather than embossed edges. Made rightmost stroke of the M thicker. Use a dark border to emphasise the outline on light backgrounds. Use flat style without anti-aliasing up to 64*64. Manually tweaked small sizes to preserve sharp mitres [Vas Crabb].
- UI/icorender.cpp: Revert initialisations that can hide real bugs. MSVC isn't smart enough to detect that these can only be used after being assigned while clang and GCC can work it out fine. Initialising them to zero at declaration has the potential to mask real bugs if some code path tries to use them without assigning them. Code flow analysis (e.g. Coverity) or memory analysers (e.g. valgrind or Purify) won't pick up on the buggy path because the variable will technically be initialised. MSVC is problematic when it comes to warnings about uninitialised variables in general. Unfortunately MSVC has no option to selectively treat warnings as errors, unlike clang/GCC which have -Wno-error= which we use extensively. Until Microsoft addresses these issues, you'll have to use NOWERROR=1 when building with MSVC. Also, some cleanup [Vas Crabb].
- util/cdrom.cpp: Pass physical flag to read_partial_sector in read_subcode (fixes extracting CHD CD-ROMs) [Windy Fairy].
- Work around older versions of libc++, tidy up some recent changes [Vas Crabb].

0.246:
======
- Added CI job to check for likely mame.lst errors [Vas Crabb].
- Added GitHub actions workflow to build bgfx shaders and upload as an artefact [Vas Crabb].
- Added make opions for filter file, adjusted source path display. Added SOURCEFILTER option to specify a driver filter file in your make options, e.g. like make SUBTARGET=custom SOURCEFILTER=mydrivers.flt (or put it in your useroptions.mak if you'll be using it a lot). It functions more-or-less like SOURCES on steroids. Changed the way system/device source file paths are displayed to suit the new source layout better. INI file loading hasn't changed, that still just uses the base file name. Added overlooked trigger to src/bus.lua to include NES controller bus if the NES zapper sensor is needed [Vas Crabb].
- Added support for directory names in SOURCES= [Vas Crabb].
- Allow leaving off the src/<target>/ prefix in SOURCES= [Vas Crabb].
- Assume any src/<target>/* folder containing C++ source is a project. Only 'shared' is special-cased [Vas Crabb].
- BGFX: Improved Gaussian blur, halation and default gamma for crt-geom and crt-geom-deluxe shaders [cgwg].
- BGFX: Re-built shaders for crt-geom update [Vas Crabb].
- Cleaned up #includes in src/osd [AJR].
- Converted nl subtarget to use a filter rather than a script and driver list [Vas Crabb].
- Docs: Added notes about issues building MAME with Visual Studio. I accidentally a word on the internet (fixed missing word in Visual Studio compiling notes) [Vas Crabb]. Fixed another missing word [Robbbert].
- Docs: Updated documentation on compiling MAME. Updated instructions for building subsets of MAME using the SOURCES option. Added descriptions for several more "useful" settings. Bumped documentation version as the build system changes are not in 0.245 [Vas Crabb].
- Don't put full path to target resources in generated version resource file [Vas Crabb].
- Eliminated cross dependencies between driver projects. Driver projects now use globs to search for files.  There's less effort editing the Lua files when things are moved around. Remember it won't automatically pick up a change, so if you add/remove/change files, you should touch makefile to get it to find the change. Driver projects no longer get the top-level MAME directory as an include path. This means you need to think about how you structure things and not introduce nasty circular dependencies. Subtarget projects can now be generated entirely from .flt files without the need for separate Lua scripts and .lst files. This has been done for the arcade, mess and virtual targets.  It effectively works like a SOURCES= build on a large scale. This means you need to organise things so the dependency genrators can find them. There's an issue with the mess subtarget right now. For some reason, decmate2.cpp isn't picking up the dependency on the PDP8 CPU core for the HD6120 device. I'll debug it later [Vas Crabb].
- Emu: Fixed issues with memory views and snapshot naming. Include device tag in memory view save item registration names. Without this, instantiating two of the same device (or two devices with identically named memory views) causes a fatal error on start. Fixed -aviwrite/-mngwrite with -snapview native more than two screens. Previously it would attempt to use the same file name for all screens but the first. Improved naming of snapshots, especially when using -snapview native with -aviwrite/-mngwrite. The automatically included screen number should come before the extension if supplied. Also, assume that users actually know what they’re doing if they include a dot in a snapshot filename pattern [Vas Crabb].
- Fail earlier in the build process if SOURCES= specifies no files containing system definitions [Vas Crabb].
- formats/fs_cbmdos.cpp: Changed enumerate function to correctly look for single-density format [Nathan Woods].
- Made parent/clone terminology consistent in Chinese translations [YuiFAN].
- mess.flt: fix compile [hap].
- More quality of life features for new source layout: Added support for wildcards in .flt filter files. You'll need to quote them to avoid /* being parsed as a comment initiator, like "seta/*.cpp" on a line including the quotes. Added an XSLT filter for listing system driver sources, like mame -lx | xsltproc scripts/xslt/list-system-sources.xslt. Converted the ci subtarget (which isn't really used much) into a .flt rather than .lua and .lst files. New working clones [Vas Crabb].
- Moved AU & NZ computers into a project [Robbbert].
- OSD/SDL: Removed keyboard/mouse/joystick device mapping options. The keyboard and mouse device mapping options did nothing at all, mostly because of lack of support for separating inputs from multiple devices. The joystick options were useless when you have two of the same kind of controller, and you can achieve the same thing with controller configuration files [Vas Crabb].
- Plugins/data: Fixed story.dat errors; virtual.flt: Use glob pattern [Vas Crabb].
- Prevent source files in src/devices from inadvertently including headers from src/mame [Miodrag Milanović].
- Prevent src/devices from inadvertently including headers from src/mame [Miodrag Milanović].
- Rearrange source to match project structure (done using the script in src/tools) [Vas Crabb].
- Reduced project cross-dependencies, slightly improved renaming script [Vas Crabb].
- Removed leftover strings from Brazilian Portuguese translation [Vas Crabb].
- Retired the messshared project (combined with shared) [Vas Crabb].
- Set minimum required permissions on GitHub Actions workflows [neilnaveen].
- Source org: Add readme for ddr, cccp. move kr1601rr1 earom chip device to devices/machine. Merge elektronika with cccp. Move odyssey2 driver to philips folder. Merge veb with ddr. Merge terminal with cccp. Remove obsolete filename prefix from aci, cxg, hegener, fidelity, novag, saitek. Rename handheld to misc_handheld and move some files over. Rename fairch to fairchild. Merge intv with mattel. Create a misc_chess folder. Rename mb to miltonbradley, let's move the vectrex to this folder. Rename aci to appliedconcepts, hegener to hegenerglaser. Rename cbm to commodore. Rename ascii to msx. Add extra comment to cccp, ddr, sfrj. Latin letters for cccp. Let's merge the pc folders, also remove misc_ from chess/handheld because i can't make up my mind. Remove specialsound.* from shared folder. Remove obsolete prefix from bandai_design_master filename. Move cdi to philips folder. Remove some 8.3 folder name truncations. Remove some 8.3 folder name truncations. Split the 2 olympias. Remove chrysler folder. Move pdp1 to dec folder [hap].
- Start moving devices out of src/mame/shared to more appropriate places [AJR].
- UI/selgame.cpp, ui/selsoft.cpp: Fixed out-of-bounds std::vector accesses triggered when menu items is empty [jflatt].
- Updated Brazilian Portuguese translation [Felipe].
- Updated Chinese UI translations [YuiFAN].
- Util/zippath.cpp: Removed a now-unnecessary cast to std::string [Nathan Woods].

0.245:
======
- Acknowledge presence of circular dependencies to keep GNU ld happy on Linux [Vas Crabb].
- Cleaned up a few more legacy callbacks [Vas Crabb].
- Cleaned up formatting in various software lists [kmg].
- debugger: Impose an arbitrary upper limit on the count parameter of the gni command to prevent denial of service [AJR].
- docs: Updated data plugin documentation [Vas Crabb].
- emu/machine.h: Fixed assert in bookkeeping manager accessor [Andrew Green].
- Exclude Shuttle MS11 PC from arcade builds [MASH].
- Finalised Ukrainian translations for three messages [Vas Crabb].
- First version of the src/mame sources reorganization tool, makedep needs some love [Olivier Galibert].
- Fixed MESS build [Robbbert].
- Fixes to Greek Translation. Some minor fixes and missed the auto translated "Driver -> System" since in Greek changed the gender and so the article as well. (Driver=Male, System=Neutral ). Check the other translations as well in case something similar happened. Check the other translations as well in case something similar happened [BraiNKilleRGR].
- frontend/mame/infoxml.cpp: Work around an MSVCPRT shortcoming with promise types [Vas Crabb].
- Got rid of some legacy MESS support glue. Got rid of the special-casing for the "mess" subtarget name. Got rid of the MESS-specific Windows resources, emuator info source and man page. Added subtarget name to the internal name and original name in Windows resources [Vas Crabb].
- mess.lua: Place hh_ collection drivers and their subclasses together [hap].
- Optimisation, and baby steps towards untangling stuff: Optimised the scheduler's handling of unscheduled timers - gives a 50% performance improvement in some timer-heavy drivers. Added better endianness swizzling helpers. Got rid of some of the OSD input modules' dependence on concrete input classes from emu [Vas Crabb].
- osd/modules/file: Changed osd_subst_env to take a std::string_view parameter and return a std::string [Nathan Woods].
- osd/sdl: Throw a fatal error if BGFX video and Wayland video driver are detected in combination [Belegdol].
- osd: Cleaned up Windows API usage a little. Bumped target windows version to 6.0.0 (Vista). Use WRL COM pointers to manage some COM-like objects. Cleaned up logging in DirectSound module. Cleaned up includes in Windows input modules. Switched to Common Item Dialogs in Windows debugger. Replaced disabled code that never really worked with a TODO comment Vas Crabb].
- plugins.data: Reworked the code substantialy. Use the plugin data folder for storing the cache. The history folder may be read-only or shared with different configurations. Don't create the cache database or surrounding folder if there's nothing to store in it. Actually use prepared queries multiple times rather than always destroying them after a single use. Added proper error checking for most database operations. Improved query performance by avoiding outer joins and table scans [Vas Crabb].
- Prevent debugger commands from being evaluated when they are assignment expressions and only supposed to be validated at the moment [AJR].
- Remove header file that doesn't exist anymore from tiny.lua and ci.lua [Olivier Galibert].
- UI, docs: Added menus to fill a couple of gaps in functionality, and improved consistency in terminology [Vas Crabb].
- UI/selgame.cpp: Avoid assert in std::vector when no items in menu [jflatt].
- UI: Put the system-specific items on the input settings menu together, and fixed the crosshair visibility settings [Vas Crabb].
- Updated Czech and Slovak translations [Milan Galcik].
- Updated Greek translation [BraiNKilleRGR].
- Updated translations, cleaned up a little [Vas Crabb].
- Updated Ukrainian translation [Stanley Kid].

0.244:
======
- 3rdparty/asmjit: Suppressed warnings with old versions of GCC [Couriersud].
- 3rdparty/portmidi: Fixed Windows MIDI callback signatures [Devin Acker].
- Added a time command to the debugger for displaying the current elapsed session time [Ted Green].
- Added documentation for debugger time command [Ted Green].
- Changed floppy_image_device::identify() to take std::string_view instead of std::string [npwoods].
- docs: Updated minimum required SDL version to 2.0.6 for all targets, added note that Python 3 is included with Xcode and updated instructions for downloading stand-alone Python 3 for macOS [Vas Crabb].
- emu/emuopts.cpp: Fixed slot card selection being lost when card BIOS setting is changed [Miodrag Milanović].
- Fixed nl sub-target build [Couriersud].
- formats/fs_coco_rsdos.cpp: Added logic to detect cycles in file granule (block) lists [Nathan Woods].
- formats/fsmeta.cpp: Use visitors with variants where it makes sense [Vas Crabb].
- imagedev/floppy.cpp: Changed identify to take std::string_view rather than std::string [Nathan Woods].
- Initial GCC 12 support for Fedora 36 [R. Belmont].
- misc: consistency changes to some company/title strings [hap].
- osd/modules/input: Detect joystick reconnection with SDL. Also improved display name scheme for joystick axes and buttons [Vas Crabb].
- osd/sdl: Prefer X11 video driver on Linux [Belegdol].
- scripts: Improve str_to_version again. Don't treat hypen and dot as the same thing - it will cause issues with pacakge revisions. Cleaned up some Lua code as well. Also show warnings about potentially uninitialised stuff with GCC 12, just don't make them fatal errors [Vas Crabb].
- ui/ui.cpp: Use unordered map for session data, to tempt fate with toolchain bugs [Vas Crabb].
- ui/viewgfx.cpp: Added ability to restrict tiles to integer scale factors. Also encapsulated things a bit more and made the UI manager hold onto the storage rather than keeping it in file statics. Remember orientation/position/scale per tilemap; more encapsulation. Fixed some cases where no tiles would appear with tall or wide aspect ratio windows [Vas Crabb].

0.243:
======
- Added an 'image_display_enabled' property to mame_ui_manager and exposed it to LUA.  This property allows one to disable image-specific UI displays [npwoods].
- Added Ukrainian UI translation [Stanley Kid, Vas Crabb].
- Apparently the issue with Sol and std::optional is a GCC version thing, not Linux vs MinGW. Also, tidied up the test views in some more fruit machine layouts [Vas Crabb].
- cdrom.cpp: Clean up code somewhat: Use std::string_view for filename parameters. Use ioprocs rather than core_file. Reduce commenting out of miscellaneous logging. Bothering by integer types [AJR].
- cdrom_file: Removed unused and abstraction-breaking get_chd method [Olivier Galibert].
- Changed floppy_image_device::init_fs() to set the dirty bit on the floppy image. This is not an actual user facing bug right now, because in the MAME UI the call to init_fs() is followed up by a call to setup_write(), which forces the image to commit without regard to the dirty bit. There is an argument that this is itself code smell; setup_write() perhaps should be set_output_format() and not arbitrarily perform a commit [npwoods].
- Changed fs::meta_value::to_string() to not be static and not require meta_type. No need to pass in the meta_type when using std::visit() on the std::variant [npwoods].
- CHD: Optimize error return from read_metadata [Olivier Galibert].
- cpu: remove obsolete debugger.h include from some of my files [hap].
- Debugger feature improvements: Add 'gbt' and 'gbf' debugger commands to step until a true or false conditional branch has been detected. Update over 100 of the disassemblers in MAME to output a new STEP_COND flag for all conditional branches. Besides being used for execution of the new 'gbt' and 'gbf' commands, this flag also now helps the debugger 'out' command to properly handle conditional return instructions. Remove STEP_OVER from many instructions that aren't actually subroutine calls (e.g. DJNZ on Z80). A 'gni' debugger command (go next instruction) has been added to accommodate some of the misuse. Add instruction flag support to several more disassemblers that lacked them entirely (e.g. st62xx). Don't pass over delay slots for debugging in ASAP core [AJR].
- Disable lifetime dead store elimination for Linux GCC builds. This will hopefully work around the very unhelpful uninitialised variable warning that seems to be triggered by using Sol's get function with std::optional<T> or sol::optional<T> on Linux [Vas Crabb].
- File handling cleanup: Remove fgetc, fgets and ptr methods from device_image_interface. Remove the core_file::buffer method to read an entire file into memory and rewrite emu_file::hashes to not depend on it. Make core_in_memory_file a final class; now that buffering is gone, core_osd_file no longer subclasses it but a new superclass that retains some common methods. Rename the offset and length methods used internally in core_file implementations to index and size due to frequent clashes with parameter names. Convert comments in util/corefile.cpp to C++ style. Add a new overload of the hash_collection::compute method which hashes data from a random_read stream, reading it into memory one chunk at a time. As a result, the hash_collection::begin and hash_collection::end methods have been removed as obsolete (similar methods are now used internally only). Enhance error messages for the frontend media identifier when it encounters file errors [AJR].
- flopimg: Fix issues when wrapping in generate_bitstream_from_track which were especially damaging for apple drivers [Olivier Galibert].
- floppy: Change the internal format to flux changes, update the mfi format accordingly (keep read compatibility with the old mfi) [Olivier Galibert].
- formats/fsmeta.cp: Made metadata value interface less error-prone [Nathan Woods].
- formats/fsmeta.cpp: Added an accessor exposing the contained type as an enumerated value [Nathan Woods].
- formats/fsmeta.cpp: Fixed construction from C strings [Nathan Woods].
- formats: Fixed GCC compile [Ivan Vangelista].
- frontend: Added an option to not show media device status to the UI manager [Nathan Woods].
- imagedev.floppy.cpp: Set dirty flag on image initialization [Nathan Woods].
- imagedev/floppy.cpp: Consolidated filesystem info containers [Nathan Woods].
- imd_dsk: Remove the save support that is just too broken, remove member variables [Olivier Galibert].
- LUA engine: Made I/O port manager type_seq a bit more tolerant of omitted arguments [Vas Crabb].
- osd/strconv.cpp: Fixed conversion to Unicode for two-byte ANSI code pages on Windows [Windy Fairy].
- osdhelper.h: Make a couple of overloads const [AJR].
- Released my copyright on some drivers - i didn't do much work on them [Robbbert].
- Replaced a couple of static_cast downcasts with dynamic_cast for safety, cleaned up some formatting [Vas Crabb].
- Revert initialisation of device members in headers. This is problematic in several ways: - Initialising things at construction that aren't needed until after start slows down -romident, -validate, -listxml, etc.  Slot cards can be a particular drain on -listxml and -validate as they're instantiated for every compatible slot. It's more pronounced for array members, too. - Splitting member initialisation between declaration in headers and constructors in source files means you have to look at two places to check for the initial value, and you always need to check the constructor even if an initialiser is present in the header because the constructor initaliser list takes precedence. (This isn't as much of an issue for driver classes because the constructor is most often inlined at declaration, so it isn't far from the member declarations.) - Initialisers in headers for frequently-used devices increases the frequency of recompiling dependent devices/drivers as they're exposed to any changes in initialisers. - Initialisers in frequently-used headers increase build times because there's more for the compiler to parse/cache. (This affects makedep.py as well for single-driver builds, but that's a single pass.)  It's not a lot individually, but it adds up given the size of MAME, which keeps increasing.  We've already had one contributor banned from GitHub actions for resource usage, we don't want to waste compiler time unnecessaril. Try to work around the uninitialised member warning in sol::optional [Vas Crabb].
- screen: draw until current hpos (not inclusive) when doing an update_now [hap].
- src/devices/cpu: Remove #include "debugger.h" where no longer necessary [AJR].
- stvcd: Be a little more robust to not having any cdrom reader [Olivier Galibert].
- UI/datmenu.cpp: Respect clicks on headings [Vas Crabb].
- Update Greek translation for autofire button name format [Vas Crabb].
- Update simplified Chinese translation for autofire button name format [kongmao45678].
- Updated simplified Chinese translation for auto-fire button name format [kongmao45678].
- util/corealloc.h: Reduced make_unique_clear to a single variant for POD arrays. Enabled GCC lifetime dead store elimination optimisation. emu/device.h: Don't pre-clear memory for drivers.  Ivan Vangelista fixed at least the majority of things that crashed outright and Robbbert initialised variables that coverity complained about.  It's unlikely anything will break due to this. sound/discrete.h: Explicitly initialise members of discrete "devices" to zero.  I don't see a way around doing this in headers due to the macro soup used to build the constructors. sound/mos6581.cpp: Moved creation of the SID core to device_start and explictly initialised members of the SID core structures. These structures are in internal headers, so they won't cause downstream recompiles [Vas Crabb].

0.242:
======
- bgfx: Fixed external texture loading, and added a default LUT texture bitmap for the 3D LUT chain. Fixed issues handling multiple output windows and when encountering missing files, and cleaned up code. Fixed issues with multiple output windows and missing files (corrected version of #9410). Improved brightness balance in YUV conversion shader output [Ryan Holtz]. Fixed YUV shader to have better brightness balance [Ryan Holtz, MooglyGuy].
- Disabled clang warnings again - only the GCC ones should be re-enabled [Vas Crabb].
- docs: Added page describing how MAME searches for media. Also made error messages for missing CHDs and missing files for software parts using the image file loader show search paths, and changed the (poorly named) bitbanger device to use the image file loader rather than the ROM loader for software items [Vas Crabb]. Fixed a copy/paste error in the memory system reference. Fixed a couple errors in sample code in the Technical Specifications. Fixed a copy/paste typo in the Technical Specications [kmg].
- emu/devcb.h: Cleaned up a little using C++17 type traits helpers. Also made Lua I/O port field sensitivity nil for digital fields and put in some more const. Re-added std::moves that aren't pessimising [Vas Crabb].
- emu/input.cpp: Fixed an out-of-bounds access to a std::string_view [Nathan Woods].
- Fixed some debugger memory view annoyances and cleaned up Lua bindings. 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) [Vas Crabb].
- Floppy formats: correct sector extraction in wd/upd when extracted sector is smaller than expected [Olivier Galibert].
- floptool: Fixed typo in error message. "Error: Aaving" should be "Error: Saving" [pnp2084]. Allow creating unformatted images again [Olivier Galibert].
- LUA engine. Made auto-boot script errors and plugin bootstrap errors fatal. Run auto-boot scripts in a sandbox. Globals can be accessed, but not set. The sandbox is cleared on hard reset, but not on soft reset. Added (hopefully) useful to string metafunctions to device_t and address space that show short names and tags. Fixed issues in plugins that surface when strict type checking is enabled, as this means numbers and nil are not automatically converted to strings. Plugins should be tested with debug builds to check for this. Made save item read_block raise an error on invalid arguments rather than returning an empty string, and made it use luaL_buffer directly rather than using the helper wrapper. Changed some more function bindings to use set_function to avoid issues related to ThePhD/sol2#608, and got rid of some unnecessary lambda captures. Enable checks for debug builds, kill sol::buffer. Enabled all of Sol’s safety checks for debug builds, and removed problematic sol::buffer class [Vas Crabb]. Make setting analog I/O port field values user-friendly. 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) [feos].
- Made LUA bindings for controlling analog input values more intuitive [feos]. Made LUA errors in bootstrap scripts fatal, and sandboxed auto-boot scripts [Vas Crabb].
- osd: Added video-init fallback functionality to other OSDs. Fixed issues from the previous batch of changes [Ryan Holtz].
- osdwindow: Remove no-longer-needed addition of post_create() [Ryan Holtz].
- plugins/cheatfind: Don't try to call a handler for the previous menu option [cracyc].
- Re-enabled some compiler warnings and cleaned up some Python scripts a little [Vas Crabb].
- sdl/window: Fix possible compile problem with init fallbacks [hap].
- srcclean and manual tidying up in preparation for 0.242 release [Vas Crabb].
- tools/floptool.cpp: Fixed a typo in an error message [pnp2084]. Fixed arguments in two error messages [Nathan Woods].
- Updated BGFX fixes; verified as working on Linux and Windows [MooglyGuy]. Improved stability when encountering missing files, and improved multi-window stability. [Ryan Holtz]
- Various drivers and devices: added some notes about decapped chips which turned out to be ULAs [Ivan Vangelista].

0.241:
======
- Addressed some Lua scripting pitfalls, and added a broadcast notification helper class [Vas Crabb].
- Cleaned up code, comments and formatting in various drivers and devices [shattered].
- corefile.cpp: Typo fix [AJR].
- devices/*: Removed extra semicolons after function bodies in headers [kmg].
- docs: Fixed a typo in the chdman man page [dch42].
- 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 [Vas Crabb].
- Drop unnecessary executable permissions (#9257) [Julian Sikorski].
- Eliminated the need to include HTTP server and ASIO headers via emu.h [Miodrag Milanović].
- emu/emumem.h: Hold onto memory cache handler change subscriptions [Vas Crabb].
- emu/inpttype.ipp: Added default assignements for P2-P4 mahjong/hanafuda inputs when using -multikeyboard [Vas Crabb].
- emu/input.cpp: Only show items for first device in non-multi classes. It's not possible to actually use higher-numbered device assignments for classes that combine all host devices. For example you can't use the default "Mouse 2" assignments if -multimouse isn't enabled.  Fixes MT06842 [Vas Crabb].
- emu/machine.cpp: Organised #included headers by module [Vas Crabb].
- Fix building with gcc-12 [Julian Sikorski].
- Fixed a couple of errors in debugger documentation [Vas Crabb].
- flac.cpp: Add some missing standard headers [AJR].
- Force recomputation of clock-related parameters whenever a device clock or scale changes by way of loading a save state [AJR].
- formats/jvc_disk: Changed code to verify image geometry against floppy drive geometry [Tim Lindner].
- frontend: Added 57 glyphs (mostly arrow symbols). Exposed memory pass-through handlers (address space taps) to LUA. 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 [Vas Crabb].
- frontend: Use util::core_file instead of emu_file where applicable [AJR].
- hiscore.dat: fix renamed sets hiscore.dat: Add "Mega Man 2: The Power Fighters (Hispanic 960712)" (megaman2h), fix "1000 Miglia:
- imagedev/bitbngr.cpp: Added software list loader support (used by sitcom) [Vas Crabb].
- lua: Addressed some Lua scripting pitfalls. 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 [Vas Crabb].
- machine.cpp: Attempt to appease gcc's stricter handling of incomplete types [AJR].
- netlist/plib: Added missing standard library header to pstream.h [Belegdol].
- Remove fileio.h from emu.h [AJR].
- Remove HTTP related header pollution. Remove now invalid message. Fixed issued detected by clang. Fixed CR at EOF [Miodrag Milanović].
- Remove no-longer-present header from build scripts. [Vas Crabb].
- Remove void *ptr parameter from emu_timer, timer_device and all related callbacks [AJR].
- Removed extraneous semicolons after function bodies in many device headers. Removed extraneous semicolons after function bodies in all MAME headers [kmg].
- Separated includes by module in various drivers [Vas Crabb].
- Simplified RM Nimbus mouse code and fixed a Visual Studio compiler warning, as it was storing 128 in an int8_t [smf].
- util/ioprocsfilter.h: Added doxygen comments so one doesn't need to read the source to work semantics [Vas Crabb].

0.240:
======
- Added a version verb to floptool [Nathan Woods].
- Added PDF documentation to dist.mak [Vas Crabb].
- Bumped dates to 2022, bumped docs version to 0.240, fixed some license files that had somehow been screwed up, cleaned up some metadata [Vas Crabb].
- cdrom: Allow recognizing CDI/2352 in cuesheets [Ryan Holtz].
- Correctly adjust window size for computed visible area [Antonio Giner].
- device_image_interface: Interface overhaul. Remove the iodevice_t classification, which was not used that much and was incomplete anyway. Image device implementations must now provide their own instance names and brief instance names. Several new parent classes have been created to make it easier to use the old standard names. Change must_be_loaded from a pure virtual function to be overridden in implementations to a getter for a base class property that can be set on the host side (as was formerly made possible for NES, MD and "generic" cartridge slots) but defaults to false for all types. This restrictive property has been unset for a small number of cases. Create parent classes for paper tape and magnetic tape devices. At present these are dummy classes that do little to nothing, but may help unify implementations in the future. Change several member functions to take std::string_view parameters rather than const std::string & or const char *. Make update_names take into account brief names, as discussed in PR #2555. Remove the obsolete uses_file_extension function (which used thread-unsafe strtok). portfolio_ccm_slot: Change image type from "cartridge" to "memcard". i7220, datapack: Add custom instance names that weren't there before. pc11: Add note [AJR].
- docs: List MSYS2 packages required to build PDF documentation on Windows now that TeX Live is available [Vas Crabb].
- emu/render.cpp: Improved scale factor selection. Fixes aspect related issues, undesired overscan, etc. [antonioginer].
- Fix for building with clang 13.0.0 on Windows [smf].
- floptool: Updated usage message [Nathan Woods].
- frontend: Sort directory selection menu items. Also fixed selecting .. not moving up more than one level. Removed a vestigial member function from the file selection menu and reduced redundancy in a few more slot machine layouts while [Vas Crabb].
- Future-proofing by using correct #include for SOFTWARE_LIST device [AJR].
- Move filesystem library into separate namespace and use shorter uX type names there [AJR].
- Reduced redundancy in a few more slot machine layouts [Vas Crabb].

0.239:
======
- Added download links for PDF and EPUB versions [Firehawke].
- chdman.cpp: Corrected copy-pasted comment [einstein95].
- chess*: Updated some internal artwork [hap].
- Cleaned up incorrectly formatted license/copyright header comments [Angelo Salese].
- Deleted travis-ci.org badge from README.md [Stiletto].
- docs: Implemented download links in docs theme. Modified the RTD theme to add PDF and EPUB download links in the left pane [Firehawke].
- emu/mconfig.cpp: Made checks on device add/replace stricter. Trying to replace a non-existent device or trying to add a device with root or parent references in the path is now fatal. If you find yourself wanting to do this, your design is probably broken [Vas Crabb].
- Filesystem code cleanup. Eliminate dependencies on emu.h, replacing most fatalerror calls and floptool's ersatz emu_fatalerror class with standard exception classes. Use range-based std::string constructors in some methods. Move filesystem metadata handling to a separate source file. Eliminate src/emu as an include path for libformats (necessitates kludge in ti99_dsk.cpp) [AJR].
- Filled in a few more Slovak messages after discussion with Milan [Vas Crabb].
- Filled out most of the Slovak translation [Milan Galcik].
- Fix build with newer versions of Emscripten; minimum supported version is now 2.0.25 [Justin Kerk].
- Fix lockup loading UI with Emscripten builds that don't support threading [Justin Kerk].
- Fixed a few miscellaneous Coverity errors [Vas Crabb].
- Fixed MESS build [Robbbert].
- Fixed some incorrectly formatted license header comments [Angelo Salese].
- frontend: Don't call .name() on I/O port fields without a running machine. Give heading items in menus a bit of horizontal space [Vas Crabb].
- Fun with flags: Allows handlers to have user-defined flags set on 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 [Olivier Galibert].
- Got rid of a few more uses of UNUSED_FUNCTION [Vas Crabb].
- Improved mechanism for adding content to the theme [Firehawke].
- layouts: Started cleaning up fruit machine layouts to reduce bloat [Vas Crabb].
- Moved localised I/O port name lookup into I/O port manager. Added pseudo format specifiers to controller port names: %p for player and %% for literal percent symbol. This lets you get the localised player identifier in overridden input names (see NES and Neo-Geo for examples), and reduces the number of messages to translate. For translators, the new messages are mostly previously existing messages with wording adjusted for clarity (e.g. referring to "media" rather than "ROMs" in several places, as things like disk and tape images are included). It's also possible to localise the "???" dipslayed for an input without a valid name, but that should never actually appear in practice [Vas Crabb].
- Refactor html docs build process to use new template and env variable [Firehawke].
- Remove a few outdated references to MESS [Dirk Best].
- srcclean, remove a vestigial thing, and a little cleanup [Vas Crabb].
- UI: Change string parse for screen hz info [hap].
- Updated continuous integration status links in readme file [Stiletto].
- Updated Greek translation [BraiNKilleRGR].

0.238:
======
- bgfx: Fix flurry of bogus warning messages [hap].
- Debug memory view improvements: Add options for 1-byte, 2-byte, 4-byte and 8-byte octal data display, which are selected automatically for memory spaces configured as octal. Octal data has also been made  editale. Add options for displaying addresses in decimal or octal as alternatives to the typical hexadecimal format. This also affects the address expression box. Prevent the cursor from moving left from the first address or right from the maximum address. Note that the new options have only been hooked up for the Qt debugger. The Windows and OS X debuggers should also be updated to include them [AJR].
- debugger/qt/memorywindow.cpp: Remove leftover printf [AJR].
- debugger: Made GUI debuggers more uniform. Added new memory view features to Win32 debugger. Fixed spelling of hexadecimal in Cocoa debugger and added decimal address option. Fixed duplicate keyboard shortcut in Cocoa debugger (Shift-Cmd-D was both new device window and 64-bit float format). Made keyboard shortcuts slightly more consistent across debuggers [Vas Crabb]. Support octal on the Mac native debugger [R. Belmont].
- debugimgui: Fix menus losing focus, add octal display and octal/decimal address select [Barry Rodewald].
- docs: Started adding some documentation for MAME's internal UI, and updated the list of example front-ends. Fix an error in the Lua reference that I copy/pasted without noticing. Added documentation on assigning inputs. Added description for axis setting assignments [Vas Crabb].
- emu/ioport.cpp: Fixed "MAME lost my joystick settings!!!1!11!. Made default behaviour better. If an input is configured to some combination of controls that are not present at all, ignore the setting altogether for the session. Fixed relative axes with PORT_RESET not responding to absolute controls (MT07685). Fixed relative axes not responding to an absolute control if the value doesn’t change every frame (eg. holding a stick against the stop). Changed the scaling for absolute controls assigned to relative axes to make defaults more sane (e.g. arkanoid or spdheat with a joystick). Fixed some default setting handling issues. Issues were unlikely to actually manifest unless you use controller configuration files to change specific system input defaults. Default to built-in UI language rather than English. The external English message catalog is a placeholder anyway [Vas Crabb].
- emu/render.cpp, emu/rendlay.cpp: Added scroll support for all elements [Vas Crabb].
- emu/render.cpp: Fixed texture size calculation for oblong items [Vas Crabb].
- emu/rendersw.hxx: Support texture wrap/clamp properly for (A)RGB formats. Also got rid of names starting with an underscore followed by an uppercase letter, as they are reserved. Yes, get_texel_rgb32 and get_texel_argb32 are identical - thew were already identical before [Vas Crabb].
- Enabled complex combinations for analog axes: Made it possible to add digital controls to axis settings as enables. Mix multiple analog controls assigned to an axis setting. Added a "reverse" modifier for analog controls (useful with mixing). Fixed an issue assigning mouse axes using multiple mouse-like devices with -nomultimouse [Vas Crabb].
- Fix various usability issues: frontend: Made it so you can press UI On Screen Display to hide the Analog Controls menu and see the response to your inputs without the risk of changing settings, and see more axes at once and scroll them for systems with very large number of axes. Also ensure the axis being configured is visible when the menu is visible, and made the menu behave a bit more like the system input assignments menu (including previous/next group navigation). frontend: Allow Lua to draw to the UI container - this addresses the main complaint in #7475.  Note that drawing to the UI container will draw over any UI elements, including menus.  Plugins can check menu_active to avoid drawing over menus. Also removed some unnecessary use of sol::overload. frontend: Improved info/image box navigation on the system/softwre selection menus, and cleaned up some leftover code that came from the copy/pasted event handling functions. frontend: Fixed sliders menu not handling Alt+Shift as intended (thanks Coverity).  Fixed a couple of harmless Coverity errors, too. emu/inpttype.ipp: Made the default assignment for Save State recognise right shift. plugins: Added next/previous group navigation to input macro edit menu. docs: Added basic description of the system and software selection menus, and corrected a couple of errors in the Lua reference [Vas Crabb].
- Fixed Windows build as well - default input overrides in OSD modules are annoying. [Vas Crabb].
- frontend: Various minor improvements. Made a few more menus reset values to the default in response to the UI clear input. Made the minimum info text size less unreasonable, and fixed a locale issue in the font/size selection menu when parsing option strings. Made the keyboard mode menu toggle items on double click or UI select. Made the menuless sliders menu remember the last slider shown (this probably broke when sliders were moved out of the UI manager itself). Made a few menus just update the highlighted options when it's adjusted rather than unnecessarily rebuilding the menu. Made a few more menus reset on being reactivated to cope with scripts or other things changing stuff out from under them. Some changes to menu item class that will make it possbile to reduce the number of menu rebuilds. Show more unemulated/imperfect features per-device in warnings menu. Remove no-longer-needed member of save/load state men. Refactored menu event handling and fixed a number of issues. Moved common code for drawing about box, info viewer, and other text box menus to a base class; removed the last of the info viewer logic and the multi-line item hack from the base menu class. Added previous/next group navigation for general inputs and plugin input selection menus. Moved message catalog logic to lib/util, allowing osd and emu to use localised messages. Made the base menu class use the UI manager’s feature for holding session state rather than a static map and mutex. Improved menu event handling model, and fixed many issues, particularly with menus behaving badly when hidden/shown. Added better support for menus that don’t participate in the usual menu stack, like the menuless sliders and the save/load state menus. Made a number of menus refresh state when being shown after being hidden (fixes MT08121 among other issues). Fixed indication of mounted slot option in the slot option details menu. Improved appearance of background menus when emulation isn't running - draw all menus in the stack, and darken the background menus to make the edges of the active menu clearer. Fixed locale issues in -listxml. More cleanup: Got rid of some abuse of "special main menus". Added a helper class for auto-pause menus that don't spawn submenus. Got rid of the fake menu that schedules an exit on the first frame. Turned the confirm quit prompt into a menu, eliminated one more special-cased event loop. Fixed the confirm quit prompt resuming if you return to emulation if you weren't paused to begin with. Make all the textbox menus use the custom navigation flag, on the off chance they become scrollable somehow. Handle analog controls with high sensitivity numbers better. Fixed some localisation issues in Analog Controls menu. Fixed crashes switching between favourites and other filters. Also made the system and software selection menus a bit less eager to reselect the first item. Fixed another case where the system selection menu could get confused when changing filters. Don't let the non-menus get as far as trying to draw. Don't inappropriately truncate text in menu text boxes. Allow cycling modifiers for an absolute axis by pressing repeatedly without going through an append step. Added input provider module options to menu, worked around machine options not showing modules [Vas Crabb].
- 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 [Vas Crabb].
- luareference.rst: Clarify contract of as_hz, as_khz and as_mhz [AJR].
- osd/windows: Show error message box on a separate thread (see MT08118). Handle WM_UNICHAR. Fixed stupid potential deadlock on exit. Don't set parent window for error message box - it doesn't appreciate the parent being pulled out from under it [Vas Crabb].
- osdcore: Fix buffer overflow with osd_output stack [hap].
- plugin/data: Handle multiple blocks in dat [cracyc].
- plugins/cheat: One more flag [cracyc].
- plugins/console: Fix crash [cracyc].
- plugins: Work around menu not remembering selection when ref is nullptr. Simplify logic in autofire and inputmacro plugins to try and avoid leaking state across sessions. Rewrote timer plugin fixing multiple issues. Added emulated time recording as well as wall clock time. Fixed recording time for multiple software items per system.  An incorrect constraint on the database table meant that time was only being recorded for a single software item per system. Detect the "empty" driver so the time spent at the selection menu isn't recorded (you'd get multiple entries for this due to the way options leak when returning to the system selection menu). Included schema migration code to update existing timer plugin databases. Also replaced some unnecessary floating point code with integer maths, added log messages, and made the plugin unload unload its database access code during emulation. Changed other plugins' use of paths with trailing slashes as this causes stat to fail on Windows. Reduced amnesia for autofire and inputmacro plugins. Made autofire and inputmacro plugins capable of remembering settings if the host input device for the binding is missing or if an input for a slot device that isn't present is referenced. Moved the timecode recording functionality to a plugin. Moved input selection menu and sequence polling code to a common library. Fixed the issue that prevented keyboard inputs being mapped with -steadykey on. Gave the timecode plugin an option to count emulated frames. Fixed obligatory copy/paste error in new timecode plugin. Ensure state is destroyed on stop [Vas Crabb].
- plugins: Fix cheatfind menu flags and write xml cheat text to ui container so it's not sideways on rotated screens [cracyc].
- Regenerated message catalog sources.  For translators, the new strings are mostly: The names of the inputs provided by the OS-dependent layer for things like fullscreen and video features. These show up in the user interface inputs menu. The names for automatically generated views. These show up in the video options menu - test with a system with a lot of screens to see more variants. The input macro plugin UI. A few format strings for analog input assignments. A few strings for the about box header [Vas Crabb].
- Removed support for several obsolete targets, including UWP, Steam Link and Android MIPS [Miodrag Milanović].
- render/d3d: Replaced some locale-sensitive configuration parsing code [Vas Crabb].
- screen: Fix buffer overflow crash with VIDEO_VARIABLE_WIDTH screens [AmatCoder].
- selmenu: Fix wrongly placed messagebox [hap].
- 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 [Vas Crabb].
- Two small fixes (bad menu flags in cheat plugin, copy/paste in docs) [Vas Crabb].
- Updated Brazilian Portuguese translation [Felipe, Vas Crabb].
- Updated Chinese translations [YuiFAN].
- Updated Greek Translation [BraiNKilleRGR].
- Updated Slovak language: Corrected character encoding in header comment [Vas Crabb].

0.237:
======
- Added a separate CI target for localisation updates that produces an artefact, and removed the message catalogs from the trigger paths for the Linux CI build [Vas Crabb].
- Better rules for generating .po files - multiple jobs have an effect now [Vas Crabb].
- bgfx: Updated mipmap and raster bloom passes in Fighters chain (fixes crash identified in GitHub #8538) [sairuk].
- Bugfix#08103 [Interface] Loading loose software in systems that require media to be loaded is impractical using internal UI [Vas Crabb].
- Changed the default mapping for UI select to not trigger on Alt+Enter fullscreen toggle.  (Fullscreen toggle still doesn't work in menus - actually fixing that is complicated) [Vas Crabb].
- Cleaned up CI targets: Restricted Linux CI build to only run on changes to code, translations, software lists, and build scripts. Restricted Windows/macOS CO to only run on changes to code and build scripts. They provide nothing over Linux for the other stuff. Added plugin properties and controller file validation to the "hash" workflow. Added a workflow for building documentation, so pull requests that affect documentation will at least get a basic check in advance [Vas Crabb].
- debugger: Added a register points view to the GUI debuggers, to go with the breakpoints and watchpoints views. Extended [brw]p(clear|(en|dis)able) commands to accept multiple arguments to perform the same action on multiple (break|watch|register)points at once.  Also made rplist accept a CPU for showing a single CPU's register points ([bw]plist already support this) [Vas Crabb].
- debugger: Allow wplist and bplist to accept a CPU argument to list breakpoints/watchpoints for a single CPU only. Fixed some corner cases in address space syntax in memory accesses, and allowed memory region accesses to use tags relative to the visible CPU [Vas Crabb].
- debugger: Extended target address syntax to include device/address space (#8630). Added a validity check to ensure address space names are tag-like and unique, since they're now used as identifiers in debugger commands. Extended the syntax for target addresses to allow them to be qualified with a colon followed by an optional device tag and/or address space name. If only the device needs to be specified, a debugger CPU number may also be used. This makes commands like bpset and wpset more flexible, as they can operate on CPUs other than the currently visible CPU.  Commands like find, fill, dump and load are more flexible as they can access any space of any device. Removed now-redundant CPU parameters from many commands, and renamed pcatmemp to pcatmem for consistency with other commands. Extended region syntax for saver/loadr to support tags relative to the visible CPU (e.g. you can use "." for the region with the same name as the visible CPU, or "^sibling" syntax). Added an optional root device parameter to memdump. Changed interpretation of Boolean values to support numeric expressions as well as true/false strings and literal 1/0. Added checks that the specified device is CPU-like to various commands that require a CPU (e.g. focus).  Previously these commands would crash or trigger an assertion failure if a tag for a non-CPU devices was specified. Fixed the cpunum symbol so it uses the same rules for determining what is or isn't a CPU as parameter parsing. Made device_t sanitise subtags better.  Previously you could cause an assertion failure or crash MAME by giving it unexpected relative tags via Lua or the debugger. Added help topic alias support, and reworked the data structures to improve the performance of looking up debugger commands and help topics.  Removed the "ref" parameter from debugger command functions (std::bind can hold extra argument values for you if you need them). Also added an error message if duplicate debugger commands are registered. Updated help for commands that changed syntax, and also updated summaries for some commands that had changed in the past without corresponding help updates [Vas Crabb].
- docs: Started documenting plugins. Also added a couple of missing command-line options, and added a local table of contents to the (rather long) command line options page [Vas Crabb].
- docs: Updated registerpoints debugger commands page, and updated other pages for latest extensions to syntax [Vas Crabb].
- docs: Updated three more pages of debugger documentation.  Also updated more of the built-in debugger help [Vas Crabb].
- emu/softlist.cpp: Added a “notes” field to store notes about a software list or software list item [Wilbert Pol].
- emu/softlist.cpp: Ignore notes elements when loading software lists. It's effectively a comment that isn't a comment syntactically, it's being used for things that are not useful to display in the internal UI, and it slows down startup [Vas Crabb].
- emu/video.cpp: Use configured snapshot file name for snapshot saved when -seconds_to_run completes [kmg].
- frontend: Added support for message context to localisations. Added string_view versions of the message lookup functions. Added a few more folder options to the internal UI. Show all software item info in the internal UI. Search alternate titles in software selection menu. Added software filters for common info fields. Allow UI manager to hold onto persistent session data. Cache software lists for eight machines. Added support for loading localised system names. Add UI for selecting localised system names [Vas Crabb].
- frontend: Allow clicking the adjuster arrows on menu items.  This allows things like video options and DIP switches to be configured using a mouse only. Also fixed a bug preventing paging menus with a mouse if the first item scrolled off the bottom is not selectable [Vas Crabb].
- frontend: Better code for carrying justification across when wrapping. Fixed horizontal offset on text boxes with blank lines. Further improved behaviour of info box on system selection menu, and fixed alignment issues [Vas Crabb].
- frontend: Cleaned up rendering of info views. Put the description for systems in the info box - it's useful for the fruit machines with very long names that are truncated in the list. Also stopped truncating manufactuer and parent name in the info box. Made the text layout class capable of handling lines containing combinatations of left/centre/right-justified text and got rid of the legacy UI manager text wrapping function.  Made the system/software selection menus and the info viewer share the same code for formatting info text.  This means the multi-column layout works properly in the info viewer now, and the code is a lot simpler.  Also the system/software selection menus don't have to redo the text layout every frame now. Made the info viewer update the text layout if the output aspect ratio changes, and cleaned up more legacy code. The lines in the info viewer are no longer bogus "menu items", and there's a lot less special-case code to support it in the base menu class [Vas Crabb].
- frontend: If in doubt, micro-optimise (halves startup time on Windows). Support phonetic reading field from localised system name lists. Fixed sorting of clones when not using localised system names. Allow falling through to file manager for systems that require media, and one more optimisation. Moved plugins menu off the main menu - it's only one level deeper now. Don't show toggles for plugin libraries, show a message when no plugins are found [Vas Crabb].
- frontend: Keep cleaning up. Got rid of one of the UI audit inputs. There only needs to be one, and the options can be presented in the confirmation menu. Two secret keystrokes is too confusing. Also got rid of the long-obsolete UI Toggle Debugger input. Added audit media button to the toolbar so it's a bit less opaque, and it can be accessed with a mouse/trackball (not just by knowing the key mapping). Made default I/O port names localisable. Made autofire plugin save port fields using the { port, mask, type } tuple, the same way MAME does. Unfortunately this will break existing autofire configuration, but it should be more stable going forward. Added some more UI keys to the default key mappings documentation. More wording and localisation fixes for colours menus [Vas Crabb].
- frontend: Made it possible to cancel a media audit while it's in progress. Also made the media audit multi-threaded so it's faster. Made the DIP switches in the DIP switch preview clickable. Made the system and software selection menus leave focus on the same system when clearing the search rather than jumping to the first item. Also fixed a couple of bugs in the logic for keeping the selected item visible. Fixed a few places that weren't showing localised system names. Made UI Cancel clear a search in the file manager the same way it does on the system and sofware selection menus. Made it possible for plugin menus to handle UI Cancel more naturally, backing up to the previous plugin menu rather than dropping straight back to the list of plugins. Updated the autofire, cheat and cheatfind plugins, and fixed a few other issues in the cheatfind plugin. Made the mount and unmount commands accept instance names as well as brief instance names. Also updated another page of debugger documentation. Show full sofware name in right panel for favourites, too. Audit menu was using one variable for two things, which obviously doesn't work. DIP switch menu could trigger spurious clicks on for systems with too many DIP switch groups to show. Also work around Xcode's issues with casting non-const to const reference wrappers [Vas Crabb].
- frontend: Made the about box wrap text properly, made the title and backtrack menu item always visible, and added a footer with  the VCS revision. Don't highlight the favourites and info toolbar buttons if there's no selection (can happen if filters produce no results). Also made the info viewer appear even if no info is available - it's less confusing to see an empty menu than wonder why clicking the button does nothing [Vas Crabb].
- frontend: Recovered precious vertical space for system/software names! Reduced the height of the bottom info panel by one line.  The system shortname or list/software name tuple are now only displayed in the info box on the right.  It's a bit out-of-the-way, but it's not something you need to see all the time. The main reason for having the quit or return to previous menu item always visible is to make it easy for someone to quit if they only have a mouse.  However, we don't need waste space on the menu for this when we have a toolbar. Users without a mouse can exit using the keyboard/controller UI Cancel input (given how important this is, it's unlikely they won't have it mapped to something usable). There's now a toolbar button on the extreme right for returning to the previous menu or quitting. The tooltip and icon are appropriately context-sensitive.  This recovers one line on the system selection menu, and two on the software selection menu since the separator is no longer needed. Replaced the toolbar icons bitmaps with SVGs.  Colours/shapes may be tweaked before the release if people have good suggestions. Flipped the simple system selection menu so the description is on the left. Moved the handling of special cases for the final menu item out of the base menu class.  It's still hacky having it handled there at all, but it's less hacky without if menus that want to do something different can do it themselves [Vas Crabb].
- Improved localisation support, enhanced software selection menus, and fixed some UI issues (addresses #8641) [Vas Crabb].
- minimaws: Changed geometry of disclosure triangles. Fixed up schema for software list notes, made sofware list notes display initially collapsed [Vas Crabb].
- More UI enhancements/cleanup: Made the headings in the info viewer clickable, so you can switch between DATs with a mouse or trackball (or maybe a lightgun if that's your thing). Made the UI red/yellow/green traffic light status colours less dirty-looking. The "yellow" is more of an amber-brown than a cat puke brown now, and red is brighter.  The contrast with white text is definitely fine for red and green, but it's reduced a bit for yellow. However there's a limit to how dark you can make a yellow or orange colour before it looks muddy. Reduced the number of places the UI uses red for things that aren't errors. The error colour should be used sparingly, for actual errors. Improved the colour swatch display in the RGBA colour editor. It now has black/white underlay so alpha effects are move obvious. Also fixed a bug preventing the channels being run down to zero. Fixed double-clicking configure machine causing MAME to exit from the system selection menu. Also slightly adjusted the colours of the toolbar buttons again [Vas Crabb].
- Optimized the multithreading strategy for -listxml. The previous algorithm would spawn tasks but wait for them in sequential order.  This is not necessarily optimal, and with these changes we will respond to whichever task completes first. On my computer (Quad Core 2), this triples the speed of a full -listxml [Nathan Woods].
- osd/windows: Set locale on start so sorting in the UI works properly [Vas Crabb].
- Plugin usability improvements: autofire, inputmacro: Made left/right repeat when held (makes setting long delays/durations easier). autofire, inputmacro: Added headings for devices in input selection menus (helps when controller buttons have identical names, e.g. AES). Made intial selection when moving between menus intuitive, log some errors on saving/loading configuration. Fixed two errors in Chinese localisations [Vas Crabb].
- plugins: Added an input macro plugin. Sort input selection menus for autofire plugin [Vas Crabb].
- plugins: Use SPDX short identifiers for licenses in exports (more precise and easier to localise), use CC0 for hiscore plugin rather than CC0. Changed the hiscore plugin to save inside the "hiscore" folder in the plugin data directory. The old hiscore path setting has already been removed from MAME for some time. This means the plugin was always saving in the "hi" folder in the working directory with no way to change it, which is problematic on Linux and macOS, particularly for distro packagers. There are lots of plugin and UI changes in this release, so we may as well get this out of the way now. Also made it possible to change the "timed save" option from the Plugin Options menu, and save that in the data folder, too. Documented the input macro plugin. The only undocumented plugins now are the cheat plugin, the cheat finder plugin, and the port name plugin [Vas Crabb].
- pluins/hiscore: Bumped version since storage location has change. [Vas Crabb].
- Regenerate and patch up translation files for latest UI work [Vas Crabb].
- Re-generated translations for I/O port names. Trying to collect messages from everything at once hits some limit in xgettext and causes messages to be lost no, so I've split it up by the second-level source directories. For some reason xgettext thinks overloaded Lua functions are blasphemy, so that has to be worked around, too [Vas Crabb].
- softlist.cpp: Add support for a 'notes' field to store information about a software list or software list item. Add software list and software notes to minimaws [Wilbert Pol].
- ui: Made file manager software list menu search behave better (based on file selection menu code). Locale-aware sorting for software list items. Put software description on the left and sort by description by default [Vas Crabb].
- Updated bgfx, bx and bimg to latest upstream version (fixes GitHub #8057) [Belegdol].
- Updated Chinese translations [YuiFAN].
- Updated Greek translation [BraiNKilleRGR].
- util/delegate.cpp: Detect clang x86-64 thunk for first vtable entry. Notes from experiments with clang. Fixed typo in comment [Vas Crabb].
- util/unicode.cpp: string_view treatment for the last two holdouts [Vas Crabb].
- util/zippath.cpp: Made behaviour of trying to open things inside archives a bit more consistent, fixed another bug with root paths. Fixed two issues affecting Windows: Browsing from a location inside an archive causes MAME to hang. Files inside archives are not listed. [Vas Crabb].
- util: Cleaned up I/O interfaces further, and added a helper for generating dynamic classes on-the-fly [Vas Crabb].
- util: Further API cleanups: (#8661). Turned `core_file` into an implementation of `random_read_write`. Turned PNG errors into a standard error category. Added a helper for generating what look like derived classes on-the-fly [Vas Crabb].
- Various improvements to the user experience: Extended the memory access prefixes in debugger expressions to support address space names. Made the debugger history command aware of how much history it has collected, and added a help topic for it to the built-in debugger help. Started updating the documentation for the web site, and corrected some of the more misleading built-in debugger help. Made some corrections to Chinese localisation after discussion with YuiFAN. Darkened the UI red colour a little [Vas Crabb].

0.236:
======
- Add compile-time option to show visible annoying red border when sound is overdriven. Leaving it on for a bit at the start of the cycle so that devs might identify and fix some of these cases [Aaron Giles].
- Added doxygen comments to some classes, and fixed several doxygen warnings [Vas Crabb].
- Allow devices to specify a parent for the purpose of searching for ROMs [Vas Crabb].
- bgfx: Fixed UV rounding errors in fs_blit_palette16; Switched back to direct texture upload rather than CPU copy. Revised fs_blit_palette16 to not use pixel rounding. Fixes issues in carpolo, kncljoe, and others. Switched fs_blit_palette16 to expand bitmap_ind16 contents to R8. Fixes vertical off-by-one shift in games with an odd pixel count along X [Ryan Holtz].
- C++ is not C, appease the compiler [kmg].
- cpu/drcbex64.cpp: Proof-of-concept for optimisation of calling out. Resolve address space virtual member function addresses on constrcution and call them directly. Provides a small but measurable improvement to performance in drivers that use the recompiler and access the memory system a lot. Also made MSVC delegates capable of walking past all the thunks MSVC puts in the way of actually calling a member function. I'm not accounting for the "this" pointer being passed in RDX when the return value is an oversize scalar. This is harmless because it won't see anything that looks like a virtual call thunk using RCX when RCX points to uninitialised space for the return value.  It just means virtual member function calls won't be bypassed if the return value is an oversize scalar, but that doesn't happen frequently anyway [Vas Crabb].
- debugger/debuggdbstub.cpp: Initialise m_readbuf_state on construction. Fixed m_readbuf_state starting in undefined state [Alex Siryi].
- debugger/qt, debugger/win: Fixed suppressing trailing whitespace in copied text on completely blank lnes (most noticeable for the console view) [Vas Crabb].
- Do not use the -m64 compiler switch when building for 64-bit RISC-V [Graham Inggs].
- docs: Updated the RTD theme to the 1.0.0rc1 release (includes Sphinx 4 CSS fixes). Update css for sphinx_rtd_theme to latest version, which includes selectors missing from old version [Aaron Giles].
- docs: Updated the example layout links to point to 0.235 - this means there's now an example of embedded SVG [Vas Crabb].
- Filesystem-related bug fixes: Fix recently-introduced path-trashing bug in zippath_resolve. Prevent UI file select menu from crashing in error cases where no files can be found [AJR].
- Fix clang warnings about declaring template instantiation extern after the instantiation itself [Vas Crabb].
- Fixes for building with clang 12.0.1 on Windows [smf].
- formats, osd, util: Started refactoring file I/O stuff: Added more modern generic I/O interfaces with implementation backed by stdio, osd_file and core_file, replacing io_generic. Also replaced core_file's build-in zlib compression with a filter unzip.cpp, un7z.cpp: Added option to supply abstract I/O interface rather than filename. Converted osd_file, core_file, archive_file, chd_file and device_image_interface to use std::error_condition rather than their own error enums. Allow mounting TI-99 RPK from inside archives [Vas Crabb].
- formats-related refactoring: Remove opresolv.h from emu.h and some other base headers. Split legacy floppy image class into a separate file. Clean up a lot of #includes in src/lib and src/tools/imgtool [AJR].
- imgtool/library.h: Supply some missing #includes [AJR].
- libc++ 6 std::is_invocable_r doesn't work on MFP for incomplete class - disable broken tests when detected [Vas Crabb].
- Make debugger 'out' command step over return delay slots on SH architectures [AJR].
- minimaws: Added disclosure triangle controls to many sections. Made table sort widgets (and the code behind them) less ugly. Better equality for devices [Vas Crabb].
- osd: Return would block when reading a socket with no data available - no error can be confused with remote shutdown [Vas Crabb].
- Reduced tag map lookups in several drivers and devices [Vas Crabb].
- Remove VISIBLE_SOUND_OVERDRIVE compile-time option in favor of enabling the red overdrive border when speaker_report is non-zero [Aaron Giles].
- render/bgfx: Fixed UV rounding errors in fs_blit_palette16, allowing direct indexed texture uploads. Use R8 texture format for bitmap_ind16 contents [Ryan Holtz].
- render/bgfx: Use D32F texture format rather than D24 (fixes issues with AMD GPUs) [Belegdol].
- Reworked device type definition macros a little and added more Doxygen. Reworked device type definition macros to eliminate one level of indirection when using device types by name. Fixed a potential initialisation order issue that could affect device parent ROMs. Eliminated the need for DEFINE_DEVICE_TYPE_NS - just use DEFINE_DEVICE_TYPE or DEFINE_DEVICE_TYPE_PRIVATE with fully-qualified names. Changed device type aliases to static auto references in the headers. Added Doxygen comments for system/device definition macros and system flags [Vas Crabb].
- UI: Added ability to zoom out to fractional sizes in the tilemap viewer [Ryan Holtz].
- UI: Made zoom controls a bit more intuitive. The UI controls are described as zoom in/out, but they had the opposite effect on the palette and tile viewers. That has been changed to make them consistent with the tilemap viewer. Made the default zoom key not act as a toggle.  People are familiar with the function of Ctrl+0/=/- in web browsers, so making them behave similarly in MAME should make it more approachable.  Also added the default zoom key to the relevant documentation page. Implemented the default zoom key for the palette and tile viewers. In the tilemap viewer, if the view is in default expand to fit mode, zoom in/out starting from the actual zoom ratio. Once again, this behaves more like the zoom controls in a web browser displaying an image so it should be more intuitive. Made more messages from the tilemap viewer localisable [Vas Crabb].
- util, osd: Test for _WIN32 rather than WIN32. In C++17 mode, WIN32 is no longer a predefined macro, although various things in 3rdparty define it to maintain legacy support. We're better off moving forward anyway for when WIN32 disappears entirely.  (WIN32 is not a reserved name, while _WIN32 is, starting with an underscore follwed by an uppercase letter) [Vas Crabb].
- util/coretmpl.h: Removed an overload of bitswap that can be avoided using if constexpr. Fixed clang narrowing warning [Vas Crabb].
- util/delegate.cpp: Try to catch issues earlier, and some cleanup. Optimised generation of late bind helper functions. The late bind helper function doesn't depend on the delegate signature - only on the late bind base class and function target class. Having it inside the delegate base class means it needs to be instantiated for every combination of late bind base class, function target class and delegate signature.  In a typical driver file, there is only one late bind base class (delegate_late_bind), and there will be delegates with multiple signatures bound to function members of the same class (e.g. read and write handlers, possibly of different widths, bound to members of the driver state class). By moving the late bind helper out of the delegate base class, the number of required instantiations can be reduced.  By moving the body out of the enclosing class declaration, the compiler can be encouraged to coalese instantiations across translation units.  While this won't give a further reduction in compile time, it should at least reduce the output binary size by reducing duplication for devices that frequently have handlers installed in memory maps. Added an additional template parameter to delegates allowing the late bind base class to be changed if desired. Moved the MSVC implementation "this" pointer optimisation out-of-line and added logging.  Also cleaned up the Itanium "this" pointer adjustment and code pointer resolution implementation to reduce duplication and conditional compilation. Made binding_type_exception give a more meaningful what() message than "std::exception". Added extensive validity tests for delegate functionality.  Pointers to member functions are tested, including multiple inheritance, virtual and non-virtual member functions, and checking for generational loss across copying/assigning delegates. This should properly exercise "this" pointer adjustment for the Itanium and MSVC implementations, and vtable lookup for the Itanium implementation.  So-called late binding functionality is tested, including exceptions on failure.  Functoids are tested, although given the encapsulation it's not possible to check that an apator isn't generated when it shouldn't be. Fixed calculation of this pointer when casting member function pointers across virtual inheritance relationships using MSVC with /vmg. Fixed structure return with MSVC C++ ABI. Automatically use delegate_mfp_compatible to generate an adaptor for member functions that return non-scalar, non-reference types (partially addresses #8597). Enabled the MSVC delegate implemenation for MSVC on AArch64. Switched back to neater delegate types for layout item bounds and colour. Eliminated a level of indirection for delegates bound to functoids. Fixed multiple issues, particularly affecting classes using multiple inheritance. One less level of indirection for functoid delegates. If a delegate is set to a functoid (e.g. a lambda) with a signature that is an exact match for the delegate's signature, it will be bound directly.  If arguments or the return value need conversion, a static adaptor will be generated.  This removes unnecessary indirection through std::function::operator(). PowerPC-64 Little Endian drops function descriptors. At some point I'll make a proper header ABI detection. There's too much stuff to keep in the delegate sources, and it will be useful for other stuff like recompilers. -util/delegate.h: Use "compatible" delegates for MinGW GCC i686. The Itanium delegate has questionable value on on MinGW i686 as it injects a conditional branch in the hot path for delegates anyway to deal with the different __thiscall convention.  It's somehow breaking and causing memory corruption in full builds, but I don't have the time to work out exactly which delegate type is the problematic one, especially not with a release coming soon. This will probably cause 32-bit MinGW builds to become substantially larger. Added a couple of comments about assumptions. Fixed multiple issues. Fixed this pointer displacement being reapplied after delegates are copied - caused issues with classes with multiple inheritance. Made null member function pointer test conformant with Itanium C++ ABI specification. Corrected size of this pointer displacement - fixes issues on big Endian targets. Fixed function addresses for virtual member functions on targets that use function descriptors (e.g. PPC64). Applied shift to this pointer displacement for targets that use the ARM variant of the Itanium ABI. Fixed this pointer displacement not being applied for virtual member functions on targets using ARM variant of the Itanium ABI. Fixed this pointer displacement being incorrectly applied to vptr on targets using ARM variant of the Itanium ABI. Made less code conditionally compiled to make it easier to catch errors  [Vas Crabb].
- util/delegate.h: Make comparison operators more technically correct. For Itanium ABI, two null member function pointers should compare equal even if the undefined bits differ. For MSVC ABI, there's all sorts of complexity around what happens when you compare pointers to member functions for different inheritance types. You'll still occasionally get weird results comparing pointers to members of different classes. Recognise a couple more MSVC thunks. The MSVC C++ ABI doesn't reserve the first vtable entry for classes without a virtual destructor, so the instruction to load the virtual member function address may not need an immediate displacement. Also recognise virtual member function call thunks for AArch64 [Vas Crabb].
- util/strformat.h, util/delegate.h: More cleanup and future-proofing. util/strformat.h: Found a SFINAE trick to detect absence of stream-out operators. Fixes building with C++20 standard library (#6275). util/delegate.h: Fixed a commend and removed an unused declaration from MSVC member function pointer wrapper. util/delegate.h: Added support for discarding functoid return values for delegates returning void. util/delegate.h: Added support for using std::ref to bind non-copyable functoids [Vas Crabb].
- util/strformat.h: Detect C++ standard > C++17 before doing weird stuff [Vas Crabb].
- util/zippath.cpp: Fixed MT08074. There were multiple issues at play here. After #8443 was applied, is_root was simply never returning true on Windows, as OSD_WINDOWS isn't actually defined outside libosd and libocore. This caused phantom parent items to appear in disk roots on Windows, but it meant that the check in zippath_resolve would always fail so the trailing backslash would be trimmed. Fixing the macro test in is_root meant the trailing backslash from C:\ would no longer be trimmed, which caused the stat in zippath_resolve to fail [Vas Crabb].
- viewgfx: Added fractional zoom-out support to the tilemap viewer. Also added IPT_UI_ZOOM_AUTO for toggling auto-zoom mode without needing to cycle through all zoom levels [Ryan Holtz].

0.235:
======
- *mame.lst: Comment goes with machine [Robbbert].
- bgfx shaders recompile [Miodrag Milanović].
- chdman: add a few more hard disk templates (#8352). Added some additional hard disk templates [Davide Cavalca].
- Compile bgfx. Update shader.mk according to one in bgfx [Miodrag Milanović].
- Debugger-related feature removals and cleanup. Remove the hotspot read tracker. This was never robustly implemented, but changes to the memory system made it much less useful, and the "speedup opportunities" which it aimed to determine are not very important from a current emulation standpoint. Remove the CURSP/GENSP state symbol and the generic sp() getter. Stacking semantics vary too much between CPU architectures for this to be of much use. (A "SP" symbol has been added to a few CPU cores whose stack pointers were otherwise not being registered.) Remove the cached pointer to device_state_interface and the state() fast accessor from device_t. Most users of device_state_interface either already had a pointer to the specific CPU device type or needed to check first for the presence of the interface. Change the PC memory write tracker to use pcbase(), which works even when the instruction callback is masked out, instead of peeking at the PC history index. Remove some obsolete watchpoint-related definitions from machine.h [AJR].
- emu/render.cpp: Fixed automatic sizing of snapshots/recordings (#8397). This fixes bad scaling on snapshots and recording when using -uesx and forced scale factors [antonioginer].
- Enable BGFX_CONFIG_DEBUG to get proper asserts [Miodrag Milanović].
- Fix OSD=mac compile [R. Belmont].
- Fixed default snapshot/recording size when using the -uesx option [Antonio Giner].
- Force constant RAM does not override ROM settings [Tim Lindner].
- formats/fsmgr.cpp: Don't assume string iterators can be indexed (reported by coverity) [Vas Crabb].
- formats/imd_dsk.cpp: Fixed segmentation fault when saving FM tracks [Jesse Marroquin].
- Formatting consistency fixes for recent changes [Vas Crabb].
- imd_dsk.cpp: Fix segmentation fault saving FM track. Incorrect cell size for FM track results in empty bitstream that ultimately causes data.empty() to seg fault [Jesse Marroquin].
- mame.lst: Added comments to simple machines [Scott Stone].
- render/bgfx: Fixed palette and UYVY conversion shaders (MT07760), and avoided poorly supported RGBA8 format [Ryan Holtz].
- sdl ui: fix choosing the root path (#8443) [tim lindner].
- Slightly cleaned up OSD input modules. Removed support for DirectInput 7 and earlier.  It hasn't been tested in years, and it's not relevant on any supported OS. DirectInput is effectively finalised at version 8, and is unlikely to get an API update in the future. Use more string[_view] and fewer C strings, and tightened up scope of a few things [Vas Crabb].
- srcclean: Added JSON cleaning support, and some cleanup. Made pbobble parent of bublbust, as it seems to be more widespread and more complete. Also fixed some ROM labels for bublbust. Made tbyahhoo parent of mtwinbee as the latter has substantial content removed rather than being localised, making it less complete. Applied srcclean to JSON files in bgfx subtree [Vas Crabb].
- Update bx to latest. Update bimg to latest. Update bgfx to latest [Бранимир Караџић].
- Update debugimgui to compile with latest imgui [MooglyGuy].
- Updated help text for bgfx_backend [Robbbert].
- Updated to latest version of bx, bimg and bgfx [Miodrag Milanović].
- Use log write calls directy on android [Miodrag Milanović].
- util/zippath.cpp: Fixed selecting the root directory on non-Windows systems in file selection menus [Tim Lindner]. OSD_WINDOWS isn't a safe way to detect Windows target, and OSD_* macros must not be used outside libocore/libosd [Vas Crabb].

0.234:
======
- A few metadata fixes [Vas Crabb].
- Allow controller configuration files to configure specific fields and updated documentation [Vas Crabb].
- API cleanups and miscellaneous fixes. emu/ioport.cpp: Allow controller files to override input sequences for inputs that don't use defaults, and to override the toggle setting for digital inputs. emu/config.cpp: Expose configuration level (mostly matters for controller files), improved verbose diagnostic messages, and moved a few things out of the global and preprocessor namespaces. docs: Added documentation for some controller configuration file features. The device mapping feature documentation will be merged in at some point. util/unicode.cpp, emu/input.cpp: API cleanups [Vas Crabb].
- Changed osd_ticks to use QueryPerformanceCounter on Windows since the mingw std::chrono::high_resolution_clock is anything but [Aaron Giles].
- Correctly apply -keepaspect with -unevenstretchx/y. (#8209). Correctly apply -keepaspect with -unevenstretchx/y. Initialize window at the correct size when -intscalex/y is used. Get correct window size upon maximizing/minimizing with integer scaling  [antonioginer].
- debugimgui: Fix mount and create image dialogs [Barry Rodewald].
- delegate: Fix Visual Studio case with displaced object base (internal representation seems to have drifted since it was originally
- Disable another MSVC warning that is known to be noisy (and which showed up with the recent setjmp workaround) [Aaron Giles].
- Filling out missing hashes for commented ROM_LOADs when known. Filling out missing hashes for commented ROM_LOADs when known [Scott Stone].
- hiscore.dat: Updates [Leezer].
- List shortnames of subdevices that have ROMs as part of -listroms header [AJR].
- More commented ROM_LOAD work.  Unknown hashes listed as NO_DUMP.  Some entries taken out entirely [Scott Stone].
- Read/write handlers for PRGRAM access from Main side was using u16 for the calculated offset, causing an overflow and constantly pointing to bank 0. Changed to u32, observed expected results [Damian R].
- Removed device tag lookups from various devices in favour of configurable object finders [Miodrag Milanović].
- softlist_dev.cpp: Fix verbose printf [AJR].
- srcclean for 0.234 branch [Vas Crabb].
- Updated Brazilian Portuguese translation [Felipe].
- Various XML format fixes [Scott Stone].
 written) [Aaron Giles].

0.233:
======
- Added helpers for 64-bit count leading zeroes/ones [Vas Crabb].
- Allow compiling on Linux without PulseAudio [Jason Flatt].
- Allow saved states to be deleted from the internal UI [Vas Crabb].
- Clean up some software list metadata [Vas Crabb].
- Eliminated remaining uses of auto_alloc and friends, and removed the object pool from running_machine [Aaron Giles].
- emu/ioport.cpp: Preserve configuration for slot cards when not selected. Have you carefully tuned the sensitivity for you Atari 2600 paddles, then realised you have to do it again after you play a joystick game and switch back to paddles?  Or are you sick of having to reconfigure your virtual RS232 peripherals every time you switch devices?  This will make your life a little easier [Vas Crabb].
- emu/ioport.cpp: Slightly better test for deselected slot cards [Vas Crabb].
- emu/rendutil.cpp: Use setjmp/longjmp for libjpeg error unwinding. Apparently Linux AArch64 has issues with throwing exceptions across C function frames [Vas Crabb].
- End the big-endian block in the right place (#8194) [pkubaj].
- Experimental flux viewer, activate by #define FLUX_SCREEN 1 in floppy.cpp [Olivier Galibert].
- Fix building benchmarks [Miodrag Milanović].
- Fix building mametest [Miodrag Milanović].
- Fix cross compiling benchmarks [Miodrag Milanović].
- flopimg.cpp: Removed object pool usage [Aaron Giles].
- floppy.cpp: Disable new code when FLUX_SCREEN is #defined as 0 (and thereby work around crash with some disks) [AJR].
- floppy: Allow the vtech floppy with its 32.2us gaps read back unscathed [Olivier Galibert].
- floppy: Change the formats from an intrusive list to a vector [Olivier Galibert].
- floppy: Fix the build [Patrick Mackinlay].
- floppy_image_format_t: Turn all the methods that can be static into static methods, which is almost all of them [Olivier Galibert].
- Flux screen: accelerate writes [Olivier Galibert].
- Flux viewer switched on by mistake [Olivier Galibert].
- formats/flopimg.cpp: Remove legacy pool allocator usage (#8216) [Aaron Giles].
- formats/vt_dsk.cpp: Fix clang error: unused variable 'floppyoptions_vz' [-Werror,-Wunused-const-variable].
- frontend: On input mapping menus, use UI left/right to switch between setting and appending to an input sequence [Vas Crabb].
- imgtool: Removed object pool usage [Aaron Giles].
- Including optional is not optional when optional is used [Olivier Galibert].
- makefile: Put comment for end of BIGENDIAN block in the right place [pkubaj].
- Miscellaneous improvements for software lists: Show list name in software selection menu (machines have multiple lists). Actually report software list parsing errors during validation. Check that software list name attribute matches filename. Limit software list names to 24 characters - they're getting too long, and they need to be practical in command lines [Vas Crabb].
- osd/eigcc.h: Fix 32-bit gcc/clang builds [Vas Crabb].
- Re-generate localisations [Vas Crabb].
- Remove emualloc.* [AJR].
- Remove leftover mame64 from docs [Olivier Galibert].
- Reorganize the floptool code, add some write support [Olivier Galibert].
- Strip carriage return characters from history.xml text [Belegdol].
- Strip CRs from history.xml (#8115) [Julian Sikorski].
- tools/imgtool: Removed legacy object pool usage (#8215) [Aaron Giles].
- UI: Add reset to default to bios selection menu (the one from the TAB menu, not the popup when starting a machine) [hap].
- Updated Chinese localisation [YuiFAN].
- Updated Greek Translation [BraiNKilleRGR].
- util: Retire legacy object pool, removing vestigial references. Thanks to AJR, Ivan Vangelista and Aaron Giles for helping make this possible. Also fixed debug build of imgtool [Vas Crabb].
- views: Allow to know the currently selected entry [Olivier Galibert].

0.232:
======
- docs: Updated build requirements for Ubuntu Linux [algestam].
- emu/video.cpp: Add support for %t format in snapshot names, replaced with current date and time [Fabio Priuli].
- floptool: Fixed incorrect arguments in error messages [Kelvin Sherlock].
- lib/formats: Fixed compilation when <functional> is not implicitly included [Brandon Munger].
- luaengine.cpp: Added additional error messages to emu.thread on unexpected return values [Szunti].
- osd/sdl: Added hack to work around SDL 2.0.14 reporting Caps Lock being released instantaneously on macOS [Kelvin Sherlock].
- osd/sdl: Added support for -attach_window on X11 [Nathan Woods].
- plugins/console: Save line history between sessions [Szunti].
- plugins/console: Store history file in plugin data home path [Szunti].

0.231:
======
- Allow breaking into the main menu before the machine fully starts [AJR].
- Changed valid range for audio_latency from 1-5 to 0-5 (0 is used by the PortAudio module) [Windy Fairy].
- options: simplified the statename/snapname logic for naming after image devices (e.g. %d_cart or %d_flop1) while allowing for more general non-alphanumeric separators, so that for instance %d_cart_%i correctly produces a name with the software name, followed by an underscore and an index, rather than failing to be recognized and defaulting back to %g/%i [Fabio Priuli].
- plugins/cheat: fix XML cheat loading when emulation is launched with an image option specified (e.g. mame nes -cart smb) or by loading directly one part of the software (e.g. mame a600 amigaocs_flop:lslarry2:flop1) [Fabio Priuli].
- plugins/cheat: Fixed handling of XML cheats that use multiple address spaces [Szunti].
- Updated Dutch strings.po file [Jos van Mourik].
- Use llvm-ar for Windows CI builds [Dirk Best].
- util/cdrom.cpp: Return LBA of index 1/start of track data instead of index 0/start of pregap data [Windy Fairy].

0.230:
======
- Added dongle dumps, improved cabinet info register settings, and updated notes [Jennifer Taylor].
- Added save state support for Namco System 21 family [cam900].
- Added synchronous I/O for RS232 port and HP98046 module [F. Ulivi].
- Added UI option to mute audio when emulation is not throttled (GitHub #7843) [Ryan Holtz].
- bgfx: Made crt-geom and crt-geom-deluxe scan lines adjustable, and added a low-pass filter for crt-geom-deluxe [cgwg].
- debugger: Added “wpsize” variable for accessing the access size that triggered a watchpoint [moralrecordings].
- Fixed rewind functionality (GitHub #7806) [feos].
- Improved Brazilian Portuguese translation [Chrystian Rafael Rubio de Melo].

0.229:
======
- bgfx: Added brightness boost, clamping to zero, and raster bloom effects to crt-geom and crt-geom-deluxe [cgwg].
- Changed “mame64” to “mame” in documentation [Firehawke].
- Fixed missing and duplicate source file references in build scripts [Roberto Benfatto].
- frontend: Added a few more driver flags to -listxml output [Nathan Woods].
- Updated “2020” to “2021” in various places [Stiletto].
- Updated instructions for building on macOS [r0ni].


0.228:
======
- bgfx: Added lcd-grid screen chain [cgwg].
- imgtool: Fixed Dragon DOS Disk BASIC token conversion [Tim Lindner].
- luareference.rst: Move the luareference-input properties together [AJR].

0.227:
======
- Added aspect ratio control settings to video options menu in internal UI [AJR].
- chdman: Added support for importing redump.org GD-ROM extended bin/cue format (GitHub #6466) [nhand42].
- Fixed issues in Brazilian Portuguese translation noted in GitHub #7510 [Masc Guy].
- frontend: Exposed cassette image devices to Lua scripts [Carl].
- frontend: Exposed emu_options to Lua scripts [Nathan Woods].
- frontend: Exposed image format information to Lua scripts [Nathan Woods].

0.226:
======
- Added GitHub Action to validate software lists and hash files [Dirk Best].
- Added GitHub Actions for continuous integration builds [Dirk Best].
- cpu/unsp: Fixed copy-paste errors in debugger state registration [Simon Eriksson].
- Improved Turkish translation [Kadir Ek?i].

0.225:
======
- Detect clang version when building for Android [Tiago Pierezan Camargo].
- docs: Overhauled the default key bindings documentation [Firehawke].
- docs: Removed contentious note about -syncrefresh option [Firehawke].
- formats/imd_dsk.cpp: Fixed issue when changing images [lfantoniosi].
- imgtool: Removed tests for pointers that can never be null [Nathan Woods].
- plugins/cheat: Copy the cheat table so as not to expose internal state [Carl].
- plugins/cheat: Fixed potentially accessing an uninitialised dictionary item [Nathan Woods].
- util/bitmap.cpp: Improved performance of fill member function on modern CPUs [Vas Crabb].

0.224:
======
- Added ci subtarget including recompiling CPU cores to identify build issues on non-x86 targets faster [Belegdol].
- Added new -speaker_report option to help developers tune sound levels [Aaron Giles].
- Define IMGUI_DISABLE_OBSOLETE_FUNCTIONS consistently to avoid differing definitions of ImGuiIO [Belegdol].
- docs: Fixed compilation with newer, stricter versions of Sphinx [Firehawke].
- netlist: Use posix_memalign on Android as well as macOS [Tiago Pierezan Camargo].

0.223:
======
- Added beam_dot_size for controlling the size of “dots” on vector screens [Aaron Giles].
- Changed Travis CI configuration for installing prerequisite packages in an attempt to speed up builds [Belegdol].
- debugger: Added loadr and saver commands for loading or saving data to/from a memory region [bombzj].
- docs: Improved analog joystick mapping documentation, and added health warnings [Firehawke].
- docs: Updated RTD theme to 0.5.0 (fixes issues with links in search results) [Firehawke].
- Only build asmjit for x86 and x86-64 targets [Belegdol].
- Switched AppVeyor MinGW GCC build to use -O3 (works around GitHub #6804) [Belegdol].

0.222:
======
- Added a Nuon software list [incog].
- Added -debuglog option to log debugger console output to a file [Stephen Oberholtzer].
- Added support for byte accesses and cleaned up code [cam900].
- debugger: Added condump command to export the console buffer to a file [Stephen Oberholtzer].
- docs: Cleaned up documentation and examples for command-line options [Firehawke].
- imgtool: Added Dragon DOS module [Tim Lindner].
- luaengine.cpp: Added rom_entry library [feos].
- luaengine.cpp: Consolidated code for parsing enum strings representations [npwoods].
- luaengine.cpp: Exposed ioport_setting as a table [feos].
- Moved sprite delay implementation into screen vertical blanking callback for some drivers [cam900].
- Support SYMBOLS=1 make option to include debugger symbols in Visual Studio Release builds [Frank Palazzolo].

0.221:
======
- debugger/osx: Avoid crash if a non-existent disassembly or memory view source is selected [AJR].
- docs: Disabled "smart" substitution of typographical quotes [Firehawke].
- luaengine.cpp: Added optional parameter to video::begin_recording() function for specifying video format [Nathan Woods].
- Made debugger interpret numerical literals in expressions as octal for applicable address spaces in disassembly views [AJR].
- netlist library updates: Added pre-compiled static solvers (must be manually rebuilt when netlists are updated). Improved performance of time step calculation [Couriersud].
- Refactored AVI/MNG recording code to move it out of emu/video.cpp and reduce duplication [Nathan Woods].
- Updated hiscore.dat for latest changes [Leezer].

0.220:
======

- Allow Edit-and-Continue for Visual Studio debug builds, as internal compiler error has been fixed [Belegdol].
- Entirely replaced legacy Intel 8274, NEC uPD7201, Zilog SIO and Zilog DART serial controller emulation [AJR].
- Fixed potential debugger crashes in cheatlist and help commands [quasiscroto].
- frontend: Added an About menu option to display the contents of COPYING in order to be more license-compliant [Ryan Holtz].
- luaengine.cpp: Added support for saving and loading state to/from binary string buffers [feos].
- screen.cpp: Added a missing break in switch statement (GitHub #6372) [fasteddo].

0.219:
======

- Added a tip on how to enter the debugger to the online documentation [R. Belmont].
- bus/ss50: Added MFI, OS9 and UniFLEX formats to DC5 floppy drive controller [68bit].
- bus/ti99: Added VRAM size option to Enhanced Video Processor card [Michael Zapf].
- Changed alternate versions of ChessSystem R30, Kasparov RISC and various Mephisto chess computers from BIOS options to clones [hap].
- floptool: Added OS9 disk format [68bit].
- formats/flex_dsk.cpp: Simplified code, and added support for variants with single-density initial tracks [68bit].
- formats/os9_dsk.cpp: Added support for variants with single-density initial track and base sector zero [68bit].
- formats/wd177x_dsk.cpp: Allowed derived classes to override the format per track/head [68bit].
- machine/spg2xx_video.cpp: Removed row scroll offset hack. Problematic cases where different games in multi-game systems required different values are fixed [David Haywood].

0.218:
======
- input_sdl.cpp: Process control characters so the natural keyboard can see them (SDL normally strips these out) [AJR].
- natkeyboard.cpp: Don't strip linefeed characters (Ctrl-J) from natural keyboard input except when pasting strings [AJR].
- unidasm: Handle word endianness for address-shifted architectures correctly and safely [AJR].
- video/fixfreq.cpp: Added adjusters to aid in development and debugging [Couriersud].
- luaengine: Added read_range function to addr_space, allowing scripts to directly read blocks of data [feos].
- Fixed crash when using -aviwrite or -mngwrite with system that lack screens [Firewave, hap].
- romload: Increased width of total ROM size members to 64 bits (fixes loading percentage display for hapyfsh2) [Ryan Holtz].

0.217:
======
- Add low latency option to internal user interface [Antonio Giner].
- Added company names to a number of software list descriptions [Wintermute 0110].
- Added overridden new/delete operators to pre-fill memory in debug builds (can help identify uninitialised members) [Vas Crabb].
- Added support for saving members of structures in arrays, and added support for automatically saving output values [Vas Crabb].
- debugger: Added cpulist command. Show opcodes in octal when disassembling code from octal spaces [AJR].
- Enhanced -listxml, -listsoftware, -getsoflist and -romident to support software lists enabled by slot card devices [Vas Crabb].
- lua: Exposed address space address mask, data width and endianness [feos].
- minimaws updates: Added support for software lists in web pages and romident verb. Added clone listing to machine pages as well as software pages. Added identification of fixed bit patterns up to 128 bits long to web-based ROM identification code. Reduced network requests required to initial load a machine page [Vas Crabb].
- netlist: Reduced visibility of some matrix solver members [Couriersud].
- plugins/cheatfind: Added support for entering cheat names [Carl].

0.216:
======
- Added a workaround for nanosvg making assumptions about the global locale [Vas Crabb].
- Added workaround to allow cross-compilation for an i386 target on an x86-64 host [Tiago Pierezan Camargo].
- bgfx renderer updates: Added support for disabling waiting for vertical blanking interval to bgfx Vulkan back-end. Fixed issue that could prevent brightness, contrast and gamma adjustments from being applied [Couriersud].
- cpu/f8: Moved internal scratchpad register memory to an address space [AJR].
- cpu/i86/i86.cpp: Disabled warning message when executing instructions with lock (0xf0) prefix [Joakim Larsson Edstrom].
- cpu/i86: Fixed pathological case where jumping into pages of 0xFF-prefixed invalid opcodes could cause MAME to lock up [AJR].
- cpu/m6502: Corrected 65C02 opcode timing and bus usage. BBR and BBS use one or two extra cycles when the branch is taken (like other conditional branches). TRB and TSB perform an extra read of the operand instead of an extra write. Added preliminary Sitronix ST2204/ST2205U system-on-a-chip emulation [AJR].
- cpu/m68000: Improved cycle counts for SCC68070, and further distinguished it from the MC68000 and MC68010 [AJR]. 
- cpu/nec updates: Implemented v5x internal/external timer clock input selection. Internalized CPU clock divider for V40/V50 [AJR].
- cpu/nec/v5x.cpp: Moved re-mappable I/O handlers into a separate address space, and fixed re-mapping behavior [cam900].
- cpu/sh: Implemented SH-2 watchdog timer [MetalliC].
- General refactoring and modernisation: Changed device delegates to behave more like device callbacks and other object finders during configuration. Eliminated a conditional branch from the hot path when invoking a delegate set to a member function pointer. Changed emu_fatalerror constructor and fatalerror helper to use string_format semantics. Improved semantics of scheduler quantum configuration. Micro-optimised scheduler code to improve performance of systems making heavy use of timers. Moved input sequence configuration helpers out of the core input manager to a front-end helper class. Got rid of device_slot_card_interface (it provided little value), and added a helper template providing validation for slots. Cleaned up a lot of bus/slot/card code [Vas Crabb].
- Internal user interface updates: Added live display of emulated analog control positions to the analog controls menu. Added live feedback to the input configuration menus, and improved input sequence configuration behaviour. Fixed regression that caused default input mappings to be displayed incorrectly. Improved layout of DIP switch display and made it scale with UI font size. Improved crosshair image selection user interface. Separated "focus next" and "config menu" actions, and implemented "focus previous" action. Fixed bug that prevented joystick or mouse inputs from being used for "focus next" action. Fixed some cases where menu heading size was not re-calculated after UI font size changes. Fixed a bug that allowed keyboard focus to move to hidden panels on the system/software selection menus. Improved presentation and responsiveness of a number of menus. Fixed endian issues, improved data locality, and reduced redundant copying and hashing in the localisation loader. Added and diagnostic output messages and validation of input data to localisation loader. Improved performance of opening debugger windows, particularly memory windows with a large number of save state registrations. Made new disassembly windows default to the current CPU in the Qt debugger [Vas Crabb].
- Netlist library updates: Added more C preprocessor features to netlist preprocessor, including macro parameters, stringification and token concatenation. Improved reporting of error location in netlist preprocessor. Added ability to supply the floating point type as a solver parameter. Added RELTOL and VNTOL solver parameters to control Newton convergence checks. Started adding support for parameter values containing expressions. Removed proxy and power terminal hacks and updated netlists as necessary. Removed DUMMY_INPUT (NC_PIN should be used in its place). Enabled extended validation to catch unconnected power terminals, and fixed errors this exposed. Added const and noexcept qualifiers as appropriate, and removed dead code. Added vector output support to fixed frequency screen device [Couriersud]. 
- netlist: Added 7492 divide-by-twelve counter and 7442 4-line BCD to 10-line decimal decoder [Ryan Holtz].
- nltool updates: Added --fperr option to enable floating point exceptions (useful when debugging code in GDB). Added preliminary documentation mode [Couriersud].
- OpenGL renderer updates: Fixed issue that could prevent brightness, contrast and gamma adjustments from being applied. Fixed failure to apply line width [Couriersud].
- Removed internal auto-fire functionality, as the plug-in is the preferred solution (GitHub #5802) [Vas Crabb].
- screen.cpp: Only clear or allocate scan bitmaps in excess of the previous height. Fixes blank portions of snes smw2u, and possibly others [Ryan Holtz].
- util/options.cpp: Fixed settings being read with user locale but written with C locale. Fixes system/software selection menu filter panel not being displayed on macOS depending on number format settings [Vas Crabb].
- wavwrite.cpp: Fixed buffer overrun when supplying 32-bit stereo samples [Vas Crabb].

0.215:
======
- Added covers to images that can be displayed in system selection UI [Robbbert].
- Always re-generate version.cpp if top-level makefile changes [feos].
- bgfx: Do texture format conversion via a full-screen GPU pass [Ryan Holtz].
- Build bgfx with OpenGL ES rather than OpenGL when building without X11 on Linux and BSD [Belegdol].
- bus/dmv: Added K012 and C3282 hard disk interfaces [Sandro Ronco].
- Converted osd_printf_* family of functions to use util::string_format semantics [Vas Crabb].
- Fixed clang compilation error on targets where stream size is larger than long int [Nathan Woods].
- Fixed Visual Studio 2019 build issues [Belegdol].
- imagedev/avivideo.cpp: Added an image device to provide looping uncompressed AVI frames as input [Ryan Holtz].
- Lua engine updates: Added callback after a batch of sound samples are generated. Greatly reduced compiler memory usage by adding user type members after construction [feos].
- osd/sdl: Added support for RRGGBB00 pixel format used by ARM Mali GPUs [R. Belmont].
- Removed unnecessary offset attribute from some software lists [Robbbert].
- screen: Added support for changing horizontal width mid-frame and hooked it up to the SNES driver. Fixes dkongcu intro and others [Ryan Holtz].
- Start AVI recording after devices have been started so initial screen refresh rate is used rather than fixed 60Hz. [feos].
- minimaws: Added support for identifying ROM/disk dumps on command line or through web UI [Vas Crabb].
- srcclean: Improved handling of some kinds of C preprocessor abuse [Vas Crabb].
- Improved performance of makedep.py, reducing the time taken to bootstrap a SOURCES= build [Vas Crabb].
- Added MIDI floppy software list to some IBM PC drivers [FakeShemp].
- bus/ata: Added skeleton PleXCombo PX-320A DVD/CD-RW Drive device [Firmware HQ].
- Fixed building with GCC versions that report a non-numeric version suffix [MoochMcGee].
- Updated comments, and corrected spelling, grammar and typographical errors in comments and documentation [Zoe Blade].

0.214:
======
- Distinguish DIP switches that belong to different devices but have the same name in UI menus. Most likely to occur when multiple instances of the same device type are configured on bus slots [AJR].
- Fixed debugger dump command for address-shifted spaces [AJR].
- video/generic.cpp: Added 16*16 layouts composed of 2*2 arrangement of 8*8 tiles, and made a number of drivers use generic layouts [cam900].
- plugins/cheat: Added time functions to the cheat sandbox [Carl].
- netlist: Force C locale when formatting numbers (fixes exception when global locale is set) [Couriersud].
- Don't throttle emulation while paused if video update-in-pause is enabled [feos].
- Exposed running_machine::exit_pending() and running_machine::hard_reset_pending() to Lua scripts [Nathan Woods].
- Changed osd_get_clipboard_text() to return std::string [Nathan Woods].
- debugger: Added mips and m68k support to gdbstub, and added support for running MAME debugger commands from the client [Ramiro Polla].
- Changed Travis CI build to use GCC 9, and added MinGW GCC build to AppVeyor [Belegdol].

0.213:
======
- formats/flex_dsk.cpp: Re-wrote using wd177x_format as a base class. Now supports single- and double-density disks, dynamically identifies boot sector IDs, and writing image files [68bit].
- Made debugger memory views show correct data when chunks are too small for the space's address shift [AJR].
- Reverted change making SGI CD-ROM identify as a hard disk, as it causes indy_4610 to fail its SCSI test [AJR].
- Cosmac updates: Added preliminary CDP1804/CDP1805/CDP1806 emulation. Added disassembler support for CDP1805 with extended instruction set. Changed register names to use conventional decimal numbering. Attach following byte to disassembly of OUT instruction when P=X [AJR, hap].
- VRender0 device refactoring: Improved encapsulation of video and other conceptually independent on-board peripherals. Moved drivers for different VRender0-based machines out of crystal.cpp to their own source files. Untangled reads/writes to draw/display memory bank switches from screen_update - can run un-throttled now. Added CRT controller raw screen parameters. Implemented DMA hold feature and IRQ on mask writes, used by P's Attack. Improved Cross Puzzle Flash loading (currently fails POST with a SPU error) [Angelo Salese].
- Fixed building using system rapidjson [Belegdol] 
- Migrated travis-ci configuration to Ubuntu Bionic [Belegdol].
- Worked around [[nodiscard]] warning for std::basic_string::c_str() [Billy Robert O'Neal III].
- Fixed cleansrc target for hosts using sh-like shells [Christian Groessler].
- vii.cpp: Added EEPROM support to dreamlif [David Haywood].
- luaengine.cpp: Exposed sound output buffer and sample rate to Lua scripts. Also corrected some documentation [feos].
- imgtool: Added Thomson BASIC tokenizer, implemented Thomson BASIC, and fixed passing --filter= to get verb. Thanks to Adrien Destugues for information about the format in bastok.cpp [hadess].
- imagedev/harddriv.cpp: Added support for HDI image file format [Justin Kerk].
- Enabled default move constructor/assignment operator in core_options, and changed plugin_options code to use them [Nathan Woods].
- Refactored info XML creation code to improve performance. Allowed machine info fragments to be generated in parallel. Changed formatting code to use I/O streams, and reduced redundant code. Sort filtered devices lexically by short name [Nathan Woods].
- Added -attach_window command-line option on Windows to use an existing window as the first emulation window [Nathan Woods].
- Lua engine updates: Added a function to instruct MAME to capture input when any input window sharing a thread with an emulation window has focus. Added a mechanism for Lua plugins to configure mandatory image devices. Exposed input device classes, devices and device items. Changed seq_poll_start to take the input item class as a string. Added a hook before settings are loaded, allowing default input port values to be changed. Exposed additional ioport_field properties, and exposed input sequence cleaning functionality. Exposed ioport_manager::type_group() and ioport_field::keyboard_codes() [Nathan Woods].
- Properly named the CoCo joysticks "Right Joystick" and "Left Joystick" [Nathan Woods].
- imagedev/harddriv.cpp: Added support for 2MG image file format and raw disk image files [R. Belmont].
- Added a still-frame capture image device to simulate digitizers, cameras, etc. using PNG files as input [R. Belmont].
- Fixed build on Solaris 2.11 (non-Oracle) [Rick V].
- Enabled pre-compiled header with Visual Studio compiler for emu, frontend, precompile, dasm and optional libraries [Samuele Zannoli].
- machine/awboard.cpp: Added notes on Atomiswave checksum and keys [brizzo, MetalliC].

0.212:
======
- Added a sensorboard device mainly meant for chess piece simulation, and updated all chess drivers to use it [hap, Sandro Ronco].
- Added an option to skip showing the file manager for mandatory slots on start [Nathan Woods].
- Added an ultra-low-latency mode for PortAudio sound output module [Eric Vidal].
- debugcon: Added helpcustom command to display help for custom debugger command registered by devices [Ryan Holtz].
- De-unrolled pixel-drawing loops in various devices and drivers [shattered].
- Disable UI startup screens when using the dummy video output module [feos].
- floppy: Added initial implementation of weak zone emulation [O. Galibert].
- Lua engine updates: Exposed effective frame skip from video manager. Exposed sound manager and natural keyboard objects. Added support for saving snapshots to absolute paths. Added ability to set input sequences on I/O port fields and exposed more properties. Exposed more device_image_interface properties and fields. Separated plugin options from core options, simplified boot.lua and made enabling/disabling non-existent plugins fatal. Added support for multiple semicolon-separated paths in the - Pluginspath option. Added support for profiling Lua. Added ability to disable UI input from Lua. Moved the clipboard paste function from the MAME UI manager to the natural keyboard class [Nathan Woods].
- luaengine.cpp: Added accessors for snapshot target size, screen refresh interval, and snapshot bitmap [feos].
- Made layout format more flexible and deprecated artwork "layer" concept [Vas Crabb].
- MIDI: Fixed reception of several System Common messages [Golden Child, R. Belmont].
- midtunit: Added debugger commands for logging DMA drawing bitmaps in PNG format and metadata in JSON format [Ryan Holtz].
- Moved UI colors and menu metrics into MAME UI manager class [Nathan Woods].
- Removed MACHINE_CONFIG_START/MACHINE_CONFIG_END and almost all remaining MCFG macros [Ryan Holtz].
- Removed support for TEXFORMAT_PALETTEA16 (16-bit indexed with alpha) [Ryan Holtz].
- SGI Newport graphics updates: Split out XMAP9, CMAP, VC2, and RB2 to separate devices. Merge popup, overlay and CID planes into a single buffer to better reflect hardware behavior [Ryan Holtz].
- tilemap: Added note about misleading variable names [68bit].

0.211:
======
- Implemented accurate byte-smearing for writes on 32-bit M68k family CPUs [AJR].
- Fixed fatal error when attempting to set a watchpoint straddling unaligned portions of two adjacent native words [AJR].
- Corrected VGA/SVGA display parameters [AJR].
- Fixed Visual Studio clang/llvm build configuration [feos].
- Changed auto-fire plugin to store configuration in the plugin home path directory [Jack Li].
- Default save/load search path to an empty string if it's null [Nathan Woods].
- Added a -version verb that prints the build version [Nathan Woods].
- Fixed a subtle memory subsystem bug in unit mask handling [O. Galibert].

0.210:
======
- Improved sorting of items for machine input menu. Inputs of the same type are sorted by name, and keyboard keys are sorted by their assigned character codes (if any) [AJR].
- Removed unnecessary handler arguments and unnecessary trampoline handlers for many devices and drivers [cam900].
- TV Game work in progress: Continued work on newer u'nSP CPU cores and GCM394 system-on-a-chip (used by smartfp and wrlshunt). Started documenting GCM394 video register locations based on code analysis. Started implementing GCM394 video DMA and sprite drawing [David Haywood].
- Lua engine: Exposed machine flags, and corrected and expanded documentation comments [feos].
- Fixed drivers that depended on RAM auto-sharing in preparation for its removal [O. Galibert].
- Corrected sector interleaving for JVC disk image format [Tim Lindner].

0.209:
======
- Annotated all uses of set_input_line_vector with CPU type [O. Galibert].
- OS X debugger: Update window titles when restoring configuration for disassembly and memory viewers [AJR].
- Removed unnecessary read/write handler arguments, improved member names, and updated comments in many devices and drivers [cam900].

0.208:
======
- Exclude scheduled devices that don't expose a base program counter from numerical indexing for debugger commands [AJR].
- netlist: Added output first-order approximation of NE555 output driver impedance [Couriersud].
-netlist: Added unijunction transistor example for 2N6027 [Couriersud].
- netlist: Added base-emitter and base-collector capacitance to Ebers-Moll bipolar junction transistor model. Improves performance on switching by dramatically reducing required Newton-Raphson iterations [Couriersud].
- Fixed mapping between mouse coordinates and character positions in Qt debugger views [Golden Child].
- Added more granular emulation feature bits as well as a couple more catch-all categories [Ryan Holtz, Vas Crabb].
- video/opengl: Improved performance by lifting calculations/memory accesses out of loops in pixel copy/format conversion functions [schnitzeltony].
- imgtool/filtbas.cpp: Automatically terminate strings on end-of-line [tomctomc].
- romload: Made BIOS selection apply to fills [Vas Crabb].
- gdrom: Documented security commands [MetalliC].
- Harmonised software list file names with names in the software list and in the driver/device source [Tafoid].

0.207:
======
- Portuguese (Brazil) [Wellington Uemura].
- Made -nonvram_save also inhibit saving of "battery" non-volatile RAM for image devices [AJR].
- Changed many devices and drivers to use abbreviated integer type names and simpler read/write handler signatures [cam900].
- scripts/src/netlist.lua: Fixed indentation [cam900].
- Eliminated MCFG_DEVICE_DISASSEMBLE_OVERRIDE macro [cam900].
- device_memory_interface.rst: Updated name of macro that was renamed in source [cam900].
- Changed "over-sleep" calculation to be independent of desired delay [Celelibi].
- Netlist library updates: Added clang-tidy support to makefile and made recommended changes. Refactored code, converted macros to C++ and cleaned up state saving. Made order of device creation independent of standard library. Made startup strategy configurable. Made plib respect C++11 alignas specifier and added alignment hints to some container classes [Couriersud].
- Fixed SDL keyboard map handling, cleaned up obsolete code, and updated German keyboard map [Couriersud].
- Added support for converting SVG images to PDF when building the documentation [O. Galibert].
- Improved usability of cheat finder plugin: Improved visual indicators. Added automatic pause feature to cheat finder menus. Allowed test write value to be selected from a pre-defined list. Added an additional output format for cheats [Pugsy].
- SGI Newport graphics updates: Added support for backward spans and more command configurations, and fixed window checking. Converted to use 64-bit read/write handlers, fixing graphics DMA. Added preliminary logical operation support and pop-up plane support. Fixed vertical blanking behaviour and cursor palette, and fixed Scr2Scr to account for XYWindow. Made ColorRed contents transfer to ColorI on write. Added preliminary color index MSB handling. Added logging support to allow viewing captures offline. Fixed write masking and xsave calculation. Fixed lines overshooting by one pixel, not updating X/Y start and writing invalid palette values. Added DID entry handling (fixes palette issues in buttonfly). Added basic support for shade DDAs and some other command configurations (fixes jot). Added direct RGB handling (used for IRIX login screen and icons). Fixed double-buffered source value shifts (fixes flickering in buttonfly). Fixed swapped X/Y in Bresenham line drawing (fixes misplaced graphics in buttonfly) [Ryan Holtz].
- osd/sdl: Re-enabled "accel" SDL 2D accelerated video output [schnitzeltony].
- imgtool: Added read-only support for DEC RT-11 filesystem [shattered].
- Fixed crash when exiting directly while filter UI is active (GitHub #4596) [Vas Crabb].
- Add 64*64->128 multiply as a common utility function [Vas Crabb, Patrick Mackinlay].
- testkeys: Centre window on start to avoid hiding behind toolbars or outside screen area in a multiple monitor setup [Vas Crabb].
- osd/windows: Restrict initial window position to work area of one monitor [Vas Crabb].

0.206:
======
- Added object finder for address spaces, and used it to replace several ad-hoc implementations and memory interfaces [AJR].
- netlist updates: nlwav: Added support for converting log files to VCD format, and updated examples in --help output. Added comment handling to the preprocessor (directives in multi-line comments are now ignored correctly) [Couriersud].
- Adjusted patterns to prevent "vsnes" subtarget being mistaken for a Visual Studio build [Justin Kerk].
- emscripten: Added a work-around for Web Audio auto-play restrictions in Chrome 71 [Justin Kerk].
-  sdl: Don't let failure to start haptic feedback prevent joystick module from loading [Justin Kerk].
- dsk_dsk: Increased maximum cell count allowing slightly out-of-spec disk images to run [Lord Smeagol (Carl Lloyd-Parker)].
- chdman: Fix GDI 2048 extraction [MetalliC].
- netlist: Added 7497 device, and fixed behaviour of 7474 when preset and clear are both asserted. [shattered, Couriersud]
- Streamlined palette configuration and removed many palette and graphics decoding MCFG macros [Vas Crabb].
- Removed some delegate functionality that's no longer useful [Vas Crabb].
- Added some example XSL transform scripts that operate on -listxml output [Vas Crabb].
- Improved user interaction: Added support for icons and filtering on favourites in software selection menu. Added support for ICO files containing PNG image data with alpha transparency. Changed search to use a more responsive edit distance algorithm. Added more detail to possible matches displayed for unknown system/software names. Made informational verbs behave more consistently. Made -oslog option send diagnostic output to standard error when no debugger is attached on Windows. Slightly improved performance when loading localisation files. Refactored selection menu and favourites manager code for better encapsulation and performance [Vas Crabb].
- Updated documentation and re-worked for clarity and consistency [Firehawke, Vas Crabb].

0.205:
======
- eepromser: Don't change state on soft reset (EEPROMs don't actually have reset lines). [AJR]
- bus/nes_ctrl: Added Majesco dance mat device (used by the ddrdismx and ddrstraw in nes_vt.cpp) [David Haywood].
- Fixed some collateral damage from refactoring [hap].
- Updated Android support to build with NDK r18b, current Android Studio, and current Gradle (target API version is now 24) [Miodrag Milanović].
- debugger: Prevent watchpoints from being installed multiple times recursively [O. Galibert].
- Updated bgfx and bx to latest upstream code [Ryan Holtz].
- Eliminated MCFG macros from may devices and drivers, including all but one of the CPUs [Ryan Holtz, Ivan Vangelista].
- Updated and improved some command-line option descriptions [Vas Crabb].
- Fixed failure to construct/destruct non-trivial objects that caused crashes when using DRC back-ends [Vas Crabb].

0.204:
======
- luaengine: Fixed item:read_block(offset, count) so it applies the offset. Also added description comment for emu.item() [feos].
- luaengine: Added functions to screen_dev class for getting packed RGB pixel values. [Ryan Holtz, Carl]
- debugger: Added "gp" command to run until the next privilege level change, and added support for "%c" format conversion. [Sven Schnelle]
- Added ini/examples to binary distribution [anikom15].
- Changed hand-made SAA5051 character ROM to match the datasheet (one pixel was missing on the 'j' character) [Lord Nightmare].
- Decapped and extracted internal ROM from SAA5050 character generator [Sean Riddle, ClawGrip, The Dumping Union].

0.203:
======
- Invalidate memory access caches when removing watchpoints (prevents crashes on subsequent accesses to the same areas) [AJR].
- Added shaders for performing color transforms and three-dimensional lookup tables. Allows arbitrary color space manipulation within the sRGB space [anikom15].
- Don't set the SDL_WINDOW_OPENGL extra flag if -video none is set. Allows a true headless run when the environment variable SDL_VIDEODRIVER=dummy is set [dslegend].
- ti99: Added guards against selecting non-existent drives [Michael Zapf].
- debugcpu: Fixed watchpoints for CPUs that use word addressing [Ryan Holtz].
- osdwindows: Fixed BGFX not rendering in multiple windows (internal UI is still glitchy) [Ryan Holtz].
- Fixed command line parsing for the long form of the first instance of a media option [Tim Lindner].
- Improved search behaviour in file selection menus [Vas Crabb].
- Removed documentation for command-line options that are no longer supported, and added preliminary documentation for new options [Tafoid].
- Addressed some consistency issues in documentation [Wellington Uemura].

0.202:
======
- Apply scanline effect before defocus effect, and moved scanline effect into separate shader [anikom15].
- decstation improvements: Emulated accelerated quasi-blitter enough to get a working console. Added LANCE Ethernet controller. Started implementing IRQ handling in gate array [R. Belmont].
- Added preliminary AMD LANCE Ethernet controller device [Ryan Holtz].
- Added skeleton SunPC 5x86 Accelerator, SunSwift 10/100 Ethernet + Fast Wide SCSI, and TurboGX+ SBus card devices [Ryan Holtz, Andrew Liles].
- Re-wrote serial mouse emulation: Simplified code and eliminated timers. Split Microsoft mouse into separate two-button (Microsoft), three-button (Logitech), and click wheel devices. Made Mouse Systems mouse behaviour better match early Mouse Systems models. Added "rotatable" Mouse Systems mouse support (untested due to lack of software). Added Sun mouse support, currently hacked to run at 9,600 Baud to work around a separate issue [Vas Crabb].
- Fixed issue where dual-screen systems could be incorrectly displayed with 4:3 aspect ratio [Vas Crabb].
- Added abbreviated forms of some command-line options to documentation [Wellington Uemura].

0.201:
======
- Improved debugger view behavior: Mask address expressions in disassembly view. Mask address expressions correctly in memory view when using physical addresses beyond logical limits. Fixed scrolling glitch in memory view when address expression is applied [AJR].
- screen.h: Fixed have_screen_update accessor and renamed to has_screen_update. Fixes regressions in granny and other drivers using custom update functions with CDP1861, CDP1864 and TMS992x VDPs [AJR].
- discrete: Fixed DISC_555_TRIGGER_DISCHARGES_CAP option in DISCRETE_555_MSTABLE. Allows sound in Amazing Maze to play properly beyond 30 seconds. Also avoided problematic debug log file names on Windows [Derrick Renaud].
- imgtool: Fixed parsing of options with enumerated values [Fabrice Bellet].
- cassette: Added audio output streams, removing need for "wave" device [Michael Zapf].
- Added support for abbreviated read/write handler signatures, and binding an object finder to an instance by reference [O. Galibert].
- Added support for TAP/TUN network provider on Windows [Patrick Mackinlay].
- Improved emulation startup performance by using more appropriate strategy for sorting save state entries [smf].
- Improved support for screen orientation/geometry and automatic layout generation: Added orientation and physical aspect ratio properties to screen device. Automatically generate views for systems one screen. Documented layout file format and automatically generated views [Vas Crabb].
- Added save state support for C arrays and std::array nested to any depth [Vas Crabb].
- Clarified and re-worded the descriptions of typical ROM set organisation schemes [Firehawke].

0.200:
======
- Standardized order of "On"/"Off" items in UI menus with "On" consistently to the right of "Off" [AJR].
- Eliminated "Atari VG EAROM" in favor of newer ER2055 device [AJR].
- Made many class members private and removed dead code exposed [David Haywood].
- Moved instantiation of device_finder for interface classes from implementation sources to interface sources. Avoids multiple explicit instantiations with the same template arguments [Stefan Bruns].
- devcb: Replaced with new, more flexible implementation. Converted a number of devices and drivers to use the newly supported less macro-dependent syntax [Vas Crabb].
- Layout system improvements: Allow screens to be referenced by tag in layouts. Allow an internal layout to be supplied per device rather than just per system, with relative screen and input tags. Improved view generation and selection for systems with two screens. Added support for user variables and repetition in layouts, and converted a number of layouts [Vas Crabb].

0.199:
======
- Made floppy emulation more robust, and improved bitstream handling [John Keoni Morris, Peter Ferrie, O. Galibert].
- Debugger: Added command for go_exception, and made save/load aware of address translation [Patrick Mackinlay].
- sonydriv: Fixed issues with the 3.5" drive reporting disk switches on Apple IIgs and Mac drivers [R. Belmont].
- Made ROM BIOS macros more intuitive to use, and added a validity check for unselectable BIOS ROMs [Vas Crabb].
- Machine configuration improvements: Reduced code duplication in addrmap.h and added support for object finders in more places in memory maps. Allowed implicit references to owner device in address maps. Improved syntax for specifying address maps and screen update functions in machine configuration without macros. Reduced overloading of member function names - it's less practical without macro helpers selecting desired overload. Consider floating point epsilon when validating crystal values [Vas Crabb].
- Cleaned up bulk refactoring of output code [Wilbert Pol].

0.198:
======
- Made “Keypad ,” and “Keypad =” standard keys [AJR].
- Made debugger dump command work with unaligned addresses [AJR].
- Sort save state items in alphabetical order in the memory viewer source list [Curt Coder, Vas Crabb].
- floppy: Initialize created floppy images the same way as loaded images [Dirk Best].
- Output module changes: Cleaned up network provider protocol. Added pause and savestate commands to both network and win32 providers [headkaze, R. Belmont].
- debugger: Simplified now-obsolete and buggy memory access code [O. Galibert].
- sound: Don’t try to generate a negative number of samples if stream->update() goes back in time [O. Galibert].
- floppy: Increased robustness and improved bitstream handling [John Keoni Morris, Peter Ferrie, O. Galibert].
- Removed name mangling functions from driver initialisation methods, and renamed init_0 to empty_init [Ryan Holtz].
- Initial work on next-generation machine configuration syntax: Made concrete device types callable and added support for device class constructor overloads. Made machine_config aware of current device being configured and made finder/callback target tags apply relative to it. Allowed devcb to be bound to a device/mix-in or the target of an object finder. Allowed device finders to be used in place of literal tags in many places in machine configuration. Replaced many MCFG_ macros with overloaded device constructors and removed many macros that provide limited value. Removed implicit name mangling from macros for slot options, discrete sound descriptors, and graphics decode descriptors [Vas Crabb].
- Removed assert macro replacement as it can’t be used in destructors of classes that are literal types [Vas Crabb].
- Made slot device options menu localisable [Vas Crabb].
- Completely eliminated deprecated indexed output functions [Wilbert Pol, Ryan Holtz, Robbbert, Dirk Best, cam900, AJR].
- Software list corrections: Made Acorn software list names more consistent. Stripped leading/trailing spaces from ROM names. Changed some ROM names that are problematic with Windows Explorer and Command Prompt [Wintermute 0110].

0.197:
======
- Began conversion from MCFG_DEVICE_VBLANK_INT to MCFG_SCREEN_VBLANK_CALLBACK [AJR].
- ARM disassembly improvements: Calculate R15-relative offsets in disassembly. Fixed erroneous identification of S field in data processing opcodes. Calculate result of ADD/SUB Rn,R15,#imm [AJR].
- Relaxed constraints on address mirroring/global mask combinations: Mirror bits may now fall outside the global mask provided they cover the entire masked-out portion [AJR].
- Added skeleton device for Ericsson Information Systems IBM3270/5250 terminal adapter 16-bit ISA card [Joakim Larsson Edstrom].
- Added suspend and resume debugger commands for suspending and resuming scheduled devices [Gavin Andrews].
- Allow building against system pugixml [Julian Sikorski].
- Fixed issues with CHD loading under Emscripten [Justin Kerk].
- Completely eliminated address map macros [O. Galibert, Robbbert].
- Completely eliminated set_digit_value, and reduced usage of and deprecated set_led_value/set_lamp_value [Ryan Holtz, Robbbert, AJR, Vas Crabb].
- isa/pgc: Implemented accelerated VRAM writes [shattered].
- Standardised on IPT_CUSTOM for custom PORT_BIT handlers, leaving IPT_SPECIAL for the UI [smf].
- Fixed fencepost in memory_manager::region_containing, which caused regions to be registered for state saving [smf].
- Encapsulated default BIOS selection in device_t and simplified default BIOS selection from machine configuration [Vas Crabb].
- RAM device improvements: Always show default RAM size in XML output, and show sizes as declared in addition to byte count. Don't show inaccessible RAM device size options in XML output. Exposed RAM size options in minimaws [Vas Crabb].
- Rearranged device debugger hooks to get a small but measurable performance improvement [Vas Crabb].
- Removed emucore.o from tools, fixing some inconsistent behaviour with different build options [Vas Crabb].
- Documented debugger expression number syntax [Erik Dominikus].
- PC-98 CD software list updates: Updated with everything from the latest update of the Neo Kobe Collection. Tested all software list entries, and added supported status and emulation issues for each one. Added usage information for games that require serial numbers or manual protection. Added disk 2 of the floppy version of Brandish Renewal, since it's used as a key disk for the CD version. Fixed copy-paste error for hybrid discs copied from the FM Towns list. Replaced the Sweet Days CHD with a properly converted one. Demoted Miamisoft's games to non-working since they seem to hang randomly [r09].

0.196:
======
- Bugfix #06869: [Plugins] Lua Cheat Plugin: Some cheat commands are ignored using Lua cheat engine [Carl].
- debugger: Fixed extent of debug view, wplist output, watchpoint view, and find command for address-shifted memory spaces [AJR].
- Separated TLCS-90 external IRQ line state from internal request register - fixes tenkai slowdowns [AJR].
- Include option and file names in fatal error message for failure to load media image [AJR].
- plugins/portname: Described revised format [Carl].
- Removed macros from address maps [O. Galibert].
- Added ability to start/stop AVI recording during emulation session, and improved handling of native aspect screenshots on systems with arbitrary numbers of screens [Ryan Holtz, Vas Crabb].
- validity check: Test all 33 possible results from count_leading_zeros() and count_leading_ones() [smf].
- Added QuikLoad option for several CP/M-80 systems (Altos 5, Aussie Byte II, Decision Mate V, Kaypro, QX-10, Xerox 820) [Stefano].
- Changed build options to make deprecated declaration warnings non-fatal and enabled by default [Vas Crabb].
- Started deprecating and removing poorly-performing output system APIs [Vas Crabb].
- Deprecated and removed all uses of running_machine::first_screen [Vas Crabb, Ryan Holtz, AJR, R. Belmont, Nigel Barnes].
- Restricted ROM names to a shell-friendly subset of printable ASCII [Vas Crabb].
- Reduced use of naked pointers, using namespace, and preprocessor macros in recompiling CPU cores [Vas Crabb].
- Converted most machine configuration helpers to non-static member functions and adjusted macros to match [Wilbert Pol].
- gameboy.xml, gbcolor.xml, leapster.xml, vsmile_cart.xml, vsmile_cd.xml, vsmilem_cart.xml: Corrected Spanish titles. [ClawGrip]
- Updated hiscore.dat for recent changes [Leezer].

0.195:
======
- Converted many configuration helpers to non-static member functions [Judge].
- Allow building with system-wide utf8proc, PortAudio, ASIO, GLM and RapidJSON [Julian Sikorski].
- Fixed issue linking Emscripten build with certain single-driver configurations (e.g. spectrum.cpp) [Justin Kerk].
- Changed memory map behaviour to "last entry wins". Allows more natural "import and patch" and "cover a region then punch holes" structures [O. Galibert].
- Made memory maps member functions of owner class [O. Galibert].
- Added disassembler for VM Labs Aries VLIW processor (used in NUON DVD players) [O. Galibert].
- Debugger: Fixed F10 step over for instructions with a branch delay slot [smf].
- Added support for multiple patterns and devices to -listfull verb [Vas Crabb].

0.194:
======
- Fixed masking of signed integer types in debug state [AJR].
- plugins/portname: Added preliminary plugin for loading input names from external files [Carl].
- Added verbose logging for configuration file loading [Firehawke].
- Differentiate between cartridge (cart) and romimage (rom) in generic slots [Nigel Barnes].
- Converted machine configuration builders to member functions of the state classes and simplified prototype [O. Galibert].
- Restored SANITIZE make option [Oliver Stoeneberg].
- Added artwork override and fallback options [phulshof].
- chdcd: Recognize ISO images with 2336 byte sectors [R. Belmont, Angelo Salese].
- Improved support for unusual Windows build configurations: Added workround for clang static builds and enabled them again. Don't force -O1 on clang builds. Added -lSDL2main to fix linking with GCC 7. Use dynamic linking for windows SDL builds to work around an apparent linker bug. Fix building with Qt debugger [smf].
- Fixed Z80 disassembly when $ed, $dd and $fd prefixes are used but the instruction is not valid [smf].
- Use C locale for int/float in XML files [Vas Crabb].
- Detect attached debugger on OSX before generating trace/breakpoint trap [Vas Crabb].
- Converted zippath directory to a C++ interface [Vas Crabb].
- Added GLSL bicubic filter (Catmull-Rom spline) and fixed pixel coordinates and sampling in GLSL bilinear filter [webghost009].
- Fix Visual Studio build when path to source contains spaces [Bjorn Moser].
- Updated "2017" strings to "2018" where relevant [Jonathan Holt].
- hiscore.dat: Updated for current MAME version [Leezer].

0.193:
======
- Fixed -listdevices' misplacement of subdevices in some configurations [AJR].
- Updated GENie, BGFX, and BX, and added BIMG since it is separated now [Miodrag Milanović].
- Converted disassemblers to independent classes. All architectures are available in unidasm, and paged/non-linear program counters are supported better [O. Galibert].
- emumem: Templated address_space::direct on address shift. Address passed to {read|write}_* on address_space or direct_read_data is now the logical address (not byte offset) [O. Galibert].
- ide: Disambiguated 16- and 32-bit CS access, and added non-space CS access methods [O. Galibert].
- memory: Removed some space parameters from the apple2 domain [O. Galibert].
- Raise a fatal error if lua console is requested but the console plugin is not found (rather than crashing) [Sylvain Glaize].

0.192:
======
- Changed 9615 baud configurations to the nominal 9600 baud now that Z80SIO is more tolerant [AJR].
- Made SDL input less eager to generate double-click events when mouse doesn't move between clicks [AJR].
- Improved wraparound handling for relative inputs [AJR].
- Attempted to fix PPC DRC scheduling bug (MT06615) [AJR].
- floppy: Added TEAC FD-30A 3 inch floppy drive [Dirk Best].
- midvunit: Use ADC0844 device [Dirk Best]
- wave: Look up speaker count and cassette device relative to owner - fixes cassette speakers inside devices [Dirk Best].
- chdman: Use DeviceIoControl to get disk length - allows chdman to access physical drives on Windows 10 [Ted Green].
-Added 32- and 64-bit population count utilities [Vas Crabb].
- Moved object finder resolution before device_start (github #2759) [Vas Crabb].
- Added an SDLC consumer device that logs SNA frame headers and data [Vas Crabb].
- Replaced hacky Kaypro keyboard that bypassed the SIO with emulated Kaypro 10 keyboard [Vas Crabb, rfka01, TeamEurope].

0.191:
======
- Bugfix #06154: [DIP/Input] Games with a rotary positional joystick: Some positions are skipped [Angelo Salese].
- Bugfix #06637: [Interface] Internal UI does not save entire configuration [AJR].
- Bugfix #06656: [Interface] Configuring Machine level "Video Option" causes CRASH [Nathan Woods].
- Bugfix #06711: [Interface] UI: If you exit with the Exit option, the last used game is not saved [Vas Crabb].
- Bugfix #06720: [Interface] Prescale option allows invalid values [Tafoid].
- Actually make sure OSD options are included when saving through UI [AJR]. 
- Made some small fixes to general info panel on the system selection menu [BraiNKilleRGR].
- Added lua translation to makefile and regenerated translations [Carl].
- plugins/cheat: Added input sequence cheats [Carl].
- imgtool: Added support for HP85 tape [F. Ulivi].
- Fixed crash loading 80-track .mfm dumps of 40-track floppy disks on 40-track drives [Justin Kerk].
- Created a more flexible date/time structure for use within imgtool intended to replace most usage of time_t [Nathan Woods].

0.190:
======
- luaengine: Added translation support [Carl].
- floppy: Added drive LED callback [Dirk Best].
- Implemented Candela PAL-driven address map (fixes several BASIC commands) [Joakim Larsson Edstrom].
- Added support for viewing PLS100/82S100/PLS101/82S101 equations to jedutil [Kevin Eshbach].
- Adding PAL dumps from Guzzler (Swimmer Conversion) [Kevin Eshbach]. 
- Added validation checks for PORT_CHAR character values [Nathan Woods].
- Made -validate verb report an error if no drivers match pattern [Nathan Woods].
- Attempted to sanitize/rationalize UTF-8 command line arguments are accessed. Also fixes a bug in imgtool where non-7 bit ASCII was not being handled correctly under Windows [Nathan Woods].
- clipper interrupt handling fixes: Improved interrupt vector handling. Fixed C300 interrupt entry and stack frame. Fixed pushw where source register is same as stack register [Patrick Mackinlay].
- HP HIL: Pass through commands between devices [Sven Schnelle].
- Cleaned up and optimised common code: Made natural keyboard prefer lower shift states and eliminated O(n) character lookup. Turned most ROM entry accessor macros into templates and made them work on tiny_rom_entry/rom_entry pointers/references. Started adding iterable class wrappers for specific types of ROM entries. Added support for C++ output streams to logmacro.h using LOG_OUTPUT_STREAM macro. Improved -listxml performance by another 10% or so [Vas Crabb].
- Made ROM BIOS reported in -listxml output match what ROM loading does [Vas Crabb].
- Updated hiscore.dat [Leezer].

0.189:
======
- luaengine: Added debugger_manager support [Carl].
- plugins/cheat: Catch errors in cheat scripts, added preliminary breakpoint/watchpoint support [Carl].
- plugins/gdbstub: Added WIP gdbstub plugins [Carl].
- plugins/data: Added MARP scores [Carl].
- Overhauled internal UI: Use proper font metrics and handle space glyphs with null bounding box on OS X. Patched GNU xgettext to support C++14 parsing so localisations can be updated. Restored ability to localise info box headings. Fixed info box navigation when system selection menu doesn't have focus. Fixed keyboard navigation of software filter box, added support for home/end to jump to beginning/end of filter list. Removed hacks in selector menu tying it to implementation details of other menus. Improved encapsulation and reduced code duplication in system/software selection menus. Fixed text alignment/gutters in filter list, info box and DAT view. Eliminated use of hairline spaces for alignment in the info box. Added indication for presence of analog controls and keyboard inputs in info box. Added support for mouse wheel scroll in info box. Allowed some character input events to be coalesced (reduces lag in live search with long lists). Fixed software art/info display when keyboard focus leaves software selection list. Save/restore images/info selection in right panel. Fixed bugs and improved performance of code for detecting systems without ROMs. Made audit menu request confirmation, show progress, and save result in INI format. Consolidated code for drawing "extra" boxes above/below menus. Fixed minimum/maximum for UI font rows per screen setting. Fixed spacing on directory configuration menu. Made slot options menu show full name of selected slot device below menu [Vas Crabb].
- Reimplemented system/software filters: Uniform interface/polymorphic implementation - eliminates almost all special-casing in menus. Made filter names localisable. Allowed more filter types and prevent contradictory filters from being added in custom filters. Made category filter work like other filters (allowed in custom filter displays its own UI, better error messages). Made multiple year/manufacturer/category/etc. filters in custom filter an inclusive union operator.Removed implicit "Not BIOS" system filter, it can be added explicitly if desired [Vas Crabb].
- Moved unimplemented/imperfect flags from machines into devices: Allows dynamic warning flags depending on slot configuration. Unclutters GAME/CONS/COMP/etc. definitions where a family of machines or a device have the same flags. Allows more combinations of flags [Vas Crabb].
- PNG/rendering/artwork/output improvements: Added support for layout item groups that can be reused in other groups or views. Reduced weight of render.h by moving component specialisation declarations into rendlay.cpp. Replaced simple_list with more appropriate containers, remove misleading const qualifiers, reduced repeated XML walking. Added N-dimensional output finder to avoid runtime string hashes - more than doubles performance of intlc440. Unified code for copying PNG data into MAME bitmap in MAME and pngcmp, made it less likely to leak memory. Added support for Adam7 interleave in PNG files, fixed some corner cases in unfiltering code. Fixed upsampling of greyscale PNGs, added support for monochrome with alpha. Added support for 16-bit samples in PNG files. Added support for PNG greyscale/RGB with transparent pen. Detect more invalid PNG files rather than just behaving badly [Vas Crabb].
- Added "minimaws" scripts, a reference -listxml consumer (implemented with Python/WSGI and JavaScript): Provides verbs for loading data, some basic batch queries, and an interactive web server mode. Serves linked HTML pages for machines, devices, and source files. Demonstrates how to dynamically discover slot/BIOS options from static -listxml output. Allows user to build a slot configuration and shows necessary command-line arguments or INI lines to produce it in MAME. As a side effect, this provides additional validation of -listxml output, several issues and limitations were addressed [Vas Crabb].
- Fixed -sleep and -refreshspeed options, fixed a stupid forced unnecessary sleep [Vas Crabb].
- Fixed -slot card,bios=rev (selected BIOS was being applied to slot itself, not card) [Vas Crabb].
- Fixed up input merger: added more variants, synchronisation and save state support, removed dubious reset behaviour [Vas Crabb].
- Removed a whole lot of I64 from format strings (use logerror/string_format/stream_format to avoid it) [Vas Crabb].
- Added validation of BIOS names/descriptions/defaults and fixed errors exposed [Vas Crabb].
- Moved additional content for release archive from build repository to main repository [Vas Crabb].
- Added Kontron PSI98 driver: System is fully working with minor issues, you can boot KOS and CP/M 2.2 (images are in the software list). Still missing is SASI and the ECB slot system with cards. Added keyboard slot interface, created skeleton for keyboard, added HLE ASCII keyboard as default. Added software list. (upd765) improvements: Don't instantly finish the RECALIBRATE command (fixes accessing second drive on psi98). Made SEEK also take some time (fixes KOS FORMAT command on psi98) [Dirk Best].
- floppy: Added FLOPPY_HFE_FORMAT to default_floppy_formats [Nigel Barnes].
- imgtool: Fixed null pointer dereference and logic errors in "GET" command. [F. Ulivi].
- Refactored server_{ws,http}.hpp into separate interface and implementation. Use std::weak_ptr from websocket_connection_impl to webpp::Connection to avoid reference cycles. When shutting down the HTTP server, also explicitly stop the asio::io_context; this allows the built binary to exit cleanly [Christian Brunschen].
- Improved Android build support. Updated for NDK r14b, build-tools 21.1.2, gradle 2.2.1, and jdk1.8.0_144 [Miso Kim].
- Added basic Saturn CD Block device to load the ROMs [David Haywood].
- imgtool modernisation and miscellaneous fixes: Fixed a std::string(nullptr) bug. Proper cleanup of floppy object after create/open failure. Merged normalize_filename() into cannonicalize_path(). Eliminated Imgtool-specific rand() function. Modernised mgtool_forkent structure. Fixed features.supports_geticoninfo [Nathan Woods].
- Partially fixed MT06621 (save state path not honoured). Still doesn't honour software name for multipart software loaded from internal UI [Nathan Woods].
- imgtool: Made Mac ICN# drawing logic never draw pixels outside mask [Nathan Woods].

0.188:
======
- Bugfix #06588: [Interface] Regression loading softlist items from the command line with changed slot options [Nathan Woods].
- Bugfix #06581: [Interface] Various problems with software loading/unloading: Various problems with software loading [Nathan Woods].
- Added support for experimental overclocking of sound devices through UI sliders with -cheat enabled [AJR].
- Fixed scheduler overflow when a device executes for more cycles than there are in a second [AJR].
- listxml enhancements: Match arguments against device names as well as driver names. Allowed DTD output for -listxml, -listsoftware and -getsoftlist to be suppressed with -nodtd option [AJR].
- MC6800: Fixed LSR/ROR/ASR overflow flag generation (N XOR C) [AJR].
- plugins/cheat updates: Poll for setting hotkeys. Link simple cheats [Carl].
- Added Motorola MC14411 Bit Rate Generator device [Joakim Larsson Edstrom].
- Overhauled MAME options handling. The new options system is more dynamic and should detect errors earlier. The slot menu now shows updated options in response to selections made by the user [Nathan Woods].
- Added a menu listing existing state files displayed when choosing a position to save/load. Any position may be selected with keyboard 0-9/A-Z or joystick buttons. Existing positions may be selected using UI navigation controls [Nathan Woods].
- Made the length parameter for debugger 'load' command optional (defaults to length of file), converted code from stdio to iostream [Nathan Woods].
- Fixed regression in ROM loading that resulted in not all actual hashes being printed on mismatch [Nathan Woods].
- sdl: Added SDL_WINDOW_BORDERLESS for fullscreen, required by some Linux window managers [O. Galibert].
- debugcpu: Eliminated direct() from read_opcode [O. Galibert].
 -options: Set the value when setting the default as before [O. Galibert].
- mameopts: Don't lose the system inipath when looking for hashpath [O. Galibert].
- dimemory: Lifted cap on number of address spaces per device, renamed AS_DECRYPTED_OPCODES to AS_OPCODES [O. Galibert].
- Fixed media option numbering with custom instance names (github issue 2468) [O. Galibert].
- Improved -romident performance by dynamically allocating large arrays at device_start time [Phil Bennett].
- output: Fleshed out network output provider to have the same capabilities as legacy Win32 provider: Messages are of form "verb = value\1"; "hello = 1" on successful connection, "mamerun = 0" on shutdown. Send "send_id = n" to query IDs where n=0 means machine shortname, and n=1-? are output node names [R. Belmont].
- Layout system improvements: Made scripts do substantial validation of layouts at build time. Drop views that don't validate at runtime rather than entire layouts to help machines with terminals connected by default [Vas Crabb].
- Made device_memory_interface own its address space objects [Vas Crabb].
- Made parent/clone loops raise a fatal error rather than hanging in a loop appending to a string [Vas Crabb].
- Made internal UI list missing/incorrect files when audit fails [Vas Crabb].
- Cocoa debugger improvements: Save/restore window positions/sizes/splits/scrolling/expressions/focus (excluding device info viewer). Fixed scroll jump on clicking a memory/disassembly view that's been scrolled while unfocused [Vas Crabb].
- Made XML file a specialisation of data node that can be easily managed with smart pointers and added a method for copying a data node/subtree into a different tree [Vas Crabb].
- Fixed fatal error on selecting a software part with internal UI and made software parts menu sort by name [Vas Crabb].
- Fixed QT 5.5.1 for Ubuntu 14.04 "Trusty Tahr" (allows Travis CI build to complete) [dankan1890].
- Enhanced Emscripten support: Fixed save/load support and scheduled exit. Improved main loop, simplified integration points, and made JavaScript entry points static members of running_machine. Exposed soft_reset, hard_reset, exit load and save functions, allowing more control of emulation session from JavaScript [James Baicoianu].
- Fixed #include path with USE_LIBSDL on macOS [Joshua Root].
- Added skeleton driver for Yamaha TG100 MIDI module. H8/520 CPU is not implemented, sound chip is Yamaha YMW258-F (likely to be identical to Sega MultiPCM) [superctr].
- Updated compiling instructions for Fedora Linux [inflatador].
- Updated hiscore.dat [Leezer].
- Added -output option to documentation with description of available choices [OzFalcon].
- SDL sound: Fill buffer with silence on underrun [057a3dd61f99517a3afea0051a49cb27994f94d].

0.187:
======
- plugins/cheat: Add hotkey support, and nes, snes and genesis Game Genie support [Carl].
- Improved CD audio play track/index command handling [smf].
- drawgfx: Made the palette optional, and fixed viewgfx for case where palette is absent [O. Galibert].
- devcb: Added line hold capability [O. Galibert].
- bgfx: Fixed xBR-lv2-multipass, xBR-lv2-fast, xBR-lv2-noblend, xBR-lv2, xBR-lv3-noblend and xBR-lv3 shaders [Ryan Holtz].
- Added preliminary YM3802 MIDI/cassette controller with MIDI clock timer and click counter. Added X68000 expansion device using the YM3802, Mahou Daisakusen (x68k) plays MIDI music [Barry Rodewald].
- Sort slot options by name in -listslots output [AJR].
- Don't try to read past the end of a memory space in debug view [AJR].
- Added validation for slot cards and fixed some errors exposed by this [Vas Crabb, AJR].
- Migrated remaining device machine configuration additions to instance member functions [Ivan Vangelista].
- Made RAM device look for [km](i?b)? rather than [km]. Suffix [Nathan Woods].
- Fixed a crash when returning to the front-end after launching a system from favorites [Nathan Woods].
- CoCo: Overhauled the cartridge slot subsystem [Nathan Woods].
- Made read_or_write a scoped enum [Nathan Woods].
- Changed the profiler to use std::ostringstream as the text sink (instead of std::string) [Nathan Woods].
- Changed a few C strings to std::string references in the debugger [Nathan Woods].
- Fixed JVC disk format to correctly recognize 2 sided disks [Tim Lindner].
- Use more likely clocks for littlerb based on PCB crystals (main CPU is more likely 8MHz than 12MHz). Also added a hack to overclock the TMS to 120% so that the map screen renders properly [David Haywood].
- Fixed trailing space in -listclones and -listbrothers output [Tafoid].

0.186:
======
- Added a mechanism for devices to generate clocks for other devices: Made set_unscaled_clock and set_clock_scale not call notify_clock_changed unless the device has been started. Made owner-derived clocks update whenever the owner's clock changes, including at configuration time. Add clock_update_delegate type to represent device-generated clock outputs that may be dynamically modified [AJR].
- Fixed bug that permanently disabled some UI search strings when they were cleared [AJR].
- Copy longname, manufacturer, year, filetype, etc. for image info in all softlisted cases [AJR].
- Made -listroms display a user-friendly message when no ROMs are required [AJR].
- Replace linenoise-ng with a simpler port that uses a different UTF-8 parser [Carl].
- plugins/console: Improved suggested completions [Carl].
- Replaced some custom palette initialisation functions with appropriate standard callbacks [Dirk Best].
- ui: Added ability to select different tilemap categories in tilemap viewer with page up/down keys [Dirk Best].
- Added hack to fish hashpath option out of INI files prior to softlist evaluation [Nathan Woods].
- Fixed issue in image identification code accessing an empty vector when the hashed data length is zero [Nathan Woods].
- Cleanups to ram_device: Expose specific options, removing the burden of parsing RAM strings from clients. Moved validation of command line arguments out of device_validity_check() [Nathan Woods].
- imgtool updates: Cleaned up validity code and transitioned to std::wcerr as Windows doesn't like mixing std::wc(out|err) with printf. Fixed issue with 'listfilters' command. Extremely basic fix to the imgtool <-> CHD HD bridge (really nees much more work). Simplified CHD metadata load since C++11 allows writing to a std::string directly [Nathan Woods].
- Windows options fixes: Removed redundant ";global_inputs". Disambiguated "yiqp" abbreviation - YIQ phase count is now "yiqpc" (YIQ pixel clock scaling is still "yiqp") 
[Nathan Woods].
- Auxiliary verb handling cleanup: Fixed a bug where resolved slot/image options would choke -romident. Fixed crash when -romident is not supplied any arguments. Converted verb handlers to take arguments as a vector of strings. Fixed regression preventing -listslots/-listmedia working when slot options are specified [Nathan Woods].
- Don't strip spaces/quotes from command line arguments, only INI option values [Nathan Woods].
- Fixed an issue that could cause problems when loading reset_on_load devices from software lists at runtime [Nathan Woods].
- Miscellaneous cleanup and modernisation: Polished up traces of slot options menu's pre-C++ heritage and moved completely private code to an anonymous namespace. Created device_slot_interface::slot_name() to wrap pattern of taking the tag and removing the initial colon. Changed running_machine::schedule_[load|save]() to take 'std::string &&' instead of 'const char *'. Converted running_machine::saveload_schedule to scoped enum. Changed 'int ignore_warnings' parameter on core_options::parse_ini_file() to 'bool ignore_unknown_options'. Retired min/max in attotime.h in favor of std::[min|max]() [Nathan Woods].
- Fixed two software loading bugs: Fatal error on reset if either a multipart softlist item was loaded, or a single-part item was loaded into a system with more than one slot of the same media type. Fatal error on non-existent images specified in INI files (bad image is ejected, restoring previous behaviour) [Robbbert].
- Fixed 6800 invalid instruction length/program counter behavior and renamed invalid opcodes. This makes goupil g1 Basic work [Jean-Francois DEL NERO].
- Fixed issue with the Emscripten port where the emulation would continue to run while paused [Steven Hugg].
- Converted many devices to use machine configuration in member functions [Vas Crabb, Ivan Vangelista].
- Cleaned up GENie Lua scripts and corrected some header file names [dankan1890].
- Made software list menu appear if appropriate when starting a machine from the Favorites menu [dankan1890].
- Updated lua engine documentation [Dan Amador].

0.185:
======
- Bugfix #06402: [Interface] UI: Switch Item Ordering corrupts software list [Nathan Woods].
- Netlist code refactoring: More use of C++ features. Some CRTP in pfmtlog. Demangled code for truthtables. Used more constexpr. Rewrote main loop. Used default constructors and assignment operators were applicable. Optimized 7448 and 9316. Startup time decreased by 25% to 30% (netlists like pong/kidniki are parsed, analyzed and constructed in around 15 ms). Run performance has improved by about 5% [Couriersud]. 
- Renamed the write-only -printer image instance type to -printout (the former conflicts with printer port in several drivers) [AJR].
-UI input map fixes: Fixed a longstanding bug that prevented binding several ORed buttons to any input belonging to a non-root device. Fixed a visual glitch when assigning inputs to analog sequences [AJR].
- Created device_palette_interface mixin: Provides most of the functionality from palette_device besides initialization/decoding routines and RAM interface. Updated screen_device and device_gfx_interface to use device_palette_interface rather than palette_device. Modified v9938 and v9958 to use device_palette_interface rather than a subdevice [AJR].
- Created 'util::arbitrary_clock' class template representing a clock with known epoch. Converted NTFS filetime code and Imgtool Mac datetime code to use new template [Nathan Woods].
- Refactoring in response to MT6531: Exposed emu_options image and slot selections as maps, store data that persists across sessions here rather than subverting core_options. Overhauled various implementations of get_default_card_software() [Nathan Woods].
- Miscellaneous cleanup: Fixed a pedantic MSVC warning in dipalette.h. Made a few random methods 'const'. Changed a lookup within the softlist code to use std::find_if() [Nathan Woods].
- i86: Added decrypted opcodes space support [O. Galibert].
- Removed support for direct updated handlers [O. Galibert].
- Turned pstring iterator into a real forward iterator that works with standard algorithms [Vas Crabb].
- Assume LLVM libc++ if __llvm__ is defined but __GLIBC__ is undefined (fixes bx build with MacPorts clang) [Vas Crabb].
- Apply environment variable substitution to bgfx_path (github issue #2201) [Vas Crabb].
- Fixed writes to decrypted opcode memory space. Separated EXPSPACE_RAMWRITE and EXPSPACE_OPCODE case statements to allow opcode writes to access the correct memory. Example: In flicky this will now disable cat collisions with the main sprite: maincpu.ob@3ac6=c3 [Pugsy].

0.184:
======
- Bugfix #06361: [Cheat System] Cartrdige memory accessed directly with cheats will crash MAME [Pugsy].
- Converted screen_device VBLANK callback to devcb_write_line. Renamed screen_eof_xxx to screen_vblank_xxx in many drivers [AJR].
- Added skeleton device for Video System C7-01 GGA [AJR].
- 8x300dasm: Corrected JMP target addresses [Barry Rodewald].
- Work around bug in msys2 C runtime causing garbage on console with DInput controllers [Brad Hughes].
- mips3 DRC: Ensure branch delay slot instruction is not virtual instruction before trying to generate code to add it to the block checksum, fixed FPU register aliasing [Happy].
- netlist: Added a heap priority queue, fix netlist stats collection, fixed new clang warnings, reduced footprint of extended clock [couriersud].
- Decoded popper color PROMs [Joe Magiera, couriersud].
- Softlist/slot improvements: Fixed an issue where device options (e.g. -cart) were reported as unknown when they actually worked. Do more softlist evaluation upfront and use results to drive slot/image setup. Added device_slot_interface::has_selectable_options() to determine whether a particular slot has selectable options [Nathan Woods]. 
- archimedes: Added JFD floppy format as used by JASPP (Archimedes Software Preservation Project) [Nigel Barnes].
- Made side effect suppression a machine property [O. Galibert].
- MIPS: Added initial support for VR5500 and TX4925 CPUs [R. Belmont].
- debugger: Print octal addresses in the trace if CPU is octal [shattered].
- Removed tag() argument from logerror() calls in cpu/i86 and floppy code [shattered].
- legacy floppy: Fixed floppy_stp_w [shattered].
- t11 cpu: Emulate MFPT instruction; MOV, CLR and SXT read memory before writing to it [shattered].
- Updated GLM to tip of stable branch (0.9.8.5 pre-release) - fixes build with MacPorts clang [Vas Crabb].
- Make device types self-register: MAME now walks all linked device types for -listxml, -romident and -verifyroms whether they're used or not. Made device_creator a variable template. Removed screen.h and speaker.h from emu.h and centralised instantiations of screen and speaker finder templates. Added basic device validation to -valid checks. Substantially sped up -listxml (at least 30% improvement), -verifyroms, and -romident on multiple files [Vas Crabb]. 
- Fixed crash on excessive command-line arguments, removed long-dead option [Vas Crabb].
- Fixed softwarelist cart memory cheats by moving cheat file loading to a later point in startup process [Pugsy].
- Updated hiscore.dat [Leezer].

0.183:
======
- dsk_dsk format: Propagate CRC error flags [shattered].
- Fixed crash on loading invalid cheats, MAME now logs an error and continues [Vas Crabb].
- Made debugger fall back from binary to default base on 0b prefix: This makes expressions like 0B12 parse as hex in hex memory spaces. Where there's ambiguity (e.g 0B01) binary takes precedence [Vas Crabb].
- Natural keyboard fixes: Fixed Shift-Alt combinations. Fixed modifiers with LLE keyboards (shift/alt now work reliably with Sun, Amiga, RM Nimbus, etc.). ixed crash on keyboard inputs with four characters [Vas Crabb].
- Made object finder arrays meet more Container/Sequence requirements (allows use of range-based for and many standard algorithms) [Vas Crabb].
- imgtool: Fixed recently introduced bug that could cause hex numbers to be incorrectly emitted in usage text [Nathan Woods].
- Fixed clipper CPU build [Felipe Sanches].
- Netlist library improvements: Refactored netlist pmf code. Small optimization for diode calculations. Remove virtual from some destructors and make them protected. Various cleanups and performance improvements. Fixed some inconsistencies. Reduced overhead to load data (ROMs) in netlist significantly - Previous solution involved a significant amount of redundant replication of information and objects. Now, a ROM name specified as SOMEROM(x21, "romlabel") will be automatically be loaded from region "netlisttag:romlabel" (see hazl1500 and stuntcyc). Fix warning about non existing memory space when netlist is used. Logging enhancements. Fixed crashes on terminals without nets (i.e. connected to a rail). Reviewed "FIXMEs" and corrected some minor ones. Made m_cur_analog protected.
 * Fixed pmf delegates to work with MSVC. More optimizations to the solver code. Started work on a better signal pipeline in nlwav. Only generate documentation for entities which are documented.
 * Made it possible to have multiple update handlers per device - Makes device implementation more flexible and faster and improves performance slightly - Each input is now assigned a notification handler. Currently this is update, but going forward it may be a custom handler. Fixed MEMPOOL on OSX. Added delegate support for Emscripten, ARM processors and VS 2015 x64. Made sure netlist includes are not found directly on include path. Made Windows builds of nltool and nlwav understand Unicode. Added standalone VS2015 build file in src/lib/netlist/build. Added state saving and loading to nltool. Optimized 7493 device - gives some 5 to 10% improvement to pong. Reworked truthtables a bit: moved 9312 and 74279 to TTL macro library, renamed TTL_9312_* to more appropriate DM9312. Fixed a number of warnings from latest Ubuntu clang 5.0 [Couriersud].

0.182:
======
- Bugfix #06464: [Interface] Every system with softlists using the "requirement" sharedfeat: Software list items with the "requirement" sharedfeat don't work [AJR].
- Z80 daisy chain improvements: Use the standard vector for an external IRQ, rather than a bogus one from the last device in the chain. Enabled Z80 daisy chain on Cedar Magnet sound board (fake IRQ still necessary, but vectors are correct now). Source note regarding IM 2 behavior contrary to Zilog datasheet [AJR].
- Corrected natural keyboard handling of toggle keys [AJR].
- Correctly report size of ROMs over 2GB in XML output [AJR].
- OS X Cocoa debugger: Autoscroll log window, improved view scoll behaviour [Curt Coder].
- Makes sound IRQs easier to deliver and reduces the incidence of HOLD_LINE in drivers. Inverted logic (latch_read -> latch_written), fixed initial callback after start [Dirk Best].
- chdman: Added support for hard disk templates and added some initial ones [Dirk Best].
- Added HLCD0515/0569 LCD Driver device [hap].
- MPCC improvements: Robustification, LOG messages and pinout added. Completed Tx, Rx and serial interface handshake support [Joakim Larsson Edstrom].
- Added JuliaLang utf8proc as a third party library with wrappers [Nathan Woods].
- imgtool improvements: Changed charconv from an enumeration to an interface: Added a table-based implementation for simple single-byte endocdings. Added support for ISO-8859-1 Latin 1 and Mac Roman. Use wcout/wcerr in order to support Unicode console output. Fixed recently introduce bug on attribute listings. CoCo/RS-DOS: Miscellaneous cleanups and C++ modernization [Nathan Woods].
- Created a new debugger command 'tracesym': Shorthand for 'tracelog' that uses default format string [Nathan Woods].
- Added a facility allowing logerror output to be captured in traces. The third parameter to the debugger 'trace' is now a list of '|' delimited options to support this [Nathan Woods].
- Acorn Archimedes updates: Single FDD installed by default, other bay usually contains HDD. Removed tape control input port. Added apd_dsk: new floppy format 'Archimedes Protected Disk' [Nigel Barnes].
- netlist improvements: ROMs now specify an identifier in the netlist to load data from a source_t implementation. Added "-r" option to nltool to pass path to a folder containing ROM files. setup_t is owned by netlist_t; stop being complicated. Removed gnd() method, simplified further. Fixed seldom-used conditional build options including OPENMP. Increased readability of timed queue code. Renamed connect_late to connect. Register nets where they are created. Preparatory work for automatically generated include files for devices [Couriersud].
- nltool now is able to create all defines from the factory definitions. Added code to remove devices connected only to rail terminals. Refactored reverse polish notation evaluator into own its source files. Added function parameter to current and voltage sources VS and CS (e.g. to produce a sine wave). Changed code to allow devices to optionally be treated as dynamic or timestepping devices. Converted warnings and fatal log messages to constants. Assume string literals are UTF8 in netlist code.
- netlist: Added LM747, LM747A and 2N2565 [Vas Crabb].
- mouse.cpp: Simplification and cleanup: Used new MC68705P3 core and removed obsolete glue. Made comment styles consistent, eliminated device timers altogether, and de-duplicated code for updating X and Y axes. The card works before and after the change, but by default axes are only mapped to inc/dec keys, not host mouse [Vas Crabb].
- debugger: Use 0o prefix for octal numbers, 0b for binary numbers, and allow uppercase radix characters [shattered, Vas Crabb].
- Added support for earlier COS versions on the RM380Z. Earlier versions had only a 40 column display and the cassette tape interface [zx70].
- Made the RTC chip react on the Aussie Byte [zx70].
- Scrollup fix for the TMS9927 family. Avoid reconfiguring all the CRTC parameters on any cursor shape change, which was resetting the scroll counter. Fixes scrollup for the Otrona Attache [zx70].
- (pc_dsk): Support 360K images with 512-byte header, found in some softlist entries. Also support 1.44MB images with 1024-byte footer [Justin Kerk].
- ImageDisk loader: Don't crash on tracks with no data [shattered].
- TeleDisk loader: Accept images produced from 8" SSSD disks [shattered].
- imagedev/floppy: Added has_trk00 property, initially for IBM 6360 8-inch drives. Added 'dskchg_writable' property (for Sony Microfloppy drives) [shattered]. Inhibit reading until drive has spun up. This affects drives/controllers that do not use the READY line. Still an over-simplified solution; requires a proper implementation of a spin-up ramp. Stepping is allowed during spin-up until further evidence from real drives [Michael Zapf].
- formats/wd177x_dsk: Allow override of build_sector_description, like nec765_dsk [shattered].
- harddriv: Hooked up the first serial port as an RS232 device to enable linking. This allows one to link up two Race Drivin' using null-modem and bitbanger (38400 8E1) [SailorSat].
- HP9895 dual-floppy drive WIP: Added draft of HP9895 floppy drive, PHI passes POST. 9895 now talks through ieee488! Cosmetic fixes to 9895-related source files [F. Ulivi].
- Updated PortAudio library and added audio output module. Provides low-latency audio output on Windows 7 or later and Linux [inte alls].
- Added more software list documentation based off new dumps. Carts for a2600, megadriv, n64 and snes got redumped recently by TeamEurope; added newfound information to the softlists. Removed syvalionp2 as it's simply a bad dump of syvalionp [Fake Shemp].

0.181:
======
- Created DYNAMIC_API macros for cleaner definition of dynamically linked functions [Brad Hughes].
- Double-check key state before UI autorepeat (fixes github issue #1169) [Brad Hughes].
- (i960) Preliminary support for CALLS instruction and WIP on FAULTx instructions. Added scanbyte and IP-relative lda opcodes, masked low bits of branch targets. [R. Belmont]
- (ppc) Set DSISR to the exception flags rather than the address on data access faults and correct flag values [R. Belmont, Vas Crabb, maximumspatium].
- (DRC) Fixed XMM usage on SysV x64 ABI, restoring debugger functionality on Mac/Linux for DRC drivers [maximumspatium, R. Belmont, Ville Linde].
- Added preliminary MB86235 recompiler [Ville Linde].
- (delegates) Don't crash on late binding if no object is actually needed. [O. Galibert].
- (pci9050) Fixed the mappings [O. Galibert].
- (sharc) Use standard memory maps [O. Galibert].
- (tms32025) Use the standard memory interfaces [O. Galibert].
- (dimemory) Removed the magic bypass [O. Galibert].
- (votrax SC01) Simulate. Complete simulation of digital section based on die imaging. Removed now-obsolete samples. Plosives are still imperfect [O. Galibert].
- netlist: Added simple ROM hookup capability [Ryan Holtz].
- netlist: Device additions: 74161 Synchronous 4-Bit Binary Counter with Clock. 7473 Dual Master-Slave J-K Flip-Flops with Clear and Complementary Outputs. Am2847 Quad 80-bit Static Shift Register. DM9334 8-bit Addressable Latch. 82S126 1K-bit bipolar PROM. 74174 Hex D-Type Flip-Flop with Clear. 2716 16 Kbit (2048x8) UV EPROM. 74166 Parallel-Load 8-Bit Shift Register. 74260 Dual 5-Input NOR Gate. Intel 2102A 1Kbit (1024x1) Static RAM. 74365 Hex Bus Driver with 3-State Outputs. Generic 2- and 3-terminal Tristate device. 74165, 74194, 7475, 7485, and DM9322
 * 82S126 4kbit (512x8) TTL bipolar PROM. 82S123 256-bit (32x8) TTL bipolar PROM. Note: Tristate device and 74365 do not actually tristate, they are simply a way of combining multiple outputs/chip enables [Ryan Holtz].
- netlist: Added shared RAM pointer, for use by netlist RAM devices which need updating by non-netlist driver code [Ryan Holtz].
- netlist: Various fixes: 7473: Made device only transition on a falling clock. 74161: Inverted Clear and Clock inputs to match datasheet.  * 74260: Fixed number of inputs. Am2847: Fixed shift register size (was 160 bits, should have been 80 bits). DM9334: Inverted C and E inputs to match datasheet [Ryan Holtz].
- XML refactoring: Moved stuff to namespace util::xml and scoped down some enums. Split config load/save delegate types, made config load take const node so it can't inadvertently mangle data [Vas Crabb].
- (coretmpl) Added an associative LRU cache with map-like behaviour [Vas Crabb].
- (selmenu) Use LRU cache so icons don't all need to be reloaded on scroll [Vas Crabb].
- uismall.bdf: Set default character for absent glyphs [Vas Crabb].
- rendfont.cpp: Fixes and Improvements: Encapsulated many BDF and BDC file format handling details. Made file I/O 64-bit clean. Added some checks for allocation errors. Wrote more solid BDF parser with error messages and trace logging. Fixed heap smash when building bitmaps for BDF fonts. Extended BDC format to support high planes and default character. Render default character if glyph not found for BDF/BDC [Vas Crabb].
- Made bitmaps movable, allowing them to be used in vectors and emplaced easily [Vas Crabb].
- Fixed uninitialised memory read as debugger command history (github #1802) [Vas Crabb].
-netlist: Added new devices: uA741 in 8-, 10- and 14-pin DIP variants. 4316 bilateral switch pack [Vas Crabb].
- Amiga/Buddha: Cleanups and fixes, partially working now [Dirk Best].
- (6840ptm) Use standard device clock for internal clock [Dirk Best].
- Archimedes: Made floppies work [Sandro Ronco].
- WIP: Intergraph driver support: Enabled more Rx interrupts and fixed error FIFO [Joakim Larsson Edstrom].
- (68230) Added initial support for timer interrupts and embryonic support for port interrupts. Fixed bug in port A-C write and added check of DDR registers for bit updates. Added bitwise update methods for all ports and moved register access methods to private section [Joakim Larsson Edstrom].
- Fixed a regression FIFO bug and a bug in the handling of Special Interrupts [Joakim Larsson Edstrom].
- Don't use mem_mask as ATA doesn't have an equivalent mechanism for byte accesses and it could mask out data that real hardware would keep, instead fix issue with 68000 byte writes to sector count by only taking the bottom 8 bits from the bus [smf].
- Fixed ATA Write Multiple (command c5) ignoring the block count on the first block [smf].
- Update disassembly if IP or CS are changed in the debugger; also update IP and CS when PC or CURPC changes [smf].
- Added halt to debugger state, so you can break out of a hlt instruction. [smf]
- Use correct Commodore LCD font [Mike Naberezny, smf].
- Fixed -romident misattributing device ROMs to alphabetically first driver using them [AJR].
- netlist: Aligned naming of 9334 and made nl_hazelvid.cpp parseable by nltool [couriersud].
- imgtool refactoring: Changed a number of declarations to use std::string instead of 'const char *'. Removed dead strncatz() function. Fixed a recently introduced error in the 'dir' command line command. Cleaned up the output of the 'dir' command [Nathan Woods].
- Added floppy drives to the PG675 and PG685 variants, changed floppy controller to FD1797 (not hooked up yet).
- COP400 MCU fixes: L pins are tri-stated when EN2=0. Corrected internal RAM memorymap for COP410 [hap, Sean Riddle].
- New softlist: HP Integral PC [shattered].
- debugimgui: Sort directory entries in mount dialog, as zippath_readdir() does not guarantee entries are in any particular order [Barry Rodewald].
- First stab at cleaning up the DOS boot and installation disk mess on the PC & AT softlists: Removed 100% duplicate sets. Moved sets from ibm5170 to ibm5150 if they work on PC-class hardware (later DOS versions are needed for some games). Removed the ibm5160 softlist, it only contained one duplicate set. Added clone relationships. More consistency in set naming and metadata [Justin Kerk].

0.180:
======
-imgtool: Various refactoring: * Consolidated logic for default implementation of imgtool::image::list_partitions() * Changed imgtool::stream::open*() to return  imgtool::stream::ptr * Fixed a recently introduced bug that caused image types that do not support partitions to function incorrectly [Nathan Woods].
- core: Disassembler modernisation: * Merged M6809, HD6309 and Konami disassemblers * Added arcompact and PDP8 disassemblers to unidasm * Fixed unidasm declaration for upd7725 * Eliminated static disassembly buffers in RSP, PowerPC and MIPS DRCs * Changed all disassemblers to use output stream rather than character buffer * Changed disassembler overrides to use 'std::ostream &' internally * Changed disassembler infrastructure to not use char buffers internally [Nathan Woods].
- (sc499) Corrected regressions that prevented writing. [Hans Ostermeyer].
- various: Miscellaneous typo fixes [Jordi Mallach, Tafoid].
- (arm), (arm7) Various emulation improvements: * Implemented Transfers to User Bank in LDM/STM and fixed flags corruption in branch opcodes * Fixed register-base shift with a value >= 32, this fixes the RISC OS graphics issues * Fixed carry for ROR and preserve IRQ_MASK in LDR R15,*** [Sandro Ronco].
- core: Added non-netlist devices for logic ICs: * 54/74160,161,162,163 * 54/7416x Hex/Quad D Flip-Flops with Clear * 9334/DM9334 8-Bit Addressable Latch * 7400 Quad 2-Input NAND Gate, 7404 Hex Inverter, 82S126/82S129 256x4-bit PROM [Ryan Holtz].
- luaengine: Converted to sol2 [Carl].
- plugins/console: Added Lua console as plugin [Carl].
- core: Moved device_memory_interface from driver_device to dummy_space_device: * Exposed the dummy_space_device as machine().dummy_space() with a trampoline in driver_device for existing callers * Debugger no longer needs to special case root_device() to avoid showing the dummy address space [smf].
- Implemented S1985 backup RAM: * Fixes TPC310 accessories cursor movement on the second time you launch it with left ctrl + left shift * Fixed Matsushita backup RAM saving * Implemented S1985 and Matsushita state saving * Implemented MSX switched interface without using an address map [smf].
- Throw CHDERR_FILE_NOT_WRITEABLE rather than CHDERR_UNSUPPORTED_VERSION if you try to open an old version CHD or writing [smf].
- (ncr5390) Implemented selection disable [O. Galibert]
- addrmap refactoring: * Removed device parameter * De-hand-templatized address_map_entry, remove then unneeded entry parameter * Simplified constructor, thanks Micko * Changed setters into passthroughs * Stream it * Changed to use dot syntax rather than -> syntax for chaining [O. Galibert].
- addrmem: Made obvious renames and added helpers [O. Galibert].
- general: Eliminated attaching memory maps to driver_device [O. Galibert].
- emucore: Removed generic_ptr [O. Galibert].
- (scn2674) Various changes: * Corrected the row on which a split occurs, fixes Octopus display of the last row before the status line split * Added command 0xA6, fixes Octopus status line in Concurrent DOS, and BIOS character block write function [Barry Rodewald].
- core: Fixed a bug parsing the software name option that prevented loading slot defaults for software selected from the internal UI [AJR].
- (pit8253) Made MSB-only counter writes lower outputs in mode 0 [AJR].
- (z80scc) Various changes: * Added support for RTxC as BRG clock source, allows the SGI Indy to have a console * Fixed a bug in rr15 support, allows macplus, etc. to boot now * Improved interrupt handling, allows mouse pointer to move in macplus driver for System 6.0.8 * Fixed init state of latched rr0 values, improves the success ratio of getting the mouse working in both X and Y on macplus, etc * Minimal sync/hunt support to enable System 7 to boot on macplus [Joakim Larsson Edstrom].
- (z80dart) Refactored FIFOs using new template based FIFO class [Joakim Larsson Edstrom].
- core: Added delegate support for lambdas and std::functions in general, also supporting const members now [Miodrag Milanović].
- core: Added more applicable Catch testing framework and converted all tests to be done properly by guidelines: * Still needs TESTS=1 to enable build of tests [Miodrag Milanović].
- osd: Moved UWP asset files to proper place [Miodrag Milanović].
- util: Added a simple FIFO template [Vas Crabb].
- xmlfile: Turned API into something that looks like C++ and allowed use of const data node objects [Vas Crabb].
- 3rdparty: Updated LZMA to 16.04 (security and portability fixes) [Vas Crabb].
- core: Introduced u8/u16/u32/u64/s8/s16/s32/s64 alias types: * New abbreviated types are in osd and util namespaces, and also in global namespace for things that #include "emu.h" * Removed the cstdint types from everything in emu * Removed U64/S64 macros * Fixed a bug in dps16 caused by incorrect use of macro * Fixed debugcon not checking for "do " prefix case-insensitively * Fixed a lot of messed up tabulation * Changed many macros and constants to constexpr * Fixed up many __names [Vas Crabb].
- complay.py: Rewrote to parse/minify layout XML - invalid XML in internal layouts now cause build failures [Vas Crabb].
- uismall.bdf: Added some typographical characters to, including the hair space used by the internal UI [Vas Crabb].
- frontend: Encapsulated more of the menu base class to control when layout changes can happen, encapsulated mouse translation [Vas Crabb].
- osd: Fixed key names with -keyboardprovider win32 [Vas Crabb].
- core: Drop invalid input tokens when parsing configuration, fixes uncaught exception error when writing configuration. [Vas Crabb].
- hlsl: Fixed games with off-screen backdrop artworks (e.g. atarifb, bowler) [Jezze].
- build: Fixed make VERBOSE=1 not showing archive commands for static libraries [Happy].
- osd: Added new UWP icons/images [JacKc].
- (upd7220) Fixed division by zero in update_graphics [Bavarese].
- build: Fixed building on ppc64le and s390x [Julian Sikorski].
- lua: Added ability to show custom menu [headkaze].
- (isbc_208) Added device [Carl].

0.179:
======
- core: Proposed for new system flags for 0.179 dev-cycle: 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 [Angelo Salese]. Added swpath. Allows users to specify location of loose software [Robbbert]. Added new string conversion overloads [a|w|t|utf8]_from_[a|w|t|utf8_]string(xyz.c_str()) [Nathan Woods]. Use standard uint64_t, uint32_t, uint16_t or uint8_t instead of UINT64, UINT32, UINT16 or UINT8 * Also use standard int64_t, int32_t, int16_t or int8_t instead of INT64, INT32, INT16 or INT8 [Miodrag Milanović]. Ensured all CPUs export STATE_GENPCBASE and use safe_pcbase() for everything in the debugger, which allows interruptible CPUs to work properly [smf]. Misc. keyboard input improvements: Add BS, Tab, 00, 000 keys common on add-on keypads as input items; SDL may recognize these, but DirectInput does not * Assign Keypad 00 and Keypad 000 in several drivers' input lists * Add SDL keycode for "cancel" key * Add keypad keys as alternates to natural keyboard * Soft resets no longer turn back clocks on devices * Give RTCs their own phase of machine initialization, right after NVRAM loading * Make RTC feature flag overrides const, including one new one * Make rtc_clock_updated a required override [AJR].
- imgtool: Various changes and modernizations: Mac: Fixed an unsigned overflow error that would causes crashes on 64 bit systems * Fixed a bug that could cause module's close() callback to be invoked if an image failed to open or be created * C++-ified imgtool_partition, imgtool_image, imgtool_stream, others * Converted a number of pointers to references * Made use of std functionality where possible [Nathan Woods].
- 6809: Fixed disassembly when core is interrupted mid-instruction [smf].
- ide: Added "headphones" to ATAPI CD-ROM drives [smf].
- ay8910: Implemented upper address check * Not configurable at present, but chips could be ordered from the factory with IDs other than 0 [smf].
- chdman: Fixed addmeta --valuefile by calling the correct write_metadata [smf].
- OSD: Fixed several small issues in HLSL/BGFX * Fixed target texture dimension when -intoverscan is used (this fixes the appereance of scanlines 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) [Jezze].
- d3d9: Fixed null reference exception when toggling from fullscreen to window mode. Disabled clearing render targets in several passes to reduce draw time, all texels are written with opaque anyway [Jezze].
- d3d9/bgfx: Reduced defocus effect to one pass and capped defocus strength to 2.0. [Jezze].
- various: Fixed various spelling errors [Jordi Mallach].
- ds1386: Added Dallas DS1386-8K and DS1386-32K timekeepers (largely untested) [Ryan Holtz].
- UI: Parenthesize optional items in input menus [AJR].
- Added row size as sixth parameter to debug dump command [AJR].
- linenoise: Fixed build with Visual Studio ('and' isn't supported) [dankan1890].
- OSD: Incorporated product/instance DirectInput device IDs. This should allow better disambiguation of devices [Tomer Verona].
- z80scc: Various improvements * Added support for shift left/right modes in zbus_r and zbus_w * Improved variant handling including some incomplete read register maps * Added external CTS and DCD interrupts * Improved device reset values * Added SWI acknowledge command * Improved/fixed handling of WR9, RR2, RR3 * Added WR7' register * Improved Tx handling, added Tx FIFO including special case with 1 slot Tx FIFO for NMOS and CMOS. IACK and reset improvements * Added IACK by reading RR2 * Made z80daisy_iack return -1 when no vector found or disabled through the WR9 VIS * Removed z80daisy_reti code to match SCC documentation * Removed defacto reset values where possible and replaced them with documented SCC reset values [Joakim Larsson Edstrom].
- 8530scc: Fixed typo (allows System 7 to boot on Mac drivers, and fixes X68000 mouse) [CharlesJS].
- es5506: Various fixes * Fixed readback of global registers when the current page was in a certain range * Made voices run for a zero-length loop, as real hardware does it and synthesizers rely on it * These changes fix the playback of "Transwaves" on the VFX and SD-series synths [Christian Brunschen].
- hiscore.dat: Updates [Leezer].
- 8042kbdc: Fixed keyboard on SGI Indy/Indigo 2 driver [Carl].
- Fixed alt-enter full screen toggling on SDL (Linux/Mac/BSD) builds [Hans Ostermeyer].

0.178:
======
- Bugfix #06372: [Interface] Bitbanger device can no longer accept streams/sockets/pipes [npwoods].
- Move UI dats to Lua plugin: Changes the selgame UI sidebar get the dat information from a plugin rather than the hardcoded C++ * Much easier to add other dat files and allow for scripted data * Example included that uses the hi2txt XML parser files to display high score info from hiscore file or NVRAM [Carl].
- Fixed setting m_filetype for images loaded from softlists [Nathan Woods].
- Changed the "extension as filetype" behavior for software list images to be opt in behavior [Nathan Woods].
- Modernization/C++-ification: Modernized option_guide, touched up imgtool * Initial imgtool C++-ification * Added a template wrapper for a contiguous array of objects that mimics a subset of SequenceContainer behaviour * Modernized CoCo cartridge infrastructure (use 'enum class', scoping, etc.) * Changed win_get_window_text_utf8() to return std::string * Consolidated menu code for text input [Nathan Woods].
- Fixed an issue in the i860 disassembler that could cause an undefined string to be used [Nathan Woods].
- Allow devices to indicate whether image creation should be supported at the command line [Nathan Woods].
- Fixed a potential buffer overrun in the code that reads headers for the CoCo JVC disk image format [Nathan Woods].
- Fixed an off by one error when identifying best entries for typeahead on the file selection and software list dialogs [Nathan Woods].
- Retired imgtool_basename(), in favor of core_filename_extract_base() [Nathan Woods].
- More new features for UI graphics viewer: 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 * Made mouse visible everywhere in UI graphics viewer by treating it [AJR].
- Added HxC HFE disk format [Michael Zapf].
- Added save state support to tms99xx; replaced new/delete by unique_ptr [Michael Zapf].
- hp_hybrid: Added hp_hybrid & hp_5061_3001 to unidasm [F. Ulivi].
- Added interrupt support in DUSCC device, Force CPU30 board driver and  interrupt controller support in the FGA002 device. Improved LOG messages in the 68230 device * Now able to boot VMEPROM with interrupt driven serial I/O [Joakim Larsson Edstrom].
- Added header checks to identify in uef_cas and csw_cas formats [Nigel Barnes].
- dirom banking fixes: Reject out-of-bounds bank numbers * Add a mandatory callback on bank change [O. Galibert].
- (okim6295) Directly use set_rom_bank [O. Galibert].
- dimemory, dirom: Added some documentation [O. Galibert].
- (intelfsh) Added 16-bit hookup for the Sharp LH28F016S flash memory [Luca Elia].
- Added support for binding devices to controller IDs: This allows for stable controller ids even if USB devices are plugged or unplugged, system is rebooted, etc [Tomer Verona].
- Added id() property to input_device: Adds an id() property representing unique device ID * This allows the OSD layer to supply display name along with unique identifier * Currently only used to map a physical controller device to controller ID, but can be used more generally in the future * For raw input devices, device ID is full raw input name * For all other devices, we fall back to device name as the device ID * Device ID uniqueness is not currently enforced programmatically [Tomer Verona].
- Various OSD changes: Converted OSD monitor info to modules, added DXGI implementation * Converted the monitor information code from video.cpp in SDL and Windows to modules [Brad Hughes].
- (ay8910) Implemented register readback masking for AY-3-8914 as used on Intellivision [Lord Nightmare, Joe Zbiciak].
- (6840ptm) Load the counter when held in reset [O. Galibert].
- (mcd) Added incomplete Mitsumi ISA CDROM emulation [Carl].
- Fixed compile for DirectWrite font provider and made it compile with normal Windows build [Brad Hughes].
- (dec_lk201) Various changes: Additional key matrix documentation * Documented the switch IDs for each key * Fixed Setup(F3)->F3 and PF1->NumLock mapping * Added 8051 version ROM, not used yet * Added note about D13 contact being omitted from original schematic [Lord Nightmare].
- (debugcmd) Various changes: Fixed trace command accessing a parameter beyond the list supplied * Added an error message if an invalid boolean is provided * Added functionality to allow boolean to be case-insensitive * Added code to skip empty strings when parsing booleans [smf].
- Allow STRIP_SYMBOLS=1 and DEBUG=1 to be applied simultaneously [Tafoid].
- Partial fix for MT06383: exporting is now also possible for the favorites list, except if it has software in it [dankan1890].

0.177:
======
- Bug#06185: [DIP/Input] LIGHTGUNS: Aimtrak Dual Lightguns no longer properly detect [Pitou].
- Bug#06269: [Debugger] DEBUGGER: Unable to use any valid cheats while using debug [Ryan Holtz].
- Bug#06314: [Crash/Freeze] Fatal error - All sets using '-centronics p72' slot/option [Ryan Holtz].
- Bug#06315: [Crash/Freeze] Fatal error - All sets using c4023, c1526, mps802 devices [Ryan Holtz].
- Bug#06328: [Crash/Freeze] Various ISA using machines: Crash/Exception at Initialization [crazyc].
- Bug#06335: [Interface] UI:: Input (general) selection menus do not display correctly or at all [Vas Crabb].
- debugimgui: Added images menu, with crude file select dialog, added very crude create image dialog [Barry Rodewald].
- Renamed the arcade "sun" project to avoid conflict with the mess "sun" project [Robbbert].
- Separated the LDP-1450 laserdisc player into its own device [James Wallace].
- im6402: Reset receive/transmit registers after data frame is changed [Curt Coder].
- Fixed missing region report when DEVICE_SELF is used [O. Galibert].
- dirom: device_rom_interface for sound chips with rom/memory map alternative * Make robust for oversize ROMs [O. Galibert].
- dirom, okim6295: Added/fixed banking support [O. Galibert].
- (hdc92x4) Added 9224 emulation [Michael Zapf].
- Added PC-AT mode (still untested), some preparations for 9224 emulation [Michael Zapf].
- floppy: Improved floppy sound emulation with new sound samples [Michael Zapf].
- Keyboard/terminal improvements: * Added base classes for HLE matrix keyboard and buffered RS232 device * Made generic keyboard/terminal more usable: configurable typematic delay/rate, selectable JIS/ANSI layout, handle simultaneous keypresses more intuitively, use meta to set high bit, configurable auto LF on CR, auto CR on LF and local echo, audible bell * Untangled Olivetti M20 keyboard from generic_keyboard, add notes, use physical layout * Untangled RM Nimbus keyboard from generic_keyboard aand fix -natural * Untangled x68k keyboard from generic_keyboard, improve key names, default mapping and typematic behaviour * Untangled QX-10 keyboard from generic_keyboard * Kept NGEN keyboard barely working [Vas Crabb].
- Rewrote srcclean to be cool with UTF-8, C++14 and Lua [Vas Crabb].
- Fixed UTF-16 encode, pass UTF-16 to Windows character drawing [Vas Crabb].
- Made path_iterator copy search path to fix use-after-free [Vas Crabb].
- devfind improvements: * Made object finders behave like pointers (not pointer/reference/vector) hybrids * Removed some default argument values and dangerous accessors * Use single uniform class for object array finders, using real arrays to avoid double indirection * Use a format string to allow more flexible tag names in object array finders * Use template using typedefs to greatly reduce bolerplate code * Consolidated template instantiations speeding up the build * Added Doxygen comments to many key classes [Vas Crabb].
- Fixed regression: using IPT_START in sms makes mame think joypad 1 is occupied and inserts joypad 2&3 instead of joypad 1&2 [hap].
- (tlcs90) Fixed a nonsense check [hap].
- (tiamc1) Tilemap bit layers disable control [MetalliC].
- (i8080) Fixed status callbacks during stack and IO access [MetalliC].
- (aica) Added ADPCM diff value clamp based on encoder research [kode54, MetalliC].
- Use emumem.h defines whenever possible [Giuseppe Gorgoglione].
- Made hiscore path configurable by ini file, fix .hi file path resolution [stengun].
- Fixed action on debugger 'trace'/'traceover' commands: * 'trace'/'traceover' commands were registered as having three arguments, this fixes it so there are four arguments [Nathan Woods].
- Made rom_entry a class that keeps copies of strings: Also introduce a POD tiny_rom_entry for static ROM definitions * C++-fiied code that iterates over rom_entry arrays [Nathan Woods].
- (diimage) refactoring: Changed device_image_interface::load() so that it doesn't load both images and softlist items * Remove vestigial has_been_created() API  * Consolidated error code translation * Use std::string rather than C strings in more cases * Better encapsulation of format list * Better encapsulation of filename extension extraction [Nathan Woods].
- Software List refactoring: Separation of software list data structure from runtime device * Use std::string rather than C strings in many cases * Standardized terminology for various concepts [Nathan Woods].
- Converted many NUL-terminated strings to std::string: Parameters to zippath and emufile * menu_software_list::m_filename_buffer [Nathan Woods].
- Check return value of CassetteLegacyWaveFiller.chunk_sample_calc() (this is just better error checking) [Nathan Woods].
- Changed device_image_interface::determine_open_plan() to not create an image unless device_image_interface::create() is used. This fixes odd behavior where zero byte images could be created [Nathan Woods].
- Report Win32 ERROR_INVALID_NAME as osd_file::error::NOT_FOUND [Nathan Woods].
- Fixed menu lag [Dankan1890].
- Use required_ioport_array for multiple keyboards [shattered].
- ms7004: Enabled serial rx and add PORT_CHARs [shattered].
- keyboard: Added F16..F20 keys (present on DEC terminals) [shattered].
- (isa_hdc) Implemented READSBUFF command (used by ec1841 diagnostics) [shattered].
- Attempted to fix distortion with -refreshspeed and -audio xaudio2 [Calamity].
- New stretching options (as suggested by Jezze): New option -unevenstretchy (complementary to -unevenstretchx) * New option -autostretchxy, to automatically apply -unevenstretchx or -unevenstretchy based on source native orientation [Calamity].
- Warp mode for relative mouse on OSX SDL 2.0.4 (fixes Github issue #1232) [bradhugh].

0.176:
======
- (device m6809): Improve debugging support for 6809/6309 cpus [milliluk].
- GNU/kFreeBSD support [stevenc99].
- Take pkg-config path from env if defined [Bernhard Frauendienst].
- Name Neo-Geo AES, NeoGeo CD and FM Towns Marty buttons [Shideravan].
- Updated *nix man pages [Cesare Falco].
- (devices ym2151, ym2413): Isolate, objectify, integrate [O. Galibert].
- Add Net-DIMM 3.03 firmware [letoram, gamerfan, Mark F., Smitdogg, The Dumping Union].
- Netlist improvements: * nltool now accepts -Ddefine=value to pass on to netlists * Improved option handling and added "dummy" options to add grouping and examples in help output * Improved --cmd=listdevices output * Fix dynamic timestepping. This will work with breakout using real capacitor modelling instead of delay devices. Really slow, but very useful to calibrate timings * Fix an awful bug in timing for delay devices * Switched to clang 3.8 and made code compile with aggressive warnings. This exposed serious issues with implicit constructors * Removed trampolines (OUTLOGIC, INPLOGIC and friends) * Started using doxygen comment and documentation style. Added doxygen files to documentation folder * Refactored code triggered by doxygen output * Moved internal and support classes into namespace detail * Use an unordered map in parser * Added iterators to pstring * Moved two macros, added more RAII and improved exceptions. Fixed some bugs in parser code * Fixed a number of bugs in parser code and exception handling [Couriersud].
- Render module improvements: * Direct3D HLSL: use aviwrite to record AVI movies * Cleanup patches for Direct3D renderer * BGFX: fix crash when bgfx effect folder is not present [Giuseppe Gorgoglione].
- Miscellaneous modernisation: * File create and format refactoring, better name/path validation (with POSIX implementation from Vas Crabb) * Use string objects in in core_file static functions, menu items, strconv functions, image device extensions and softlist classes * Consolide default implementation of create_option_guide() * Filesel cleanup * Migrate softlist code from simple_list to std::list [Nathan Woods].
- Added crt-geom and crt-geom-deluxe shaders for bgfx including several aperture grille/shadow mask patterns (designed for RGB subpixel order) [Jeremy Green].
- UI: Added option hide ROMless machines from the availables list [Maurizio Petrarota].
- Add high-level emulation of Sun type 3/4/5/6 keyboards: * U.S.A, Great Britain, Sweden and Japan layouts for Type 5 * Layout selection settings for Type 4 and Type 5 * Identification selection for type 4 * Adaptor for connecting to RS-232 port representing level translator * Hook up to sun3, sun4 and sun4c [Vas Crabb].
- Final enhancements to HP TACO driver [F. Ulivi].
- Increase uismall.bdf coverage: * Complete coverage of Latin Extended-A, most of Latin Extended-B * Monotonic Greek * Full ISO-8859-5 Cyrillic, many other Cyrillic characters * Half-width katakana * Some IPA Extensions [Vas Crabb].
- UI refactoring: * Move most main launch menu stuff out of the base menu class * Move some common code from selgame and selsoft into selmenu * Eliminate the troublesome static members in ui::menu * Eliminate some function statics * Move palette menu drawing code out of base into palette menu class * Use std::bind, references where nullptr is unacceptable, and const where appropriate * Improve encapsulation of class members * Reduce repeated string allocation in audit code * Don't play so fast and loose with integer types * Eliminate some expensive deep copies of vectors/maps * .h -> .ipp for things that aren't really headers * Remove members that have lifecycle associated with operation [Vas Crabb].
- Bankdev: pass through the debugger flag from the incoming space argument [R. Belmont].
- (device 3c505): The Ethernet frame check sequence is now appended to transmit data [Hans Ostermeyer].
- input_common: Fixed 0.172 regression for non-US keyboards [Hans Ostermeyer].
- Fix item hilighting in debugger state view when scrolling [Vas Crabb]
- Introduce validity checks for RGB utilities and fix bugs uncovered: * Fix rgbvmx on Linux ppc64 and ppc64le targets with GCC 5 * Added several missing functions to rgbgen * Fixed logical shift right in rgbgen * Fixed sra that should be sra_imm in rdptpipe * Added some simple SSE4.1 optimisations in rgbsse * Re-organised rgbsse, rgbvmx and rgbgen to be in more logical order * Fixed return type on some modifying operators * Made some more reference parameters const * Removed inline qualifier from a number of methods as it's implied when body is present at declaration * Mark some constructors explicit [Vas Crabb].
- null_modem: rtscts flow control + relevant fix to i8251 [shattered].
- Tia-MC1 driver: Added support for KR580VV55A parallel peripheral interface (clone of i8255), added technical notes about some odd behaviour with some ports, listed the specs of Kot-Rybolov hardware, and added all clocks via #define [Roberto Fresca].
- amstrad: Fix undocumented mode 3 [Barry Rodewald].

0.175:
======
- atarigen: Remove the slapstic direct update handler, which hasn't been necessary since direct access has been enhanced to work correctly on handlers, years ago [O. Galibert].
- sloop: Direct update handler unneeded too [O. Galibert].
- esb: Direct update for slapstic gone too [O. Galibert].
- UI refactoring: * Make ARRAY_LENGTH cause a compile error if used with a pointer/vector * Move menu classes into ::ui namesapce and reduce scope of many symbols * Clean up text input code, move common operations to inline templates * Fix numerous one-byte buffer overruns * Don't flat-out ignore input beyond the C1 hole * Fix decoding of SDL text input [Vas Crabb].
- Added highly experimental SHARC recompiler (disabled by default) [Ville Linde].
- Commodore PET Joysticks and Sound Device [Ken White].
- Ignore cylinders, heads and sectors from identify device data, based on the ATA 5 specification [smf].
- Added CHS and LBA limits when the chd doesn't contain identify device data [smf].
- Added comlist and commit commands to debugger. comlist prints available comments in debugger console, commit will do a bulk comadd and comsave operation [Angelo Salese].
- Don't use AM_MASK on ram, you end up with an incorrect allocation size [O. Galibert].
- Fixed network output to include all data [headkaze].
- lk201: Fix 6805 clock to verified value [Lord Nightmare].
- Netlist changes: * Introduced HINT(device, hint) to clarify that hints are inheritent and not specific to devices * Added improved profiling support to netlist. Statistics output now proposes devices for which whole device activation/deactivation be disabled. No significant improvement for pong, but breakout experiences a 10% improvement * Introduced perftime_t and perfcount_t for gathering statistics. These templates do not create any code if statistics are not kept * Make help2man ./nltool produce usuable output * Replaced shared_ptr by unique_ptr * Better seperation of setup_t and netlist_t * Fixed bugs in rdtsc code. Refactored timer code * Moved options code from include to cpp file * More truthtable refactoring. Removed half-finished code for internal state support. As implemented, this would have had no support for timing delays * All netlist device setup is now done in the device constructor. This significantly increases readability and stability and allowed to remove init_object calls and start calls * Removed a significant amount of dead code * Remove ATTR_HOT and ATTR_COLD. Refactored netlist_time * More STL usage and c++11 * Get rid of nl_math. Remove nl_util.h and moved contents to plib/putil.h [Couriersud].
- Major refactoring of debugger core: * Eliminate globals/file statics * Remove lots of stuff from global scope * Use std::function for custom command registration * Eliminate some trampolines * Build fixes from Vas Crabb and balr0g [Ryan Holtz].
- Small update of italian traslation [AntoPISA].
- Fix keyboard shortcuts for disassembly comments panel: * Win32 previously recognised Ctrl+N but menu incorrectly showed Ctrl+M * Qt showed Ctrl+C but it was swallowed by text editing and didn't work * Ctrl+N is now shown/used by Win32 and Qt (matches Cmd-N on OS X)  [Vas Crabb].
- Fix git version: * Git version is set by top-level make, not just when GENie runs * Can set IGNORE_GIT=1 for make to ignore git * Git ignored/unavailable uses "unknown" in version string * Mark modified trees as dirty * Note that version now comes from makefile [Vas Crabb].
- A little change to device_image_interface::call_display to better decouple UI fronted and image devices [F. Ulivi].
- Remove Direct3D abstraction layer. Introduce dynamic_module [Giuseppe Gorgoglione].
- Reverse-engineered Moto Frenzy security FPGA and implemented decryption code [Morten Shearman Kirkegaard, Samuel Neves, Peter Wilhelmsen].
- Make filesel current path clickable [Nathan Woods].
- terminal: Fixed Color configuration [Nigel Barnes].
- Memory fun: * Added AM_SELECT/addrselect field.  Replaces the old AM_MIRROR/AM_MASK combo used to mirror a handler and get the mirrored bits in the offset * Removed mask and/or mirror from where it didn't belong. Simplified a lot of instances of mask that just weren't needed, especially in bus handlers. Used the short forms of install handlers where possible.
 * Replaced the 60s hippy, "It's cool man" range parameter handling in map_range that tried to guess what was meant when the values passed were not entirely sensible, by a cranky, diner waitress-turned IRS auditor curmudgeon. Main control function has a series of 14 tests just to find a reason to fatalerror out your requests. You have been warned [O.Galibert].
- Fixed double hyphen in -pipe [belegdol].
- eeprom: Not a device_memory_interface [O. Galibert].
-intelfsh, i2cmem: Not a device_memory_interface either [O. Galibert].
- Add basic SPARCv7 core [Ryan Holtz].
- tms57002: I hadn't yet understood some of the, err, subtleties of the memory subsystem [O. Galibert].
- Improve SPARC disassembler: Support SPARCv9. Allow plug-in ASI comments. Fix format of some opcodes. Produce clr synthetic. Allow running in v7, v8 and v9 modes. Fix addcc/andcc in SPARCv7 mode and simplify integer op tables. Allow ASI descriptions to be supplied with MCFG macro. VIS I (UltraSPARC) and II (UltraSPARC III) support. VIS 2+, VIS 3 and VIS 3B support. Add several SPARC models to unidasm [Vas Crabb].
- Rewrite SPARC emulation based on detailed descriptions from SPARC manual [Ryan Holtz].
- Load save state preparations: A number of changes and refactorings in preparation for a new load/save state menu. Most notably, I am C++-ifying osd_directory (now osd::directory) and changing osd_stat() to return std::unique_ptrosd::directory::entry. Take note that this change completely omits POSIX support, simply because I lack a development environment to support it. This will have to be done by someone else [Nathan Woods].
- POSIX implementation for new directory read features, cleanup of Windows implementation, return directory handle as smart pointer, fix full build [Vas Crabb].
- Supply modified time for files in archives [Vas Crabb].
- Fix LDUH, LDSH, LDUHA, and LDSHA opcodes in the SPARC core [Ryan Holtz].
- ImGui debugger improvements: Memory views now control their own position, removing the scrollbar, allows finer control of large memory areas. Pressing Enter on an empty debugger console input now does a single step. Disassembly and Memory expression inputs now auto-select all. Fix various key inputs. Send character inputs to views, allowing memory editing to be possible in a memory window. Show a rectangle around the view with focus. Add history functionality (press up/down in the debugger console input widget). Allow log windows and debugger console scrollbars to stay at their maximum value, if moved there [Barry Rodewald].

0.174:
======
- Bugfix #06209: [Core] Window is always on top after ALT+ENTER from Full Screen in Direct3D [Jezze].
- Bugfix #05932: [Interface] Joysticks Using PPJOY Driver Do not work anymore [Quench].
- Bugfix #05831: [Crash/Freeze] all: MAME hangs when command bench is higher than 299 [Robbbert].
- chdman.cpp: Fix for code that expects to be able to dereference a pointer that it knows may be null [Vas Crabb].
- screen: Add svg shapes pre-computation [O. Galibert].
- plugins/layout: Layout embedded script helper plugin [Carl].
- vector: Move clipping to avgdvg, the only user. Simplify [O. Galibert].
- Make watchdog timer a separate device [AJR].
- NetBSD fix, from pull request #852 [Thomas Klausner].
- Update to LZMA 16.0 [Vas Crabb].
- Continuing work to move object initialization from start to constructor. Removed family_t. All of this can be determined at runtime from object as well. As part of this, the "template" to write devices has changed. Converted a number of devices to use the new template [Couriersud].
- All netlist devices now follow new syntax. Removed dead code. All sub devices are now forced to be initialized in the constructor. Device setup now completely in constructor. Removed start call [Couriersud].
- Added tons of Thomson software to softlists [Reagan Roush].
- emumem: Get rid of the install_* return value [O. Galibert].
- UML: Added TZCNT instruction (Trailing Zero Count) [Ville Linde].
- DirectInput8: Correct joystick polling methods to better support older joysticks which previously only worked with DirectInput7 [Quench].

0.173:
======
- Bugfix #04965: [Interface] Games with no screen produce no "final.png" with -STR [Osso].
- Bugfix #06170: [Compiling] OpenMP: OpenMP-enabled builds of MAME 0.172 fail to compile [Jind?ich Makovi?ka].
- Bugfix #06019: [Interface] Wrong default bios outputted with -listxml command [dankan1890].
- Bugfix #06173: [Core] All software saving SRAM: Software loaded outside of software list (e.g. -cart PATH_TO_ROM) fails to save SRAM [dankan1890].
- New Android icon images [JacKc].
- Compressed internal layouts [David Haywood].
- TMS5220/5110 merge Part 1 [Lord Nightmare].
- Iterate over core classes C++11 style [AJR].
- Borrow string processing code from ui.cpp so that £ works in layouts (using UTF-8 encoding at least) [David Haywood].
- Updated sc4fd7tha.lay with UTF8 encoding of £ sign [Krick].
- Recognize the full range of controller inputs [AJR].
- Redump leapstertv [Team Europe]
- Initial Catalan translation [jmallach].
- Reduce the incidence of required_device<palette_device> in subdevices [AJR].
- UML: Added FCOPYI and ICOPYF instructions to pass raw data between integer and floating-point registers [Ville Linde].
- screen: svg rendering from inside the rom [O. Galibert].
- Updated Portuguese (Brazil) [Ashura-X].
- luaengine: Add plugin options menu [Carl].
- TMS5220: add a 'combined rs/ws write' function for systems which require both pins to change at exactly the same time and not to reset the chip [Lord Nightmare].
- Revert software-installed slot/image options when changing software [AJR].
- Make overscan on integer scaled targets optional (add option -intoverscan) [Calamity].
- luaengine: Direct and region accessors [Carl].
- Add experimental cheat lua plugin [Carl].
- info.cpp: First attempt to fix the longstanding issue about inputs owned by devices being always tagged as P1 inputs in -lx. Improved documentation of input devices in the -listxml output, since having just a generic 'number of buttons' is rather pointless in the context of home systems with configurable controllers (being them keyboards, keypads or joypads). Now the various controllers are listed separately with the number of buttons they have. Frontend authors who relied on the "buttons" attribute of the input node for any kind of filter shall now scan all available controllers and take the maximum among their "buttons" attribute (possibly discarding keyboards and keypads if they want) to recover the old value. Started to acknowledge PORT_16WAY inputs in -lx, since they were reported as 8-ways so far [Fabio Priuli].
- Devfind revision phase 1, cleaning out some legacy stuff * Eliminate the cached device_t::m_region pointer and its region() getter method. Devices that need to bind to a region with the same tag should use optional/required_memory_region or optional/required_region_ptr with DEVICE_SELF as the subtag; this improves error checking. (DEVICE_SELF has been moved to device.h for greater visibility in the source) * Allow required/optional_region_ptr to specify a specific length which must match that of the region found * Implement finder_base::finder_tag() getter for diagnostic purposes * Perform some (not very efficient) validity checks on memory region finders instead of allowing them to automatically pass * Privatize device_memory_interface::m_addrspace [AJR].
- plugins/timer: Add sample plugin for game time [Carl].
- plugins/cheatfind: start lua cheat finder library [Carl].
- Basic TCP server based on libuv [Inaki Baz Castillo, Miodrag Milanović].
- Skeleton implementation for Universal windows main app classes [Brad Hughes].
- String Translate for Chinese (Traditional / Simplified) [YuiFAN].
- diimage.cpp: Allow image devices to be configured with a fixed (not user selectable) piece of software and updated a few options and menu to acknowledge such possibility [Fabio Priuli].
- macs.cpp: Converted to use generic cartslot with fixed software configuration. Cleaned up loading and banking systems in the driver as a result [Fabio Priuli].
- Added extra bit as delay between bytes to make 1 stop bit work [Joakim Larsson].
- am9517: Add clone with the non-standard mask behavior of the PC Transporter ASIC [Carl, R. Belmont].
- screen: Fix alpha handling, cdkong looks good now [O. Galibert].
- bgfx: Add data-driven render target clearing [Ryan Holtz].
- Significant speed improvement: * Added a new solver using compressed row format * Fixed sorting. As a result, netlist performance on kidniki nearly doubled. The performance increase is mainly due to the fact that sorting decreases the number of operations for gaussian elimination of the kidniki matrix from ~7800 to 707. In addition, compressed row format improves L1 usage [Couriersud].
- Eliminate device_t::static_config, a type-unsafe legacy feature: * Rewrite or remove every last instance of MCFG_DEVICE_CONFIG and its two aliases, including within comments and dead code * Make the Z80/Z180 daisy chain an interface that interfaces with the existing interface. Z8000 has been hooked up to this as well (p8000_16 already configures it), but currently does nothing with it [AJR].
- mips3: Fixed interpreter bug where BADCOP exceptions would execute the faulting opcode twice [Ryan Holtz].
- Update strings.po [aviloria].
- Update German GUI translation [rootfather].
- Added ImGui based debugger [Barry Rodewald].
- Added HQ2x, HQ3x and HQ4x shaders [Jules Blok, Cameron Zemek, Maxim Stepin].
- Soft is hard and hard is soft. Two is one and one is two. No wonder "-video accel" has substandard performance if opengl is disabled [Couriersud].
- These init calls all returned false. No need for a return value in this case [Couriersud].
- Iterate over devices C++11 style [AJR].
  Replace the old device_iterator and its specialized versions with functionally equivalent classes that use standard operators to yield references to devices/interfaces rather than pointers. With range-based for loops, they no longer have to be stored in named variables, though they can also be reused concurrently since the iteration state is now maintained by a subclass. Add a few more typical getters to device_t::subdevice_list.
- bgfx: Added SuperEagle shader [Ryan Holtz].
- Refactored distortion pass: * Separated curvature parameter into distortion, cubic_distortion and distort_corner * Distortion and cubic_distortion can be negative, to compensate each other * Distort_corner is intependent from the image distortion [ImJezze].
- Refactor OSD window: Unified renderer in osd_window as std::unique_ptr Made windows all std::shared_ptr<window_type> Made window lists std::list<std::shared_ptr<window_type>> Updated OSD SDL worker_param to not use malloc (not compatible with smart pointers) Made renderer pointer to window a weak reference. May not be available during destruction of the window [Brad Hughes].
- Split UI and frontend part from core [Miodrag Milanović].
- Implemented dynamic loading of precompiled solver code [Couriersud].
- softlist.cpp: Add support for "rom_ignore" [Fabio Priuli].
- Added "selection" parameter to chain input sampler: * If specified all textures (.png) within the same directoy of the given texture will be selectable via slider in the UI * Also added slider for "shadow mask tile mode" to HLSL chain [ImJezze].
- bgfx: Ported xBR shaders from libretro [Ryan Holtz, Hyllian].
- Archive handling improvements: * Improve error handling in 7zip file I/O code * Fix reading 7zip files >=4GB on LP32/LLP64 targets * Update to LZMA SDK to 15.14, supports new 7zip features * Stop relying on local hacks to LZMA SDK * Support most ZIP64 features excluding directory compression * Support LZMA-compressed files in ZIP archives * Support Info-ZIP UTF-8 file name fields * Fix phantom files/directories when browsing archives * Report archive handling errors [Vas Crabb].
- Update to expat 2.1.1 for security and bug fixes [Vas Crabb].

0.172:
======
- Added data-driven shader system for BGFX renderer [Ryan Holtz].
  * Allows an arbitrary number of passes, with arbitrary connections between passes.
  * Ships by default with three effects: default, unfiltered, and hlsl.
  * default: Simple bilinear stretch.
  * unfiltered: Simple nearest-neighbor stretch.
  * hlsl: A close reimplementation of the Direct3D HLSL shaders. Does not currently support bloom or vectors.
  * Select the "shader chain" you wish to use with -bgfx_screen_chains.
  * Adjust the settings to your liking with slider controls, saving and loading settings and presets will be added in a future version.
  * See bgfx/chains/hlsl.json ans bgfx/hlsl/blit.json for JSON format rules.
  * For additional information, see the official MAME documentation.
- Improved Scanline Simulation [ImJezze]:
  * Changed the amount of scanline darkness, a setting of 1.0 now becomes fully black (to get the same result as before, halve your current setting).
  * Scanline height now depends on the brightness of the underlying color.
  * The amount of the scanline brightness and overdrive now depends on the scanline darkness.
  * Renamed 'Scanline Screen Height' to 'Scanline Screen Scale' and 'Scanline Indiv. Height' to 'Scanline Height'.
  - Fixed Bloom Level Alignment:
    * Fixed target dimensions of bloom levels, which results in much better alignment, especially for games with very low resolutions. Therefore, current bloom settings might appear less intense than before.
  - Quality and Performance improvements:
    * HLSL now uses non-power-of-two-sized target surfaces (breaks compatibility with graphics cards based on R300/R400/NV30 and older).
    * HLSL target surfaces now have the size of the screen canvas.
    * Removed HLSL pre-scale factor.
    * HLSL now uses a sharp bilinear interpolation to pre-scale textures to screen canvas size, based on [Themaister]'s implementation.
    * Improved overall performance. Based on the previously required pre-scale factors, speedups range 5-50% depending on graphics hardware, more if a higher prescale factor was used.
    * Improved shadow mask quality (pixel-perfect) in screen-mode.
    * Fixed half source texel offset of bloom level alignment.
    * Removed ./hlsl/artwork_support folder.
    * All shaders after pre-scale are now based on screen coordinates (workaground until both raster and vector passes can work on texture coordinates).
    * Disabled distortion shader for more than one screen and for artworks in full mode, does not affect artworks in cropped mode (workaground until both raster and vector passes can work on texture coordinates).
- UI [Maurizio Petrarota]
  * Enabled user interface navigation through UI_CONFIGURE button (tab key by default).
  * Added support for "covers" images collection.
  * Added support for "gameinit.dat".
  * Improved ROM-less checking at startup.
  * Improved vertical orientation rendering.
  * Fixed missing mouseover highlight.
  * Fixed search in software lists.
  * Fixed DATs reload after path changes.
  * Fixed software load failure from BIOS submenu.
- Bloom refactoring [ImJezze]
  * Calculation of bloom dimensions is now done only once, when render target is created.
  * Reduced blur width for non-vector screens.
  * Implemented shadow UV option for source tile mode.
- Type-safe C++ printf analog and vector-backed iostreams [Vas Crabb]
  * Supports most C99, glibc, SUS and MSVCRT format specifications.
  * Allows formatting any object with stream output operator with %s.
  * Replaces strformat, strprintf and strcatprintf.
  * Move to type-safe templates for logerror and popmessage.
  * Remove now-unnecessary I64FMT from calls to logerror/popmessage.
  * Eliminate core_i64_format functions for the most part.
- Modernised much of the file handling code [Vas Crabb]
  * Made core_file, osd_file, and avi_file and polymorphic classes
  * Moved osd_file implementations to shareable OSD module code
  * Made zip/7z implementations of archive_file with common API
  * Prefer destructors over explicit close functions
  * Made APIs supply smart pointers
  * Pass std::string though lots of APIs rather than C string pointers
  * Added methods for flushing user-space file buffers
  * Made archive_file create/destroy thread-safe
  * Fixed buffer overrun when walking zip ECD
  * Fixed some resource leaks in file handling code
  * Fixed edge cases where incorrect error code was returned on Windows
  * Added Solaris PTY implementation
  * Support ~/$FOO/${BAR} expansion with SDL OSD
  * Made emu_file handle zip and 7z archives identically
  * Search archives with CRC+path, CRC+partial path, CRC, path, partial path when loading ROMs/artwork/cheats/etc.
  * Added support for 7z archives via zippath API
  * Support 7z archives for fullpath loading and media file manager
 *  Made romcmp tool support 7z archives
- Improved OSD font API [Vas Crabb]
  * Release font handles on destruction
  * Moved font enumeration into OSD, implement for SDL, Windows, OSX
  * Fixed drawing characters outside Unicode BMP with sdl_ttf
  * Support TTC fonts with sdl_ttf
  * Separated font display names from configuration names
  * Made OSX font configuration name the PostScript face name
  * Made sdl_ttf configuration name Family|Style
  * Supply ui_small font as a BDF file with Adobe glyph names
- Fixed stack smash bugs in INP read/write and better encapsulate the INP header I/O code (thanks Tafoid for reporting), fix divide-by-zero in pathological case of zero-frame recording [Vas Crabb].
- Fixed file naming issue when creating new image from internal file manager with media loaded (thanks BIOS-D for reporting) [Vas Crabb].
- Fixed many mismatched free() / delete / delete [] errors [Vas Crabb].
- Cleaned up primary.fx [ImJezze]
  * Split primary.fx into 3 techniques for vector buffer, screen and UI pass.
  * Moved register_texture() for shaders outside of texture_info creation.
  * Added render_primitive parameter to register_texture(); currently unused.
  * Removed other unused register_texture() definition.
- Rewrote input routines as modules [Brad Hughes].
- segam1audio: Fixed ROM mapping (MT6147) and corrected authorship [R. Belmont].
- HLSL presets [ImJezze]
  * Added general presets for raster and vector screens.
  * Added special presets for Game Boy (monochrome LCD) and Game Boy Advance (color LCD).
- Added common debugger commands to global menu bar in OSX [Vas Crabb]. Also fixed occasional crash in Copy Visible.  Note that copy visible, paste, toggle breakpoint, and view options still require you to use context menus in windows.  Debug/Run menus only work when a debugger window has focus, so Break is less useful than it could be.
- floppy: Fixed subtle interaction between wd_fdc initial restore and floppy reset [O. Galibert].
- netlist updates: [Couriersud]
  * First steps to move towards c++11.
  * Based plist on std::vector
  * Replaced pstack with std::stack
  * Removed pnamed_list
  * Use c++ "for each" in a number of places
  * Fixed two "time bombs" 
- Implemented integer scaling in core renderer [Calamity]
  * Moved -unevenstretch option to core renderer.
    -unevenstretch:   fractional stretching (default)
    -nounevenstretch: integer scaling
  * Added new options to core renderer:
    -unevenstretchx:  fractional stretching on horizontal axis, integer scaling on vertical axis
    -intscalex:       horizontal integer scale factor, default is 0 (auto)
    -intscaley:       vertical integer scale factor, default is 0 (auto)
- A lot of TTF fonts (including C/J/K fonts like unifont) do not have a type attribute "Regular". This fix will load the first font found if no "bold" "bold italic" "italic" or "regular" attribute was found [Couriersud].
- Rewrote overly complex rawinput_device_improve_name function for rawinput module, plus fixing some other defects in input modules as detected by coverity [Brad Hughes].
- Added support for Raspberry Pi cross-compile [Miodrag Milanović].
- pcat_dyn: Added sound and marked toursol working [Carl].
- Notetracker: Documented more multiprocessor related addresses, fixed some address map issues. Hooked up more of the IOCPU I/O registers. Separated reset functions for IOCPU and EmulatorCPU. Updated documentation further. Added commented out I/O map for the EmulatorCPU. Implemented the DAC, DAC Timer, and DAC FIFO, the BIOS now beeps on boot. Fixed several wrong polarity status bits. Documented where the framebuffer lives. Better documented the boot process. Hooked up the VSync Interrupt. Attached FDC and floppy drive. Began to hooking up DiskReg register. Fixed another typo in BIOS 1.5, no longer runs off into the weeds and actually tries to load from floppy now. Needs FDC hooked up still. Hooked up screen framebuffer. Hacked the Odd/Even interrupt so screen drawing happens [Lord Nightmare].
- Added additional sanity checking to the tms9927/crt5027 core [Lord Nightmare].
- Implemented integer scaling in core renderer [Calamity].
- Corrected ROM names in seganinj set [Mathieu Patard]
  * Also added correct 'rev A' sprite ROM (the program ROMs were rev. A, looks like this ROM was missed when it was dumped before).
- Netlist: code maintenance [Couriersud]
  * Renamed netlist_analog_t to analog_t
  * Straightened object model
  * Reduced access to member variables
  * Use pvector<analog_net_t::list_t> for groups.
  * Simple coverity fixes.
- Symbolics 3670: Symbolics 3670: Traced out more of the FEP v24 I/O memory map based on the PALs from the patent. Added a lot more notes about the FEP/NFEP board PALs and PROMs noting where the equations for various PALs/PROMs are in the patent [Lord Nightmare].
- Improved documentation for SMS software and input devices [Enik].
- Initial work to make MAME work on Android [Miodrag Milanović].
- Swapped the endianess of the md_slot device bus to big endian, fixing megadriv cheats [Pugsy].
- Initial Z80SCC baudrate generator support [Joakim Larsson].
- svga_s3: Fixed potential crash when hardware pointer is at the edge of VRAM, and fixed viewport scrolling in XF86_S3 [Barry Rodewald].

0.171:
======
- New video chip support : Thomson EF9364 / Sescosem SFF96364 [Jean-Francois DEL NERO].
- Modernized sound volume setting code in various Atari drivers [AJR].
- (osdmini) Fixes build issues [Stuart Carnie].
- Replaced osd_lock with std::mutex [Miodrag Milanović].
- Software list entries can now supply slot option defaults [AJR].
- (i8271) Unload head after programmed revolutions [Nigel Barnes].
- Allow load/saved state slots to be bound to joystick buttons [Victor Vasiliev].
- Substantial improvements to Web Audio sound backend for Emscripten port [Grant Galitz].
- (disound): Don't crash on state load when the mixer is disabled by lack of inputs (misconfiguration or missing samples) [O. Galibert].
- Initial import of MEWUI to MAME [Maurizio Petrarota].
- External DATs grouped into a single view [Maurizio Petrarota].
- New video chip support: Thomson EF9364 / Sescosem SFF96364 [Jean-Francois DEL NERO].
- Make octal flag part of address_space/address_space_config [AJR].
- Initial support for BGFX [Ryan Holtz, Dario Manesku, Branimir Karadic, Miodrag Milanović].
- Significant speed improvements to the BGFX renderer [Ryan Holtz].
- Added basic JSON-based single-pass shader effect support to BGFX renderer [Ryan Holtz].
- Videosnaps patch (additional file to write: gamename.inp.timecode) [Michele Fochi]
  Added new options: 
  * [no]exit_after_playback (default=no).
  * [no]record_input (default=no) Added new UI shortcut to save current timecode (default F12) Translated variable names and comments to english language.
- Moved JANGOU_BLITTER into a device [Angelo Salese]
- Extended LUA API [Jeffrey Clark].
- Support for the AMPAL18P8 to the jedutil tool [Kevin Eshbach].
- Improved cross compile support [Jeffrey Clark].
- COM5016/COM8116 Baud Generator: Added a bunch more divisor tables and notes [Lord Nightmare].
- AY-3-1015 UART: Fixed two swapped pin functions [Lord Nightmare].
- Added multi-language support for MAME [Miodrag Milanović].
- Added Chinese Simplified and Chinese Traditional translation [YuiFAN].
- Added German translation [Raf Tacker].
- Added Japanese translation [Fujix].
- Added Italian translation [Angelo Salese, Antonio Paradossi, Fabio Priuli].
- Added Portuguese (Brazil) translation [Ashura-X].

0.170:
======
- Bugfix #06046: [Speed] Several drivers using mc6845.c: Speed is always 90-98% when throttled [crazyc].
- Added more accurate SSi S14001A speech chip emulation, written by one of the people at SSi who originally laid out the S14001a silicon in 1974/5! [Ed Bernard].
- XAudio2 support [Brad Hughes].
- OS/2 patch [KO Myung-Hun].
- Common osd path environment var expansion [Jeffrey Clark].
- Add lua console support back in [Jeffrey Clark].
- makedep.py: Finish making it python3-compatible [O. Galibert].
- Added pre-compiled headers support to build system [Miodrag Milanović].
- Increase debug console maximum parameters in debugcon.h [ConHuevosGuey].
- (m68k) Fix 020+ bfins instruction results and flags [Till Harbaum].
- (rf5c400) Added external memory r/w function [Ville Linde].
- marywu: Most of the hardware has been mapped by analysing the pcb tracks. This set of commits include: a video layout with all 30 LEDs 13 double-digit 7seg modules an improved memory map hooking up the couple AY8910-3 chips, 2kb of Static RAM and the keyboard/display controller (an i8279 clone) multiplexing signals for the 7seg displays LEDs being controlled by the IO ports of the 2 AY8910-3 chips 8-bit set of DIP-Switches, a 2x16 keyboard and 4 push buttons mapped to the i8279 scanlines and return lines [Felipe Sanches].
- Some more validity checking improvements: * The -validate command now accepts an optional string, validating only matching drivers. This has proven useful for  debugging. The default is  to validate all drivers as usual. * Devices' names are tracked when validating their auto-finders [AJR].
- Have sound_stream::input_name return the std::string it constructs [AJR].
- Added SteamLink initial support [Sam Lantiga, Miodrag Milanović].
- Refactored NTSC pass and added sliders [ImJezze]: * Merged YIQ encode and decode pass into one NTSC pass * Fixed half texel offset * Re-added usage of A value * Re-added usage of P value * Re-added jitter of B value * Changed default O value to 0 * Reduced sample count to 64 * Removed duplicate YIQ settings definition * Added sliders for most NTSC settings * Fit B value jitter between a min/max range of 0 and 1 * Fit A and B value between a min/max range of -1 and 1. Refactored color  convergence pass: * Color convergence is now independent from ratio * Color convergence is now limited to a maximum of 10 * The radial color convergence now  "translates" the most outer pixel as they would be translated by the linear color convergence with the same amount * Added color convergence pass to vector rendering. Misc.: * Fixed half texel offset in pre-scale pass * Fit scan-line jitter between a min/max range of 0 and 1	* Color convolution, defocus and phosphor pass will now be skipped if all influencing parameters are 0 * Added hum bar simulation based on [MooglyGuy's] GLSL port of the MAME shader pipeline * Added monochrome-chessboard.png * Added slot-mask-aligned.png (to simulate a TFT LCD.

0.169:
======
- EF9365 video controller skeleton added and connected to Squale [Jean-Francois DEL NERO].
- EF9365 driver improved. Squale palette and charset corrected [Jean-Francois DEL NERO].
- Initial conversion of core to C++14. Note that compilers are now limited to GCC 4.9.0 and up, Clang 3.4.0 and up, and VS2013 and up [Miodrag Milanović].
- Added Bandai Super Note Club Software List [Team Europe].
- Modernize `simple_list` code [Vittorio Romeo].
- Modernize x86log.h and x86log.cpp [Vittorio Romeo].
- Make -verifyroms verify sub-devices like mpu401 and c2040fdc [qmc2].
- HLSL: Improved Defocus, Fixed LCD screen, Extended Shadow Mask and Bloom Made defocus strength equal for x/y and independent from screen size defocus is now independent from screen size and ratio horizontal and vertical defocus now have the same strength replaced asymmetric defocus kernel by a symmetric kernel defocus is now limited to a maximum of 10 added shader uniforms for orientation and rotation settings Fixed HLSL for LCD screen fixed wrong detection of vector screen, which meant that a LCD screen was also detected as vector screen re-enabled scan-line and other CRT related sliders for LCD screen Extended Shadow Mask and Bloom functionality added shadow mask option to choose between "Screen" and "Source" tile mode ("Screen" is the default as before) added bloom option to choose between "Addition" and "Darken" blend mode ("Addition" is the default as before) the alpha channel of a shadow mask is now filled with the background color of the screen by the amount of the inverted alpha value added monochrome-matrix.png which can be used in combination with "Source" tile mode and "Darken" blend mode to simulate a STN LCD [ImJezze].
- Major EF9365 driver update : All display functions emulated [Jean-Francois DEL NERO].
- All hardware vector drawing commands are now working. All characters type drawing supported (Horizontal, Vertical, Titled, Zoomed...): 512x512, 512x256 (EF9366),256x256 resolutions supported. New user settings : Number of bitplans, Display resolution/mode. Busy time dynamically generated for vectors and characters drawing. Various fixes. Code clean-up [Jean-Francois DEL NERO].
- Various improvements to the internal debugger: * Make closed windows actually disappear * Add Run and Hide Debugger menu option * Set initial windows so  at they don't overlap * Make the window colours less garish * Add memory window * Honour -debugger_font and -debugger_font_size * Make title bars the size of the debugger font * Make window editors appear over the window it is related to * Stop text being drawn out of bounds in window titles and editors * Fix order in which windows are rendered * Make new windows appear in a cascade fashion [Barry Rodewald].
- In the debugger, memory views now can show data as 32 bit, 64 bit and 80 bit floating point numbers [Samuele Zannoli, R. Belmont].
- Build system now autodetects and builds cleanly on Raspberry Pi 2; other ARM Linux targets should also work [Miodrag Milanović, R. Belmont].

0.168:
======
- Making logerror part of machine and device classes display tag of device that logged message [Miodrag Milanović].
- TMS5xxx: Fix for occasional audio 'spike' instability/wraparound glitches caused by improper truncation in the lattice filter multiplier. This is not an optimal fix as it isn't correct to hardware, but it works better than the previous approximation [Lord Nightmare].
- Fix all instances of PVS-Studio warning V578, "An odd bitwise operation detected. Consider verifying it".
- (hdc92x4) Fix ambiguity of ?: operator flagged by PVS-Studio. Fix PVS-Studio warning V562, "It's odd to compare a bool type value with a value of 0/1". Fix PVS-Studio warning V564, "The &/| operator is applied to bool type value. You've probably forgotten to include parentheses."
- TMS5220 and TMS5110: Add more verbosity to DEBUG_LATTICE [Lord Nightmare].
- OSD/SDL: add missing header to fix build on NetBSD. The file was removed from the other gmake.*/genie.make files. The build/gmake.* files do not exist upstream, so this is a purely local problem [Thomas Klausner].
- (mc6845) Fixed hd6845 rasters in interlace mode: BBC now uses correct hd6845; saa5050 outputs all 20 scanlines [Nigel Barnes].
- HLSL: * Removed duplicate prescale fields * Made visibility of HLSL options depending on screen type * Disabled scanlines for LCD screen type. Fixed reset of HLSL settings * Fixed bug that resets the HLSL settings when the screen size has changed * Removed hardcoded HLSL presets * Updates HLSL readme * Fixed creation order of D3D and HLSL resources * Sliders will be hidden when toggled off and will be shown when toggled on again * Screen adjustment (scale, offset) can now be handled by the respective render API itself (default behavior is as before) * D3D (if HLSL) is activated handles screen adjustment by itself within the shader, which fixes the odd behavior of some effects (e.g. round corners) when screen scale and offset is used * Fixed bug that resets the HLSL settings when switching between window mode and fullscreen * Fixed changed screen adjustment for multi screens * The vector renderer now tries to detect a invariabel vector intensity and disables the calculation of a dynamic beam width * Fixed not used HLSL settings from <custom>.ini if MAME was started without driver parameter * Removed default values from HLSL sliders, the defaults here are more like null values to hint when an effect would be disable * Slightly changed default HLSL settings * Fixed missing shadow mask texture when switching between window mode and full screen [ImJezze].
- wozfdc: Warp factor 4 Scotty (much less CPU usage now!) [O. Galibert].
- Updated OS/2 support for GEnie and MAME [KO Myung-Hun].
- Allow for Emscripten compile to JavaScript out of the box. MAME can now be built using Emscripten's 'emmake' tool, e.g. like so: emmake make SUBTARGET=pacman SOURCES=src/mame/drivers/pacman.cpp. This should produce a .js file which can be supplied to an HTML front-end [Justin Kerk].

0.167:
======
- z80scc rework: * z80scc_channel class rebased on device_t instead of z80sio_channel * Improved LOG printouts * Interrupt support started * Made register pointer bits shared bewtween A and B channel as per spec * Variant type keeping moved from channel class to device class where it belongs * Clocks are blocked until Rx/Tx enabled by ROM code * Improved logging * Started variant handling [Joakim Larsson].
- PTY support for u*x OSes [F.Ulivi].
- TMS52xx: Fix a bug where if the FIFO contained exactly 0 bytes and a SPEAK (VSM) command was issued, the command would instantly terminate due to the FIFO being empty even though the chip wasn't in SPEAK  EXTERNAL mode. Fixes speech in TI Extended Basic [Lord Nightmare].
- (saa5050): Graphics generator and character rounding: * Implemented graphics generator, no longer read from fake ROM * Added character rounding * improved control code handling * Added ROMs for variants saa5051, saa5053, saa5054, saa5055, saa5056, saa5057 [Nigel Barnes].
- psxcd: Declaring ROM images for the CDROM controller MCU [Felipe Sanches].
- Update VMX/Altivec RGB implementation (fixes PowerPC) [Vas Crabb].

0.166:
======
- TMS51xx: Got rid of the request_bits and FIFO implementation, both of which were incorrect to hardware. Minor ZPAR fix. Some comment cleanup [Lord Nightmare].
- TMS5110.c: Finally fixed zpar logic correctly [Lord Nightmare].
- TMS5220: Implemented talk status state machine properly as shown by patent. Got rid of m_target_* hack in favor of loading data from ROM as needed. Fixed ZPAR logic. Fixed pitch zeroing to match(?) patent [Lord Nightmare].
- TMS5220: Purge process() of gotos to hopefully make the compiler's optimizer happier. Add a hack so Victory's "Shields Up" sample and the sample afterward aren't corrupted [Lord Nightmare].
- TMS5110: Purge process() of gotos to hopefully make the compiler's optimizer happier [Lord Nightmare].
- Fixed GetModuleHandle to be universal [Vladimir Kryvian].
- Add skeleton support for K1801VM2 (as clone of T11) and skeleton driver dvk_kcgd that uses it [shattered].
- TMS5110: Add same FAST_START_HACK as in tms5220, makes snmath word delay closer to hardware [Lord Nightmare].
- opengl: fix overly-strict requirement on SCREEN shaders to match docs [cgwg].
- netdev: Fix pcap crashes on OS X [Rob Braun].
- TMS5220 and TMS5110: Fix an off-by-one in the interpolator causing the k5 coefficient to not be zeroed during unvoiced frames. Fixes various speech glitches [Lord Nightmare].
- TMS5220 and TMS5110: Fixed incorrect implementation of pitch zero which caused an improperly long period with no pitch at an interpolation inhibited -> voiced boundary. Moved unvoiced parameter zeroing into the frame parser, as on the original chips. Some minor TALK/SPEN state machine changes as well, which should have minimal effect [Lord Nightmare].
- Added 'global_inputs' (disabled by default) to allow MAME to read inputs even when it doesn't have the focus [Scrooge McClunk].
- 315-5124.c: Minor changes and fix a regression that in theory could affect zoomed sprites in TMS9918 modes [Enik Land].
- gamegear.c/sms.c: Improve GG-SMS scaling code a little and update the Todo list. Fixed MT#05872 regarding incorrect behavior of the Sports Pad (US model) emulation [Enik Land].
- Fix PSG chips to have volume reg inited on reset to 0x0 based on tests by ValleyBell. Made Sega PSG chips start up with register 0x3 selected (volume for channel 2) based on hardware tests by Nemesis [Lord Nightmare, ValleyBell, Nemesis].
- Significant accuracy improvements, documentation and other updates to the ER-2055 EAROM emulation used for several Atari games, based on schematics and datasheets. It now uses a state machine to keep track of the current EAROM bus state [Lord Nightmare].
- Simplified coreutil.c gregorian_days_in_month [William Krick].
- i8271: Modernize [Carl].

0.165:
======
- Sega 837-14645 JVS I/O dumped [Darksoft].
- Add correct CD2802 chirp rom from decap [Sean Riddle].
- UTF8 support for pstring. Opted for a scalable solution which should be easily extensible to utf16 and utf32 as well. All position related operations now operate on char code positions instead of byte positions [Couriersud].
- chihiro.c: Move parts common with Xbox console into their own files machine/xbox.c and includes/xbox.h [Samuele Zannoli].
- Replaced the frame parse and speech generation code from tms5110.c with the code from tms5220.c, should be significantly more accurate and allow the cores to be much more easily merged in the future. This also allowed finally getting rid of the COEFF_ENERGY_SENTINEL hack in tms5110r.inc [Lord Nightmare].
- Fix interpolation on TMS52xx to match samples from real chip [PlgDavid, Lord Nightmare].
- tms51xx: Removed target_x variables in favor of reloading from coefficient ROM during the generation loop (as the real device does). Implemented proper ZPAR and unvoiced ZPAR logic for zeroing parameters during idle and unvoiced frames. Changed the pitch zeroing logic during frame inhibit to last an entire interpolation period rather than one sample. Replaced the speech-is-synthesizing state machine with the original patent TALK, TALKD and SPEN bits. Redid the talk_status logic to use (TALKD || SPEN) as the real device does [Lord Nightmare].
- floppy.c: Added drive sounds (must be activated in drivers using MCFG_FLOPPY_DRIVE_SOUND(true); quite simple still, same sounds for all drives) [Michael Zapf].
- at29x: Created a general class for AT29 family from previous at29040a; added implementations for at29c040 and at29c020 [Michael Zapf].
- OS/2 patches for MAME 0.164 [KO Myung-Hun].

0.164:
======
- memory: Remove support for decrypted bases, use an address space instead [O. Galibert].
- atarisy2: Slapstic doesn't need a direct update handler anymore [O. Galibert].
- dsp56k: Remove the not required direct update handler [O. Galibert].
- namcos1: Remove direct-update-handler-using optimization, will be done differently later [O. Galibert].
- M1COMM update, S32COMM initial commit [SailorSat].
- validity: Add basic signed integer arithmetic tests to core validation [Alex Jackson].
- 3c505: Move option ROM to the card to reflect real H/W [Hans Ostermeyer].
- Netlist now compiles with
  * std=c++98 -Wall -Wpedantic -Wextra -Wno-long-long -Wno-variadic-macros and
  * std=c++11 -Wall -Wpedantic -Wextra [Couriersud].
- Added macro object registration and dynamic includes to netlist. This allows the creation of macro libraries going forward. Any IC which can be described by a truthtable and a package wrapper can now be entirely described in netlist syntax [Couriersud].
- Identify size_t usage in printf by enclosing the argument in SIZET_PRINTF(). This is typesafe, can be identified and allows to use proper 64bit computing with compilers up to it [Couriersud].
- winfile.c: Stop crashing after saving to a disk image loaded from a software list [Curt Coder].
- Commodore VIC-1515 printer [Curt Coder].
- Commodore VIC-1520 plotter [Jim Brain, Curt Coder].
- Added nlwav to tools. nlwav converts netlist logs into wav files. Example usage:
 ./nlwav -i netlist.log_RO.1.log -o tt.wav
 ./nlwav -h [Couriersud].
- Commodore 1526/MPS-802/4023 printer [Curt Coder].
- 315_5124.c: Avoid saving the dynamic RAM used for temp rendering, the save state system does not currently agree with RAM that gets reallocated at
 run time which was happening whenever the resolution changed.
- sm510: Initial Sharp SM510 MCU core [hap].
- Some additional famiclone BIOS sets [Team Europe].

0.163:
======
- (mips3): Make fast RAM handling faster by caching certain values.
- Allow compiling with shared libraries Put SHLIB=1 in the main makefile, or on the command line [O. Galibert].
- Fix Game Blaster emulation, now working [balrog].
- Fix game Blaster compatibility in sb1.0 [balrog].
- cheat: Improved cheat support for games in softlist. XML cheats for home systems should now be stored in a subfolder (or a compressed archive), named after the software list, inside the cheatpath. This allows for loading cheats for consoles / home computers without interfering with arcade cheats when games have identical shortnames. For instance, loading Galaga in NES allows now to use its specific cheats even if a galaga.xml is available in the arcade cheat.7z (previously you'd get an error due to the arcade cheat referring to a cpu not present in the NES) [Pugsy, Fabio Priuli].
- Solved the great Sherwood Forest mystery. DOS 3.3 inserts a short (3-4 cycles, roughly equivalent to one bit) delay between writing the header and the data bytes in the sector data block [Peter Ferrie, Olivier Galibert, Richter Belmont].
- Fixed superbug explosion overlay [SoltanGris42, Couriersud].
- Changed the way NETLIST_START(NAME) is located and called. This is done now solely by using a netlist_sources_t class. Netlist users just register sources like memregions, hardcoded strings, compiled netlists. Going forward this enables to eventually put macro model librariers into roms. The improvement comes with a price. Compiled netlists to be included must now be registered using LOCAL_SOURCE [Couriersud].
- Fixed .lst files whitespace problem [LnmVolbo].
- (mos6526): Fixed port A/B read [geecab].
- Gameshark is a clone of Action Replay [Andrea Petrucci].
- Fixed a number of bugs: * Proxy savestates * Solver savestates * 7490 both counts firing at the same time bug fix. and changed timed list to be resizable [Couriersud].
- floppy: Ensure that get_next_transition always provide the next transition [O. Galibert].
- Added OPT_FLAGS back [Belegdol].
- Added the ability to use system flac, jpeg, lua, sqlite3, portmidi and zlib based on wallyweek's work This brings the system lib capabilities back to where they were prior to build system rewrite [Julian Sikorski].
- Added new SDL_INI_PATH flag [Cesare Falco].
-From 45% to 60% to 99%. That's the improvement achieved for a 89x89 audio matrix mostly solved by elimination. Cleaned up some code as well [Couriersud].
- Added a GMRES solver to netlist. The generalized minimal residual method ist certainly more modern than Gaussian elimination and Gauss-Seidel. However, more the current maximum matrix (KidNiki, 89x89) a combination of Gauss-Seidel to solve for maximum one step to catch quasi-stable conditions and fall-back to optimized Gaussian elimination (for sparse matrix) outperforms GMRES by up to 100% [Couriersud].
- Netlist code now uses "namespace netlist". At the same time, moved all devices int netlist::devices namespace [Couriersud].
- GLSL: Unlimit shader file size [R. Belmont].
- (tms5110.c) and (tms5220.c): Fix missing cast for chirp/excitation values, fix a potential off-by-one for tms5110.c as well [Lord Nightmare].
- (info.c): Worked around missing sub-devices in -lx output [Fabio Priuli].
- Missing GameCube edition roms added [Andrea Petrucci].
- Completely integrated the GMRES solver into netlist solver templatesand recoded it from scratch. GMRES now runs at 122% (kidniki), that's a real proement from 60% before. AT the same time, the code should be easier to read and closer to the GMRES algorithm. Ultimately, kidniki will not use this solver but instead use some frontiers to keep it playable. But going forward, for larger matrices this solver is an opton [Couriersud].
- Properly emulate the double PCB stack system32 games with shared RAM bridge board (Air Rescue and F1 Exhaust Note). Previously these relied on a hack to make the code believe the 2nd stack was present but this caused issues, now they're correctly emulated as dual screen games without any hack [David Haywood].
- Support -uimodekey switch on Windows [Vas Crabb].
- Update all drivers to use the new wd floppy controller implementation and remove the legacy one [Dirk Best].
- (i8089): Add wait for DRQ support [Dirk Best].
- (wd_fdc): Fixes for ZX-Spectrum and clones Beta128 disk interface [MetalliC].
- (xt_hdc): Improved PIO use [Barry Rodewald].

0.162:
======
- Optimized some netlist devices [Couriersud].
- Update 315_5124.c palette in TMS99x8 modes [nitrofurano].
- Drop NO_SDL_GLEXT define on OSX [mbcoguno].
- Added a lot of findings and docs to the WMS driver. These are video slots identified as WMS 360 / 550. Also added the proper crystals, correct CPU, frequency, preliminary memory map, 2 new sets, and technical info [Roberto Fresca].
- Added Seiko Epson E0C6200 cpu emulation [hap].
- Started on Mitsubishi MELPS 4 cpu emulation [hap].
- WMS driver... Hooked the Analog Devices ADSP-2105 CPU (still need proper memory maps). Added technical notes [Roberto Fresca].
- Netlist: Improved 9312 device ==> 20% speed increase. Remove netlist_state_t ==> no added value. Removed dead code in solver. Various minor modifications. Performance monitoring now also displays stats for subdevices. Fixed save-state issues. Fixed save state in 9312. Added EXTCLOCK which can generate arbitrary timing patterns. Use two EXTCLOCKs to replace timing circuit (9316) in breakout. This gives a speed increase from 60% to 75% [Couriersud].
- MAME now represents full build, for building MESS drivers only use make SUBTARGET=mess, for building only Arcades drivers only use: make SUBTARGET=arcade [Miodrag Milanović].
- Downsizing ... Removed netlist_ttl_input_t and netlist_ttl_output_t. The logic family is governed by the chip and defaults to TTL. However
 individual devices may change the logic family of their inputs and outputs as well. Implementing special output/input characteristics of  "S", "LS", "HC", ... you name it, devices is now pretty easy. Theoretically e.g. a "LS_HighPrecision" proxy could be used to model the output down to the transistor level [Couriersud].
- HLSL shader improvements: Changed shadow mask implementation, shadow count XY now represent the number of pixel the shadow UV sized tiles will take on the screen. Implemented rotation of the shadow mask texture depending on the default landscape or portrait view of the screen. Removed prescale and pixel border of the shadow mask texture. Added option to change the shadow UV offset, to reduce the color bleeding of the shadow mask. Adjusted presets to work with the changed mask implementation. Reduced defocus offset. Improved downsampling for better blurring. Improved alignment of bloom layers (raster and vector). Applied bloom effect to the render output of screenshot and AVI recording. Changed curvature effect to fit screen size. Changed scanlines to be not rendered into bloom layers. Changed shadow mask to be not rendered into bloom layers. Changed color floor to not light the bloom layers. Changed shadow mask to not dark the color floor. Added image vignetting simulation and option. Added round screen corner simulation and option. Added screen light reflection simulation and option. Made usage of unused brightness offset (additive). Removed unused pincushion option. Removed duplicate shadow count Y options. Removed artwork/adapture.png. Added artwork/adapture-grill.png. Added artwork/shadow-mask.png. Added artwork/slot-mask.png. Added hlsl/simple.fx. Removed unused shaders::blit() function. Added shaders::screen_pass() function, which handles the (raster-)rendering on screen, into screenshot and AVI recording. Added effect: set_bool() function. Fixed usage of OrientationSwapXY shader parameter. Added RotationSwapXY shader parameters to consider the user defined screen rotation. Added missing RotationSwapXY shader paramter. Fixed curvature zoom to fit the screen size in any aspect ratio. Fixed black border on the right and bottom side of the screen, caused by the previously added rounded corners [Jezze].
- Update palette in 315_5124.c [nitrofurano].
- Netlist: Fixed soft reset due to wild BJT_SW oscillations. Downsized nld_signal.h to one template. Some minor changes improving performance by some notches. Always compile nl_asserts to avoid bit rot. Adjusted monitor gain for breakout [Couriersud].
- Added netlist-level parameter NETLIST.USE_DEACTIVATE. Device deactivation optimisations can now be enabled within the netlist provided the circuit can deal with them [Couriersud].
- Some netlist bugfixes: Savestate works. Truthtable device deactivation fixed. Truthtable ignore mask is now determined by a better approach identifying more ignore possibilities [Couriersud].
- savquest: WIP. Hooked up Voodoo 2 device. Switched to DS12885 device for proper CMOS size. Moved Voodoo register base to proper place. Implemented Voodoo-specific PCI registers to pass Glide validation * Increased frame-buffer size to enable 640x480 resolution. Hooked up ISA bus and SoundBlaster 16 device. Extended HASP emulation to return product information. Documented HASP behaviour [Peter Ferrie].
- TLCS-90 CPU: Fixed TRUN bit masking (timers start/stop) [Rainer Keuchel].
- More progress on SPICE to netlist conversion. nltool can now convert simple SPICE netlists e.g. from LTSpice to netlist format [Couriersud].
- Rewrote the MOS6532 RIOT [Curt Coder].
- AVR8 CPU: Fix I/O register mapping and improve logging [Felipe Sanches].
- Bump version on *nix man pages [Cesare Falco].

0.161:
======
- Completely hooked up 6845 in cardline driver. Documented asic addresses [Couriersud].
- Implemented writing to Commodore d64/d67/d71/d80/d82 sector images [Curt Coder].
- Added sector image format for the Commodore 8280 8" floppy drive [Curt Coder].
- (MT05721): Apply Enik Land's refresh rate workaround so that we pass FluBBa's SMS VDP tests [Justin Kerk].
- (atlantis): Added PCI9050 device skeleton [R. Belmont].
- (upd1771): Replace waveforms with waveforms extracted from upd1771c-017 internal rom [Lord Nightmare, plgdavid].
- (c4040): Added own sector dump disk format since it's different from what the 1541 uses [Curt Coder].
- (c8050): Added 901884-01 ROM [Martin Hoffmann-Vetter].
- (fsd2): Added REX-DOS [Julian Perry].

0.160:
======
- (upd1771.c) Notes update, indicate what pins are inputs, outputs, or both; document the d/a power pin. document the mode pin functions and the test mode [kevtris].

0.159:
======
- Fixed missing file details [Oliver Stöneberg].
- (wozfdc) Reduce the flux inversion pulse duration to the minimum [Peter Ferrie, O. Galibert].

0.158:
======
- Added VTech Genius Junior Movie softlist [TeamEurope].
- Improve mouse tracking for pre-ADB Macs [Rob Braun].
- Fix dropped keystrokes on pre-ADB Macs [Rob Braun].
- ap2_dsk: Don't allocate 2Mb of *stack*, malloc() instead [Peter Ferrie].
- ui: When ESCing while creating a new floppy image, fall back to the correct menu [Fabio Priuli].
- floppy.c: Initialise error code instead of crashing when menu loads bad image [Peter Ferrie].
- Significant comment updates for the IAI Swyft based on board tracing [Lord Nightmare, Sandy Bumgarner].

0.157:
======
- Rewrote TMS1xxx MCU core and added support for a couple of classic Texas Instruments handheld calculators [hap, Sean Riddle].
- maria.c: Implemented "colorburst kill" bit of the MARIA CTRL register [Mike Saarna, Robert Tuccitto].
- Fixed writing to disk with the Commodore 2040/3040/4040 and 1541/1551/1570/1571 drives [Curt Coder].
- (fdc_pll): Added write_next_bit_prev_cell() that writes a bit at the position the previous bit was read from. This is needed for FDC's that read and write on the same clock cycle, e.g. the Commodore 8050 and Victor 9000 [Curt Coder].
- Update Victor 9000 keyboard diagram [Lord Nightmare].
- Fix VSM rom read through the tms51xx, and add tms6100 hookup to tispeak.c, fixing speech in speak and spell and speak and math. The drivers are usable but no display yet. Fixed speak and spell clock speed (it is 1/2 the clock input of the tms51xx chip) [Lord Nightmare].
- Add a TEA1002 color encoder device and use it for the Aquarius. It might make sense to make this a direct descendent of the palette_device instead. Color information based on TEA1002 datasheet [Dirk Best, nitrofurano, Bruce Abbott].

0.156:
======
- Included modern .dsk format among default supported formats [Riley110].
- Added info in many Eastern Europe computer softlists [Riley110].
- PC, AT: Hook up missing softlists to various drivers [Justin Kerk].
- i6300esb: Document more registers [O. Galibert].
- Improve Epson LX-810L and ActionPrinter 2000 up to a point where they actually work. Devices boot and enter main input loop, but input is not yet implemented. It is possible to run the printers' self test [Ramiro Polla].
- Made pla_device more generic.
- (pc9801_kbd): Fix locks, add missing keys [Octocontrabass].
- Added tms0970 device [hap].
- Backport MBC1COL detection from GoodGBx [Cowering].
- (num9rev): Add number 9 revolution 512x32 [Carl].
- (abc99): Identified unknown ROMs [robcfg].
- Add zero() to (s)vga_device: zeroes all private variables but vtbls. The vga.memory is resized to 0.
(d88_dsk): Support some incorrect images [O. Galibert].
- Use the same list of centronics devices everywhere (except the Amstrad CPC), the list has been renamed as they aren't all printers [smf].
- Correctly model the behavior of a real Coco for the Cassette input in regards to audio (buzzing sound) coming from the port [Richard Goedeken].
- (ap2_dsk): Edd support. Fix broken detection of dsk [O. Galibert].
- Assorted improvments to Russian-based computers: * besta: Fix doubling chars * ec1840: new BIOS ROM * ec1840: add older revision of BIOS * ec1841: change keyboard xtal freq, add speech synthesis swre * ec1841: new softlist item * ec184x: MDA clone * ec184x, iskr103x: use custom set of ISA cards * kb_ec1841: use correct clock frequency * isa_hdc: ec1841 compatibility * isa_hdc: implement WRITESBUFF command * isa_hdc: add ioport for DIPs, make ROM optional (makes this device work with ec1841) * isa_hdc: add DIPs, make ROM optional * ie15: use utf-8 in keyboard layout description * ie15: init palette, minor cleanup * iskr103x: CGA clone * poisk1: add newer revision of HDC BIOS [Shattered].

0.155:
======
- Improve Laser 128 series support; 128EX/2 now boots DOS 3.3 and ProDOS [Peter Ferrie, R. Belmont].
- Support ProDOS-order Pascal 1.3 images [R. Belmont].
- Support PET user port "CB2 Sound" device [R. Belmont].
- tapectrl.c: Fixed bug where systems with multiple cassette drives (e.g. PET) had no Tape Controls when no cassette was loaded in the first drive [Fabio Priuli].
- ui.c: added shortcut commands for Tape Start and Tape Stop, by default mapped to F2 and Shift+F2, respectively. This is not meant as a replacement for the internal Tape Control menu, but it shall make simpler the usage of game tapes in home computers. Notice that REC/RWD/FWD have still to be pressed from the internal UI and that if you mount multiple cassettes in a driver with multiple tape drives only the first one will be controllable with these shortcuts [Fabio Priuli].
- pc_vga: Correct access to attribute register when PAS bit is set, allows XFree86 to detect ISA VGA [Peter Ferrie].
- maria.c: Timeout rendering added [Mike Saarna]. Reorganized DMA penalties to support new rendering code [Mike Saarna, Robert Tuccitto].
- thomson: Improve accuracy of the colors [Antoine Mine].
- Added the following video card BIOSes: [rfka01, Barry Rodewald] s3_764: S3 9503-62 (not working) Elsa Winner 1000/T2D s3virge:  S3 ViRGE BIOS v1.00-10 mach64: ATi mach64V1 113-34404-104.
- Stop trashing DiskCopy 4.2 images that don't have tags [R. Belmont].
- sb16: Add Soundblaster 16 low level emulation [Carl, Malice, O. Galibert].
- Fixed issue with messtiny build (additional bioses are no longer separate sets) [m4st4].
- Added PC-9821AP2/U8W BIOS [caius].
- floppy.c: Fixed disks not being launched if loaded from softlist through File Manager [Fabio Priuli].
- 315_5124.c: Refactored sprite handling, fixes status bar on Tarzan for gaemgear. Removed m_collission_buffer member variable. Tweaked game
 gear timing to fix glitches in status bar of Chicago Syndicate for gamegear [Enik Land].
- maria.c: Verious update: Improved DMA accuracy * Last Line DMA value corrected to 6. GCC and Atari docs both show a difference between Other Line and Last Line as +6 at the lowest part of the range * Blank scanlines are drawn when DMA is off, like real hardware * If MARIA hits the DMA limit, the CPU doesn't run until the next scanline [Mike Saarna, Robert Tuccitto].

0.154:
======
- Added preliminary keyboard hook-up in AAKART device, adding bare-bones keyboard inputs to Acorn Archimedes [Angelo Salese].
- dec_lk201.c : KEYCODE_2 corrected. RIGHT CONTROL now triggers DO [Bavarese].
- Emulate ie15 keyboard & use RS232 port [shattered].
- (kb3600) More sensible multi-key handling, now actually behaves like H/W [R. Belmont].
- (amigafdc) Add writing [O. Galibert]
-  Core changes: * Save screen pixelclock * Call reset_partial_updates() in finish_screen_updates() instead of creating an extra timer for it. This prevents calling reset_partial_updates() after finishing the screen, causes issues when screens change their size to a size lower than the current screen * Optimization: Support calling vblank_begin() directly at the start of a frame instead of using a timer.
- (c8050) Added ROM signatures for 901483-04 [Paul Rickards, Mike Naberezny].
- osdcore: Allow "default" for -midiin and -midiout [R. Belmont].
- (vtvideo.c) Finally fix smooth scrolling (ED084 =1). See DIAG DISK -> VIDEO TEST -> screen 3 (Rainbow driver - SKIP 0) [Bavarese].
- (corvushd) Fixed prep mode verify drive command. The verify drive command (0x07) is used by the "format check" options of both the Corvus diagnostics program and the SSE HardBox configure program. Previously, format check would halt with an error because we did not return a valid response for the verify drive command. Format check now completes successfully and reports no bad sectors. Fixed get drive parameters command. The "read controller code version" option in the Corvus diagnostics program now shows the correct version and drive capacity. Prep mode now supports multiple drives. This allows the Corvus diagnostics program to format any drive. Previously, the drive id sent in the command to enter prep mode was ignored and drive 1 would always be formatted instead [Mike Naberezny].
- (vtvideo): Added new interlaced mode. Also handle cases where undocumented delays/skip lines are poked (SQUINT; VIDEO.PAS) [Bavarese].

0.153:
======
- Converted x68000 keyboard into a separate serial device. This allows the removal of the uart hle in the driver (which didn't work, it was always two characters behind). diserial cannot sync with the start bit properly when using an external clock, so for now I've added a hack that is only enabled when using the MC68901 (setting the flag ignores the extra spurious bit that was getting shifted in) [smf].
- Replicator 1 driver: * Status: no sound / not working * General skeleton * Basic memory mapping * Shift-register interfacing from PORTC writes to the LCD device * avr8 fuses configuration [Felipe Sanches].
- ISA bus can now use its own address spaces instead of taking over a CPU's [R. Belmont].
- pc_vga: default DAC mask to 0xff, indiana now shows text [Carl].
- i8530h31 now *almost* boots or at least make some beeps, instead of halting because of unmapped I/O accesses, or halting because of a bad checksum because the ROM was loaded improperly [alegend45].
- Floppy subsystem documentation checkpoint. Incomplete, but there's too many people looking at it not to push it [O. Galibert].
- pc/xt/at: Added basic implementation of the Programmers Development System ISA card. The PDS editor software requires the hardware present to start up.  Some core work will need to be done to get any communications working, however [Barry Rodewald].
-Apple drivers cleanup: * apple3_state is no longer an unnecessary subclass of apple2_state * ay3600 keyboard decoder is now independent from apple2_state * Cleaned up some includes [R. Belmont].
- Refactored the Commodore 1541/1551/1571/2031 disk drives to use the modern floppy system [Curt Coder].
- Refactored the Commodore 2040/3040/4040 disk drives to use the modern floppy system [Curt Coder].
- Removed PET CB1 read handler, it is pushing vsync to it already [smf].
- Added BIOS from Midnight Blue PlayStation <10 million model> SCPH-7000W [smf, Myria].
- Added SUBCPU address space dump from US PlayStation [smf, psxdev.ru].
- machine\megadriv.c - Fixes segfault when trying to load the homebrew megadrive tutorial file 'firststeps' [Felipe Sanches].
- Start removing usage of deprecated 68681 INPORT_CALLBACK [R. Belmont].
- Floppy: Fix write over the index pulse and flux change lookup before it [O. Galibert].
- vtvideo.c: First steps to mimic soft scrolling. Should be synchronized with beam or DMA in the future [Bavarese].
- snapquik.c: Stop unloading snapshot/quickload images after start. This makes these image devices consistent with other image devices and it allows snapname and savename options to work as users expect with these formats too [Fabio Priuli].
- Preliminary driver support for the HP 49 G [Antoine Mine]
- pce_cd: Fixed MSM volume [Osso].
- Attempt to partially rewrite AAKART, and added 4bpp video mode for Acorn Archimedes. It now boots at prompt screen, and actually even boots into splash screen and dies almost soon with an error if you provide a properly initialized NVRAM [Angelo Salese].

0.152:
======
- southbridge: Make at586 fdc work [Carl]
- Fix D9060 format. Reads greater than one sector were broken when using bit banging [smf].
- Added nscsi versions of the SCSI callback device and Xebec S1410 [Curt Coder].
- s1410: Return drive not ready error when trying to recalibrate the unsupported drive 1. This fixes the phantom partitions in ABC 850/852 [Curt Coder].
- hardbox: Fixed RAM size [Martin Hoffmann-Vetter, Mike Naberezny].
- mega Soviet clone patch: * Moves ec184*, iskr103* and mc1502 out of pc.c * Moves CGA font upload support to a subclass * Adds new drivers: poisk1, ec1847, pk88 * Adds a skeleton of native iskr103* keyboard [shattered].
- isbc-215g: Add intel isbc-215g hdd controller, read only for now [Carl].

0.151:
======
- Misc. a2bus updates: * CFFA2: patch settings EEPROM to allow up to 13 partitions on both IDE connectors * SCSI: Much improved documentation [R. Belmont].
- dim_dsk: Add modern support [Carl].
- Allows you to change what is in the southbridge ide slots [smf].
- isa_dectalk: Add the dectalk pc device [Carl, Lord Nightmare].
- Replaced hack code for saving nc200 ram with legacy nvram saving, you can now shut down the emulation and start it up without losing everything. However you must press the on button before exiting (default END key) [smf].
- mc1502: Cassette output, printer WIP, serial WIP, minor keyboard fix [shattered].
- RSP SIMD changes: * Converted high and middle accumulator slices into SIMD vectors * Converted flag registers into SIMD vectors * Fixed unaligned accesses in CFC2 opcode * Added SCALAR_GET_VS1, SCALAR_GET_VS2, and SET_ACCUM_H/M/L to act as a passthrough to either the non-SIMD implementation or individual element insert/extract ops in order to minimize #if USE_SIMD all over the place * Ported SIMD implementations of VMUDL, VMUDM, VMUDN, VMUDH, VMACF, VMACU, VMADL, VMADM, VMADN, and VMADH from CEN64 with permission * Resulted in an overall speedup of proximately 50% for RSP-bound scenes on a 2.5GHz i5 [MooglyGuy, Marathon Man].
- Broke blender steps into individual #defines in order to make the functional differences between RDP modes more apparent [MooglyGuy].
- ec1841 updates: * Emulated the original keyboard * DIP switches added * Improved memory mapping [shattered].
- ti99, geneve: Using the new SETOFFSET address map feature (split access) [Michael Zapf].
- ti99: Added guards to prevent access to special devices in new memory access emulation [Michael Zapf].
- BBC Micro updates/fixes: * Implemented ram device, all models have default ramsize, model A is 16K/32K switchable * Added additional bios options for OS0.1, OS1.0 in models A/B * added clones bbcb_de, bbcb_us for BBC B German and US export models * added clones bbcmaiv, bbcmet, bbcmt, bbcm512, bbcmarm for other BBC Master models * Added clones bbcmc, bbcmc_ar for BBC Master Compact and Arabic models * Implemented BREAK key * Fixed 8271 disk loading of ssd,dsd images * Device mc146818 now accepts default CMOS RAM * Added default CMOS RAM settings for all Master models [Nigel Barnes].
- PT68K: Connected to a terminal, system works with bios 0 [Robbbert].

0.150:
======
- Emulated the SSE HardBox, a Corvus interface for PET [Mike Naberezny].
- amigaxxx_flop: Added two recently released files and corrected wrongly placed sets [Kaylee].
- mpt02: Fixed CDP1864 colors [Curt Coder, Guru].
- Added skeleton for the C64/128 version of the Star NL-10 printer interface cartridge [Curt Coder].
- Ensoniq 16-bit: SQ series are 21-voice, not 32. Fixes tuning vs. H/W [R. Belmont].
- wd_fdc: Don't switch off the motor when the fdc doesn't have a motor control pin [O. Galibert, Duke]. Data overrun drops DRQ. Fix ready handling, allow ready connected to vcc [O. Galibert].
- ES5510: Fixed saturating ALU operations, greatly improving the behavior of many programs [Christian Brunschen].
- Added skeleton 'Yamaha Mixt Book Player Copera' to the Sega Pico driver, it appears to be similar to the Pico but with extra sound
 hardware (a complete Sound Blaster clone) on the MB. Added a preliminary Softlist. Added board layouts for both [Team Europe].
- MPU-401: preliminary checkpoint [R. Belmont, kevtris]. MPU-401: Preliminary working MIDI out [R. Belmont].
- MIDI: System Common messages should not override running status, fixes Sierra games crashing with the MT-32 [R. Belmont].
- Separate Ensoniq "pump" device out from esq5505.c [R. Belmont].
- Rainbow updates: * Add beeper, NVRAM. LED output for keyboard, Z80 and 8088 * Correct NVRAM mirroring [R. Belmont]. * DC012 48 line mode. 3 new character attributes (reverse, blink, underline) [Bavarese].
- Fix GD-Rom booting in DC US and PAL [PsyMan].
- Fixed crashes from reading the reset port on some drivers [Wilbert Pol].
- vtvideo.c : Separate device_reset(). New variable m_height_MAX for those parts of the code shared with VT-100. 132 column mode uses compressed characters with 1 filler pixel instead of 2. Bold implemented: 3 color palette and separate device_reset() on Rainbow. Double width line attribute fix [Bavarese].
- Added preliminary S+core CPU emulation [Sandro Ronco].
- Renamed IDE8 to XTIDE [smf].
- Software list update. New softlist: snes_vkun.xml (Voice-Kun audio compact discs) first Voice-Kun public dump from King Mike added. New prototype public dump from SNES Central in snes.xml [ReadOnly].

0.149u1:
========
- Added software list for BASIC programs saved to tape [Anna Wu, UglyJoe, Fabio Priuli].
- corvushd: Fixed log message. Fixed physical sector calculation [Mike Naberezny]. Supported 4 hard disks and usage from within a device [Curt Coder].
- Added skeleton for IMI 5000H hard disk controller [Curt Coder, Al Kossow].
- Added skeleton device for Mator SHARK (22 MB Winchester hard disk for the Commodore PET) [Curt Coder, Mike Naberezny].
- imgtool: Add bml3 driver, supporting both single-density (MP-1805 controller) and double-density (MP-1802 controller) disks in D88 format [jedwidz].
- Fixes for building MESS with Visual Studio 2013 preview [smf].
- Ensoniq 16-bit: better A/D parameter handling, allow panel device to send new analog data [Christian Brunschen].

0.149:
======
- Added RS-232 ports to several drivers [Curt Coder].
- Ignore unformatted tracks in dsk files [smf].
- td0_dsk: Add new floppy system support for teledisk [Carl].
- sp0256: Modernized the SP0256 Narrator Speech Processor sound device [Fabio Priuli].
- Fixed IEEE-488 bus reset on Commodore drives [Curt Coder].
- Fix for Apollo PIC8259 breakage [Hans Ostermeyer].
- Corrected pitch and readback behavior for the ALF Apple Music II and noted it's the same as the ALF AM1 [R. Belmont].
- Modernized uPD1771c sound device. Modernized the Mac Sound device. Modernized MEA 8000 sound device. Modernized MC68328 (DragonBall) device. Modernized AY-3-1015 device. Modernized Samsung S3C44B0 device. Modernized VT100/Rainbow video device. Modernized VIC3 video device. Modernized uPD71071 DMA device. Modernized DS1315 clock device [Fabio Priuli].
- dsk_dsk: Fixed incorrect sector size bug preventing standard DSK images from working [Barry Rodewald].
- Marked Game Boy, Game Boy Color, Game Boy Advance, Game Gear, Intellivision, Lynx, Master System, MegaDrive / Genesis, NES / Famicom, Neo Geo Pocket, Neo Geo Pocket Color, PV-1000, Super Cassette Vision, Super NES / Super Famicom, Wonderswan and Wonderswan Color as supporting save states. PC-Engine supports save states too, but only for HuCard games and not for CDs. Please report issues with save and restore in these systems, if any, to MameTesters [Fabio Priuli].
- terminal: Fixed natural keyboard [Mike Naberezny].

0.148u5:
========
- Added year and publisher info to most games in Amiga OCS, ECS, AGA and Atari ST softlist, fixed shortnames and descriptions where needed, improved parent/clone relationships, made better use of part_id features in multidisk sets. Also, re-ordered sets in ZX softlist [Anonymous, Fabio Priuli]. Added software lists for NorthStar Horizon/Advantage floppies [Dave Dunfield].
- psxmultitap: Add multitap support [Carl].
- Slotify pc joystick [Carl].
- Apollo updates: * Added 4 and 8 plane color graphics board support * Renamed dn3x00 to dn3x00_19i and dn3x00_15i to dn3x00 * Reworked video/apollo.c into class apollo_graphics * Fixed recent regression where the arrow keys moved the mouse pointer [Hans Ostermeyer].
- pc_joy_sw: add MS Sidewinder pad [Carl].
- com8116: Fixed frequency divisors [Curt Coder].
- i8251: Implemented parity and 16X/64X clock modes [Curt Coder].

0.148u4:
========
- XT IDE interface [Phill Harvey-Smith].
- Fix for ROM paging on both the Dragon 64 and Dragon Alpha, which restores the Dragon Alpha to working condition [Phill Harvey-Smith].
- Z800x and M20 improvements to boot CP/M-8000. Z800x: Push the correct word on internal traps. Z800x: Fix FCW handling in system non-segmented mode. Z800x: Add missing form of ldb reg, #imm. Z800x: Show previous PC, NSPSEG, and PSAPSEG in the debugger. Z800x: Improved flags display in the debugger. Z800x: Add debugger command z8k_disass_mode to toggle segmented/non-segmented. Default "auto" tracks the current execution state. Z800x: Don't block nested exceptions if the priority and the FCW allows it [Christian Groessler].
- s3, mach8: Added read/write registers, and implemented read masking in BitBLTs (used by XF86_S3). Made clipping rectangle checks against Destination X/Y when doing BitBLT [Barry Rodewald].
- csw_cas.c: Fixed CSW header detection regression [Wilbert Pol].

0.148u3:
========
- psxcd: Simplify the cdrom [Carl].
- imd: Stop being so anal-retentive, it's counterproductive [O. Galibert].
- Stop PSX crashing when reloading a state when cd access was in progress [smf].
- Makes sure the first instruction of cpe/psx/psf files will be executed [smf].
- upd765: Handle modes a little more, NeXT can boot from floppy again [O. Galibert].
- upd7220: Add the internal rom [rfka01, balrog].
- Added skeleton S3 ViRGE video card [Barry Rodewald].
- Band aid fix for Tobal No. 1, some graphics issues remain [smf].

0.148u2:
========
- Added hook-up for CD Block command 0x64 (Put Sector Data) [Angelo Salese].
- ColecoVision: controller has a * key, not a . key [Nick3092].
- PlayStation: Fix CD-ROM regression [R. Belmont].
- isa_ide: Correctly mapped alternate port [Miodrag Milanović].
- Reimplemented the NCR5380 SCSI controller using nscsi [R. Belmont].
- Modernized vc4000 device [Andrew Gardner].
- Modernized wswan, special, and svision devices [Andrew Gardner].
- 3c505: Fix typo that broke TCP [Hans Ostermeyer].

0.148u1:
========
- Added Cardco CSD-1 floppy drive (C1541 clone) [Cowering].
- g7400: Changed driver to use the i8244/i8245 device implementation [Wilbert Pol].
- minichief: Added WD1002A-WX1 ROM dump [rfka01].
- odyssey2, videopac: Updated drivers to use the i8244/i8245 device implementation [Wilbert Pol].
- Refactored the Commodore 1581 floppy disk drive to use the modern floppy system. Supports read-only access to D81 images [Curt Coder].
- wd_fdc: Controller remains busy until the last DRQ has been served and the sector register can now be written more than once [Curt Coder].
- esq5505: add MIDI In capability to all of these drivers [R. Belmont].
- sms.c: Improved memory initialization on Japanese and Korean consoles. This fixes softwre list entries alibaba and blockhol [Enik Land].
- Fix non-functionality of all Apple floppy drives [R. Belmont].
- flopimg: Added support for Commodore GCR encoding [Curt Coder].
- SMC-777: enabled to show the border area in MC6845 interface, changed various video related function accordingly [Angelo Salese].
- Enabled to show border area in Sharp X1, fixes Shilver Ghost gameplay and Nobunaga no Yabou error display if a single floppy is in [Angelo Salese].
- Made major clean-ups to NEC PC-8801, Sharp MZ-2500, Sharp X1 and Sony SMC-777 drivers. This gives a nice speed boost to them [Angelo Salese].
- BINBUG : Added full implementation of DG640 video card. Improved cassette [Robbbert].
- ESQ-1: Converted to n68681, hooked up MIDI I/O, mapped more front panel buttons [R. Belmont].
- Slotify playstation controller ports [Carl].
- Fix memory card and standard controller with v3 pad lib psx software [Carl].
- Add Dualshock emulation [Carl].
- Make playstation memory cards load and save to a file [Carl].
- floppy: Fixed write protected signal and added a callback for it [Curt Coder].
- PlayStation: Mirror main RAM, fixes Woody Woodpecker Racing. Fix sample signedness and stream rate for CDDA (redbook) audio. Play XA audio at the correct speed [R. Belmont].
- alphasma: added keyboard input and LCD emulation [Sandro Ronco].
- dsk_dsk: Header size obvious fix [O. Galibert].
- cat.c (Canon Cat): Reverse engineered 99% of memory map including mirrors based on extensive hardware testing; located Printer, Modem and Floppy drive registers (not yet hooked up); added v1.74 firmware and SpellCheck ROMs. Added a lot of debugging information [Lord Nightmare, Balrog]. Got rid of a lot of hashtag lookups; fixed the video enable bit location. Cleaned up comments a bit. More debugging stuff added. Added the 6ms timer and its counter. Implemented video invert bit, added notes about what some of the registers are called in the original source code [Lord Nightmare].
- c64: Implemented parallel joystick pot X/Y read. Cleaned up input handling. Controllers are now connected using the slot interface, and by default a joystick in port 2 is present [Curt Coder].
- c128: Implemented parallel joystick pot X/Y read. Cleaned up input handling. Controllers are now connected using the slot interface, and by default a joystick in port 2 is present [Curt Coder].
- esq5505: Use esqpanel base class for massive cleanup [R. Belmont].
- kt76: Convert to modern 68681 and add MIDI I/O [R. Belmont].
- cdi: Modernized CD-i and removed tag lookups. Modernize MCD212 device [MooglyGuy].
- gba: Cleaned up tag usage outside of the startup path [MooglyGuy].
- vic10: Cleaned up input handling. Controllers are now connected using the slot interface, and by default a joystick in port 2 is present [Curt Coder].
- vic20: Cleaned up input handling. Controllers are now connected using the slot interface, and by default a joystick is present [Curt Coder].
- De-tagged the Apple II series drivers [R. Belmont].
- pet: Added datassette slot interface [Curt Coder].
- plus4: Cleaned up input handling. Controllers are now connected using the slot interface, and by default a joystick is present [Curt Coder].
- apple2gs: Enable 6850 MIDI card. Tested in MasterTracks Pro and synthLAB [R. Belmont].
- gb.c: Fixed support for Wisdom Tree games [Fabio Priuli].
- isa_gus: Enabled 6850 MIDI interface with a hopefully accurate clock,
 and fixed a silly error with MIDI IRQs, and passes the MIDI transmit
 IRQ test. [Barry Rodewald]
- psxanalog: Add analog joystick [Carl].
- SoundBlaster: MIDI Out support for single-byte, SB UART and MPU-401 UART modes [R. Belmont].
- pet2001: Rewrote the PET 2001 series [Curt Coder].
- pet: Moved the remaining PETs to the new driver [Curt Coder].
- isa_sblaster: Fully hooked up MPU-401 input and output for SB16. Working SB-MIDI In (tested w/MIDI Monitor for Windows) [R. Belmont].
- megadriv.c: Many updates to cart handling: * Updated carts to be slot devices * Simplified loading and bankswitch mechanism * Added support for real Sonic & Knuckles lock-on emulation (you can combine it freely with other carts, through the -cart2 slot which gets added automatically) * Remove need for "pcb_type" feature from xml softlist, since the new 'slot' feature is enough * Moved SVP emulation to src/mess/ in view of conversion to a slot device as well [Fabio Priuli].
- Properly close the old image when swapping CHD-CDs [Steve Leung].
- Added minimal cassette software lists for the Commodore computers [Curt Coder].
- cat.c(Canon Cat): added another v2.40 romset dumped from two original developer's machines and made it the parent set. Lots and lots of documentation updates [Lord Nightmare, Dwight Elvey, Sandy Bumgarner].
- pet: Added user and memory expansion ports [Curt Coder].
- cbm2: Added user port [Curt Coder].
- c64: Added CMD SwiftLink cartridge emulation. Added CMD Turbo232 cartridge emulation. Added support for the VizaStar cartridge [Curt Coder].
- megadriv.c: More updates: * Implemented correct ROM mirroring, based on research by Eke & others * Emulated the protection in Ya Se Chuan Shuo, promoting it to work state * Fixed cart type in Blockbuster World Video Game Championship II (works for the first time in MESS) * Fixed cart type in HardBall III, Barver Battle Saga and Chao Ji Da Fu Weng * Added support for unusual SRAM location in HardBall 95 * Fixed a few regressions introduced in the previous commit * Fixed wrong driver class being used in 32x and SegaCD [Fabio Priuli].
- gb.c: Many updates to cart handling: * Updated carts to be slot devices * Simplified loading and bankswitch mechanism * Fixed MMM01 emulation * Removed need for "mapper" feature from xml softlist, since the new 'slot' feature is enough [Fabio Priuli].
- apple2: Support generic 6850 MIDI card (Yamaha, Passport, etc). General modernization, some tagmap cleanup, and prep work to emulate IIe aux slot cards. Support 8 meg AE RamWorks III card for IIe. Another pass on tagmaps, plus preliminary emulation of the standard and extended 80-column cards for the IIe [R. Belmont].
- flopimg: When generating a pc layout, don't write the gap3 after the last sector [O. Galibert].

0.148:
======
- c1551: Fixed floppy loading [Curt Coder].
- c1571: Fixed fast serial mode on C128 [Curt Coder].
- ed1200 family of LCD controllers [O. Galibert].
- dsk: (minimally) Complete the dsk support [O. Galibert].
- floppy: Correctly reach files inside zips or softlists [O. Galibert].
- flopimg: Avoid avoidable leaks [O. Galibert].
- upd765: Be verbose about sector IDs when formatting a track [O. Galibert].
- Added FM encoding support to flopimg and wd17xx_dsk [Curt Coder].
- Added FM encoding support to upd765_dsk [Curt Coder].
- Added cdda_get_channel_volume() function to CD-DA device. Fixed volume control display in PC Engine CD system [Angelo Salese].

0.147u4:
========
- Added proper char roms for Wyse700 [John Elliott].
- upd765: Reset MA when sector is found on write data too. Don't choke on DDAMs. Handle the rate correctly in FM. Get ready from the correct place in sense interrupt status. Better integration and support of FM. Move to emu. Externalize the fdc. Try another hypothesis [O. Galibert]. Changes to busy flag, r/w sector increment and reset int [Carl].
- imd: Accept versions with single-digit minor [O. Galibert].
- pc floppies: Merge the common parts of d88/imd [O. Galibert].
- floppy: Fix index pulse generation when motor is always on. Default on head 0, not 1. Enhance ready support. Restore/recalibrate is supposed to work like this [O. Galibert]. Added macros for declaring modern floppy formats. The generic floppy formats (D88/DFI/IMD/IPF/MFI/MFM) are now automatically supported in each driver using the modern floppy code [Curt Coder].
- wd1772: Improved interrupts, added ready handling and FD1793 variant. Added FD1771 and FD1797 variants [Curt Coder]. Move to emu. Rename to wd_fdc [O. Galibert].
- upd1771.c - Additional comment updates, including some upd1771 patents and internal workings information [Lord Nightmare].
-wd_fdc: Add comments on the family. Change the feature functions into bools, and use the correct pll for each chip. Describe track when formatting. FM support, need to review all timings. Interrupt on ready support. Fix sector sizes and (most) timings. Change the fd179x timings to be tighter [O. Galibert].

0.147u3:
========
- Added EPSON SIO port emulation as used by the HX-20, PX-8 and PX-4. Updated PF-10 and TF-20 floppy devices to a new style device and use the SIO implementation. Updated PX-4 driver to use the new emulation [Dirk Best].
- upd765: Try yet another hypothesis on the IRQ behaviour [O. Galibert].
- Add a generic wd format [O. Galibert].
- isa_ide_cd: initialize ide registers [Carl].
- floppy: Add IMD support [O. Galibert].
- upd765: Add read fm sector support [O. Galibert].
- wd1772: Added WD2797 variant, side select output, and immediate interrupt command (0xd8) [Curt Coder].

0.147u2:
========
- Floppy: Random fixes/logging [O. Galibert].
- upd765: Modernize [O. Galibert]. Remaining TODO list:
 * Take WP into account
 * Test the amstrad, implement its observational format (edsk) using pasti as a start. Or find the legendary amstrad IPFs. Or both.
 * Correct read track, the implementation is completely wrong. See previous for testing, it's only used in protections the check the inter-sector gaps.
 * Shake and bake on the amstrad, protections are the best to find bugs in a fdc.
 * Add the scan id commands, but nothing seems to use them.
 * Debug the 2.88M formatting which is unreliable. Fix its IDAM/DAM gap size on formatting too (but that's not what's making it unreliable).
 * Test all the systems that were hit, and fix what needs to be fixed. Beware that multiple problems may happen:
 - upd765 may be wrong
 - The driver may not be working
 - The hookup may be wrong/incomplete (bitrate selection and floppy rpm in particular)
 - The driver may be too limited for the new implementation (the x68k dma device does not handle non-instant dma yet for instance)
 * Report invalid command when appropriate depending on the actual chip emulated
 * Add the russian clones with their real names.
- d88: Reduce the gap3 size from the standard value when the data otherwise won't fit [O. Galibert].
- upd765: Implement LOCK. Fix busy status when seeking. Fix MSR DIO in EXEC phase. Fix the dump regs command, don't exit on unknown commands and add dsr reset [O. Galibert].
- Add innovation ssi-2001 sid-on-isa device [Carl].
- Added basic support for the loop flags in tzx [David Haywood].

0.147u1:
========
- Fixed resource data of Windows executable [Oliver Stöneberg].

0.147:
======
- Fixed vertical sprite wrap-around in SNES driver [Angelo Salese].
- Rewritten cycle steal code from scratch and nailed it directly in the G65816 CPU core [Angelo Salese, byuu].
- Added PET cassette port slot interface to vic20, c64, and plus4. Implemented 1530/1531 datassette as slot devices. Converted MOS6581 interface to devcb [Curt Coder].
- vic20: Added floating bus read support to VIC and cartridge interface [Curt Coder].
- vic10: Added floating bus read support to VIC-II and cartridge interface [Curt Coder].
- Fixed incorrect SPC700 IPL ROM behaviour in SNES driver(s), fixes some (not all) crashes at soft reset [Angelo Salese].
- Added Sound Blaster 16, and proper 16 bit ISA DMA handling [Carl].
- Added IBM VGA card [Carl].
- m6502: Fixed CPU peripheral port behavior by introducing pull-up and pull-down masks to the CPU interface [Curt Coder] .
- isa_blaster: Adds 2,3 and 4bit ADPCM support [Carl].
- Preliminary support for cassette images in MZ-2000 [Angelo Salese].
- Added keyboard inputs for Pasopia and Pasopia 7, z80pio irq still doesn't work [Angelo Salese].
- Added paddles and light pen VCS control devices [Curt Coder].
- Support for writing to compressed hard drives using diff files [smf].
- PC hardware: cleanup the end-of-dma notifications [O. Galibert].
- isa_blaster: improves the adpcm and simplifies the dsp protection, based on the ATI Stereo FX rom [Carl].
- pc_joy: Made pc joystick a device for the many isa audio adapters with joy ports to share [Carl].
- cbmb: Added PLA dumps [Edward Shockley].
- ATI Stereo F/X ISA card support [Carl].

0.146u5:
========
- New device k7659 keyboard; modified LLC2 to work with it [Robbbert].
- k7659kb - Added more keys, added port_char, added return value when no key pressed [Robbbert].
- terminal: Replaced internal keyboard with the Ascii keyboard, since they were identical [Robbbert].
- nscsi: Documentation [O. Galibert].
- rp5c15: Initialize at power-on (makes the x68k boot reliable) [O. Galibert].
- roc10935/7: Correct an error in the lookup table for the '7' character [Lord Nightmare].

0.146u4:
========
- m68k: Handle higher-value constants in FMOVECR [R. Belmont].
- Moved TMS9901/9902 from mess/machine to emu/machine [Michael Zapf].
- AM9517 DMA controller enhancements, adapted PC drivers to use it [Carl].
- pccga: ec1841 not only mirrors the chargen buffer, but also byte-swaps it [shattered].

0.146u3:
========
- Refactored the Commodore disk drives to use BIOS definitions [Curt Coder].
- tms9928/v9938: Using an own address space for the attached video memory [Michael Zapf].
- tms99xx: Introduced symbolic constants for interrupt lines. Added a special RESET line which is handled by the CPU, not by the emulator core. tms9928a/v9938: Introduced dedicated RESET line [Michael Zapf].

0.146u2:
========
- Reimplementation of TMS9980A for cycle-precise processing; changed tms9900.c to allow subclassing TMS9900 and TMS9980A from a common parent [Michael Zapf].

0.146u1:
========
-upd765.c: Trigger RDY active during reset interrupt for each drive independently so that 4 consecutive Sense Interrupt commands will return the correct status [Curt Coder].
-SoundBlaster: First-pass somewhat naive working version. Autoinit DMA does not work; use sblaster1_0, not 1_5! [R. Belmont].
-New TMS9900 and TMS9995 implementation with proper control line handling and wait state generation. Previous implementation has been renamed and drivers point to the old implementation until they are adapted to the new one [Michael Zapf].

0.146:
======
- Initial work in preparation for some modernization on the whole megadriv.c file, starting with better splitting of actual drivers (megadriv.c, megacd.c, mega32x.c, megasvp.c and megavdp.c) [David Haywood].
- 8530SCC: Read back tx/rx status bits correctly [R. Belmont].
- Made Z8001 I/O 16 bits wide, proper 8259 PIC hookup on M20 (no EC tests fail now) [R. Belmont, Christian Grˆssler].
- Fix *BSD compile [ElBarto].
- Added Microsoft Natural Keybaord emulation [Wilbert Pol, kevtris].
- ISA_EGA: Fixed several text mode issues identified by running AT diagnostics [Wilbert Pol].
- Fix apple2c0 and friends that assume IWM rather than Woz state machine [R. Belmont].
- Fixed to read tags from DiskCopy 4.2 files properly. Lisa requires this [R. Belmont].

0.145u8:
========
- ap2_dsk: added some missing defines and comments and a way to select whether to use lenient (if the address mark contents are sane regardless of whether the checksum byte was good or not) or normal (only if checksum was valid) usage of the address marks. Also switched the default output sector order from prodos order to dos3.3 order, which is slightly more useful. Added a define to switch between the three possible sector orderings: prodos, dos3.3, and logical [Lord Nightmare].
- dfi_dsk.c: fixed a nasty bug when reading df bytes with 0x80 set throwing the timing way off; this makes most disk images decode a whole heck of a lot better. ap2_dsk.c: fixed a nasty array-out-of-bounds access problem if an address mark with an insane sector value in it is read [Lord Nightmare, Phil Pemberton].
- Fixed a logic bug in the dfi header check which surprisingly doesn't come up at all on GCC (compiler bug?) but does happen on clang. Also disabled some accidentally enabled debug code, and handle the case of no index transitions at all properly [Lord Nightmare, Balrog].
- Fix bug found by Clang (behavior *appears* correct but can't verify) [Balrog, R. Belmont].
- 3c505 improvements. Netbooting a MESS Apollo instance off a second MESS Apollo instance is now possible, and Domain/OS 10.4 works [Hans Ostermeyer].
- Various Clang warning cleanups (and a few actual bugfixes) [Balrog].
- i386: Big pmode update. OS/2 2.1 more or less runs now [Carl].
- ap2_dsk.c: Preliminary, working RWTS18 decoding support; Decodes disks and shows ascii text; not sure if sectors are in the correct order yet [Lord Nightmare, Balrog, Roland Gustafsson].

0.145u7:
========
- 3c505: Switched to using core device_network_interface [Hans Ostermeyer].
- Add multiread support (behind a define for now pending heuristics) to the dfi import support. Fix some inaccuracies regarding index decode position in dfi files [Lord Nightmare].
- Modern apple 2 disk decoder for 16-sector disk images implemented using Olivier's new system for floptool. Only supports importing from .dfi 50mhz multi-read x3 images at the moment. [Lord Nightmare, Balrog, Jason Scott, Karsten Scheibler]
- Fix dsk export from floptool so it can work with just one .dfi read instead of needing 3 reads. Tested at 50mhz sampling rate only [Lord Nightmare].
- More work on dfi and apple2 modern disk stuff; most of the auto speed recognition stuff is in the dfi handler now but the actual data scaling to match the internal mfi 200mhz sample rate stream is not done yet. There are also some likely issues with beginnings and ends of index pulses. Brickwall windowing has been implemented for dfi for regeneration of missed transitions from marginal reads as well as discarding of noise. A histogram has been added (disabled by default) for dfi format as well [Lord Nightmare, Phil Pemberton, Balrog].
- Some additional tweaks to ap2 and dfi stuff; disabled the horribly broken load() code in ap2_dsk [Lord Nightmare, Balrog].
- ap2_dsk.c: beginnings of 13-sector format support. gives a warning if you try to read one so far.
- dfi_dsk.c: fix a bug involving offsets read from source file per track which caused an occasional 0xFF byte to end up in the stream (reading off end of file buffer) [Lord Nightmare].
- ap2_dsk now produces valid, runnable ProDOS-order .po disk images [Lord Nightmare, adtpro].

0.145u6:
========
- Fix for feature name xml output in softlist [bobz].
- m68k improvements [Hans Ostermeyer]:
* Fixed BFINS, BFEXTU, and BFEXTS to fetch 8-bit quantities as 8 bits (corrects Domain/OS 10.3.5 crash on page boundry).
* Added SoftFloat log functions and m68k FLOGNP1, FLOGN, FLOG2, and FLOG10 instructions.
- uPD765: Fix Apollo floppy read/write problems [Hans Ostermeyer].

0.145u5:
========
(none)

0.145u4:
========
- Support for the 16550 fifo and hook up for the avigo to  the serial port (to test the 16550) [Carl].
- nextkbd: Fix key up/down [O. Galibert].
- nscsi_hd: Write and mode sense support [O. Galibert].
- ncr5390: Fix dma/fifo interaction [O. Galibert].
- nscsi_hd: Misc fixes [O. Galibert].
- Preliminary ide cd support, based on work of R.Belmont and Grull Osgo, still need some work [Miodrag Milanović].
- i82371sb implementation and fixes for i82439tx [Grull Osgo].
- i386,x87: Multiple fixes [Carl].
- pic8259,fmtowns: PIC/timers fix [Carl].
- m68k: allow FPU instructions on '020 (it's possible to have an external 68881/882) and fix missing break; in the FPU [Hans Ostermeyer].

0.145u3:
========
- 680x0: Ensure fc/rw and fault address are consistant [O. Galibert].
- i386: Prevent page faults when returning to same privilege and unmapped pages are above the stack. Windows 95 boots now [Carl].
- Modernized terminal device and added possibility to change comm parameters [Carl].
- i386: LOCK prefix should depend on IOPL on 386. Windows NT beta boots [Carl].
- info.c: Several fixes and additions to listxml output [Fabio Priuli].
- Appended to xml info about devices which can be optionally mounted to slots.
- Added a description attribute to slotoption to show which devices can be mounted in each slot.
- Added to xml info of cpus/inputs/image/slots which are relative to devices (e.g. CPUs or Dipswitches in the device itself).
- Tags of elements directly attached to the root_device do not display anymore the root colon (slot tags were already behaving in this way); elements attached to optional devices use tags starting with colon (to be interpreted as a relative tags which gets appended to the device tag, when such a device is selected in a slot).
- Modified when necessary output routines to pass a root_device and a root_tag as parameters, in order to simplify output of relative devices and avoid duplicated code.
- Updated DTD according to the new elements and attributes. These changes allow frontends to know in advance how drivers can be configured through the various slot options (by matching option descriptions with device descriptions), without the need to run -lx with the various slot combinations. This is especially of use if a device adds e.g. dipswitches or image devices (like additional floppy drives or additional slot expansions), but also if one wants to know e.g. how many sound channels a soundcard would add to a pc driver, or which kind of screen parameters would be added by a specific choice of video card.

0.145u1:
========
- ISA Gravis Ultrasound device [Barry Rodewald].
- Work on et4000 16bbp and 24bbp video modes [Carl].
- Made generic serial port and RS232 port as slot devices, implemented pc mouse as example device [Carl].
- 68040 CPU: FSAVE fix, Add correct idle frames, Show the correct virtual map [O. Galibert].
- Added basic wrapper for Diamond Multimedia (Cirrus Logic based) ISA SVGA [Kaylee].
- Added null_modem and serial_terminal as slot devices [Carl].
- i386: Fix cmpsb (dir /s and edit works now) [Carl].

0.145:
======
- Added Covox DAC and Covox Stereo-On-1 [Miodrag Milanović].
- Added emulation of HD64610 RTC and hooked up to pda600 driver [Sandro Ronco].
- ISA card AHA1542 skeleton added [Darkstar].
- Added noise support to UPD1771 [plgDavid].
- Added ISA IBM PC Music Feature Card [Phil Bennett].
- ioport.c: Made the key/paste buffer auto-expand when it becomes full. This makes it possible to paste larger BASIC programs for instance [Wilbert Pol].

0.144u7:
========
- i386: Various improvements of cpu core, mostly protected mode related [Carl,Barry Rodewald].
- SoundBlaster: Added DMA timer for more realistic IRQ acks, added 0xD0 stop DMA command, cleaned up DRQ semantics [R. Belmont].
- floppy: Do specific UI handling [O. Galibert].
- ppu2c0x: Converted NES PPU to be a modern device. [Fabio Priuli].
- m68fpu: Accept some more variants of fsave/frestore [O. Galibert].
- flopimg.h: Docbookified documentation [balrog].
- floppy: Libertarian relicensing [O. Galibert].
- m4510: Initialize the input callback too [O. Galibert].

0.144u6:
========
- Enabling load of multi part softlist items on all available device [Fabio Priuli].
- floppy: DiskCopy 4.2 support [O. Galibert].
- i8279 improvements. Hooked up to sdk85, sdk86, selz80 [Robbbert].
- i386: Bit more progress towards getting 386 enhanced mode Windows running [Carl].
- upd765: Added INT/DMA read handlers [Curt Coder].
- Added support for 2 drives on IDE controller [Miodrag Milanović].
- Connected ISA slot devices for 32bit PC machines [Miodrag Milanović].
- i386: Beginning to implement page faults [Carl].
- ipf: Fix a stupid memory leak, thanks Firewave [O. Galibert].
- i386: Added I/O permissions. Windows 3.0 can now start up in 386 enhanced mode [Carl].
- SoundBlaster: E2 protection check fixed. test-sbc.exe now passes initial tests [R. Belmont].
- SoundBlaster: Recognize command 0x10 for Inertia Player [R. Belmont].

0.144u5:
========
- pc_cga.c: Fixed selection of mc6845 input clock [Wilbert Pol].
- floppy: Add media type and write splice information to the internal representation, and start handling HD [O. Galibert].
- 8530scc: Modernize. Hopefully nothing broke [O. Galibert].
- floppy: Add an "unknown" form factor and use it to fix floptool [O. Galibert].
- mcs48: Fixed I8021/I8022 clock divider [Curt Coder].
- i386: Patch for i386 helps booting Phoenix bios [Carl].
- scsibus: Increment command index on acknowledge instead of data read, since Visual 1050 BIOS skips the message byte read and just acks it [Curt Coder].
- Fix four spc700 opcodes which didn't disassemble correctly [kevtris].
- scsibus: Added group 6 (vendor specific) command length [Curt Coder].
- scsibus: Implemented SASI group 6 command 00 (C0, Physical Device ID) [Curt Coder].
- scsibus: Sector size is now configurable in init_scsibus [Curt Coder].
- scsihd: Get sector size from CHD metadata to support old 256 bytes/sector SASI drives, and allow hard disk image subdevices [Curt Coder].
- uiimage/diimage: Dumbify the menus and add a control layer [O. Galibert].
- floppy: Add diskferret format support, and a minimal pc support [O. Galibert].
- First draft of i8279 device. Hooked up to mmd2, which now nearly works [Robbbert].
- softlist: Fix entry count tracking issue [O. Galibert].

0.144u4:
========
- ipf: Cope with a probable image error (Chase H.Q. ST in particular) [O. Galibert].

0.144u3:
========
- Handling error where filenames are too long [Chad].
- Added MC68008 PLCC variant [Curt Coder].
- uimenu: C++-ification [O. Galibert].

0.144u2:
========
- mc68901: Correct the spurious irq information a little [ijor].
- wd1772: Whether a drive is connected or not has no impact on the seek track==requested track test [O. Galibert].
- wd1772: Funnily enough, it's write track that writes, not read track [O. Galibert].
- floppy: Fix allocation issues on write [O. Galibert].
- wd1772: Simpily and make it more correct at the same time [O. Galibert, ijor].
- ui_menu: First part of the C++-ification [O. Galibert].

0.144u1:
========
- coco: New CoCo driver: [Nathan Woods]:
 * Modernized codebase (fully C++/device based)
 * Better MC6847/MC6883 emulation, particularly with respect to the interactions
   between those two chips.
 * Better separation between CoCo 1/2, CoCo 3, Dragon and Dragon Alpha emulations
 * Updated all drivers to use new MC6847 emulation (VTech, MC10 etc)
 * Converted RAM and Bitbanger devices to C++
- ipf: avoid writing out-of-bounds [O. Galibert].
- amigafdc: Fixes, fixes [O. Galibert].
- hd66421: Converted to be a C++ device [Fabio Priuli].
- Fixed HLSL memory leak and 32-bit HLSL crash-on-exit [Ryan Holtz, Bat Country Entertainment].
- amigafdc: Make the dsksync/DMA interaction more correct... probably [O. Galibert].
- wd1772: Generalize to all wd177x [O. Galibert].
- upd765: Fixed sector increment during read/write [Curt Coder].
- Fixed image loading for apple2 in cases with tolerated extra bytes [Chad].

0.144:
======
- Fixed up the flicky and clones (system1.c) Dip Switches after a fair amount of playtesting.  Also, added some specific set notes related to
oddness/differences observed [Tafoid].
- Start of input ports cleanup in the Toaplan drivers [Alex Jackson, kanikani]:
 * Removed some unused macros from toaplipt.h
 * Fixed polarity of DIPLOCATIONs in toaplan2.c
 * Added some missing inputs
- Fixed tms99xx STCR command [Michael Zapf].
- xmultipl: fixed tilemaps offsets [Roberto Zandona'].
- SDL: Add TAP/TUN networking capability and shell script for configuration [Carl].
- Added some common country and language names to the default strings, and removed some unused and/or redundant strings [Alex Jackson]
- Various improvement to Amiga FDC system [O. Galibert].
- ipf: Describe the remaining fields [O. Galibert, SPS].
- Rewrote NCR539x SCSI emulation from scratch [R. Belmont].
- More Toaplan input fixes [Alex Jackson, kanikani]:
 * Added DIPLOCATIONs and missing inputs to twincobr.c, wardner.c, toaplan2.c
 * Added information about ingame test/debug features to comments in toaplan2.c
 * Unified toaplan2.c inputs with the other Toaplan drivers
- Converted neogeo MVS driver to use software lists in preparation for multislot support [David Haywood].
- neogeo.c: fixed kof98 on non-Windows builds [Alex Jackson].
- Added per-channel volume control to ES5505/ES5506 sound chip, and hooked it up to the Taito F3 driver [Angelo Salese].
- Added a preliminary ES5510 DSP DRAM input/output latches support in Taito F3 driver, fixes sound in Ring Rage and Riding Fight [Angelo Salese].
- Implemented FRC hook-up to Sega System 24 HW, fixes missing SFXs to Bonanza Bros. [Angelo Salese, Phil Bennett, Charles MacDonald].
- 6522VIA: Implemented CA2 pulse output mode, and output interrupt state only when it changes [Curt Coder].
- 6532RIOT: Output interrupt state only when it changes [Curt Coder].
- hikaru: added 0.84 BIOS [Arzeno Fabrice].

0.143u9:
========
- Made smartmed device capable of handling softlist items [Miodrag Milanović].
- Added 3com Etherlink II 3c503 card emulation [Carl].
- Unified paste facility for trainer computers [Robbbert].

0.143u8:
========
(none)

0.143u7:
========
- wd1772: Add read track support and some misc fixes [O. Galibert].
- Fix for cursor handling in dl1416 [Lord Nightmare].
- wd1772: Add read ids support [O. Galibert].
- Store the character codes and cursor states in ram and use the lookup rom to decode on display (as the real chip does according to the datasheet) rather than storing the segment contents in ram. This makes the DL1416 device act more like the real chip, where on power-up you see random but recognizable characters, rather than random gibberish. Note there's a lot of code duplication to check cursor state and invalid/blank crap which can probably either go
  behind a define or be its own function, or into the display wrapper function itself [Lord Nightmare].
- To see mouse pointer in games with clickable artwork use -nohc option from command line (windows only) [Robbbert,hap].
- ipf_dsk: Reverse engineering, it's what we do [O. Galibert].

0.143u6:
========
- mac: add NuBus Radius Two-Page Display (1152x880 monochrome) card [R. Belmont].
- Start to duct-tape some organs to the Tandberg skeleton driver and fix some memory maps (fdccpu in particular). It still doesn't do very much now but does more than it did before [Lord Nightmare].
- Some updated tandberg notes, nothing truly earth-shattering [Lord Nightmare].
- x68k: added basic expansion slot, and support for the Neptune-X NIC as a slot device [Barry Rodewald].
- atarist: Until the video emulation is *much* better, reset the shifter every frame [O. Galibert].
- nakajies.c: Implemented banking [Wilbert Pol].
- Add keyboard 8035 rom from tandberg as NO_DUMP for now [JonteP, Lord Nightmare].
- pc1640: Fixed ROM labels [John Elliot].
- abc1600: Fixed floppy, system now tries to boot from the mount disk [Curt Coder].
- kc: Implemented high resolution mode, fixes intro in SOKOBAN4 [Sandro Ronco].
- d6809 - modernised, connected to terminal, added notes [Robbbert].

0.143u5:
========
- floppy: Refactor slightly.  Name, descrition, etc are now an intrinsic property of converters [O. Galibert].
- floppy: Add brand-new MFI (MESS floppy image) support [O. Galibert].
- floppy: Change the internal format to use magnetic cells. Temporarily move the full-track pll bit extraction in the amiga fdc [O. Galibert].
- st_dsk: Add the easy ST formats [O. Galibert].

0.143u4:
========
- pet: Added support for D80/D82 disk images with error information [Curt Coder].
- NES: Attached emulated keyboards (Famicom and Subor) directly to famicom driver now that keyboard emulation does not affect the emulation if only gamepad are attached to the system. Removed accordingly the fami_key driver, which became redundant [Fabio Priuli].
- pc1640: Added another BIOS version [philippe].
- next: Add the keyboard [O. Galibert].
- st: Make it better [O. Galibert].

0.143u3:
========
- Fix for the hlsl scanline jitter effect [nimitz].
- Fix hlsl phosphor decay [nimitz].
- H8: many more "S" opcodes, Lost in Labyrinth now runs [R. Belmont].
- Add preliminary hookup of 10937 VFD controller chip, which very badly needs to be rewritten as a proper device. Add notes about i/o map [Lord Nightmare].
- h8: rewrote H8S/2xxx 8-bit and 16-bit timers [Tim Schuerewegen].
- hashfile.h: fixed parent .hsi files not being used by clones [Fabio Priuli].

0.143u2:
========
- Fixed for rom auditing in core and winui [smf, Robbbert].

0.143u1:
========
- asc: minor cleanup; use device timer instead of stand-alone [R. Belmont].
- ti99: Replaced TRUE/FALSE for line states with ASSERT/CLEAR (which helped to find an inconsistency in the implementation) [Michael Zapf].

0.143:
======
- Added device types for all known WD17XX variants, and enforced inverted DAL lines with e.g. FD1771/FD1791. Used correct variants in drivers, except TRS-80 [Curt Coder].

0.142u6:
========
-upd765: Fix issue accessing floppies when initially drive is empty [Carl].
-pc_mouse: Fixed mouse issues, making it work in OS/2 [Carl].
-upd765: Fixed cylinder number increment on EOT, helps minix2 to boot [Carl].

0.142u5:
========
- MESSUI - finished adding HLSL sliders per game. The settings will be saved if your system is set up correctly. Note the page will be greyed out if D3D version 9 is not selected. Another note: The Defaults and Reset buttons don't do anything yet [Robbbert].
- MESSUI - fixed the 5 sliders on the Display sheet. [Robbbert].
- MESSUI - advanced sheet - fixed frameskip [Robbbert].
- MESSUI - Sound property sheet - fixed Audio Latency slider [Robbbert].
- MESSUI - Screen property sheet - fixed Number of Screens slider [Robbbert].
- MESSUI - Advanced property sheet - fixed 3 full-screen sliders. Fixed typo in FULLLSCREENCONTRAST. Fixed my mistake with Gamma and Contrast controls on Display property sheet [Robbbert].
- MESSUI - Debug property sheet - used a better icon [Robbbert].
- MESSUI - Removed option to load a cheat file [Robbbert].
- pc_fdc - Data rate detection added [Carl].
- at - Implemented RTC IRQ callback for AT machines making OS/2 to boot [Carl].
- pc_fdc - Fix booting from double density media with at bios set 0 [Carl].

0.142u4:
========
- pc_fdc - added disk change signal [Carl].
- note that with new tools there are no unicode issue with tools (wimgtool).

0.142u3:
========
- sonydriv: fix crashes when accessing drive after a software-initiated disk eject (e.g. zzcopy on apple2gs) [R. Belmont].

0.142u2:
========
- Added skeleton for Interpod IEC to IEEE-488 converter device [Curt Coder].
- Created device_rtc_interface which can be used to initialize RTC's to a certain date/time at driver startup, useful for regression testing. 
	Implemented the interface in most of the modern RTC devices. Note: this is not yet plumbed down to the command line [Curt Coder].
- es5503: Properly mask oscillator enable bits. Fixes crashes in e.g. ACS Demo Disk 2 [R.Belmont].

0.142u1:
========
- The core is based on MAME 0.142u1. This incorporates all features of the update to this core [MAME team].
- Update compiling.htm and howto.htm to latest wiki versions [Justin Kerk].
- Fix wimgtool compile with OSD=winui [Justin Kerk].
- uiimage.c: added reset of the char input buffer when selecting an entry in the file manager [Fabio Priuli].
- softlist.c: rewritten part of the Internal UI handling for softlists to match the code used by the file selector (this will allow more improvements soon) [Fabio Priuli].
- softlist.c: softlists entries are now ordered by shortname in the File Manager, so that it's easier to find the set you want to load (first of the promised improvements ;) ) [Fabio Priuli].
- softlist.c: simplified softlist navigation (from the internal UI) by catching char inputs and searching for matching names among list shortnames, like in the file selector [Fabio Priuli].
- softlist: moved software list handling (in the Internal UI) to a separate source [Fabio Priuli].
- uiswlist.c: properly made non-clickable the "[compatible lists]" separator entry between main lists and compatible ones [Fabio Priuli].
- uiswlist.c: added a switch to choose between shortname order or description order for softlist entries (in the Internal UI), and adapted the char input code to match shortnames or descriptions accordingly [Fabio Priuli].
- cartslot.c/chd_cd.c: added support for a callback function to test softlist sharedfeat (e.g. 'compatibility') and display a warning message accordingly. updated cdi.c as an example [Fabio Priuli].
- clifront.c: fixed -listmedia output (extensions were messed up) [Fabio Priuli].
- uiimage.c: File Manager now displays the brief name of the image device to make easier to decide where to mount images (see e.g. smssdisp or atom) [Fabio Priuli].

0.142:
======
- The core is based on MAME 0.142. This incorporates all features of the update to this core [MAME team].
- Added support for a new template to -snapname to use software names for snapshots. It is now possible to use %d_XXXX to name snaps after the name of the file mounted in the device XXXX, being XXXX the brief name of any device. E.g. you can use "-snapname %d_cart" to use the name of the game mounted in the cartslot, or "-snapname %d_flop2" to use the name of the game mounted in the second floppy drive, etc. If you are loading software through software lists, its shortname will be used; if you are using the fullpath of the software, its filename is used. Any combination of the new template with the old "/", "%g" and "%i" templates is supported as well. Notice that if you specify an invalid device, or if you have no software mounted in the chosen device, MESS will revert to the default template "%g/%i" [Fabio Priuli].
- softlists: Added new lists, new dumps and info [anondumper, Barry Rodewald, Curt Coder, MESSfan, Fabio Priuli].
- Cleanups; static qualifiers, added driver_states, consistent get_safe_token usage, reduced calls to ram_get_ptr() and region(...)->base() [Atari Ace].
- [WD17XX] Added device types WD1795, WD1797, WD2795, and fixed  wd17xx_has_side_select() [Curt Coder].
- [WD17XX] Set complete command delay to 16/32 usec based on DDEN [Curt Coder].

0.141:
======
- The core is based on MAME 0.141. This incorporates all features of the update to this core [MAME team].
- Added UTF-8 constants for Swedish/Finnish keyboard accented characters, and cursor key arrows. Refactored drivers to use these constants [Curt Coder].
- Rewrite of the system architecture of all systems of the TI-99 family (TI-99/4(A)/8, SGCPU, Geneve), now more closely representing the real hardware. Using device structures for all hardware parts now. Redundant code removed [Michael Zapf].
- Refactored the UPD765 DRQ line to use devcb. The read_write parameter is not present on the real chip, and no driver was using it [Curt Coder].
- Static/const changes, and added driver_device state to many drivers [Atari Ace].
- Refactored the following drivers to define ADDRESS_MAP_MODERN: abc80, advision, amu880, bw12, bw14, bw2, kc85, trsm100, tandy102, tandy200, pc8201a, mm1m6, sg1000, sc3000, sf7000, tandy2k, v1050, victor9k, vidbrain, ql, xerox820, xerox820ii, xor100 [Curt Coder].
- Allowed the use of either decimal or hexadecimal values for <dataarea> size, <rom> size, and <rom> offset in software lists [Curt Coder].
- Enabled loading ROMs from software lists to ROM_CART_LOAD entries [Curt Coder].
- Preliminary work done on these systems. Results vary from little difference to almost fully working: beehive, c10, cd2650, ccs2422, czk80, d6800, dim68k,
  dolphin, et3400, h8, h19, k8915, mccpm, mekd2, mes, okean240, pipbug, qtsbc, sapizcps3, selz80, sol20, uts20, vta2000, zsbc3 [Robbbert].
- Added configurable cursor to the generic terminal device [Robbbert].
- Added rudimentary 8N1 serial I/O to the generic terminal device [Curt Coder].
- Refactored the MSM8251 device to use devcb [Curt Coder].

0.140:
======
- The core is based on MAME 0.140. This incorporates all features of the update to this core [MAME team].
- Fixed Z80-SIO and DMA to allow trs80m2 to boot CP/M and TRSDOS [Curt Coder].
- Fixed sector counting in TeleDisk images [Curt Coder].
- Added automatic sector translation to the basicdsk format when the INTERLEAVE parameter is specified in a FLOPPY_OPTION block [Curt Coder].
- Fixed writing with the WD17xx. When writing, a timed data request will only set the DRQ. All of the other functionality (for reading) will be omitted [Tim Lindner].
- Added support for external character generator ROM to HD61830 LCDC [Curt Coder].
- Introduced more accurate MC6847 palette [Ensjo].
- Refactored the HD61830 LCD to a C++ device [Curt Coder].
- Added call to fetch metadata (in cartslot.c) so correct PCB can be loaded [Tim Lindner].
- Refactored the RCA CDP1802 CPU to a C++ device (COSMAC) [Curt Coder].

0.139:
======
- The core is based on MAME 0.139. This incorporates all features of the update to this core [MAME team].
- Fixed setting of tape flags when reaching end of tape. This prevented the user from using any other tape beyond the first mounted tape image on certain systems [Wilbert Pol].
- Added software lists in xml format for more systems [incog, k1w1, Kaylee, Micko, Fabio Priuli, Barry Rodewald].

0.138:
======
- The core is based on MAME 0.138. This incorporates all features of the update to this core [MAME team].
- Added core support for loading images with shortnames which are recognized by .xml software lists (stored in the hash/ directory). This is currently 
  supported only from command line (eventually, newui and MESSUI support will be added).  For more info and instructions, please check the User Manual at MESS Wiki ( http://mess.redump.net/mess:howto ) [Wilbert Pol].
- Added software lists in .xml format for several systems [incog nito,  Justin Kerk, Wilbert Pol, Fabio Priuli].
- Added preliminary emulation of the MC6852 SSDA [Curt Coder].
- Added preliminary emulation of the 64H156 gate array device (used in C1541 et al) [Curt Coder].
- Added disk change handlers to the Commodore 1541 and 2040 family disk drives. "Edge of Disgrace" demo now loads on C64 [Curt Coder].
- Added JiffyDOS BIOSes to CBM 1541, 1541-II, SX1541, 1571, 1571CR, 1581 and Oceanic OC-118 disk drives [Curt Coder].
- Added 1541 FLASH! BIOS to SX1541 [Guru, Curt Coder].
- Changes to the wd17xx implementation: * Added support for immediate/index pulse interrupts [Curt Coder] * Suppressed extra interrupt after FORCE INTERRUPT ($D0) command [Barry Nelson].
- Implemented Commodore DOS errors 21, 22, and 23 in D64 images. "Microsoft Multiplan" now loads on C64. (bug #1932) [Curt Coder].
- Refactored the MOS6530 device to use devcb [Curt Coder].
- Refactored the Luxor ABC bus into a device [Curt Coder].
- Added preliminary support for disk images in FDI format [Curt Coder].
- Added preliminary RS-232 interface device [Curt Coder].
- Inserts a check whether the get_track_size function is defined in the disk format before calling it. (bug #1934) [Michael Zapf].
- Implemented get_track_size function for D64 and G64 formats [Curt Coder].
- Fixed display of hash (hsi) details in MESSUI software picker (bug #1841) [Robbbert].
- Fixed 8080/8085 debugger when changing A and F registers [Robbbert].
- Fixed cassette crash if the premounted image was moved [Robbbert].
- Fixed cassette crash if the image being recorded was unmounted [Robbbert].
- Several compilation and linking fixes for Visual Studio (bug #1852) [Oliver Stoeneberg].
- Fixed several memory leaks [Oliver Stoeneberg].
- Only schedule a hard reset when the image could be loaded [Oliver Stoeneberg].
- Fixed hang when accessing unaccessible drive in File Manager (e.g. CD-ROM drive with no disc inserted) [Oliver Stoeneberg].
- Fixed assert on shutdown after an image load error [Oliver Stoeneberg].
- Show message about success/failure when loading/creating image during run-time (or print to console when specified on command-line / bug #1031) [Oliver 
  Stoeneberg].
- Check image loading result in device post-init - will now bail out on any image loading error and not just missing/inaccessible files (bug #1955) [Oliver Stoeneberg].
- Fixed Visual Studio specific linker errors with tiny build [Oliver Stoeneberg].
- [C2040] Added DOS 1 FDC ROM (parsed from disassembly) [Curt Coder].
- [MESSUI] Removed "File->Create Image...". It never worked and offered invalid image types. Use Device View to create images (not working either at the moment) [Oliver Stoeneberg].
- [MESSUI] Configuration of screens is working again [Oliver Stoeneberg].
- [MESSUI] Fixed the problem of the paths in driver .ini files being reset to default, or deleted [Robbbert].
- [NEWUI] Removed non-working input configuration artwork support [Oliver Stoeneberg].
- [NEWUI] Avoid duplicated extension when using "Save State As..." and don't carry the default savestate name in-between drivers when using the built-in 
  menu [Oliver Stoeneberg].
- [SYSINFO] Updated sysinfo.dat to latest MESS Wiki contents [Dirk Best, Fabio Priuli, Robbbert, Shideravan].

0.137:
======
- The core is based on MAME 0.137. This incorporates all features of the update to this core [MAME team].
- Refactored MOS6526 CIA interface, added SP/CNT callbacks, and fixed serial port transfer [Curt Coder].
- Cleanups for driver_data and Standard C library usage [Atari Ace].
- Fixed some 'uninitialized variable' errors [Scott Michel].
- Placed floppy drive head initially on track 0 to fix alignment issues with Commodore drives, where physical track 1 is a half track [Curt Coder].
- Implemented 'disk changed' (DSKCHG) floppy drive signal [Curt Coder].
- Implemented floppy drive write protect signal toggling on floppy disk insert/eject [Curt Coder].
- Implemented 'disk double sided' (TWOSID) floppy drive signal [Curt Coder].
- Emulated the following Commodore floppy disk drives at hardware level: 1551, 1571, 1581, 2040, 3040, 4040, 8050, 8250, SFD-1001 [Curt Coder].
- Added read-only support for the following disk image formats: D64, D71, D81, D80, D82 [Curt Coder].

0.136:
======
- The core is based on MAME 0.136. This incorporates all features of the update to this core [MAME team].
- Cleanups (static qualifiers, headers, renames, reduced global symbols, dead code cleanups, brace cleanups, and more multisession friendly init code) [Atari Ace].
- WD17xx write track supported in proper way instead of using more sector writes [Michael Zapf].
- Added F4 character-set viewer to many computers [Robbbert].
- The -listdevices option has been temporarily renamed to -listmedia, until it is merged with MAME's -listdevices command [Robbbert].
- Fixed bug 1770. Listmedia will indicate if a driver has no devices, or if the driver doesn't exist [Robbbert].

0.135:
======
- The core is based on MAME 0.135. This incorporates all features of the update to this core [MAME team].
- Moved floppy implementation to device [Miodrag Milanović].
- Floppy support for TD0, IMD and CQM [Miodrag Milanović].
- Cleanups to use more *_NAME and *_CALL macros, headers and const correctness [Atari Ace].
- Cleanups to add static/const qualifiers, and to remove dead prototypes and code [Atari Ace].
- Converted all drivers to use messram device [Miodrag Milanović].
- Removed XMODEM implementation from serial, was not used, and it should be implemented inside machine software not a MESS code [Miodrag Milanović].

0.134:
======
- The core is based on MAME 0.134. This incorporates all features of the update to this core [MAME team].
- Floppy cleanup [Miodrag Milanović].

0.133:
======
- The core is based on MAME 0.133. This incorporates all features of the update to this core [MAME team].
- Added support for passing around 'deleted address mark' information to the floppy system [Roberto Lavarone].
- Changes to the wd17xx implementation: - Added support for head loaded feedback from floppy drive. - Busy flag was cleared too early. - Added support for the WD1771 [Roberto Lavarone].
- Changes to the NEC765 implementation: - Fixed interrupt timing in FM/MFM modes. - NO DATA error flag is no longer set during EOT condition [Curt Coder].
- Added natural keyboard support to KR2376 [Roberto Lavarone].
- Static/const/include improvements [Atari Ace].
- Cleaned up the makefile: grouped drivers by manufacturer, sorted manufacturers in alphabetical order, and moved general use ICs to shared group [Curt Coder].

0.132:
======
- The core is based on MAME 0.132. This incorporates all features of the update to this core [MAME team].
- Converted the WAVE sound device to stereo [Curt Coder].
- Implemented following devices: PIO8155, RP5C01A, HD44102, HD61830 [Curt Coder].
- Changed the Commodore Serial Bus and IEEE Bus implementations to be devices. More work is needed to make the code flexible enough to support all the possible devices which could have been connected to the real thing [Fabio Priuli].

0.131:
======
- The core is based on MAME 0.131. This incorporates all features of the update to this core [MAME team].
- New tool added (castool) for cassette to wav conversion [Miodrag Milanović].

0.130:
======
- The core is based on MAME 0.130. This incorporates all features of the update to this core [MAME team].
- Made major changes to allow Cartridge slots to encapsulate hardware as devices. Updated the CoCo driver to use this standard system [Nathan Woods].
- Changed the DS1315 implementation to be a device [Nathan Woods].
- Changed the AT45DBxx and SST39VFxx to be a device [Miodrag Milanović].
- Fixed a bug that overwrote specific error messages with a generic error message when mounting an image [Wilbert Pol].
- Fixed a bug that caused the day of the week to not be properly returned by the DS1315 (bug #1755) [Nathan Woods].
- Global symbol, const/static cleanups [Atari Ace].
- Fixed image loading related memory leaks [Curt Coder].
- Refactored the following devices to use devcb callbacks: ABC77, CDP1861, CDP1864, CDP1871, MC68901, Z80DART, ZX8301, ZX8302 [Curt Coder].
- New centronics printer interface [Dirk Best].
- New PC-LPT device [Dirk Best].
- Replaced all generic tags [Curt Coder].
- Added /PC pin output support to the CIA emulation [Dirk Best].

0.129:
======
- The core is based on MAME 0.129. This incorporates all features of the update to this core [MAME team].
- Changed the 8251 UART implementation to be a device [Nathan Woods].
- Changed the 6551 ACIA implementation to be a device [Nathan Woods].
- Changed the 8521 RTC implementation to be a device [Nathan Woods].
- Changed the 8593 RTC implementation to be a device [Nathan Woods].
- Changed the TMS5501 implementation to be a device [Nathan Woods].
- Changed the MM58274C implementation to be a device [Miodrag Milanović].
- Changed the TTL74145 implementation to be a device [Miodrag Milanović].
- Changed the UPD7002 implementation to be a device [Miodrag Milanović].
- Changed the TMS9901 implementation to be a device [Miodrag Milanović].
- Changed the TMS9902 implementation to be a device [Miodrag Milanović].
- Changed the I8271 implementation to be a device [Miodrag Milanović].
- Changed the WD17XX implementation to be a device [Miodrag Milanović].
- Changed the NEC765 implementation to be a device [Miodrag Milanović].
- Changed the SAM6883 implementation to be a device [Miodrag Milanović].
- Changed the RP5C15 RTC implementation to be a device [Barry Rodewald].
- Changed the 6525 TPI implementation to be a device and added save state support [Dirk Best].
- Various code cleanups [Atari Ace].
- Fixed regression that could cause hanging when creating an image from the command line or the MESSUI (bug #1744) [Nathan Woods].
- Changed cartridges to be MAME devices [Miodrag Milanović, Nathan Woods].

0.128:
======
- The core is based on MAME 0.128. This incorporates all features of the update to this core [MAME team].
- Refactored ZIP path code out of src/mess/image.c, made more testable [Nate Woods].
- Removed MESS_DEBUG and the TESTDRIVER define and enabled a lot of non-working drivers [Oliver Stöneberg].
- Changed the cassette implementation into a regular mame device [Wilbert Pol].

0.127:
======
- The core is based on MAME 0.127. This incorporates all features of the update to this core [MAME team].
- Natural keyboard support is now implemented completely in the MESS core [Nate Woods].
- Moved image creation format code to be based on the new device model [Nate Woods].
- Changed the cdrom and harddisk implementation into a mame device [Wilbert Pol].

0.126:
======
- The core is based on MAME 0.126. This incorporates all features of the update to this core [MAME team].
- Fixed performance problems with -triplebuffer (bug #1539) [Justin Kerk].
- Code cleanups [Atari Ace].
- Cut down on the amount of time memory_region() is invoked in a loop [Atari Ace].
- Changed the 8530 SCC chip implementation to use MAME's device system [Nate Woods].

0.125:
======
- The core is based on MAME 0.125. This incorporates all features of the update to this core [MAME team].
- Major changes to transition MESS's device system onto MAME's device system [Nate Woods].
- Converted printers, snapshots and quickloads to the new device system [Nate Woods].
- Fixed memory bug in the hash file parsing code that could cause problems in debug builds [Nate Woods].
- Converted CDP1861 and CDP1864 display controllers to devices [Curt Coder].
- Updated WD17xx floppy implementation; busy signal is now set correctly [Miodrag Milanović].
- Clarified error message when MESS fails to load because of a device that is expected to be present (bug #1493)  [Nate Woods].
- Created a 'dumpkbd' debugger command to dump all natural keyboard info [Nate Woods].
- Fixed a regression in natural keyboard support that could cause certain keys to not be recognized (bug #1564) [Nate Woods].
- Converted HD63450 DMA controller to the new device system [Barry Rodewald].
- New MESS specific OSD call:  osd_get_clipboard_text() [Nate Woods].
- Changed Apple FDC/IWM implementation to be a MAME device. This affects the Apple II, Apple III, Apple IIgs, Lisa and Mac drivers [Nate Woods].

0.124:
======
- The core is based on MAME 0.124a. This incorporates all features of the update to this core [MAME team].
- Updated the Motorola MC68901 Multi Function Peripheral to use the new device system [Curt Coder].

0.123:
======
- The core is based on MAME 0.123. This incorporates all features of the update to this core [MAME team].
- Miscellaneous cleanups (staticization, constification, conditional logging, core callbacks) [Atari Ace].
- Greater use of ATTR_PRINTF [Oliver Stoeneberg].
- Changed use of AY-3-8910A sound chip to AY-3-8912A or AY-3-8913A where appropriate across all drivers [Justin Kerk].

0.122:
======
- The core is based on MAME 0.122. This incorporates all features of the update to this core [MAME team].
- Changed spacing between natural keyboard key names [Nate Woods].
- Added a general 74145 BCD-to-decimal decoder emulation, currently used by the SYM-1 driver [Dirk Best].
- Fixed M65C02 optimization [Peter Trauner].
- Miscellaneous cleanups (staticization, constification, header file, deprecated use of the "Machine" variable, gfxdecode naming, Machine driver, memory management and removed some legacy code [Atari Ace].

0.121:
======
- The core is based on MAME 0.121. This incorporates all features of the update to this core [MAME team].

0.120:
======
- The core is based on MAME 0.120. This incorporates all features of the update to this core [MAME team].
- Fixed multisession crash with the new menu selector (bug #1328) [Nate Woods].
- Changed the reset done when a cartridge is changed from a soft reset to a hard reset [Nate Woods].
- [Messtest] Added selectable bios support (bug #1392) [Nate Woods].

0.119:
======
- The core is based on MAME 0.119. This incorporates all features of the update to this core [MAME team].

0.118:
======
- The core is based on MAME 0.118. This incorporates all features of the update to this core [MAME team].
- Removed use of helper macros to declare input ports [Nate Woods].
- Generic emulation of the DL1416 "4-Digit 16-Segment Alphanumeric Intelligent Display" device has been added. Currently supported is the DL1416T and partially the DL1416B. This kind of display is used by the Rockwell AIM 65 [Dirk Best].

0.117:
======
- The core is based on MAME 0.117. This incorporates all features of the update to this core [MAME team].
- Changed BBC, Coleco, MTX, Sord, and Tutor drivers to use the SN76489 or SN76489A sound chips as appropriate instead of the SN76496 [Justin Kerk].
- Various 64-bit fixes [Oliver Stoeneberg].
- Converted some timer_*() calls to mame_timer_*() [Oliver Stoeneberg].
- Changed devices_allocate() to not use auto_malloc(); a consequence is that a devices_free() call is now necessary (bug #1293) [Nate Woods].
- Removed MESS implementation of the 6532 RIOT because we are now using the implementation by MAME [Dirk Best].

0.116:
======
- The core is based on MAME 0.116. This incorporates all features of the update to this core [MAME team].
- WD17xx cleanups [Nate Woods].
- Fixed a memory leak (bug #1019) [Oliver Stoeneberg].
- Massive update to entire sysinfo.dat file [Fabio Priuli].
- Added many SHA1 hashes [Fabio Priuli].
- Added some missing TESTDRIVERs to messdriv.c that were only specified in the driver source files [Oliver Stoeneberg].
- [Windows] UNICODE=1 fixes [Oliver Stoeneberg].

0.115:
======
- The core is based on MAME 0.115. This incorporates all features of the update to this core [MAME team].
- Added support for noting default RAM options in -listxml (bug #1147) [Nate Woods].
- [Windows] Factored out handling of standard file dialogs, to centralize handling of UTF-8 conversions and compatibility with old versions of
  Windows [Nate Woods].
- Fixed border colors for systems that use the MC6847 video chip and a custom palette [Dirk Best].

0.114:
======
- The core is based on MAME 0.114. This incorporates all features of the update to this core [MAME team].
- Moved per-image working directory handling into the MESS core [Nate Woods].
- Fixed NVRAM folder creation for battery backup (bug #1120) [Nate Woods].
- Fixed a bug that could cause multiple file extensions to be dropped for devices on certain drivers in both MESS and Imgtool (bug #1095) [Nate Woods].
- [Windows] Fixed deadlock (bug #1140) [Oliver Stoeneberg].

0.113:
======
- The core is based on MAME 0.113. This incorporates all features of the update to this core [MAME team].
- [Windows] Fixed a crash that can happen when doing a hard reset when devices are mounted (bugs #1036, #1084) [Nate Woods].
- [Messtest] Added the ability to script hard resets [Nate Woods].

0.112:
======
- The core is based on MAME 0.112. This incorporates all features of the update to this core [MAME team].
- Fixed certain crashes that occured on hard reset (bug #988) [Nate Woods].
- Fixed bug that caused a crash when a device was passed an empty string at the command line (bug #991) [Nate Woods].
- Fixed error reporting when startup images are not properly loaded up (bug #928, #990, #992) [Nate Woods].
- Fixed crash when unmounting images in the old UI file manager (bug #998) [Nate Woods].
- Fixed various memory leaks in debug builds when the debugger is not enabled (bug #1018) [Nate Woods].
- Fixed hash file processing [MJSTY].
- Fixed problem creating printer output (bug #1039) [Nate Woods].
- Removed redundant checks for tilemap allocation failute [Dirk Best].
- [Messtest] Now displays emulation error output [Nate Woods].
- [Windows] Fixed several memory leaks in the Windows code [Nate woods].
- [Windows] COnsolidated some MESS specific OSD code into the MAME OSD core code and removed redundant directory functions [Nate Woods].

0.111:
======
- The core is based on MAME 0.111. This incorporates all features of the update to this core [MAME team].
- Fixed opening up specific images within zip files that contain multiple images (bug #973) [Nate Woods].
- Removed a stub disassembler from the v30mz core, as per MAME conventions [Nate Woods].
- Renamed the "hash_directory" option to "hashpath" [Aaron Giles].
- Fixed regression introduced in 0.110 that caused battery backed NVRAM files to not be written unless the file already existed (bug #974) [Nate Woods].
- Added an SP0256 sound core [tim lindner].

0.110:
======
- The core is based on MAME 0.110. This incorporates all features of the update to this core [MAME team].
- All image file accessing is now done through image.h, rather than using mame_file objects [Nate Woods].
- Introduced an image_ptr() call, which returns a pointer to all image data valid for the lifetime of the image [Nate Woods].
- Added a specialized exit code for MESS-related initialization (bug #931) [Nate Woods].
- Added the ability to disable tests in Messtest [Nate Woods].
- Real time clocks now retrieve default times from the core [Nate Woods].
- I286 fixes [Barry Rodewald].
- Changed image_battery_load() and image_battery_save() to not return error codes; clients of these functions should not act differently if these files can't be loaded or saved [Nate Woods].

0.109:
======
- The core is based on MAME 0.109. This incorporates all features of the update to this core [MAME team].
- Fixed improper use of options.sample_rate in drivers to use Machine->sample_rate (bug #939) [Oliver Stoeneberg].
- Build system cleanups (bug #929) [Nate Woods].
- [Windows] Fixed incorrect "Illegal integer value for threads" error (bug #920) [Nate Woods].

0.108:
======
- The core is based on MAME 0.108. This incorporates all features of the update to this core [MAME team].
- Made cassette .wav file loading slightly more tolerant [Nate Woods].

0.107:
======
- The core is based on MAME 0.107. This incorporates all features of the  update to this core [MAME team].
- Fixed natural keyboard support for certain keys (bug #885) [Nate Woods].

0.106:
======
- The core is based on MAME 0.106. This incorporates all features of the update to this core [MAME team].


0.105:
======
- The core is based on MAME 0.105. This incorporates all features of the update to this core [MAME team].
- Changed how devices work.  Device command line options are now on a per device basis, and now identify the index within a device. Therefore, you now might invoke MESS like this: mess mysystem -flop1 foo.dsk -flop2 bar.dsk. Also, drivers now have the ability to specify the string to be used for the command line option. This allows multiple devices of the same type to be viable (bugs #711, #839) [Nate Woods].
- Fixed WD17XX side select option; this prevented some copy protection schemes from being properly emulated (bug #863) [Nate Woods].
- Fixed a bug that caused image creation to crash in certain situations (bug #858) [Nate Woods].
- Eliminated the unknown and unused -listtext and -createdir command line options [Nate Woods].
- Cleaned up auto_malloc() calls [Oliver Stoeneberg].

0.104:
======
- The core is based on MAME 0.104. This incorporates all features of the update to this core [MAME team].
- Changed how devices are specified. The new system resembles how MAME CPU and sound cores are specified [Nate Woods].
- Added a "input" command to the debugger [Nate Woods].
- Cleaned up natural keyboard code. No longer have QUEUE_CHARS/ACCEPT_CHARS and CHARQUEUE_EMPTY; callbacks are now installed at runtime [Nate Woods].
- Fixed a file manager memory allocation bug [Brian Sturk].
- Moved MESS validity code into a separate file [Nate Woods].
- Enhanced error reporting when loading images (bug #827)  [Nate Woods].

0.103:
======
- The core is based on MAME 0.103. This incorporates all features of the update to this core [MAME team].
- Changed generic cartridge loading so that a ROM_LOAD_CART declaration can be placed in a ROM_REGION. This change makes cartridge loading be specified
  similar to BIOS loading, and makes things cleaner and more declarative [Nate Woods].
- Makefile tweaks (bug #819) [Oliver Stoeneberg].
- Added mandatory attribute to the device tags on the -listxml data [Nate Woods].
- Pruned out some redundant PORT_NAME declarations [Justin Kerk].
- [Messtest] Added a trace command, to emit debug traces [Nate Woods].

0.102:
======
- The core is based on MAME 0.102. This incorporates all features of the update to this core [MAME team].
- Merged COMPX/CONSX into COMP/CONS as per the new convention in MAME [Nate Woods].
- Fixed crash when launching console games without required cartridges (bug #746) [Nate Woods].
- Added RAM configuration info to -listxml [Nate Woods].
- [Messtest] Now fully errors out when a blank screenshot is generated [Nate Woods].

0.101:
======
- The core is based on MAME 0.101. This incorporates all features of the update to this core [MAME team].
- Fixed crashes when running deviceless systems [Nate Woods].

0.100:
======
- The core is based on MAME 0.100. This incorporates all features of the update to this core [MAME Team].
- Removed fringe statetext feature used by a handful of the CBM drivers [Nate Woods].
- Fixed cassette audio sound regression introduced in MESS 0.93 [Nate Woods].
- Fixed and cleaned up mouse code (bug #747) [Nathan Lineback and Nate Woods].
- [Windows] Added a -skip_warnings option [Nate Woods].
- [Windows GUI] Fixed copyright year (bug #740) [Nate Woods].
- Fixed PULUW mnemonic in the 6309 disassembler [Tim Lindner].
- [Messtest] Refactored to use src/xmlfile.c code [Nate Woods].

0.99:
======
- [Windows GUI] Refactored INI parsing out of the main option code. This should make it easier to swap out a different configuration file system. Fixed minor cosmetic bug in the Interface Options dialog (bug #732). Added a feature whereby the GUI will watch the BIOS directories and automatically reaudit files that are added, removed or modified in those directories. Changing BIOS or Samples directories will now only reaudit systems for which they are relevant [Nate Woods].
- [CONCEPT] Fixed a variety of crashes [Raphael Nabet].
- The core is based on MAME 0.99.  This incorporates all features of the update to this core [MAME Team].
- [Messtest] Now raises an error when a blank screenshot is emitted, as that is almost always a sign of an error [Nate Woods].

0.98:
======
- The core is based on MAME 0.98.  This incorporates all features of the update to this core [MAME Team].
- [Messtest] Now will catch osd_die() messages [Nate Woods].
- Removed the 83 track limit on floppy disk images (bug #721) [Tim Lindner].

0.97:
======
- The core is based on MAME 0.97.  This incorporates all features of the update to this core [MAME Team].
- Rewrote Mode 2 support for the 8255 PPI chip. Removed trailing spaces from all input port name declarations [Nate Woods].
- Added CD-ROM device type [R. Belmont].

0.96:
======
- [Windows GUI] Improved error reporting if the emulation fails at runtime. Stopgap measure to fix image loading on the Apple IIgs; this will not work if the Apple IIgs 5.25" disk is ever enabled; in the long run the INI and CFG system must be merged for a real fix (bug #686) [Nate Woods].
- The core is based on MAME 0.96. This incorporates all features of the update to this core [MAME Team].
- Fixed SEXW in hd6309 core. It really is a signed extension of W into Q. Also, it is 4 cycles long. Thanks to David Keil and Sockmaster for pointing this out [Tim Lindner].
- Fixed ESC key under natural keyboard emulation [Nate Woods].
- [Windows] Fixed arrow keys under natural keyboard emulation [Nate Woods].
- Fixed index addressing mode disassembly for the hd6309 [Tim Lindner].
- Merged Apple 2 floppy disk controller and IWM code. The apple2c0 and apple2c3 drivers now work [Nate Woods].

0.95:
======
- Fixed a bug that caused the image info screen to not work properly with multiple images of the same device type (bug #677) [Nate Woods].
- [Windows GUI] Fixed a bug that could caused file filters to contain garbled text (bug #680) [Nick Westgate, Nate Woods].
- [Windows GUI] Fixed a bug that could cause trailing '|' characters in the device view. Fixed a bug that could cause the GUI to internally lose track of which images are selected (bug #675) [Nate Woods].
- The core is based on MAME 0.95.  This incorporates all features of the update to this core [MAME Team].
- Fixed tinymess build [Nate Woods].

0.94:
======
- Classic MESS UI now performs hard resets instead of soft resets [Christopher Stone].
- [Windows GUI] If MESS crashes at runtime, an error message will now be displayed. Previously, the emulation would end and the user would be sent back into the GUI without explanation [Nate Woods].
- The core is based on MAME 0.94. This incorporates all features of the update to this core [MAME Team].
- Devices can now be marked as 'not working' [Nate Woods].

0.93:
======
- The tape control in the classic UI is now only available on systems with a cassette device [Dave Humphreys].
- [Windows] Fixed a bug in the new UI that could cause crashes when customizing analog inputs [Nate Woods].
- [OS9] Fixed a bug that could cause erroneous disk full errors when shrinking a file [Nate Woods].
- The core is based on MAME 0.93. This incorporates all features of the update to this core [MAME Team].

0.92:
======
- [WINDOWS] Toggling the menu bar will no longer change the window size [Nate Woods].
- Created a new Apple ProDOS Imgtool driver (only reading supported for now) [Nate Woods].
- The core is based on MAME 0.92.  This incorporates all features of the update to this core [MAME Team].
- Changed core to support multiple devices of the same IO_* enum value. Note that when this is the case, indexing devices with calls that assume a one to one mapping like image_from_devtype_and_index() are no longer legal [Nate Woods].
- [Windows GUI] Fixed a regression that could cause INI files to be erroneously written to the main directory.

0.91:
======
- [OS9] Fixed a bug that caused problems when dealing with double sided disk images (bug #633) [Nate Woods].
- The core is based on MAME 0.91. This incorporates all features of the update to this core [MAME Team].

0.90:
======
- Creation and last modified dates are now supported by the core [Nate Woods].
- Added readsector and writesector commands to the Imgtool command line app [Nate Woods].
- [FAT] CHD files are now supported. "Tildized" short file names are not generated when file names are short enough. Fixed a bugs that could cause file truncations or deletions to leak clusters [Nate Woods].
- [RSDOS] Bytes #16-31 of a directory entry will now be cleared upon creation [Nate Woods].
- [Windows Imgtool] Fixed a bug that prevented read only files from opening (bug #624). Now handles multiple selections better, as well as cosmetic changes and fixups. Fixed problems with error reporting with CHD hard drive files under certain conditions, and disabled certain functionity when read only files are open [Nate Woods]. Added a new sector viewer feature [Nate Woods].
- The core is based on MAME 0.90.  This incorporates all features of the update to this core [MAME Team].

0.89:
======
- Fixed a bug that prevented keyboard inputs from being customizable in the classic UI [Nate Woods].
- [Windows GUI] Fixed a bug that caused problems when trying to mount three or more images of the same type (bug #622) [Nate Woods].
- [FAT] Rewrote the FAT driver  [Nate Woods].
- [OS9] The Imgtool OS-9 driver now supports writing files [Nate Woods].
- The core is based on MAME 0.89. This incorporates all features of the update to this core [MAME Team].

0.88:
======
- [Windows] Created a new Windows GUI for Imgtool [Nate Woods].
- Added an 'identify' command that can be used to attempt to identify the type of any given image [Nate Woods].
- Preliminary CoCo OS-9 disk image module [Nate Woods].
- The core is based on MAME 0.88. This incorporates all features of the update to this core [MAME Team].
- Fixed a latent problem where part of the natural language system still thought that we use 16-bit ports [Tim Lindner].
- Fixed a bug in core floppy handling that prevented writes to CoCo DMK images from working (bug #607) [Tim Lindner].
- Removed mess/snprintf.c and mess/snprintf.h [Nate Woods].

0.87:
======
- [Windows] Fixed a regression that prevented all customize input, analog controls and configuration dialogs from working on Win95/Win98/WinME [Nate Woods].
- [Windows GUI] ZIP paths prefixed with ./ will now have the ./ ignored. Fixed a problem in hash calculation in which UnmapViewOfFile() was not properly being called (bug #584) [Nate Woods].
- The core is based on MAME 0.87.  This incorporates all features of the update to this core [MAME Team].
- Major changes to the IODevice structure; made major changes to how they are initialized and iterated. The new technique should be much more maintainable in the long run [Nate Woods].
- Hash tags in hash file now can specify a 'type' attribute that indicates what device type to which any given entry pertains [Nate Woods].

0.86:
======
- [Windows] Added an "Analog Controls" dialog to the new UI. The MAME arrow key chars now show up in the new UI remap dialogs [Nate Woods] 
- [Windows GUI] Revamped the software picker; file iteration is now asynchronous and multiple files within ZIPs are now supported. Added a tab view that provides an alternate way to load and unload software images [Nate Woods].
- The core is based on MAME 0.86.  This incorporates all features of the update to this core [MAME Team].
- Fixed default names for input ports that use PORT_CHAR [Nate Woods].
- CDP1802 cycle count fixes [Curt Coder].
- Fixed a regression in which Start and Select buttons were not properly specified. This could result in crashes when customizing the inputs of certain drivers in the new Win32 UI [Nate Woods].

0.85:
======
- [Windows] Modified the new UI input dialogs so that they behave like the MAME UI input dialogs, allowing for multiple input sequences. Fixed a bug when creating disk images in which default extensions were not spcified (bug #576) [Nate Woods].
- [Windows GUI] Fixed some miscellaneous bugs having to do with the software picker settings (bug #568, bug #571) [Nate Woods].
- [Windows GUI] Fixed a bug that could cause the MESS GUI to use 100% of CPU time when idling [Andrew Jenner].
- The core is based on MAME 0.85.  This incorporates all features of the update to this core [MAME Team].

0.84:
======
- Fixed the input device categorization feature so that it was accesible from the classic UI (bug #556) [Nate Woods].
- [Windows GUI] Tree view off by default [Nate Woods].
- [Windows GUI] Refactored picker code to be more modular and used better in both MESS and MAME32. Also fixed a sorting bug (bug #543) [Nate Woods].
- The core is based on MAME 0.84.  This incorporates all features of the update to this core [MAME Team].
- [Windows] Specified the image base for messlib.dll, so MESS should startup slightly faster [Nate Woods].

0.83:
======
- [Windows] Added a "Miscellaneous Inputs" menu item to the Options menu, allowing the user to configure miscellaneous inputs [Nate Woods].
- [Windows] Fixed tab order on custom input dialogs [Nate Woods].
- [Windows GUI] Fixed a small bug on the "Interface Options" dialog (bug #551) [Nate Woods].
- The core is based on MAME 0.83.  This incorporates all features of the update to this core [MAME Team].
- Added a "variable peripherals" feature that allows drivers to identify which inputs pertain to a given peripheral, like a gamepad or a lightgun. Changed A2600 and NES drivers to use this feature (bug #550 was a related issue) [Nate Woods].
- It is now possible to specify IP_NAME_DEFAULT in PORT_KEY declarations; the name of the key will be derived by the unicode values [Nate Woods].

0.82:
======
- [Windows] Fixed a bug in which if the "About MESS" menu item was selected, the help file would come up but be set to an invalid page (bug #537) [Nate Woods].
- [Windows] Fixed a bug in the new UI input dialogs that could cause the scrolling to malfunction if the mouse wheel was used (bug #539) [Nate Woods].
- [Windows] Fixed a bug that caused input items with ampersands in them to have the ampersands dropped (bug #541) [Nate Woods].
- The core is based on MAME 0.82.  This incorporates all features of the update to this core [MAME Team].
- [Windows] Fixed a very subtle bug in Win32 file handling that caused a very serious disk corruption bug in the CoCo driver (bug #500) [Nate Woods and Tim Lindner].
- CDP1802 CPU improvements: * Fixed "Subtract with Borrow" opcode * Fixed reset * Fixed mnemonic IMP -> INP * Added registers N and I * Cleaned up 1802tbl.c with macros * Clock divider -> 8 * Added interrupt handling [Curt Coder].

0.81:
======
- [Windows GUI] Fixed save state loading from the GUI (bug #524) [Nate Woods].
- [Windows GUI] Fixed a stupid error in which one of the help menu items failed (bug #529) [Nate Woods].
- Created a Cybiko image driver [Tim Schuerwegen].
- The core is based on MAME 0.81. This incorporates all features of the update to this core [MAME Team].
- Changed around how CRC files work; changed the format to XML and they are no longer specific to CRC32; SHA-1 and MD5 are now supported. The files are now called 'Hash' files are are in the hash directory [Nate Woods].
- The artwork will now try to load artwork files with the goodname of the image in addition to the other filenames [Nate Woods].

0.80:
======
- [Windows GUI] Fixed a bug by which BIOSless systems would not be filtered as available (bug #516) [Nate Woods].
- [Windows GUI] Fixed a stupid layout bug the Miscellaneous properties tab (bug #518) [Nate Woods].
- The core is based on MAME 0.80.  This incorporates all features of the update to this core [MAME Team].
- Minor tools reorg; tool build rules now moved into the main makefile and the tools directory is no longer used [Nate Woods].
- CHD will now be the standard harddrive format for MESS.  As such, enhancements have been made to MESS's CHD support. Also, the PC driver has been converted over to use the new format and the old raw HD format is no longer supported. Additionally, the MAME hard disk manager (CHDMAN) is now distributed with MESS [Nate Woods].
- Fixed a bug in which low resolution systems (specifically the Channel F and Gameboy) would not properly save screenshots (bug #521) [Nate Woods].
- WAV file code can now handle files where the format header is longer than 16 bytes [Nate Woods].
- Identified a few rounding errors that caused some WAV files to not load in certain drivers [Nate Woods].
- Added a floppy_identify() function to the floppy format code [Nate Woods].

0.79:
======
- [Windows GUI] Minor bug fixes regarding software listing and CRC calculations with respect to clone and compatible drivers [Nate Woods].
- The core is based on MAME 0.79. This incorporates all features of the update to this core [MAME Team].
- As a consequence of the MAME 0.79 core, which has massive changes to the memory system, there is a greater likelyhood of regressions in this MESS release (as with MAME).
- Internal error reporting enhancements for image loading; still some work to do. Introduced automated messtest testing facility, in order to prevent regressions in the future [Nate Woods].

0.78:
======
- [Windows] Fixed the -writeconfig option; was accidently dropped (bug #492) [Nate Woods].
- The core is based on MAME 0.78. This incorporates all features of the update to this core [MAME Team].
- Fixed a cassette crash that affected the TI-99 among other drivers [Nate Woods].
- Changes to device handling in order to support richer image creation [Nate Woods].

0.77:
======
- Major source code reorg and cleanup; uses new generic floppy and parameter system. When a cassette motor is active, another icon will be displayed indicating whether play or record is set. HOME and DEL now have default natural keyboard bindings, to ASCII values 12 and 8 respectively. For systems that use a key with those values, like the CoCo, this change now enables those keys to be used from the natural keyboard [Nate Woods].
- The core is based on MAME 0.77. This incorporates all features of the update to this core [MAME Team].
- Overhaul on generic floppy and cassette image systems; added new generic parameter layer. Read/write cassette images are now supported. Also moved CoCo, Apple II and PC drivers onto the new floppy system. Note that there is potential for breakage here, but in the long run both of these overhauls will be worth it [Nate Woods].
- Fixed cheat engine [Nate Woods].
- The documentation was gutted and integrated with Paul Vince's easyEmu guide. All of the documentation is now under docs/ in the source tree. Platform specific help now goes in subdirectories like docs/windows and so on [Nate Woods, Paul Vince].
- Added some consistency code to sanity check drivers' extension lists (bug #470) [Nate Woods].
- Drivers now have the ability to add custom disassembler procs, to customize the way the cores disassemble code [Nate Woods].
- CRC files will now be read for driver parents (bug #460) [Nate Woods].

0.76:
======
This release was skipped.

0.75:
======
This release was skipped.

0.74:
======
- [Windows] It is now possible to make customized keyboard dialogs for different drivers, in the same way that it is possible to make per-driver customized joystick dialogs [Nate Woods].
- The core is based on MAME 0.74. This incorporates all features of the update to this core [MAME Team].

0.73:
======
- The core is based on MAME 0.73. This incorporates all features of the update to this core [MAME Team].
- Added some bounds checking to opcode fetches (bug #352) [Nate Woods].
- Made some debugger fixes when dealing with 8 or 16 bit numbers [Nate Woods].
- Fixed a bug in the handline of low resolution systems; the UI would not be properly rendered [Nate Woods].
- Adds info regarding device extensions to -listinfo and -listxml output [Andrea Mazzoleni].
- Renamed config.? to crcfile.? [Nate Woods].
- [Windows] When the new UI is active and MESS is paused, MESS now should not waste any excess CPU time [Nate Woods].

0.72:
======
- Added separate configuration menu, to be used for configuration items that were formerly represented with DIP switches [Nate Woods].
- [Windows] Revamped options menu, and added a keyboard customization menu. Also added the ability to create artwork for controller configuration screens (used NES as a testbed) [Nate Woods].
- [MAC] Added preliminary support for MFS images [Raphael Nabet].
- [TI99] Added support for HD images [Raphael Nabet].
- The core is based on MAME 0.72. This incorporates all features of the update to this core [MAME Team].
- Fixed a bug that would cause a hang when parsing certain invalid filenames (for example, D:\FOO\D:\FOO\BAR.ZIP) [Nate Woods].
- Revamped some inputs, added IPT_MOUSE, IPT_START, and IPT_SELECT. The latter two can be used with IPF_PLAYER masks. Also removed legacy IPT_SELECT1-4, and IPT_START1-4 should no longer be used by MESS [Nate Woods].
- Tripled the delay in which wd179x errors are reported. This manifested itself in the CoCo driver by an emulated crash on some versions of NitrOS-9 when run on a write protected image [Nate Woods].

0.71:
======
- [WIN32] Fixed some resizing problems in windowed mode when the system resized the screen (bug #100) [Nate Woods].
- [WIN32 FE] Fixed a bug whereby refreshing would reset the current system to the last saved one (bug #384) [Nate Woods].
- [WIN32 FE] Missing optional BIOSes no longer trigger audit errors (bug #424) [Nate Woods].
- [TI99] Added support for HFDC subdirectories [Raphael Nabet].
- The core is based on MAME 0.71. This incorporates all features of the update to this core [MAME Team].
- Fixed a bug in the code that chooses artwork files for software images (bug #112) [Nate Woods].

0.70:
======
- [WIN32 FE] The emulation will not be started up if any required devices are not specified with an image, like cartridges on a console system (bug #415) [Nate Woods].
- Renamed the ti99 module to ti99_old, since the format it handles has been obsoleted by changes in the ti99 driver [Raphael Nabet].
- Added support for Corvus Concept disk images [Raphael Nabet].
- The core is based on MAME 0.70.  This incorporates all features of the update to this core [MAME Team].
- Modified flopdrv.c to reset pDrive->id_index to zero when head is moved from track to track [Tim Lindner].
- CRC calculation of read/write images has been disabled (bug #416) [Raphael Nabet, Nate Woods].

0.69:
======
This release was skipped.

0.68:
======
- The core is based on MAME 0.68. This incorporates all features of the update to this core [MAME Team].
- Drivers now have a 'compatible_with' field, that specify drivers that have compatible software but are not mere clones [Nate Woods].
- Devices are now referenced by a mess_image pointer, rather than a type/id pair [Nate Woods].
- Enhanced MESS's natural keyboard facility, so that drivers can specify handlers to bypass keypress simulation [Nate Woods].
- Changed device load and unload so that all devices are loaded before machine init, but not necessarily driver init, in response to a bug (bug #366) [Nate Woods].
- [Windows] Default directories for the file dialogs can now be specified on a device type basis at the command line (e.g. -floppydisk_dir). This option will get written out when launched from the GUI, so that per system directories can be recorded (bug #345) [Nate Woods].
- [Windows GUI] Fixed a bug whereby extra software paths with spaces in them would not be properly persisted (bug #369) [Nate Woods].
- [Imgtool] Enabled support for ti99 disk formats with more than 1600 sectors. Added support for v9t9 and pc99 disk image formats (note that these image formats are supported by imgtool, but not by the ti99 driver) [Raphael Nabet].

0.67:
======
- The core is based on MAME 0.67. This incorporates all features of the update to this core [MAME Team].
- VIDEO_UPDATE() now has a do_skip parameter, which enables drivers to inform the core that no significant drawing has occured, and it is safe to skip blitting the current frame [Nate Woods].
- [Windows] New -writeconfig option, that causes the current settings to be written back to an INI on exiting the emulation [Nate Woods].
- [Windows] SSE optimizations to the blitter [Nate Woods].
- [Windows] Fixed bug #344 [Nate Woods].
- [Windows UI] Fixed bug #348 [Nate Woods].
- [Windows UI] Changes made to mounted devices at runtime will now be persist between emulation sessions (bug #228) [Nate Woods].

0.66:
======
- The core is based on MAME 0.66.  This incorporates all features of the update to this core [MAME Team].
- Major change to device handling; all devices now have separate init/exit and load/unload handlers. The former are called on startup/shutdown and the latter are called when images are loaded and unloaded [Nate Woods].
- Moved CRC handling to use the core fileio functions [Nate Woods].
- Added a osd_image_load_status_changed() call, so that front ends can get notified when the load status of an image changes [Nate Woods].
- Introduced a cartslot_load_generic() call, to make simple cartridge image loading a bit simpler [Nate Woods].
- [Win32 GUI] Fixed a bug where screenshots with periods in them would not be loaded properly [Nate Woods].
- [Win32 GUI] Now uses INI files rather than the registry to store settings [MAME32 Team].

0.65:
======
- The core is based on MAME 0.65. This incorporates all features of the update to this core [MAME Team].
- Fixed a fatal bug that could cause crashes when unmounting disk images for certain systems at runtime [Nate Woods].
- [Win32] Fixed a bug that caused us to be looking for the MAME names of sysinfo.dat and messinfo.dat (history.dat and mameinfo.dat) [Nate Woods].
- [Win32 GUI] Fixed a bug that caused software specific screenshots to not show up if clicking between tabs [Nate Woods].

0.64:
======
LICENSE CHANGE WARNING: We are considering changing distribution license, switching to GPL for the whole project and LGPL for some CPU and sound cores. If you contributed code to MESS and are against this change, now is the right time to let us know.
- The core is based on MAME 0.64. This incorporates all features of the update to this core [MAME Team].

0.63:
======
This release was skipped.

0.62.1:
========
- New generic code for emulating terminals, now in use by the Apple I and Kaypro drivers [Nate Woods].
- Added the ability to specify a minimum resolution to display a system, in order to better support low resolution drivers [Nate Woods].

0.62:
======
- The core is based on MAME 0.62.  This incorporates all features of the update to this core [MAME Team].
- Added new snapshot/quickload code, to hide the details about loading snapshots and quickloads from the drivers [Nate Woods].
- Added the ability for systems to override the friendly names of devices [Nate Woods].
- [WIN32] Added the ability to toggle the frames per second view, differentiate between soft and hard resets in certain systems, and to save screenshots in the new UI [Nate Woods].

0.61.2:
========
- Updated all drivers device declarations to new system and removed old dev array [Nate Woods].
- New options.disable_normal_ui and osd_trying_to_quit() functions created, to support the new Win32 UI [Nate Woods].
- Added the ability for drivers to support drawing to the UI in a standard way; which helped fix a problem where the tape graphic was lost in MESS 0.61 (bug #270) [Nate Woods].
- [Win32] New user interface replaces old UI; this is on by default but can be disabled with the -nonewui command switch. This new UI uses Windows native menus and should be much easier to use [Nate Woods].
- [Win32] Help file entries for each system now list the directory name expected by MESS [Nate Woods].
- [Win32 GUI] Fixed an incredibly MORONIC bug where RAM preferences were stored as booleans (!?!) rather than integers (bug #260) [Nate Woods].
- [Win32 GUI] Fixed a bug where certain elements in the treeview lost their first character (bug #262) [Nate Woods].

0.61.1:
========
- The MESS core will not automatically open software images in a clone system drivers directory anymore, under the belief that this functionality belongs in the OSD code [Nate Woods].
- All MESS drivers need a SYSTEM_CONFIG (formerly COMPUTER_CONFIG) parameter specified. Also changed the implementation of the SYSTEM_CONFIG_* macros to provide a more flexible system for representing the data. Added the ability for devices to be declared within the SYSTEM_CONFIG block. Consider the older way of declaring devices  deprecated. Added new functions for iterating through devices, in order to better abstract the internal representation of devices:
	device_first()
	device_next()
	device_find()
Also renamed GameDriver dev field to dev_ in order to break any source dependencies on the dev field [Nate Woods].
- Added new memory pool code that implements memory pools that can be freed in one step [Nate Woods].
- Overhaul of code that maintained the list of loaded images; moved to mess/image.[c|h], and changed the prefix of them from device_ to image_ (as opposed to the  device_* calls that are used to access the IODevice structure). Also, implemented these new calls for drivers to use:
	image_malloc()    (similar to auto_malloc(), but for the lifetime of devices)
	image_strdup()    (uses image_malloc() to allocate strings)
	image_exists()    (tests for the existance of a loaded image)
	image_filetype()  (accessor for file extension)
For the most part, there is no longer any reason for MESS drivers to use malloc() and free(), so calls to these should be eliminated over time [Nate Woods].
- Removed IO_RESET_ALL, as it was broken and an ugly hack to begin with (bug #239) [Nate Woods].
- In the opening display software info box, if the filename and the goodname (as determined by CRC) match up, the goodname will not be displayed in order to reduce screen clutter [Nate Woods].
- Removed all calls to device_close(IO_CASSETTE) in system drivers, instead provided a cassette_exit() function that drivers can specify, removing this responsibility from system drivers [Nate Woods].
- Implemented preliminary paste functionality; it attempts to decode the driver's input tables and attempts to create a mapping between ASCII and input signals. This process is far from perfect at this time. In the future, it will be possible for drivers to customize the way that paste works for a more perfect translation [Nate Woods].
- Added new PORT_KEYx macros that should be used in place of PORT_BITX when mapping keyboards. These macros also specify unicode values for the input codes for natural keyboard support [Nate Woods].
- Added a new osd_keyboard_disabled() call.  If this returns non-zero, then the core will supress input of type IPT_KEYBOARD. This is useful if a front end wants to implement a natural keyboard [Nate Woods].
- Added a new osd_parallelize() call, for basic SMP acceleration [Nate Woods].
- Renamed osd_dir.h to osd_mess.h, to further reflect that it is more than just directory calls [Nate Woods].
- [Win32] New -threads parameter, to specify the maximum amount of threads used for osd_parallelize(); defaults to the number of processors in the system [Nate Woods].
- [Win32 GUI] Printers are now treated separately from the other devices; you do not specify printer ouput like you do disk images. Printer output now gets specified in the configuration tab of the system properties. The added benefit is that the same output file can be used repeatedly [Nate Woods].
- [Imgtool] Imgtool floppy drivers can now be "templated"; a driver for a particular file system format can point at a structure that lists allowable disk image  formats. This allows for the addition of new disk image format drivers without touching the imgtool drivers [Nate Woods].
- [Imgtool] Fixed a bug in the FormatDriver handling that caused some file puts to not be properly written [Nate Woods].
- [Imgtool] Added Color Computer DMK disk image support [Tim Lindner].

0.61:
======
- The core is based on MAME 0.61. This incorporates all features of the update to this core [MAME Team].
- Converted numerous drivers to use the auto_malloc() and auto_bitmap_alloc() calls, and also to use generic_bitmapped video calls [Nate Woods].
- Added new videomap code that makes it easy to support arbitrary video modes in a fast, efficient manner. This takes the place of the old rasterbits/rastertrack code; converted m6847, CoCo 3, and Mac video hardware to use videomap [Nate Woods].
- Added a new disk format handling system that allows disk formats to be generically specified in such a way usable by both MESS itself, and imgtool [Nate Woods].
- Fixed a bug in the wave code that could cause a crash if a cassette image is unloaded. Added a [none] entry in the File Manager, that allows the user to unload an image. The file manager will now default to the directory that a preexisting image resides in. Fixed some bugs that caused the battery backups in the NES and GB systems to be placed in odd directories. Added palette_set_colors() function to make it easy to initialize a palette with a predefined list of colors. Readded record/playback support. Added artwork_use_device_art() to the MAME core to support Vectrex style artwork [Nate Woods].
- Fixed bugs #192 and #200 - remember that:
  1) In File Manager you can press SHIFT+ENTER to manually edit a filename
     and CTRL-Y to delete the field.
  2) In the file selector you can edit the file specification and you can use
     SHIFT+UP/DOWN as PgUp/PgDown and
     CTRL+UP/DOWN as Home/End. [Stefano Priore]
- With help from SockMaster, fixed some very subtle timer bugs in the m6809 and hd6309 CPU cores [Nate Woods, tim lindner, John Kowalski].
- New OSD function:

		void osd_device_eject(int type, int id);

  It sets a device image to NULL, as would a device_filename_change(type, id, NULL), but enables osd code to update its osd structures. The mac and lisa drivers will use this function instead of device_filename_change to eject floppy disks. This function is needed because the mac osd code keeps track of each selected file, and the data went out of sync when device_filename_change was called [Raphael Nabet].
- [GUI] Fixed a very minor bug that caused the software list view background to not be updated at the same time as the system list if the snap directory was changed [Nate Woods].

0.60:
======
This release was skipped.

0.59:
======
This release was skipped.

0.58:
======
This release was skipped.

0.57:
======
This release was skipped.

0.56.1:
========
- The core is based on MAME 0.56. This incorporates all features of the update to this core [MAME Team].
- The core now supports configurable RAM sizes; drivers can expose RAM configurations (e.g. 4k, 16k, 32k etc) and on Windows, this setting is exposed through a command line switch -ramsize [Nate Woods].
- Fixed a bug that prevented introducing completely new software images when there was already one of that particular image type already loaded [Nate Woods].
- Added some infrastructure for automated tests [Nate Woods].
- Fixed a bug in tape handling that would cause rewind and fast forward to not work if the system was stopping the tape (bug #168) [Nate Woods].
- Added battery_save() and battery_load() functions to abstract handling of battery-backed NVRAM on cartridges [Nate Woods].
- Modified osd_fopen() with OSD_FILETYPE_NVRAM so that the filename parameter can specify subdirectories (for use by battery_save() and battery_load() [Anthony Kruize, Nate Woods].
- [Windows] Fixed a bug in the core that caused the MESS process to not die if the close box was pressed, and the UI was disabled (bug #170) [Nate Woods].
- [Windows] Fixed a bug in the GUI that caused heap corruptions [Nate Woods].
- [Windows] Fixed a bug in the GUI that caused auditing to report BIOS-less console systems as missing BIOSes [Nate Woods].
- [IMGTOOL/Windows] Added wildcard support in the put command, since the Windows shell doesn't do this by default [Nate Woods].
- [IMGTOOL/FAT driver] Fixed bug where files would get stored into a FAT image without forcing the filename to upper case [Nate Woods].
- [MacMESS] Added configurable RAM sizes and dipswitch controls to the MESS tab [Tim Lindner].

0.56:
======
- The core is based on MAME 0.56. This incorporates all features of the update to this core [MAME Team].
- [Windows] The CONSOLE and GUI (the former MESS32) versions of MESS have been combined into one distribution [Ben Bruscella, Nate Woods, with a Huge thanks to MAME32 team, especially: Michael Soderstrom, Mike Haaland, and Chris Kirmse].
- [Windows GUI] CRC directory now configurable from MESS GUI [Nate Woods].
- MESSRoms now recognizes more ROMs [Krzysztof Strzecha].
- Switch -a for MESSRoms, which allow to scan files of all sizes [Krzysztof Strzecha].
- Removed extension renaming code [Nate Woods].
- Combined OSD_FILETYPE_IMAGE_R and OSD_FILETYPE_IMAGE_RW image load types into OSD_FILETYPE_IMAGE [Nate Woods].
- Converted a few drivers (namely Amstrad, Atom, Exidy, Galaksija, Microbee, Microtan, Sord, Spectrum, TI99) to use the new cassette loading APIs [Nate Woods].
- Added new core file (led.c) for display of leds and segmented displays. Also converted Chess Champion drivers to use these calls [Nate Woods].
- On the images screen before emulation starts, only the base name of an image will be displayed (bug 34) [Nate Woods].
- [Windows] Added support for transparent zip paths (e.g. C:\imgs\mule.zip\mule.atr) [Nate Woods].
- Added a call to flopdrv.c to allow the driver to manualy set the number of tracks and sides [Tim Lindner].

0.55:
======
This release was skipped.

0.54:
======
This release was skipped.

0.53:
======
This release was skipped.

0.37b16 (0.52):
================
This release was skipped.

0.37b15 (0.51):
=================
- For Lee Ward (lee@the-mothershp.fsnet.co.uk) *If you know Lee, please contact us...
- The main binary distribution of MESS is now a completely new win32 console port. Some of the benefits are: support for full screen hardware stretching (if you have a decent video card), and a much better command line / options file parsing (ported from xmame). To create the mess.ini configuration file on startup, use the -createconfig option. -showusage lists all available options [Aaron Giles, Bernd Wiebelt, Lee Ward, Ben Bruscella].
- The core is based on MAME 0.37b15. This incorporates all features of the update to this core [MAME Team].
- Added support for the SUPPORT_ODD_WORD_SIZES macro, needed by ApexC and PDP 1 [Nate Woods].
- CoCo cartridge code has been moved to its own file [Nate Woods].
- The switches "-cylinder", "-punchcard", "-punchtape" and "-parallel" are now recognized. At the moment "-parallel" is not used by any driver, but has been reserved for future expansions [JoJo].
- Huge rewriting/rationalization of the device handling/image loading code [Ben].
- Logging routines have been fixed [Ben].
- Added Jurgen's tool to create generic CP/M disk images to the tools/ directory [JoJo].
- Imgtool's dir command now displays CRC32s [PeT].
- MESS now supports the new TINY_COMPILE model [Ben].
- MESSRoms now recognizes more ROMs [PeT].
- An init function has been added to the M65CE02 CPU emulation [PeT].
- M, D and V registers support in the state saving engine and MD register's behaviour fixed in the HD6309 code [Tim Lindner].
- Z80 CPU now behaves correctly after an IRQ: this fixed a bug in PC8801 emulation [Sean Young].
- Added save sate support to TMS34010 CPU [Nate Woods].
- Many fixes to the SC61860 CPU. H is treated now as an internal register [PeT].
- Added a static memory interface, interrupt functionality and runtime loader support to the F8 CPU core [PeT].
- Fixed the DIV1 instruction Q bit generation for the SH2 CPU [James Forshaw].
- Alias handling removed and wont be back [Ben].

0.37b14 (0.50):
================
This release was skipped.

0.37b13 (0.49):
================
- Several drivers may be broken due to the MAME memory handling changes. And as a result, the Amiga has been temporarily removed.
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b13. This incorporates all features of the update to this core [MAME Team].
- [IMGTOOL] Added special support in imgtool to separate floppy image formats from the file system. Also added a test command that only gets built in debug builds that runs a set of test cases on an imgtool driver [Nate Woods].

0.37b12 (0.48):
================
- Several drivers may be broken due to the MAME memory handling changes. And as a result, the Amiga has been temporarily removed.
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b12. This incorporates all features of the update to this core [MAME Team].
- [IMGTOOL] Added support for NC100/NC200 PCMCIA Ram Card images. Card can be formatted and files can be transfered to and from card filesystem [Kev Thacker].
- [machine/z80fmly] The Zero count/Timeout output pulse was very short. Now the pulse is active for longer. Required for KC85/4 colour flash to work! [Kev Thacker].

0.37b11 (0.47):
================
- Several drivers may be broken due to the MAME memory handling changes. And as a result, the Amiga has been temporarily removed.
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b11. This incorporates all features of the update to this core [MAME Team].
- [Intel 8271 Floppy disc controller] Writing should work now [Kev Thacker].
- [src/machine/z80fmly] Added support for BSTB and ASTB inputs for Z80 PIO. These are required by KC85/4 and KC85/3 systems. Added code to execute callback for
  BRDY and ARDY outputs [Kev Thacker].
- [IMGTOOL] Fixed a bug that caused crashes when parameters to create were not properly specified [Nate Woods].

0.37b10 (0.46):
================
- Several drivers may be broken due to the MAME memory handling changes. And as a result, the Amiga has been temporarily removed.
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b10. This incorporates all features of the update to this core [MAME Team].
- [IMGTOOL] Added filter support, and filters that translate endoflines, as well as the startings of BASIC tokenization. Also updated the docs [Nate Woods].

0.37b9 (0.45):
===============
- Several drivers may be broken due to the MAME memory handling changes. And as a result, the Amiga has been temporarily removed.
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b9. This incorporates all features of the update to this core [MAME Team].
- The M6847 interfaces were given a facelift, and now more correctly mimic the signals on the chip [Nate Woods].

0.37b8 (0.44):
===============
- Several drivers may be broken due to the MAME memory handling changes. And as a result, the Amiga has been temporarily removed.
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b8. This incorporates all features of the update to this core [MAME Team].
- Pure DOS mode crash fixed [Ben Bruscella].
- SID6581 Approximation: Interface changed, partitioned, unused parts removed, cleaned up support for multiple chips finished [PeT].
- Imgtool now supports Virtual MSX Tape Archives (converts them to .cas files) and imgtool can convert .cas to .wav files [Sean Young].

0.37b7 (0.43):
===============
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b7. This incorporates all features of the update to this core [MAME Team].
- Fixed write protect reporting in WD179x [Kev Thacker].
- Added "Disk Control" menu to the user interface. With this you can enable/disable a drive (e.g. this is comparable to connecting a disconnecting a drive to the real machine), set write enable/write protect of the disc, and selecting between disc image and real drive access. Real drive access is currently limited to the drivers which use the WD179x, NEC765 and Intel 8271 floppy disc controllers [Kev Thacker].
- Removed hard-coded disk image format in the WD179x code. This floppy disc controller emulation uses the same disk image access as the NEC765 and Intel 8271. It can now support different disk image formats, and as before real discs in a real drive [Kev Thacker].
- NEC765 and Intel 8271 can now use real disc access in DOS version of MESS. Run under pure DOS, or in a Windows 95 DOS box mode for this to work correct [Kev Thacker].
- Imgtool now supports CoCo cassette files (both .CAS and .WAV). This is done through a framework that makes it easy to implement cassette images in general. Also, the CoCo RSDOS disk handling is now a bit more tolerant [Nate Woods].
- Updated Intel 8271 floppy disc controller emulation [Kev Thacker].
- CRC and sysinfo updates will now be appearing at the official MESS homepage: http://mess.emuverse.com.
- Please send all CRC/sysinfo file contributions to Chris Henry (battlepriest@hotmail.com).
- M6510 cpu core added first write cycle for NMOS memory modifying instructions [Peter Trauner].
- CDP1802 cpu core [Peter Trauner].

0.37b6 (0.42):
===============
- Note: DELETE mess.cfg!
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b6. This incorporates all features of the update to this core [MAME Team].
- [DOS] File handling has CHANGED!  heres a brief description: MESS supports a softwarepath= global setting (in the [directories] section of mess.cfg) and this is overrideable per driver (in the [driver] sections) Default for softwarepath= is .;SOFTWARE OSD_FILETYPE_ROM uses the biospath= setting from now on (MAME rompath=) Default for biospath= is .;BIOS. OSD_FILETYPE_IMAGE_R and _RW use the softwarepath= settings from now on, so BIOS ROMs can be kept separate from carts, floppy, harddisk etc. images. The search paths/files are for a hypothetic system driver 'sys':

  extensions of carts for sys = .rom, .bin
  softwarepath = .;x:/software

  mess sys -cart cart

  ./cart
  ./sys/cart
  ./cart.zip containing cart
  ./sys/cart.zip containing cart
  x:/software/cart
  x:/software/sys/cart
  x:/software/cart.zip containing cart
  x:/software/sys/cart.zip containing cart
  ---> assume it failed, because the real extension is .bin
  ./cart.rom
  ./sys/cart.rom
  ./cart.zip containing cart.rom
  ./sys/cart.zip containing cart.rom
  x:/software/cart.rom
  x:/software/sys/cart.rom
  x:/software/cart.zip containing cart.rom
  x:/software/sys/cart.zip containing cart.rom
  ---> still not found, so image_fopen() tries .bin now
  ./cart.bin
  ./sys/cart.bin
  ./cart.zip containing cart.bin
  ./sys/cart.zip containing cart.bin
  x:/software/cart.bin
  x:/software/sys/cart.bin
  x:/software/cart.zip containing cart.bin
  x:/software/sys/cart.zip containing cart.bin

  As you can see it might take quite some time until an image is found, with two directories on the path already, that's why the main softwarepath= setting should be
  short. If you have many, different drives/paths where you store software, you better use the system specific overrides like this:

  [sys]
  biospath=x:/sys
  softwarepath=x:/sys

  [sys2]
  biospath=roms
  sofwarepath=z:/somewhere/sys2

  However, if you have a 'complete set' you would be done (mostly) if you only change the [directories] setting for biospath= and softwarepath= to the drive/path where your mirrored files are. One extension to the searches that might make sense would be to also look into a path/ext/cart.ext directory, that means you could have  subdirectories for eg. dsk, cas, vz, bin or whatever the extensions of the system are [Juergen Buchmueller, Ben Bruscella].
- Many fixes to cheat engine [Cowering].
- MESS CRC files now use 'Good' database CRCs where applicable [Cowering].
- NES now gets correct mapper info from nes.crc (if present) [Cowering].
- Genesis/Megadrive now gets correct CRC info for .smd and .md files [Cowering].
- New function osd_select_file() added [Brad Oliver].
- IMGTOOL: Fixed a bug that caused saving a file into an image to error if that file was in a different directory. Also fixed a bug that would cause crashes when reporting certain types of errors [Nate Woods].
- CRC and sysinfo updates will now be appearing at the official MESS homepage: http://mess.emuverse.com.
- Please send all CRC/sysinfo file contributions to Chris Henry (battlepriest@hotmail.com).

0.37b5 (0.41):
===============
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b5. This incorporates all features of the update to this core [MAME Team].
- NEC765: improved and more commands added, supports DMA access. Can handle images with copyprotection. A lot more software should now run on the systems that use it (PCW,Spectrum, Amstrad,PC and PCW16) [Kev Thacker].
- 6522via Bug fix [Gordon Jefferyes].
- Optional ROM support. It can be used in MESS for BIOS ROMs for peripherals for which you'd like to provide a valid crc32 without requiring the ROM [Brad Oliver].
- Imgtool: Added a CRC command to imgtool so output image information in .crc format basename()'s the command name when printing error info, Fixed a typo in the usage examples, added a very rough imgtool.txt to document imgtool [Nate Woods].
- Added new endian macros [Nate Woods].
- DeviceIO bug fixed for most drivers [Juergen Buchmueller].
- CRC and sysinfo updates will now be appearing at the official MESS homepage: http://mess.emuverse.com. Please send all CRC/sysinfo file contributions to Chris Henry (battlepriest@hotmail.com).

0.37b4 (0.40):
===============
- Note: .inp record/playback does still not work currently.
- The core is based on MAME 0.37b4. This incorporates all features of the update to this core [MAME Team].
- TOOLS: Created an "osdtools.h" file that implements cross platform defininitions for the tools (dat2html, imgtool, etc); added a info function (info is showed before the file listing in the dir command), added extract command to allow conversion between file formats with create and extract functions, added stream_clear to clear files (fopen(...,"w+")), added some parameters to the create and put commands, c64crt c64 cartridge file support, more for professional use (c64 cartridge dumper) and t64 c64 tape format support [Peter Trauner].
- Implemented a new palette in tms9928a, computed from TI datasheet [Raphael Nabet].
- Cassette/wave code: Adds the ability to mute the cassette audio output. This is done by setting bit 1 of the device status [Nate Woods].
- SC61860 CPU core [Peter Trauner].
- Fixed CLR bug in m6809 core [Nate Woods].
- Using the C 68k core. Macplus now works.
- Extensive CRC updates [Chris Henry, Stefano Priore, Cowering].
- SysInfo.dat documentation update [Chris Henry].
- Please send all CRC/sysinfo file contributions to Chris Henry (battlepriest@hotmail.com).

0.37b3 (0.39):
===============
- The core is based on MAME 0.37b3. This incorporates all features of the update to this core [MAME Team].
- Bug fix in wd179x controller [Nate Woods].
- Bug fix in the wave handler (when image is closed, osd_fclose() is now called on the file descriptor [Nate Woods].
- Bug fix in the tape control that cause the control to give percentage erros when using *.cas files [Nate Woods].
- ImgTool: Preliminary PC Hard drive driver, better error reporting, a new command ('good') that functions as a rom sorter (a la GoodNes). CRC information is retrieved
from the standard MESS CRC files, the 'crc' command is replaced with 'info'. This new command will return data regarding the image if MESS's CRC files are aware of the
  image. dir and del now can take multiple arguments [Nate Woods].
- Extensive CRC updates [Kurunir, Chris Henry].
- SysInfo.dat documentation update Please send all CRC/sysinfo file contributions to Chris Henry (battlepriest@hotmail.com) [Chris Henry].

0.37b2 (0.38):
===============
- The core is based on MAME 0.37b2. This incorporates all features of the update to this core [MAME team].
- TOOLS: Disk Utility added (mkhdimg.exe) which will create variable sized HD images for use in MESS.  Can create images from 9,216 bytes to 142,606,848 bytes without problems. The Western Digital 1004A that is emulated in MESS is limited to 1024 Cylinders and 16 heads. The sector size is limited to 512
  bytes as well as the sectors per track being limited to 17, this is also due to the WD1004A's limitations [Randy Rains].
- TOOLS: Generic image tool added (imgtool.exe) with the following features: *MAME/MESS style driver architecture; where the image formats are contained in drivers. Currently, the only driver is for CoCo .DSK disk images, but there could be more. Runs on the command line. Commands for listing image  contents, retrieving and storing files. Supports images in .ZIP files. "Engine" is separate from the "shell"; which gives the potential for front ends for
 those who don't like command lines [Nate Woods].
- Disk write support for AMSTRAD CPC [Oscar Martín González].
- Wave timer fix [Oscar Martín González].
- m6510t/m7501/m8502 CPU cores added [Peter Trauner].
- Extensive CRC updates [Kurunir, Chris Henry].
- SysInfo.dat documentation update Please send all CRC/sysinfo file contributions to Chris Henry (battlepriest@hotmail.com) [Chris Henry].

0.37b1 (0.37):
===============
- The core is based on MAME 0.37b1. This incorporates all features of the update to this core [MAME team].
- Alias bug fix [Norberto Alfredo Bensa].
- Systems with no ROMS but a ROM_REGION defined (eg Genesis, NES) are now correctly identified. Clones with no differing roms from the main set are correctly identified (eg. the Laser 210 clones etc.) [David Robertson].
- Extensive CRC updates: SysInfo.dat documentation update [Sean Young, Chris Henry, Gerardo Jorrin, Peter Trauner, Cowering].
- Please send all CRC/sysinfo file contributions to Chris Henry [Thierry Schimbi, Chris Henry, Kev Thacker, Raphael Nabet].

0.36b10:
=========
- The core is based on MAME 0.36b10. This incorporates all features of the update to this core [MAME team].

0.36b9.1:
==========
- [DOS] Now compiled with Allegro 3.9.27 WIP.
- The core is based on MAME 0.36b9. This incorporates all features of the update to this core [MAME team].
- New field in the MachineDriver struct: const char **default_extension. Use this to specify the default file extension for images which  can be used with the system (examples are coleco = "rom", genesis = "bin" or "smd", etc.).
- Filetype definitions for files used in MESS is now IMAGE_R or IMAGE_RW. Note that IMAGE_R replaces ROM_CART, and IMAGE_RW replaces IMAGE.
- Updated CRC database files for a7800, coleco and nes. Added SMS and Gamegear database files. Added System History file (sysinfo.dat). The official maintainer is Chris Henry (battlepriest@hotmail.com). Please send all CRC/History contributions to him.

0.36:
======
- MESS is now developed and distributed as a MAME source override, hence the MESS version number leap ;-). .inp record/playback does still not work currently.
- [DOS] Images specified at the command line must now be accompanied by the device they are to be attached to, and will not be loaded unless the device is specified *and* supported by that system.  Eg, to attach a cartridge for the NES, you must specify: MESS nes -cart galaga.nes. This may affect the usage of frontends, however it brings the MESS command line into sync with the well accepted MAME convention for command line usage.
- Added support to automagically append or replace extensions for files opened with image_fopen(), which means, if opening a given filename fails (also from the optional clone_of parent driver), the code replaces or appends the next available extension and tries again. Therefore, there is no need to  actually supply the file extension to the command line [Juergen Buchmueller].
- The core is based on MAME 0.36 final. This incorporates all features of the update to this core [MAME team].
- New option -listdevices. Use this to obtain valid device names for use at the command line to attach images to the system.
- Extensive CRC updates [Sean Young, Chris Henry, Gerardo Jorrin, Peter Trauner, Cowering]: SysInfo.dat documentation update [Thierry Schimbi, Chris Henry, Kev Thacker, Raphael Nabet]. Please send all CRC/sysinfo file contributions to Chris Henry (battlepriest@hotmail.com).
- Small bug in the 6522 emulator fixed [Gordon Jefferyes].
- Important inclusions for this release: *wave sound interface and IODevice handler *speaker sound driver (replaces the buzzer code) *preliminary file manager *mess_printf() which checks for gui_host. Check the UI (TAB) for handling options for most of the above.
- Generic M6847 code  [Nate Woods].
- Wd179x disk access update.  The correct sector size is now calculated for the nec765 real FDD access.  Now it is calculated from sector size. Loading from real disc works on Enterprise emulator [Kev Thacker].
- void via_set_clock(int which,int clock); added to 6522via.c. This can be called after via_config() to change the clock, otherwise the clock speed of CPU1 is used [Mathis Rosenhauer].
- mess/msdos.c & mess/msdos.h created for MESS DOS specific functions. Note: Each port is now responsible for handling these functions.
- GAME_ALIAS flag added. Use this when specifying a clone system which requires the same romset as another [Juergen Buchmueller].
- System documentation is now contained in sysinfo.dat and sysinfo.htm. Use dat2html to generate sysinfo.htm from sysinfo.dat [Chris Henry, Juergen Buchmueller, Ben Bruscella].
- You can now specify switches on the commandline in which case every image name following them goes to that respective slot, regardless of it's extension.  See mess.txt for some examples [Peter Trauner, Juergen Buchmueller].
- [DOS] New options for IMAGES to be opened, namely OSD_FOPEN_READ, OSD_FOPEN_WRITE, OSD_FOPEN_RW, and OSD_FOPEN_RW_CREATE. Check mess.h for a description of what they are used for. Be sure to use these semantics when handling read/write files [Juergen Buchmueller].
- Slight changes to the PDP1 driver.
- [DOS] TI99 keyboard fix! [Raphael Nabet].
- System ROM (Image) name matched from CRC database file on startup (file stored in CRC directory).
- You can now specify in MESS.CFG the *exact* directory a rom is which you want to run.  no longer necessray to have a directory with the same name as the system [Juergen Buchmueller].
- Zipped cart and image support added. To use, make sure that the zip has the same name as the file in the zip. (eg) for a coleco CART called  "venture.rom", zip to "venture.zip".  When running MESS, type "mess coleco venture.rom". MESS will then load "venture.rom" from "venture.zip". Any system roms can also be zipped and placed anywhere in you ROMPATH coleco.rom in coleco.zip [Ben Bruscella].
- GAME_COMPUTER flag added. Use this to specify that the system requires full keyboard emulation. Emulated Computer systems now use the scroll_lock key to toggle the keyboard emulation. When on, MAME keys (such as "P" for pause) are disabled, until toggled with the scroll_lock [Juergen Buchmueller].
- [DOS] MAKEFILE/compilation changes. To compile MESS, simply make sure you can compile MAME. Then, apply the MESS source over-ride and:
   1. Rename MAKEFILE to MAKEFILE.mm
   2. Rename MAKEFILE.MES MAKEFILE
   3. Type MAKE
- There have been major changes to the Driver structures and loading procedure.
- Here is an overview: Every game driver's struct GameDriver (src/mess/systems/*.c) is now defined using one of four macros COMP/COMPX or CONS/CONSX.
COMP is for computers and CONS is for consoles. The X versions allow specifying additional flags (GAME_NOT_WORKING ect.) Every game driver specifies it's peripherals in an array of "struct IODevice" elements. rom_load and rom_id fields were moved into that list, together with the number of devices and the known file extensions for images of that type. MAME's src/driver.h now only contains one pointer to this list of devices, all of MESS' extra fields are gone.
Old:
#ifdef MESS
    int (*rom_load)(void);
    int (*rom_id)(const char *name, const char *gamename);
    const char **file_extension;
    int num_of_rom_slots;
    int num_of_floppy_drives;
    int num_of_hard_drives;
    int num_of_cassette_drives;
#endif
New:
#ifdef MESS
    const struct IODevice *dev;
#endif
- The global rom_name[], floppy_name[], hard_name[] and cassette_name[] arrays are gone! Instead each machine driver (src/mess/systems/*.c) should specify an init function for every device it supports. This init function is called during the startup with an id (0 to max instances of the device - 1) and a filename. rom_load is called very early when a driver is started. It is the 'init' function for the device type IO_CARTSLOT, so the previous statement applies here too. The rom_id function pointer moved into the struct IODevice too. Every device can have a id function, so if it is possible to identify
eg. a floppy disk, harddisk, cassette ect., you should provide the identifying functions and put them in this field in your systems/driver code. The id function return value is sort of TRUE/FALSE, ie. non zero means image is ok for this device, zero is not recognized. The IODevice contains an "void (*exit)(int id);" entry, so each driver could (and probably should) handle shutting down the various dvice instances. The exit entries are called from src/mess/mess.c exit_devices(), which is called from src/mame.c shutdown_machine(). Startup handling moved from src/mame.c to src/mess/mess.c In the first stage load_image() is called. The images specified on the command line are parsed in mess.c now, and a list of "struct ImageFile" entries in the  GameOptions is set. This struct contains a "char *name" and an "int type", where type should be set to one of the IO_CARTSLOT, IO_FLOPPY ect. values.
GUI ports could use this to store some file selection lists together with the type of files selected. The DOS port stores image names from the command line (*argv) in this array, and the type of image is determined this way: 1st: user specified a type using a switch before a (list of) name(s). For DOS this looks like "mess system -flop test -cart rom1 -cart rom2" 2nd: the extension of the filename matches one of the MessDevice entries of the driver which is started. So if a driver defines "cas" for it's IO_CASSETTE device and "dsk" for it's IO_FLOPPY device, the command line "mess driver a.dsk b.cas" will be sufficient. In the second stage during startup, the get_files() function is called and images are sorted into some (static) arrays of names in mess.c. This is to allow easier/faster access to them and maybe useful for swapping the names and calling init_<device> again. The third stage now walks through the list of devices of the driver which is to be started and calls it's init functions with the the names from the arrays. If the driver returns non zero, the startup process is terminated here.

0.02b4:
========
- The DOS version is now compiled with GCC 2.8.1 and using Allegro 3.0 + WIP (30th May).
- [DOS] To improve portability, the makefile is more conservative, using the -pedantic and -Wshadow switches. Note that to compile with these switches, several changes had to be made to allegro.h, which is included.

0.01:
======
- First version, based upon MAME 0.31 source.


© 2011/2024 AntoPISA