When building tools, we loop and call make recursively and
fail to react to track errors returned from those calls.
To fix that, force the shell targets to exit as soon as
they detect a submake failure.
nullsound is now a z80 library that can be linked by users. The
sound commands are now implemented by the user, which just calls
a series of functions from the nullsound library.
nullsound internally is now much simpler. It provides simple actions
for trigerring immediate sounds; it manages a state tracker for every
part of the YM2610.
This rebuild prepares nullsound for managing interrupts and playback
of simple sound fx or music via VDM.
Fix .data2 LMA section overlapping with linkscript
The current linkscript doesn't specify LMA for sections as
they are not considered when an ELF is processed by objcopy.
However this might confuse ld when the objects are compiled
by a more recent compiler than gcc 5.5.
Fix LMA assignment by making .data, .data2 and .text consecutive.
* Init didn't configure z80 ports appropriately [1] so NMI were not
received by the sound driver, and no sound was emitted on Mame.
This is likely the same issue on real hardware.
* Sound commands 01/03 didn't mute the ADPCMa channel correcly, this
one is fixed. More improvement will follow in another commit to mute
all channels (SSG, ADPCMa/b, FM).
* The write to YM2610 was unecessarily waiting for YM2610 status.
This is now changed in favour of busy waiting on Z80 to allow the
YM2610 to settle between writes. This follows the information from
neogeodev wiki [1], but could not be tested on real hardware. This is
working on Mame and GnGeo.
Nightly CI deprecated mingw64 packages in favour of ucrt64
package. Update the source build steps and documentation to
drop mingw support and only provide msys2/ucrt64 support.