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.
emu/profiler.cpp: 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.
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.
------------------------------
Series 3a [Nigel Barnes, The Last Psion]
Series 3c [Nigel Barnes, The Last Psion]
Series 3mx [Nigel Barnes, The Last Psion]
Siena [Nigel Barnes, The Last Psion]
Workabout [Nigel Barnes, The Last Psion]
Workabout mx [Nigel Barnes, The Last Psion]
New clones marked not working
-----------------------------
Pocket Book II [Nigel Barnes, The Last Psion]
Series 3a (2M) [Nigel Barnes, The Last Psion]
Series 3a (2M) (German) [Nigel Barnes, The Last Psion]
* emu: add defer_access() method, which is useful for keeping the cpu in a loop restarting the current
instruction to emulate waitstates.
* add HP82321A Basic Language Coprocessor
This adds support for the HP82321A Basic language coprocessor, which emulates a HP9816 system with a 68K cpu. See http://www.hpmuseum.net/display_item.php?hw=681 for more details and software to run on this card.
* This lets you use emu.wait(...) directly without mucking around creating coroutines.
* Allow emu.wait to accept an attotime argument.
* Added a couple more wait helper functions.
-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.
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).
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.
* Removed SDL2 source.
* Updated gradle.
* Updated SDL2 Java support glue code.
* Increased minimum supported Android API version to 24.
* Updated required asset files for Android app.
* Added proper tag for Android logging.
* Added SDL2 hint to make BGFX work on Android.
* Added callbacks for card detect, battery voltage and write protect to the PCCard interface.
* Added helpers to read/write data swapped (similar to the existing support in the ATA device).
* Add support for 2 MB and 4 MB SRAM PCMCIA models from Centennial with built-in EEPROM storage for CIS information.
* machine/linflash.cpp: Updated the linear Flash PCMCIA card emulation to use the new card detection support.
* machine/gayle.cpp: Rewrote the Amiga Gayle emulation, adding support for PCMCIA.
* Fixed an issue with Amiga interrupts arriving at the wrong time.
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.
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.
emu/inpttype.ipp: Added a UI Help control. Currently only used by
analog inputs menu
emu/inpttype.h: Moved I/O port field type enum to its own header and
sorted UI controls so they appear in a more logical order.
ui: Don't use UI Select to restore defaults - people should be getting
used to the UI Clear input by now. UI Select cycles multi-value items
instead.
ui/inputmap.cpp: Don't use immediate cancel to cycle between clearing
and restoring default assignment (use UI Clear instead).
osd: Reduced the number of files needing to include the dreaded emu.h.
Got some implementation out of headers.
mpc106.cpp: fixed endianness of register access, hooked up RAM, made compatible with RAM device. [R. Belmont]
cuda.cpp: Added I2C I/O hookups. [R. Belmont]
heathrow.cpp: Hack for unknown register that imac was stuck on. [R. Belmont]
dimm_spd.cpp: New device that provides a configurable DIMM serial presence detect readback for I2C or SMBus. [R. Belmont]
* Got rid of a few more unnecessary uses of simple_list.
* bus/amiga/zorro: Got rid of a pointer member that would make adding
save state support unnecessarily difficult.
* nichibutsu/cop01.cpp: Remove need to remove devices from machine
config.
* Moved common instruction field accessors used by the CPU core and
disassembler to a shared base class and made them constexpr.
* Got the inline member functions bodies file out of the public CPU
header so they aren't pulled in by everything using it.
* Got most of the disassembler handler declarations out of the public
header so they can be changed withut excessive recompiling.
* Split into files by opcode encode type/group.
* Refactored out macros.
* Added additional opcodes.
* Added interrupt logic.
* Added stub handlers for used but unknown opcodes.
-leapfrog/leapster.cpp updates:
* Put some data uploaded by the leapster BIOS somewhere for debugging purposes.
* Removed a read handler that was only there because of previous bad handling.
* Noted some used Leapster side addresses.
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.
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 of 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.
osd: 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.
osd/modules/input: 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.
osd/modules/input/input_sdl.cpp: 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.
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).
osd: 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.
emu/input.cpp: 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).
osd/modules/input_dinput.cpp: Improved polling logic.
osd: 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.