In WriteMonoSingleSeq, layerPlaceholderOff was recorded before WriteNoshort,
causing a stray 0x00 byte to be emitted into the mono channel script. The
0x00 decoded as a delay of 0 ticks, which deferred the subsequent ldlayer
byte by one tick and left channel->instrument unset when the layer first
processed its note, producing no sound.
Move layerPlaceholderOff to after WriteNoshort so the placeholder writes
the correct address, matching WriteStereoSingleSeq.
Fixes#7264
The selected-slot index is only assigned when the cursor is on a slot, so on
the page arrows the song icons compared against an uninitialised value.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
`install` builds ALL, which never included GenerateSohOtr, so it copied
whatever soh.o2r was already in the build tree. The version check can't
catch that: a stale soh.o2r carries the same version as the binary.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
GCC 15's libstdc++ defines feature-test macros selectively: after
#include <string>, __cpp_lib_source_location is not yet defined, even
though __builtin_source_location is fully supported. This made the
check fail on GCC 15 toolchains (including clang using libstdc++),
disabling the Hook Debugger.
Include <version> first so all feature-test macros are defined.
The SAPI and AVSpeechSynthesizer backends both drop what they are saying when
a new utterance arrives (SPF_PURGEBEFORESPEAK, stopSpeakingAtBoundary). espeak
never did, so on Linux every menu item scrolled past queued another utterance
with no way to skip ahead.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
1. clicking on flag name toggles checkbox
2. hovering over player state shows flag name
3. add search box for player state, adjust names to what headers call them
Rename All Locations Reachable to All Checks Reachable.
Rename Locations section to Check Locations.
Properly fix checkbox/radio button label wrapping.
GameInteractor.h does not itself depend on libultraship/bridge/consolevariablebridge.h,
instead its dependencies requiring that header should include it themselves
This was particularly impactful for SohGui.hpp which included all the windows
This aims to port over the Time Splits feature from 2Ship as it is cleaner & more robust.
New to this is the ability to finally compare splits from a second list.
Old Save data will now be converted to the new format automatically. Once it converts the data, the old save file will be renamed with a new ".backup" extension.
Co-authored-by: serprex <159546+serprex@users.noreply.github.com>
The hotkey was removed in #2833 because Linux had no synthesizer and fell
through to SpeechLogger. #5428 added the espeak-ng backend and un-gated the
settings checkbox, but left the hotkey and the README on Windows and macOS.
No need to 4x color, just use what player picks. Avoid stale reads by getting rid of currentColor
Also clean up MIN/MAX & tidy up randomizer.h including CustomMessageTypes.h