• docs/superpowers/plans/20

    From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Fri Jul 17 02:56:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/6584d8d42357017a7ffe83c0
    Added Files:
    docs/superpowers/plans/2026-07-14-syncscumm-m1.md docs/superpowers/specs/2026-07-14-syncscumm-design.md src/doors/syncscumm/.gitignore DESIGN.md PROVENANCE.md build.sh src/doors/syncscumm/door/module.mk syncscumm.cpp video_dump.cpp video_dump.h src/doors/syncscumm/scummvm/.clang-format .clang-tidy .editorconfig .gitattributes src/doors/syncscumm/scummvm/.github/FUNDING.yml pull_request_template.md src/doors/syncscumm/scummvm/.github/vcpkg-ports/libmpeg2/0001-Add-naive-MSVC-support-to-sources.patch CMakeLists.txt portfile.cmake vcpkg.json src/doors/syncscumm/scummvm/.github/workflows/ci.yml src/doors/syncscumm/scummvm/.gitignore .gitlab-ci.yml .pre-commit-config.yaml .readthedocs.yaml AI-GUIDELINES.md AUTHORS CONTRIBUTING.md COPYING COPYRIGHT src/doors/syncscumm/scummvm/LICENSES/COPYING.Apache COPYING.BSD COPYING.BSL COPYING.GLAD COPYING.ISC COPYING.LGPL COPYING.LUA COPYING.MIT COPYING.MKV COPYING.MPL COPYING.OFL COPYING.TINYGL CatharonLicense.txt src/doors/syncscumm/scummvm/Makefile Makefile.common NEWS.md README.md TODO src/doors/syncscumm/scummvm/audio/adlib.cpp adlib_ctmidi.cpp adlib_ctmidi.h adlib_hmisos.cpp adlib_hmisos.h adlib_ms.cpp adlib_ms.h alsa_opl.cpp atari_ym2149.cpp atari_ym2149.h audiostream.cpp audiostream.h casio.cpp casio.h chip.cpp chip.h cms.cpp cms.h src/doors/syncscumm/scummvm/audio/decoders/3do.cpp 3do.h aac.cpp aac.h ac3.cpp ac3.h adpcm.cpp adpcm.h adpcm_intern.h aiff.cpp aiff.h apc.cpp apc.h asf.cpp asf.h codec.h flac.cpp flac.h g711.cpp g711.h iff_sound.cpp iff_sound.h mac_snd.cpp mac_snd.h mp3.cpp mp3.h mpc.cpp mpc.h qdm2.cpp qdm2.h qdm2data.h quicktime.cpp quicktime.h quicktime_intern.h raw.cpp raw.h util.h voc.cpp voc.h vorbis.cpp vorbis.h vorbis_intern.h wave.cpp wave.h wave_types.h wma.cpp wma.h wmadata.h xa.cpp xa.h xan_dpcm.cpp xan_dpcm.h src/doors/syncscumm/scummvm/audio/fmopl.cpp fmopl.h mac_plugin.cpp mididrv.cpp mididrv.h mididrv_ms.cpp mididrv_ms.h midiparser.cpp midiparser.h midiparser_hmp.cpp midiparser_hmp.h midiparser_qt.cpp midiparser_qt.h midiparser_smf.cpp midiparser_smf.h midiparser_xmidi.cpp midiplayer.cpp midiplayer.h miles.h miles_adlib.cpp miles_midi.cpp mixer.cpp mixer.h mixer_intern.h src/doors/syncscumm/scummvm/audio/mods/desktoptracker.cpp desktoptracker.h infogrames.cpp infogrames.h maxtrax.cpp maxtrax.h mod_xm_s3m.cpp mod_xm_s3m.h module.cpp module.h module_mod_xm_s3m.cpp module_mod_xm_s3m.h paula.cpp paula.h protracker.cpp protracker.h rjp1.cpp rjp1.h soundfx.cpp soundfx.h tfmx.cpp tfmx.h universaltracker.cpp universaltracker.h src/doors/syncscumm/scummvm/audio/module.mk mpu401.cpp mpu401.h mt32gm.cpp mt32gm.h musicplugin.cpp musicplugin.h null.cpp null.h opl2lpt.cpp rate.cpp rate.h rwopl3.cpp rwopl3.h sid.cpp sid.h sine.h src/doors/syncscumm/scummvm/audio/softsynth/appleiigs.cpp ay8912.cpp ay8912.h cms.cpp cms.h eas.cpp emumidi.h fluidsynth.cpp src/doors/syncscumm/scummvm/audio/softsynth/fmtowns_pc98/pc98_audio.cpp pc98_audio.h pcm_common.cpp pcm_common.h sega_audio.cpp sega_audio.h towns_audio.cpp towns_audio.h towns_euphony.cpp towns_euphony.h towns_pc98_driver.cpp towns_pc98_driver.h towns_pc98_fmsynth.cpp towns_pc98_fmsynth.h towns_pc98_plugins.cpp src/doors/syncscumm/scummvm/audio/softsynth/mt32.cpp src/doors/syncscumm/scummvm/audio/softsynth/mt32/Analog.cpp Analog.h BReverbModel.cpp BReverbModel.h Display.cpp Display.h Enumerations.h File.cpp File.h FileStream.cpp FileStream.h LA32FloatWaveGenerator.cpp LA32FloatWaveGenerator.h LA32Ramp.cpp LA32Ramp.h LA32WaveGenerator.cpp LA32WaveGenerator.h MemoryRegion.h MidiEventQueue.h MidiStreamParser.cpp MidiStreamParser.h Part.cpp Part.h Partial.cpp Partial.h PartialManager.cpp PartialManager.h Poly.cpp Poly.h ROMInfo.cpp ROMInfo.h SampleRateConverter.cpp SampleRateConverter.h Structures.h Synth.cpp Synth.h TVA.cpp TVA.h TVF.cpp TVF.h TVP.cpp TVP.h Tables.cpp Tables.h Types.h VersionTagging.cpp VersionTagging.h src/doors/syncscumm/scummvm/audio/softsynth/mt32/c_interface/c_interface.cpp c_interface.h c_types.h cpp_interface.h src/doors/syncscumm/scummvm/audio/softsynth/mt32/config.h font_6x8.h globals.h src/doors/syncscumm/scummvm/audio/softsynth/mt32/images/lcd_bg.bmp src/doors/syncscumm/scummvm/audio/softsynth/mt32/internals.h lcd_bg_data.h mmath.h module.mk mt32emu.h mt32emu.pc.in src/doors/syncscumm/scummvm/audio/softsynth/mt32/sha1/sha1.cpp sha1.h src/doors/syncscumm/scummvm/audio/softsynth/mt32/srchelper/InternalResampler.cpp InternalResampler.h SamplerateAdapter.cpp SamplerateAdapter.h SoxrAdapter.cpp SoxrAdapter.h src/doors/syncscumm/scummvm/audio/softsynth/mt32/srchelper/srctools/include/FIRResampler.h FloatSampleProvider.h IIR2xResampler.h LinearResampler.h ResamplerModel.h ResamplerStage.h SincResampler.h src/doors/syncscumm/scummvm/audio/softsynth/mt32/srchelper/srctools/src/FIRResampler.cpp IIR2xResampler.cpp LinearResampler.cpp ResamplerModel.cpp SincResampler.cpp src/doors/syncscumm/scummvm/audio/softsynth/opl/dbopl.cpp dbopl.h dosbox.cpp dosbox.h mame.cpp mame.h nuked.cpp nuked.h src/doors/syncscumm/scummvm/audio/softsynth/pcspk.cpp pcspk.h sid.cpp sid.h wave6581.cpp ym2149.cpp ym2149.h src/doors/syncscumm/scummvm/audio/soundfont/VGMTrans_LICENSE.txt common.h rawfile.cpp rawfile.h rifffile.cpp rifffile.h sf2file.cpp sf2file.h synthfile.cpp synthfile.h src/doors/syncscumm/scummvm/audio/soundfont/vab/psxspu.cpp psxspu.h vab.cpp vab.h src/doors/syncscumm/scummvm/audio/soundfont/vgmcoll.cpp vgmcoll.h vgminstrset.cpp vgminstrset.h vgmitem.cpp vgmitem.h vgmsamp.cpp vgmsamp.h src/doors/syncscumm/scummvm/audio/timestamp.cpp timestamp.h ym2149.cpp ym2149.h src/doors/syncscumm/scummvm/backends/audiocd/atari/atari-audiocd.cpp atari-audiocd.h src/doors/syncscumm/scummvm/backends/audiocd/audiocd-stream.cpp audiocd-stream.h audiocd.h src/doors/syncscumm/scummvm/backends/audiocd/default/default-audiocd.cpp default-audiocd.h src/doors/syncscumm/scummvm/backends/audiocd/linux/linux-audiocd.cpp linux-audiocd.h src/doors/syncscumm/scummvm/backends/audiocd/macosx/macosx-audiocd.cpp macosx-audiocd.h src/doors/syncscumm/scummvm/backends/audiocd/sdl/sdl-audiocd.cpp sdl-audiocd.h src/doors/syncscumm/scummvm/backends/audiocd/win32/win32-audiocd.cpp win32-audiocd.h src/doors/syncscumm/scummvm/backends/base-backend.cpp base-backend.h src/doors/syncscumm/scummvm/backends/cloud/basestorage.cpp basestorage.h src/doors/syncscumm/scummvm/backends/cloud/box/boxlistdirectorybyidrequest.cpp boxlistdirectorybyidrequest.h boxstorage.cpp boxstorage.h boxtokenrefresher.cpp boxtokenrefresher.h boxuploadrequest.cpp boxuploadrequest.h src/doors/syncscumm/scummvm/backends/cloud/cloudicon.cpp cloudicon.h cloudicon_data.h cloudicon_disabled_data.h cloudmanager.cpp cloudmanager.h downloadrequest.cpp downloadrequest.h src/doors/syncscumm/scummvm/backends/cloud/dropbox/dropboxcreatedirectoryrequest.cpp dropboxcreatedirectoryrequest.h dropboxinforequest.cpp dropboxinforequest.h dropboxlistdirectoryrequest.cpp dropboxlistdirectoryrequest.h dropboxstorage.cpp dropboxstorage.h dropboxtokenrefresher.cpp dropboxtokenrefresher.h dropboxuploadrequest.cpp dropboxuploadrequest.h src/doors/syncscumm/scummvm/backends/cloud/folderdownloadrequest.cpp folderdownloadrequest.h src/doors/syncscumm/scummvm/backends/cloud/googledrive/googledrivelistdirectorybyidrequest.cpp googledrivelistdirectorybyidrequest.h googledrivestorage.cpp googledrivestorage.h googledrivetokenrefresher.cpp googledrivetokenrefresher.h googledriveuploadrequest.cpp googledriveuploadrequest.h src/doors/syncscumm/scummvm/backends/cloud/id/idcreatedirectoryrequest.cpp idcreatedirectoryrequest.h iddownloadrequest.cpp iddownloadrequest.h idlistdirectoryrequest.cpp idlistdirectoryrequest.h idresolveidrequest.cpp idresolveidrequest.h idstorage.cpp idstorage.h idstreamfilerequest.cpp idstreamfilerequest.h src/doors/syncscumm/scummvm/backends/cloud/iso8601.cpp iso8601.h src/doors/syncscumm/scummvm/backends/cloud/onedrive/onedrivecreatedirectoryrequest.cpp onedrivecreatedirectoryrequest.h onedrivelistdirectoryrequest.cpp onedrivelistdirectoryrequest.h onedrivestorage.cpp onedrivestorage.h onedrivetokenrefresher.cpp onedrivetokenrefresher.h onedriveuploadrequest.cpp onedriveuploadrequest.h src/doors/syncscumm/scummvm/backends/cloud/savessyncrequest.cpp savessyncrequest.h storage.cpp storage.h storagefile.cpp storagefile.h storageinfo.h src/doors/syncscumm/scummvm/backends/dialogs/amigaos/amigaos-dialogs.cpp amigaos-dialogs.h src/doors/syncscumm/scummvm/backends/dialogs/gtk/gtk-dialogs.cpp gtk-dialogs.h src/doors/syncscumm/scummvm/backends/dialogs/macosx/macosx-dialogs.h macosx-dialogs.mm src/doors/syncscumm/scummvm/backends/dialogs/morphos/morphos-dialogs.cpp morphos-dialogs.h src/doors/syncscumm/scummvm/backends/dialogs/win32/mingw-compat.h win32-dialogs.cpp win32-dialogs.h src/doors/syncscumm/scummvm/backends/dlc/dlcdesc.h dlcmanager.cpp dlcmanager.h scummvmcloud.cpp scummvmcloud.h store.h src/doors/syncscumm/scummvm/backends/events/atari/atari-events.cpp atari-events.h src/doors/syncscumm/scummvm/backends/events/default/default-events.cpp default-events.h src/doors/syncscumm/scummvm/backends/events/ds/ds-events.cpp ds-events.h src/doors/syncscumm/scummvm/backends/events/emscriptensdl/emscriptensdl-events.h src/doors/syncscumm/scummvm/backends/events/maemosdl/maemosdl-events.cpp maemosdl-events.h src/doors/syncscumm/scummvm/backends/events/openpandora/op-events.cpp op-events.h src/doors/syncscumm/scummvm/backends/events/ps3sdl/ps3sdl-events.cpp ps3sdl-events.h src/doors/syncscumm/scummvm/backends/events/psp2sdl/psp2sdl-events.cpp psp2sdl-events.h src/doors/syncscumm/scummvm/backends/events/riscossdl/riscossdl-events.cpp riscossdl-events.h src/doors/syncscumm/scummvm/backends/events/samsungtvsdl/samsungtvsdl-events.cpp samsungtvsdl-events.h src/doors/syncscumm/scummvm/backends/events/sdl/sdl-common-events.cpp sdl-events.h sdl1-events.cpp sdl2-events.cpp sdl3-events.cpp src/doors/syncscumm/scummvm/backends/events/switchsdl/switchsdl-events.cpp switchsdl-events.h src/doors/syncscumm/scummvm/backends/fs/abstract-fs.cpp abstract-fs.h src/doors/syncscumm/scummvm/backends/fs/amigaos/amigaos-fs-factory.cpp amigaos-fs-factory.h amigaos-fs.cpp amigaos-fs.h src/doors/syncscumm/scummvm/backends/fs/android/android-fs-factory.cpp android-fs-factory.h android-fs.h android-posix-fs.cpp android-posix-fs.h android-saf-fs.cpp android-saf-fs.h src/doors/syncscumm/scummvm/backends/fs/atari/atari-fs-factory.cpp atari-fs-factory.h atari-fs.cpp atari-fs.h src/doors/syncscumm/scummvm/backends/fs/chroot/chroot-fs-factory.cpp chroot-fs-factory.h chroot-fs.cpp chroot-fs.h src/doors/syncscumm/scummvm/backends/fs/devoptab/devoptab-fs-factory.cpp devoptab-fs-factory.h src/doors/syncscumm/scummvm/backends/fs/emscripten/cloud-fs.cpp cloud-fs.h emscripten-fs-factory.cpp emscripten-fs-factory.h emscripten-posix-fs.cpp emscripten-posix-fs.h http-fs.cpp http-fs.h src/doors/syncscumm/scummvm/backends/fs/fs-factory.h src/doors/syncscumm/scummvm/backends/fs/kolibrios/kolibrios-fs-factory.cpp kolibrios-fs-factory.h kolibrios-fs.cpp kolibrios-fs.h src/doors/syncscumm/scummvm/backends/fs/morphos/morphos-fs-factory.cpp morphos-fs-factory.h morphos-fs.cpp morphos-fs.h src/doors/syncscumm/scummvm/backends/fs/n64/n64-fs-factory.cpp n64-fs-factory.h n64-fs.cpp n64-fs.h romfsstream.cpp romfsstream.h src/doors/syncscumm/scummvm/backends/fs/posix-drives/posix-drives-fs-factory.cpp posix-drives-fs-factory.h posix-drives-fs.cpp posix-drives-fs.h src/doors/syncscumm/scummvm/backends/fs/posix/posix-fs-factory.cpp posix-fs-factory.h posix-fs.cpp posix-fs.h posix-iostream.cpp posix-iostream.h src/doors/syncscumm/scummvm/backends/fs/ps3/ps3-fs-factory.cpp ps3-fs-factory.h src/doors/syncscumm/scummvm/backends/fs/psp/psp-fs-factory.cpp psp-fs-factory.h psp-fs.cpp psp-fs.h psp-stream.cpp psp-stream.h src/doors/syncscumm/scummvm/backends/fs/riscos/riscos-fs-factory.cpp riscos-fs-factory.h riscos-fs.cpp riscos-fs.h src/doors/syncscumm/scummvm/backends/fs/stdiostream.cpp stdiostream.h src/doors/syncscumm/scummvm/backends/fs/wii/wii-fs-factory.cpp wii-fs-factory.h wii-fs.cpp wii-fs.h src/doors/syncscumm/scummvm/backends/fs/windows/windows-fs-factory.cpp windows-fs-factory.h windows-fs.cpp windows-fs.h src/doors/syncscumm/scummvm/backends/graphics/android/android-graphics.cpp android-graphics.h src/doors/syncscumm/scummvm/backends/graphics/atari/atari-c2p-asm.S atari-c2p-asm.h atari-cursor.cpp atari-cursor.h atari-graphics-asm.S atari-graphics-asm.h atari-graphics.cpp atari-graphics.h atari-pendingscreenchanges.cpp atari-pendingscreenchanges.h atari-screen.cpp atari-screen.h atari-supervidel.cpp atari-supervidel.h atari-surface.cpp atari-surface.h src/doors/syncscumm/scummvm/backends/graphics/default-palette.h graphics.h src/doors/syncscumm/scummvm/backends/graphics/ios/ios-graphics.cpp ios-graphics.h renderbuffer.cpp renderbuffer.h src/doors/syncscumm/scummvm/backends/graphics/maemosdl/maemosdl-graphics.cpp maemosdl-graphics.h src/doors/syncscumm/scummvm/backends/graphics/miyoo/miyoomini-graphics.cpp miyoomini-graphics.h src/doors/syncscumm/scummvm/backends/graphics/null/null-graphics.h src/doors/syncscumm/scummvm/backends/graphics/opendingux/opendingux-graphics.cpp opendingux-graphics.h src/doors/syncscumm/scummvm/backends/graphics/opengl/framebuffer.cpp framebuffer.h opengl-graphics.cpp opengl-graphics.h src/doors/syncscumm/scummvm/backends/graphics/opengl/pipelines/clut8.cpp clut8.h fixed.cpp fixed.h libretro.cpp libretro.h src/doors/syncscumm/scummvm/backends/graphics/opengl/pipelines/libretro/parser.cpp parser.h types.h src/doors/syncscumm/scummvm/backends/graphics/opengl/pipelines/pipeline.cpp pipeline.h shader.cpp shader.h src/doors/syncscumm/scummvm/backends/graphics/opengl/renderer3d.cpp renderer3d.h shader.cpp shader.h texture.cpp texture.h src/doors/syncscumm/scummvm/backends/graphics/openglsdl/openglsdl-graphics.cpp openglsdl-graphics.h src/doors/syncscumm/scummvm/backends/graphics/openpandora/op-graphics.cpp op-graphics.h src/doors/syncscumm/scummvm/backends/graphics/riscossdl/riscossdl-graphics.cpp riscossdl-graphics.h src/doors/syncscumm/scummvm/backends/graphics/sdl/sdl-graphics.cpp sdl-graphics.h src/doors/syncscumm/scummvm/backends/graphics/surfacesdl/surfacesdl-graphics.cpp surfacesdl-graphics.h src/doors/syncscumm/scummvm/backends/graphics/windowed.h src/doors/syncscumm/scummvm/backends/imgui/IconsMaterialSymbols.h LICENSE.txt src/doors/syncscumm/scummvm/backends/imgui/backends/imgui_impl_opengl3.cpp imgui_impl_opengl3.h imgui_impl_opengl3_loader.h imgui_impl_sdl2.cpp imgui_impl_sdl2.h imgui_impl_sdl3.cpp imgui_impl_sdl3.h imgui_impl_sdlrenderer2.cpp imgui_impl_sdlrenderer2.h imgui_impl_sdlrenderer3.cpp imgui_impl_sdlrenderer3.h src/doors/syncscumm/scummvm/backends/imgui/components/imgui_logger.cpp imgui_logger.h imgui_memory_editor.h src/doors/syncscumm/scummvm/backends/imgui/imconfig.h imgui.cpp imgui.h imgui_demo.cpp imgui_draw.cpp imgui_fonts.cpp imgui_fonts.h imgui_internal.h imgui_tables.cpp imgui_utils.cpp imgui_utils.h imgui_widgets.cpp imstb_rectpack.h imstb_textedit.h imstb_truetype.h src/doors/syncscumm/scummvm/backends/imgui/misc/freetype/README.md imgui_freetype.cpp imgui_freetype.h src/doors/syncscumm/scummvm/backends/imgui/scummvm.patch src/doors/syncscumm/scummvm/backends/keymapper/action.cpp action.h hardware-input.cpp hardware-input.h input-watcher.cpp input-watcher.h keymap.cpp keymap.h keymapper-defaults.h keymapper.cpp keymapper.h remap-widget.cpp remap-widget.h standard-actions.cpp standard-actions.h virtual-mouse.cpp virtual-mouse.h src/doors/syncscumm/scummvm/backends/log/log.cpp log.h src/doors/syncscumm/scummvm/backends/midi/alsa.cpp camd.cpp coreaudio.cpp coremidi.cpp dmedia.cpp riscos.cpp seq.cpp sndio.cpp stmidi.cpp timidity.cpp webmidi.cpp windows.cpp src/doors/syncscumm/scummvm/backends/mixer/android/android-mixer.cpp android-mixer.h ringbuffer.h src/doors/syncscumm/scummvm/backends/mixer/atari/atari-mixer.cpp atari-mixer.h src/doors/syncscumm/scummvm/backends/mixer/maxmod/maxmod-mixer.cpp maxmod-mixer.h src/doors/syncscumm/scummvm/backends/mixer/mixer.h src/doors/syncscumm/scummvm/backends/mixer/null/null-mixer.cpp null-mixer.h src/doors/syncscumm/scummvm/backends/mixer/sdl/sdl-mixer.cpp sdl-mixer.h src/doors/syncscumm/scummvm/backends/modular-backend.cpp modular-backend.h module.mk src/doors/syncscumm/scummvm/backends/mutex/3ds/3ds-mutex.cpp 3ds-mutex.h src/doors/syncscumm/scummvm/backends/mutex/null/null-mutex.h src/doors/syncscumm/scummvm/backends/mutex/pthread/pthread-mutex.cpp pthread-mutex.h src/doors/syncscumm/scummvm/backends/mutex/sdl/sdl-mutex.cpp sdl-mutex.h src/doors/syncscumm/scummvm/backends/mutex/wii/wii-mutex.cpp wii-mutex.h src/doors/syncscumm/scummvm/backends/networking/basic/android/jni.cpp jni.h socket.cpp socket.h url.cpp url.h src/doors/syncscumm/scummvm/backends/networking/basic/curl/cacert.cpp cacert.h socket.cpp socket.h url.cpp url.h src/doors/syncscumm/scummvm/backends/networking/basic/socket.h url.h src/doors/syncscumm/scummvm/backends/networking/enet/enet.cpp enet.h host.cpp host.h socket.cpp socket.h src/doors/syncscumm/scummvm/backends/networking/enet/source/LICENSE README callbacks.cpp callbacks.h compress.cpp enet.h host.cpp list.cpp list.h packet.cpp peer.cpp protocol.cpp protocol.h time.h types.h unix.cpp unix.h utility.h win32.cpp win32.h src/doors/syncscumm/scummvm/backends/networking/http/android/connectionmanager-android.cpp connectionmanager-android.h networkreadstream-android.cpp networkreadstream-android.h src/doors/syncscumm/scummvm/backends/networking/http/connectionmanager.cpp connectionmanager.h src/doors/syncscumm/scummvm/backends/networking/http/curl/connectionmanager-curl.cpp connectionmanager-curl.h networkreadstream-curl.cpp networkreadstream-curl.h src/doors/syncscumm/scummvm/backends/networking/http/emscripten/connectionmanager-emscripten.cpp connectionmanager-emscripten.h networkreadstream-emscripten.cpp networkreadstream-emscripten.h src/doors/syncscumm/scummvm/backends/networking/http/httpjsonrequest.cpp httpjsonrequest.h httprequest.cpp httprequest.h networkreadstream.cpp networkreadstream.h postrequest.cpp postrequest.h request.cpp request.h session.cpp session.h sessionrequest.cpp sessionrequest.h src/doors/syncscumm/scummvm/backends/networking/sdl_net/client.cpp client.h getclienthandler.cpp getclienthandler.h src/doors/syncscumm/scummvm/backends/networking/sdl_net/handlers/basehandler.h connectcloudhandler.cpp connectcloudhandler.h createdirectoryhandler.cpp createdirectoryhandler.h downloadfilehandler.cpp downloadfilehandler.h filesajaxpagehandler.cpp filesajaxpagehandler.h filesbasehandler.cpp filesbasehandler.h filespagehandler.cpp filespagehandler.h indexpagehandler.cpp indexpagehandler.h listajaxhandler.cpp listajaxhandler.h resourcehandler.cpp resourcehandler.h uploadfilehandler.cpp uploadfilehandler.h src/doors/syncscumm/scummvm/backends/networking/sdl_net/handlerutils.cpp handlerutils.h localwebserver.cpp localwebserver.h reader.cpp reader.h uploadfileclienthandler.cpp uploadfileclienthandler.h src/doors/syncscumm/scummvm/backends/platform/null/module.mk null.cpp src/doors/syncscumm/scummvm/backends/platform/synchronet src/doors/syncscumm/scummvm/backends/plugins/3ds/3ds-provider.cpp 3ds-provider.h plugin.ld src/doors/syncscumm/scummvm/backends/plugins/atari/atari-provider.cpp atari-provider.h src/doors/syncscumm/scummvm/backends/plugins/ds/ds-provider.cpp ds-provider.h plugin.ld src/doors/syncscumm/scummvm/backends/plugins/dynamic-plugin.h src/doors/syncscumm/scummvm/backends/plugins/elf/arm-loader.cpp arm-loader.h cxa-atexit.cpp elf-loader.cpp elf-loader.h elf-provider.cpp elf-provider.h elf32.h m68k-loader.cpp m68k-loader.h memory-manager.cpp memory-manager.h mips-loader.cpp mips-loader.h plugin.syms ppc-loader.cpp ppc-loader.h shorts-segment-manager.cpp shorts-segment-manager.h version.cpp version.h src/doors/syncscumm/scummvm/backends/plugins/firebee/firebee-provider.cpp firebee-provider.h src/doors/syncscumm/scummvm/backends/plugins/kolibrios/kolibrios-provider.cpp kolibrios-provider.h src/doors/syncscumm/scummvm/backends/plugins/mintelf/plugin.ld src/doors/syncscumm/scummvm/backends/plugins/posix/posix-provider.cpp posix-provider.h src/doors/syncscumm/scummvm/backends/plugins/psp/main_prog.ld plugin.ld psp-provider.cpp psp-provider.h src/doors/syncscumm/scummvm/backends/plugins/psp2/plugin.cpp plugin.yml psp2-plugin.h psp2-provider.cpp psp2-provider.h src/doors/syncscumm/scummvm/backends/plugins/riscos/plugin.cpp plugin.ld riscos-provider.cpp riscos-provider.h src/doors/syncscumm/scummvm/backends/plugins/sdl/macosx/macosx-provider.cpp macosx-provider.h src/doors/syncscumm/scummvm/backends/plugins/sdl/sdl-provider.cpp sdl-provider.h src/doors/syncscumm/scummvm/backends/plugins/wii/plugin.ld wii-provider.cpp wii-provider.h src/doors/syncscumm/scummvm/backends/plugins/win32/win32-provider.cpp win32-provider.h src/doors/syncscumm/scummvm/backends/presence/discord/discord.cpp discord.h src/doors/syncscumm/scummvm/backends/printing/win32/win32-printman.cpp win32-printman.h src/doors/syncscumm/scummvm/backends/saves/default/default-saves.cpp default-saves.h src/doors/syncscumm/scummvm/backends/saves/kolibrios/kolibrios-saves.cpp kolibrios-saves.h src/doors/syncscumm/scummvm/backends/saves/posix/posix-saves.cpp posix-saves.h src/doors/syncscumm/scummvm/backends/saves/recorder/recorder-saves.cpp recorder-saves.h src/doors/syncscumm/scummvm/backends/saves/savefile.cpp src/doors/syncscumm/scummvm/backends/saves/windows/windows-saves.cpp windows-saves.h src/doors/syncscumm/scummvm/backends/taskbar/macosx/dockplugin/dockplugin.m src/doors/syncscumm/scummvm/backends/taskbar/macosx/macosx-taskbar.h macosx-taskbar.mm src/doors/syncscumm/scummvm/backends/taskbar/unity/unity-taskbar.cpp unity-taskbar.h src/doors/syncscumm/scummvm/backends/taskbar/win32/mingw-compat.h win32-taskbar.cpp win32-taskbar.h src/doors/syncscumm/scummvm/backends/text-to-speech/avfaudio/avfaudio-text-to-speech.h avfaudio-text-to-speech.mm src/doors/syncscumm/scummvm/backends/text-to-speech/emscripten/emscripten-text-to-speech.cpp emscripten-text-to-speech.h src/doors/syncscumm/scummvm/backends/text-to-speech/linux/linux-text-to-speech.cpp linux-text-to-speech.h src/doors/syncscumm/scummvm/backends/text-to-speech/macosx/macosx-text-to-speech.h macosx-text-to-speech.mm src/doors/syncscumm/scummvm/backends/text-to-speech/windows/windows-text-to-speech.cpp windows-text-to-speech.h src/doors/syncscumm/scummvm/backends/timer/default/default-timer.cpp default-timer.h src/doors/syncscumm/scummvm/backends/timer/psp/timer.cpp timer.h src/doors/syncscumm/scummvm/backends/timer/sdl/sdl-timer.cpp sdl-timer.h src/doors/syncscumm/scummvm/backends/updates/macosx/macosx-updates.h macosx-updates.mm src/doors/syncscumm/scummvm/backends/updates/win32/win32-updates.cpp win32-updates.h src/doors/syncscumm/scummvm/backends/vkeybd/image-map.cpp image-map.h keycode-descriptions.h src/doors/syncscumm/scummvm/backends/vkeybd/packs/vkeybd_default.zip src/doors/syncscumm/scummvm/backends/vkeybd/packs/vkeybd_default/lowercase-symbols320x240.bmp lowercase-symbols640x480.bmp lowercase320x240.bmp lowercase640x480.bmp uppercase-symbols320x240.bmp uppercase-symbols640x480.bmp uppercase320x240.bmp uppercase640x480.bmp vkeybd_default.xml src/doors/syncscumm/scummvm/backends/vkeybd/packs/vkeybd_small.zip src/doors/syncscumm/scummvm/backends/vkeybd/packs/vkeybd_small/lowercase-symbols320x240.bmp lowercase320x240.bmp uppercase-symbols320x240.bmp uppercase320x240.bmp vkeybd_small.xml src/doors/syncscumm/scummvm/backends/vkeybd/packs/vkeybdpack.py src/doors/syncscumm/scummvm/backends/vkeybd/polygon.cpp polygon.h virtual-keyboard-gui.cpp virtual-keyboard-gui.h virtual-keyboard-parser.cpp virtual-keyboard-parser.h virtual-keyboard.cpp virtual-keyboard.h src/doors/syncscumm/scummvm/base/commandLine.cpp commandLine.h src/doors/syncscumm/scummvm/base/detection/detection.cpp detection.h module.mk src/doors/syncscumm/scummvm/base/internal_plugins.h internal_revision.h.in internal_version.h internal_version.h.in main.cpp main.h module.mk plugins.cpp plugins.h test_new_standards.cpp version.cpp version.h src/doors/syncscumm/scummvm/common/algorithm.h archive.cpp archive.h array.h base64.cpp base64.h bitarray.h bitstream.h btea.cpp btea.h bufferedstream.h callback.h src/doors/syncscumm/scummvm/common/compression/clickteam.cpp clickteam.h dcl.cpp dcl.h deflate.h gentee_installer.cpp gentee_installer.h gzio.cpp huffman.h installshield_cab.cpp installshield_cab.h installshieldv3_archive.cpp installshieldv3_archive.h module.mk packice.cpp packice.h powerpacker.cpp powerpacker.h rnc_deco.cpp rnc_deco.h stuffit.cpp stuffit.h unarj.cpp unarj.h unzip.cpp unzip.h vise.cpp vise.h zlib.cpp src/doors/syncscumm/scummvm/common/concatstream.cpp concatstream.h config-manager.cpp config-manager.h coroutines.cpp coroutines.h crc.h crc_slow.h data-io.h dbcs-str.cpp dbcs-str.h debug-channels.h debug.cpp debug.h dialogs.h enc-internal.h src/doors/syncscumm/scummvm/common/encodings/singlebyte.cpp src/doors/syncscumm/scummvm/common/endian.h engine_data.cpp engine_data.h error.cpp error.h events.cpp events.h file.cpp file.h forbidden.h src/doors/syncscumm/scummvm/common/formats/cue.cpp cue.h disk_image.cpp disk_image.h formatinfo.cpp formatinfo.h iff_container.cpp iff_container.h ini-file.cpp ini-file.h json.cpp json.h markdown.cpp markdown.h module.mk po_parser.cpp po_parser.h prodos.cpp prodos.h quicktime.cpp quicktime.h spectrum_tape.cpp spectrum_tape.h winexe.cpp winexe.h winexe_ne.cpp winexe_ne.h winexe_pe.cpp winexe_pe.h xmlparser.cpp xmlparser.h src/doors/syncscumm/scummvm/common/frac.h fs.cpp fs.h func.h gui_options.cpp gui_options.h hash-ptr.h hash-str.h hashmap.cpp hashmap.h intrinsics.h keyboard.h language.cpp language.h list.h list_intern.h localization.cpp localization.h log.h src/doors/syncscumm/scummvm/common/lua/COPYRIGHT HISTORY README double_serialization.cpp double_serialization.h lapi.cpp lapi.h lauxlib.cpp lauxlib.h lbaselib.cpp lcode.cpp lcode.h ldblib.cpp ldebug.cpp ldebug.h ldo.cpp ldo.h lfunc.cpp lfunc.h lgc.cpp lgc.h linit.cpp liolib.cpp llex.cpp llex.h llimits.h lmathlib.cpp lmem.cpp lmem.h loadlib.cpp lobject.cpp lobject.h lopcodes.cpp lopcodes.h loslib.cpp lparser.cpp lparser.h lstate.cpp lstate.h lstring.cpp lstring.h lstrlib.cpp ltable.cpp ltable.h ltablib.cpp ltm.cpp ltm.h lua.h lua_persist.cpp lua_persistence.h lua_persistence_util.cpp lua_persistence_util.h lua_unpersist.cpp luaconf.h lualib.h lvm.cpp lvm.h lzio.cpp lzio.h module.mk scummvm_file.cpp scummvm_file.h src/doors/syncscumm/scummvm/common/macresman.cpp macresman.h md5.cpp md5.h memory.cpp memory.h memorypool.cpp memorypool.h memstream.h module.mk multimap.h mutex.cpp mutex.h noncopyable.h osd_message_queue.cpp osd_message_queue.h pack-end.h pack-start.h path.cpp path.h platform.cpp platform.h printman.cpp printman.h ptr.h punycode.cpp punycode.h queue.h random.cpp random.h rational.cpp rational.h rb_tree.h recorderfile.cpp recorderfile.h rect.h rendermode.cpp rendermode.h rotationmode.cpp rotationmode.h safe-bool.h savefile.h scummsys.h serializer.h singleton.h span.h stablemap.h stack.h src/doors/syncscumm/scummvm/common/std/algorithm.h array.h chrono.h functional.h initializer_list.h limits.h list.h map.h memory.h mutex.h queue.h regex.h set.h stack.h std.cpp thread.h type_traits.h unordered_set.h utility.h vector.h xtr1common.h xutility.h src/doors/syncscumm/scummvm/common/str-array.h str-base.cpp str-base.h str-enc.cpp str-enc.h str.cpp str.h stream.cpp stream.h streamdebug.cpp streamdebug.h substream.h system.cpp system.h taskbar.h text-to-speech.cpp text-to-speech.h textconsole.cpp textconsole.h timer.h tokenizer.cpp tokenizer.h translation.cpp translation.h type_traits.h types.h unicode-bidi.cpp unicode-bidi.h updates.cpp updates.h ustr.cpp ustr.h util.cpp util.h xpfloat.cpp xpfloat.h zip-set.cpp zip-set.h src/doors/syncscumm/scummvm/config.guess config.sub configure src/doors/syncscumm/scummvm/dists/engine-data/README drascula.dat lure.dat queen.tbl sky.cpt src/doors/syncscumm/scummvm/engines.awk src/doors/syncscumm/scummvm/engines/achievements.cpp achievements.h advancedDetector.cpp advancedDetector.h dialogs.cpp dialogs.h src/doors/syncscumm/scummvm/engines/drascula/POTFILES actors.cpp animation.cpp configure.engine console.cpp console.h converse.cpp credits.pl detection.cpp detection.h drascula.cpp drascula.h graphics.cpp interface.cpp metaengine.cpp module.mk objects.cpp palette.cpp resource.cpp rooms.cpp saveload.cpp sound.cpp talk.cpp src/doors/syncscumm/scummvm/engines/engine.cpp engine.h enhancements.h game.cpp game.h logo_data.h src/doors/syncscumm/scummvm/engines/lure/POTFILES animseq.cpp animseq.h configure.engine credits.pl debugger.cpp debugger.h decode.cpp decode.h detection.cpp detection.h disk.cpp disk.h events.cpp events.h fights.cpp fights.h game.cpp game.h hotspots.cpp hotspots.h intro.cpp intro.h lure.cpp lure.h luredefs.h memory.cpp memory.h menu.cpp menu.h metaengine.cpp module.mk palette.cpp palette.h res.cpp res.h res_struct.cpp res_struct.h room.cpp room.h screen.cpp screen.h scripts.cpp scripts.h sound.cpp sound.h strings.cpp strings.h surface.cpp surface.h src/doors/syncscumm/scummvm/engines/metaengine.cpp metaengine.h module.mk obsolete.cpp obsolete.h src/doors/syncscumm/scummvm/engines/queen/POTFILES bankman.cpp bankman.h command.cpp command.h configure.engine credits.cpp credits.h credits.pl cutaway.cpp cutaway.h debug.cpp debug.h defs.h detection.cpp detection.h display.cpp display.h graphics.cpp graphics.h grid.cpp grid.h input.cpp input.h journal.cpp journal.h logic.cpp logic.h metaengine.cpp midiadlib.cpp midiadlib.h module.mk music.cpp music.h musicdata.cpp queen.cpp queen.h resource.cpp resource.h restables.cpp sound.cpp sound.h state.cpp state.h structs.h talk.cpp talk.h version.cpp version.h walk.cpp walk.h xref.txt src/doors/syncscumm/scummvm/engines/savestate.cpp savestate.h src/doors/syncscumm/scummvm/engines/scumm/POTFILES actor.cpp actor.h actor_he.h akos.cpp akos.h base-costume-optimised.cpp base-costume.cpp base-costume.h bomp.cpp bomp.h boxes.cpp boxes.h bylerledecodeM68K.h camera.cpp cdda.cpp cdda.h charset-fontdata.cpp charset.cpp charset.h charset_v7.h configure.engine costume.cpp costume.h credits.pl cursor.cpp debugger.cpp debugger.h src/doors/syncscumm/scummvm/engines/scumm/debugger/debugtools.cpp debugtools.h editor.cpp editor.h explorer.cpp explorer.h file.cpp file.h resource.cpp resource.h src/doors/syncscumm/scummvm/engines/scumm/detection.cpp detection.h detection_internal.h detection_steam.h detection_tables.h dialog-createsession.cpp dialog-createsession.h dialog-sessionselector.cpp dialog-sessionselector.h dialogs.cpp dialogs.h file.cpp file.h file_engine.cpp file_nes.cpp file_nes.h gfx.cpp gfx.h gfxARM.s gfxM68K.S gfx_gui.cpp gfx_mac.cpp gfx_nes.cpp gfx_towns.cpp src/doors/syncscumm/scummvm/engines/scumm/he/animation_he.cpp animation_he.h src/doors/syncscumm/scummvm/engines/scumm/he/basketball/ai.cpp ai.h basketball.cpp basketball.h src/doors/syncscumm/scummvm/engines/scumm/he/basketball/collision/bball_collision.cpp bball_collision.h bball_collision_basketball.cpp bball_collision_basketball.h bball_collision_box.cpp bball_collision_box.h bball_collision_cylinder.cpp bball_collision_cylinder.h bball_collision_node.cpp bball_collision_node.h bball_collision_object.cpp bball_collision_object.h bball_collision_player.cpp bball_collision_player.h bball_collision_shields.cpp bball_collision_shields.h bball_collision_sphere.cpp bball_collision_sphere.h bball_collision_stack.cpp bball_collision_stack.h bball_collision_support_obj.h bball_collision_tree.cpp bball_collision_tree.h src/doors/syncscumm/scummvm/engines/scumm/he/basketball/court.cpp court.h cursor.cpp geo_translation.cpp geo_translations.h obstacle_avoidance.cpp obstacle_avoidance.h passing.cpp passing.h shooting.cpp shooting.h trajectory.cpp src/doors/syncscumm/scummvm/engines/scumm/he/cup_player_he.cpp cup_player_he.h font_he.cpp font_he.h src/doors/syncscumm/scummvm/engines/scumm/he/gfx_comp/aux_comp.cpp mrle_comp.cpp trle_comp.cpp src/doors/syncscumm/scummvm/engines/scumm/he/gfx_primitives_he.cpp intern_he.h localizer.cpp localizer.h src/doors/syncscumm/scummvm/engines/scumm/he/logic/baseball2001.cpp basketball_logic.cpp football.cpp funshop.cpp moonbase_logic.cpp puttrace.cpp soccer.cpp src/doors/syncscumm/scummvm/engines/scumm/he/logic_he.cpp logic_he.h math_he.cpp mixer_he.cpp mixer_he.h src/doors/syncscumm/scummvm/engines/scumm/he/moonbase/ai_defenseunit.cpp ai_defenseunit.h ai_main.cpp ai_main.h ai_node.cpp ai_node.h ai_pattern.h ai_targetacquisition.cpp ai_targetacquisition.h ai_traveller.cpp ai_traveller.h ai_tree.cpp ai_tree.h ai_types.cpp ai_types.h ai_weapon.cpp ai_weapon.h dialog-mapgenerator.cpp dialog-mapgenerator.h map_data.h map_katton.cpp map_katton.h map_main.cpp map_main.h map_mif.cpp map_mif.h map_spiff.cpp map_spiff.h moonbase.cpp moonbase.h moonbase_fow.cpp moonbase_gfx.cpp src/doors/syncscumm/scummvm/engines/scumm/he/net/net_defines.h net_lobby.cpp net_lobby.h net_main.cpp net_main.h src/doors/syncscumm/scummvm/engines/scumm/he/palette_he.cpp polygon_he.cpp resource_he.cpp resource_he.h script_v100he.cpp script_v60he.cpp script_v70he.cpp script_v71he.cpp script_v72he.cpp script_v80he.cpp script_v90he.cpp sound_he.cpp sound_he.h sprite_he.cpp sprite_he.h wiz_he.cpp wiz_he.h wizwarp_he.cpp src/doors/syncscumm/scummvm/engines/scumm/help.cpp help.h src/doors/syncscumm/scummvm/engines/scumm/imuse/drivers/amiga.cpp amiga.h fmtowns.cpp fmtowns.h macintosh.cpp macintosh.h midi.cpp midi.h pcspk.cpp pcspk.h src/doors/syncscumm/scummvm/engines/scumm/imuse/imuse.cpp imuse.h imuse_internal.h imuse_part.cpp imuse_player.cpp instrument.cpp instrument.h sysex.h sysex_samnmax.cpp sysex_scumm.cpp src/doors/syncscumm/scummvm/engines/scumm/imuse_digi/dimuse_bndmgr.cpp dimuse_bndmgr.h dimuse_cmds.cpp dimuse_codecs.cpp dimuse_codecs.h dimuse_defs.h dimuse_dispatch.cpp dimuse_engine.cpp dimuse_engine.h dimuse_fades.cpp dimuse_fades.h dimuse_files.cpp dimuse_files.h dimuse_groups.cpp dimuse_groups.h dimuse_internalmixer.cpp dimuse_internalmixer.h dimuse_scripts.cpp dimuse_sndmgr.cpp dimuse_sndmgr.h dimuse_streamer.cpp dimuse_tables.cpp dimuse_tables.h dimuse_tracks.cpp dimuse_triggers.cpp dimuse_triggers.h dimuse_utils.cpp dimuse_wave.cpp dimuse_waveout.cpp src/doors/syncscumm/scummvm/engines/scumm/input.cpp src/doors/syncscumm/scummvm/engines/scumm/insane/insane.cpp insane.h insane_ben.cpp insane_enemy.cpp insane_iact.cpp insane_scenes.cpp src/doors/syncscumm/scummvm/engines/scumm/insane/rebel/rebel_audio.cpp rebel_audio.h rebel_gamepad.cpp rebel_gamepad.h src/doors/syncscumm/scummvm/engines/scumm/insane/rebel1/audio.cpp iact.cpp levels.cpp menu.cpp rebel.cpp rebel.h render.cpp runlevels.cpp saveload.cpp src/doors/syncscumm/scummvm/engines/scumm/insane/rebel2/audio.cpp iact.cpp levels.cpp menu.cpp rebel.cpp rebel.h render.cpp runlevels.cpp src/doors/syncscumm/scummvm/engines/scumm/ks_check.cpp ks_check.h src/doors/syncscumm/scummvm/engines/scumm/m68k/bylerledecode.inc bylerledecode_classic.S bylerledecode_mode0.S bylerledecode_mode1.S bylerledecode_mode3.S bylerledecode_scaled_mode0.S bylerledecode_scaled_mode0_smask.S bylerledecode_scaled_mode1.S bylerledecode_scaled_mode1_smask.S bylerledecode_scaled_mode3.S src/doors/syncscumm/scummvm/engines/scumm/macgui/macgui.cpp macgui.h macgui_colors.h macgui_dialogwindow.cpp macgui_impl.cpp macgui_impl.h macgui_indy3.cpp macgui_indy3.h macgui_loom.cpp macgui_loom.h macgui_strings.cpp macgui_v5.cpp macgui_v5.h macgui_v6.cpp macgui_v6.h macgui_widgets.cpp src/doors/syncscumm/scummvm/engines/scumm/metaengine.cpp metaengine.h midiparser_ro.cpp module.mk music.h nut_renderer.cpp nut_renderer.h object.cpp object.h obsolete.h palette.cpp playback.cpp src/doors/syncscumm/scummvm/engines/scumm/players/mac_sound_lowlevel.h player_ad.cpp player_ad.h player_apple2.cpp player_apple2.h player_he.cpp player_he.h player_mac_indy3.cpp player_mac_intern.h player_mac_loom_monkey.cpp player_mac_new.cpp player_mac_new.h player_mod.cpp player_mod.h player_nes.cpp player_nes.h player_pce.cpp player_pce.h player_sid.cpp player_sid.h player_towns.cpp player_towns.h player_v1.cpp player_v1.h player_v2.cpp player_v2.h player_v2a.cpp player_v2a.h player_v2base.cpp player_v2base.h player_v2cms.cpp player_v2cms.h player_v3a.cpp player_v3a.h player_v4a.cpp player_v4a.h src/doors/syncscumm/scummvm/engines/scumm/resource.cpp resource.h resource_v2.cpp resource_v3.cpp resource_v4.cpp room.cpp saveload.cpp script.cpp script.h script_v0.cpp script_v2.cpp script_v3.cpp script_v4.cpp script_v5.cpp script_v6.cpp script_v8.cpp scumm-md5.h scumm.cpp scumm.h scumm_v0.h scumm_v2.h scumm_v3.h scumm_v4.h scumm_v5.h scumm_v6.h scumm_v7.h scumm_v8.h serializer.h src/doors/syncscumm/scummvm/engines/scumm/smush/codec1.cpp codec20.cpp codec37.cpp codec37.h codec47.cpp codec47.h codec47ARM.s src/doors/syncscumm/scummvm/engines/scumm/smush/rebel/anim_ra1.h codec_ra1.cpp codec_ra1.h codec_ra2.cpp codec_ra2.h font_rebel2.cpp font_rebel2.h smush_multi_font.cpp smush_multi_font.h smush_player_ra1.cpp smush_player_ra1.h smush_player_ra2.cpp smush_player_ra2.h smush_player_rebel.cpp src/doors/syncscumm/scummvm/engines/scumm/smush/smush_font.h smush_player.cpp smush_player.h src/doors/syncscumm/scummvm/engines/scumm/sound.cpp sound.h soundcd.cpp soundcd.h soundse.cpp soundse.h string.cpp string_v7.cpp string_v7.h usage_bits.cpp usage_bits.h util.cpp util.h vars.cpp verbs.cpp verbs.h src/doors/syncscumm/scummvm/engines/sky/POTFILES autoroute.cpp autoroute.h compact.cpp compact.h configure.engine control.cpp control.h credits.pl debug.cpp debug.h detection.cpp disk.cpp disk.h grid.cpp grid.h hufftext.cpp intro.cpp intro.h logic.cpp logic.h metaengine.cpp module.mk mouse.cpp mouse.h src/doors/syncscumm/scummvm/engines/sky/music/adlibchannel.cpp adlibchannel.h adlibmusic.cpp adlibmusic.h gmchannel.cpp gmchannel.h gmmusic.cpp gmmusic.h mt32music.cpp mt32music.h musicbase.cpp musicbase.h src/doors/syncscumm/scummvm/engines/sky/screen.cpp screen.h sky.cpp sky.h skydefs.h sound.cpp sound.h struc.h text.cpp text.h src/doors/syncscumm/scummvm/engines/util.h src/doors/syncscumm/scummvm/graphics/VectorRenderer.cpp VectorRenderer.h VectorRendererSpec.cpp VectorRendererSpec.h big5.cpp big5.h blit.h src/doors/syncscumm/scummvm/graphics/blit/blit-alpha.cpp blit-alpha.h blit-atari.cpp blit-avx2.cpp blit-fast.cpp blit-generic.cpp blit-neon.cpp blit-scale.cpp blit-sse2.cpp blit.cpp src/doors/syncscumm/scummvm/graphics/color_quantizer.cpp color_quantizer.h colormasks.h conversion.h cursor.h cursorman.cpp cursorman.h dirtyrects.cpp dirtyrects.h font.cpp font.h fontman.cpp fontman.h src/doors/syncscumm/scummvm/graphics/fonts/amigafont.cpp amigafont.h bdf.cpp bdf.h bgifont.cpp bgifont.h consolefont.cpp dosfont.cpp dosfont.h freetype.cpp freetype.h macfont.cpp macfont.h newfont.cpp newfont_big.cpp ttf.cpp ttf.h winfont.cpp winfont.h src/doors/syncscumm/scummvm/graphics/framelimiter.cpp framelimiter.h image-archive.cpp image-archive.h korfont.cpp korfont.h larryScale.cpp larryScale.h larryScale_generated.cpp larryScale_generator.js maccursor.cpp maccursor.h macega.h macgamma.h src/doors/syncscumm/scummvm/graphics/macgui/datafiles.cpp macbutton.cpp macbutton.h macdialog.cpp macdialog.h macfontmanager.cpp macfontmanager.h macmenu.cpp macmenu.h macpopupmenu.cpp macpopupmenu.h mactext-canvas.cpp mactext-canvas.h mactext-md.cpp mactext.cpp mactext.h mactextwindow.cpp mactextwindow.h macwidget.cpp macwidget.h macwindow.cpp macwindow.h macwindowborder.cpp macwindowborder.h macwindowmanager.cpp macwindowmanager.h src/doors/syncscumm/scummvm/graphics/managed_surface.cpp managed_surface.h src/doors/syncscumm/scummvm/graphics/mfc/afx.cpp afx.h afxext.h afxmsg.h afxres.h afxstr.h afxwin.h atltime.h atltypes.h bitmap.cpp bitmap_button.cpp brush.cpp button.cpp cmd_target.cpp dc.cpp dialog.cpp doc_manager.cpp doc_template.cpp document.cpp edit.cpp file.cpp font.cpp frame_wnd.cpp gdi_object.cpp src/doors/syncscumm/scummvm/graphics/mfc/gfx/blitter.cpp blitter.h cursor.cpp cursor.h dialog_template.cpp dialog_template.h fonts.cpp fonts.h palette_map.cpp palette_map.h surface.cpp surface.h text_render.cpp text_render.h src/doors/syncscumm/scummvm/graphics/mfc/global_functions.cpp global_functions.h ifstream.cpp ifstream.h joystickapi.cpp joystickapi.h keyboard.h src/doors/syncscumm/scummvm/graphics/mfc/libs/array.h event_loop.cpp event_loop.h events.cpp events.h list.h resources.cpp resources.h settings.cpp settings.h src/doors/syncscumm/scummvm/graphics/mfc/listbox.cpp menu.cpp mfc.h minwindef.h object.cpp paint_dc.cpp palette.cpp pen.cpp rgn.cpp scroll_view.cpp scrollbar.cpp single_doc_template.cpp static.cpp string.cpp view.cpp win_app.cpp win_hand.h win_thread.cpp wingdi.cpp wingdi.h winnt.h wnd.cpp src/doors/syncscumm/scummvm/graphics/mode.h module.mk src/doors/syncscumm/scummvm/graphics/nanosvg/LICENSE.txt nanosvg.h nanosvgrast.h src/doors/syncscumm/scummvm/graphics/nine_patch.cpp nine_patch.h src/doors/syncscumm/scummvm/graphics/opengl/context.cpp context.h debug.cpp debug.h glad.h shader.cpp shader.h system_headers.h texture.cpp texture.h src/doors/syncscumm/scummvm/graphics/palette.cpp palette.h paletteman.h pixelformat.cpp pixelformat.h pm5544.cpp pm5544.h primitives.cpp primitives.h renderer.cpp renderer.h riscoscursor.cpp riscoscursor.h scaler.h src/doors/syncscumm/scummvm/graphics/scaler/Normal2xARM.s aspect.cpp aspect.h dotmatrix.cpp dotmatrix.h downscaler.cpp downscaler.h downscalerARM.s edge.cpp edge.h hq.cpp hq.h hq2x_i386.asm hq3x_i386.asm intern.h normal.cpp normal.h pm.cpp pm.h sai.cpp sai.h scale2x.cpp scale2x.h scale2xARM.s scale3x.cpp scale3x.h scalebit.cpp scalebit.h thumbnail_intern.cpp tv.cpp tv.h src/doors/syncscumm/scummvm/graphics/scalerplugin.cpp scalerplugin.h screen.cpp screen.h sjis.cpp sjis.h surface.cpp surface.h svg.cpp svg.h thumbnail.cpp thumbnail.h src/doors/syncscumm/scummvm/graphics/tinygl/LICENSE api.cpp arrays.cpp clear.cpp clip.cpp colormasks.h fog.cpp get.cpp gl.h init.cpp light.cpp list.cpp matrix.cpp memory.cpp misc.cpp opinfo.h pixelbuffer.cpp pixelbuffer.h select.cpp specbuf.cpp texelbuffer.cpp texelbuffer.h texture.cpp tinygl.h vertex.cpp zblit.cpp zblit.h zblit_public.h zbuffer.cpp zbuffer.h zdirtyrect.cpp zdirtyrect.h zgl.h zline.cpp zmath.cpp zmath.h ztriangle.cpp src/doors/syncscumm/scummvm/graphics/transform_struct.cpp transform_struct.h transform_tools.cpp transform_tools.h wincursor.cpp wincursor.h yuv_to_rgb.cpp yuv_to_rgb.h src/doors/syncscumm/scummvm/gui/EventRecorder.cpp EventRecorder.h MetadataParser.cpp MetadataParser.h ThemeEngine.cpp ThemeEngine.h ThemeEval.cpp ThemeEval.h ThemeLayout.cpp ThemeLayout.h ThemeParser.cpp ThemeParser.h Tooltip.cpp Tooltip.h about.cpp about.h src/doors/syncscumm/scummvm/gui/animation/AccelerateInterpolator.h AlphaAnimation.h Animation.cpp Animation.h DeccelerateInterpolator.h Drawable.h FluidScroll.cpp FluidScroll.h Interpolator.h ParallelAnimation.h RepeatAnimationWrapper.cpp RepeatAnimationWrapper.h ScaleAnimation.h SequenceAnimationComposite.cpp SequenceAnimationComposite.h WaitForConditionAnimation.h src/doors/syncscumm/scummvm/gui/browser.cpp browser.h chooser.cpp chooser.h cloudconnectionwizard.cpp cloudconnectionwizard.h console.cpp console.h credits.h debugger.cpp debugger.h dialog.cpp dialog.h dlcsdialog.cpp dlcsdialog.h downloaddialog.cpp downloaddialog.h downloaddlcsdialog.cpp downloaddlcsdialog.h downloadpacksdialog.cpp downloadpacksdialog.h dump-all-dialogs.cpp dump-all-dialogs.h editgamedialog.cpp editgamedialog.h editrecorddialog.cpp editrecorddialog.h error.cpp error.h filebrowser-dialog.cpp filebrowser-dialog.h fluidsynth-dialog.cpp fluidsynth-dialog.h gui-manager.cpp gui-manager.h helpdialog.cpp helpdialog.h imagealbum-dialog.cpp imagealbum-dialog.h integrity-dialog.cpp integrity-dialog.h launcher.cpp launcher.h massadd.cpp massadd.h message.cpp message.h module.mk object.cpp object.h onscreendialog.cpp onscreendialog.h options.cpp options.h predictivedialog.cpp predictivedialog.h printing-dialog.cpp printing-dialog.h recorderdialog.cpp recorderdialog.h remotebrowser.cpp remotebrowser.h saveload-dialog.cpp saveload-dialog.h saveload.cpp saveload.h shaderbrowser-dialog.cpp shaderbrowser-dialog.h textviewer.cpp textviewer.h themebrowser.cpp themebrowser.h src/doors/syncscumm/scummvm/gui/themes/common-svg/button_load.svg button_options.svg button_play.svg checkbox_disabled.svg cursor-index.svg cursor.svg delbtn.svg editbtn.svg eraser.svg fastreplay.svg grid.svg groupbtn.svg list.svg logo.svg search.svg stopbtn.svg switchbtn.svg src/doors/syncscumm/scummvm/gui/themes/common/button_load.bmp button_options.bmp button_play.bmp checkbox_disabled.bmp cursor-index.bmp cursor-index_small.bmp cursor.bmp cursor_small.bmp delbtn.bmp editbtn.bmp editbtn_small.bmp fastreplay.bmp fastreplay_small.bmp grid.bmp groupbtn.bmp highres_layout.stx list.bmp lowres_layout.stx stopbtn.bmp stopbtn_small.bmp switchbtn.bmp switchbtn_small.bmp src/doors/syncscumm/scummvm/gui/themes/default.inc src/doors/syncscumm/scummvm/gui/themes/fonts-cjk/NotoSansJP-Bold.otf NotoSansJP-Regular.otf NotoSansKR-Bold.otf NotoSansKR-Regular.otf NotoSansSC-Bold.otf NotoSansSC-Regular.otf NotoSansTC-Bold.otf NotoSansTC-Regular.otf VL-Gothic-Regular.ttf version.txt src/doors/syncscumm/scummvm/gui/themes/fonts-imgui/MaterialSymbolsSharp.ttf version.txt src/doors/syncscumm/scummvm/gui/themes/fonts/GoMono-Bold-Italic.ttf GoMono-Bold.ttf GoMono-Italic.ttf GoMono-Regular.ttf LiberationMono-Bold.ttf LiberationMono-BoldItalic.ttf LiberationMono-Italic.ttf LiberationMono-Regular.ttf LiberationSans-Bold.ttf LiberationSans-BoldItalic.ttf LiberationSans-Italic.ttf LiberationSans-Regular.ttf LiberationSerif-Bold.ttf LiberationSerif-BoldItalic.ttf LiberationSerif-Italic.ttf LiberationSerif-Regular.ttf NotoNaskhArabic-Bold.ttf NotoNaskhArabic-Regular.ttf NotoSans-Bold.ttf NotoSans-BoldItalic.ttf NotoSans-Italic.ttf NotoSans-Regular.ttf NotoSansGeorgian-Bold.ttf NotoSansGeorgian-Regular.ttf NotoSansHebrew-Bold.ttf NotoSansHebrew-Regular.ttf NotoSansRunic-Regular.ttf NotoSerif-Bold-Italic.ttf NotoSerif-Bold.ttf NotoSerif-Italic.ttf NotoSerif-Regular.ttf README SourceCodeVariable-Roman.ttf ms_sans_serif.ttf system.ttf src/doors/syncscumm/scummvm/gui/themes/fonts/topaz/README.ScummVM topazLT.font topazLT.readme src/doors/syncscumm/scummvm/gui/themes/fonts/topaz/topazlt/8 src/doors/syncscumm/scummvm/gui/themes/fonts/version.txt src/doors/syncscumm/scummvm/gui/themes/gui-icons.dat residualvm.zip src/doors/syncscumm/scummvm/gui/themes/residualvm/THEMERC checkbox.bmp checkbox.svg checkbox_empty.bmp checkbox_empty.svg eraser.bmp logo.bmp logo_small.bmp radiobutton.bmp radiobutton.svg radiobutton_empty.bmp radiobutton_empty.svg remastered_gfx.stx search.bmp src/doors/syncscumm/scummvm/gui/themes/scummclassic.zip src/doors/syncscumm/scummvm/gui/themes/scummclassic/THEMERC classic_gfx.stx classic_layout.stx classic_layout_lowres.stx src/doors/syncscumm/scummvm/gui/themes/scummmodern.zip src/doors/syncscumm/scummvm/gui/themes/scummmodern/THEMERC checkbox.bmp checkbox_empty.bmp cursor-index.svg cursor.svg eraser.bmp logo.bmp logo_small.bmp radiobutton.bmp radiobutton_empty.bmp scummmodern_gfx.stx search.bmp src/doors/syncscumm/scummvm/gui/themes/scummremastered.zip src/doors/syncscumm/scummvm/gui/themes/scummremastered/THEMERC checkbox.bmp checkbox.svg checkbox_empty.bmp checkbox_empty.svg eraser.bmp logo.bmp logo_small.bmp radiobutton.bmp radiobutton.svg radiobutton_empty.bmp radiobutton_empty.svg remastered_gfx.stx search.bmp src/doors/syncscumm/scummvm/gui/themes/scummtheme.py shaders.dat translations.dat src/doors/syncscumm/scummvm/gui/unknown-game-dialog.cpp unknown-game-dialog.h updates-dialog.cpp updates-dialog.h widget.cpp widget.h src/doors/syncscumm/scummvm/gui/widgets/editable.cpp editable.h edittext.cpp edittext.h grid.cpp grid.h groupedlist.cpp groupedlist.h list.cpp list.h popup.cpp popup.h richtext.cpp richtext.h scrollbar.cpp scrollbar.h scrollcontainer.cpp scrollcontainer.h tab.cpp tab.h src/doors/syncscumm/scummvm/icons/count.ico scummvm.icns scummvm.ico scummvm.svg scummvm.xpm scummvm_legacy.icns src/doors/syncscumm/scummvm/image/ani.cpp ani.h bmp.cpp bmp.h cel_3do.cpp cel_3do.h cicn.cpp cicn.h codec-options.h src/doors/syncscumm/scummvm/image/codecs/bmp_raw.cpp bmp_raw.h cdtoons.cpp cdtoons.h cinepak.cpp cinepak.h cinepak_tables.h codec.cpp codec.h dither.cpp dither.h hlz.cpp hlz.h hnm.cpp hnm.h src/doors/syncscumm/scummvm/image/codecs/indeo/get_bits.h indeo.cpp indeo.h indeo_dsp.cpp indeo_dsp.h mem.cpp mem.h vlc.cpp vlc.h src/doors/syncscumm/scummvm/image/codecs/indeo3.cpp indeo3.h indeo4.cpp indeo4.h indeo5.cpp indeo5.h jyv1.cpp jyv1.h mjpeg.cpp mjpeg.h mpeg.cpp mpeg.h msrle.cpp msrle.h msrle4.cpp msrle4.h msvideo1.cpp msvideo1.h qtrle.cpp qtrle.h rpza.cpp rpza.h smc.cpp smc.h svq1.cpp svq1.h svq1_cb.h svq1_vlc.h truemotion1.cpp truemotion1.h truemotion1data.h xan.cpp xan.h src/doors/syncscumm/scummvm/image/gif.cpp gif.h icocur.cpp icocur.h iff.cpp iff.h image_decoder.h jpeg.cpp jpeg.h module.mk neo.cpp neo.h pcx.cpp pcx.h pict.cpp pict.h png.cpp png.h scr.cpp scr.h tga.cpp tga.h xbm.cpp xbm.h src/doors/syncscumm/scummvm/math/aabb.cpp aabb.h angle.cpp angle.h cosinetables.cpp cosinetables.h dct.cpp dct.h fft.cpp fft.h frustum.cpp frustum.h glmath.cpp glmath.h line2d.cpp line2d.h line3d.cpp line3d.h mathfwd.h matrix.h matrix3.cpp matrix3.h matrix4.cpp matrix4.h mdct.cpp mdct.h module.mk plane.cpp plane.h quat.cpp quat.h ray.cpp ray.h rdft.cpp rdft.h rect2d.cpp rect2d.h rotation3d.h sinetables.cpp sinetables.h sinewindows.cpp sinewindows.h squarematrix.h transform.h utils.h vector.h vector2d.cpp vector2d.h vector3d.cpp vector3d.h vector4d.cpp vector4d.h src/doors/syncscumm/scummvm/plugin.exp ports.mk rules.mk vcpkg.json src/doors/syncscumm/scummvm/video/3do_decoder.cpp 3do_decoder.h 4xm_decoder.cpp 4xm_decoder.h 4xm_utils.cpp 4xm_utils.h avi_decoder.cpp avi_decoder.h bink_decoder.cpp bink_decoder.h binkdata.h coktel_decoder.cpp coktel_decoder.h dxa_decoder.cpp dxa_decoder.h flic_decoder.cpp flic_decoder.h hnm_decoder.cpp hnm_decoder.h src/doors/syncscumm/scummvm/video/mkv/AUTHORS.TXT LICENSE.TXT PATENTS.TXT README.libwebm mkvparser.cpp mkvparser.h webmids.h src/doors/syncscumm/scummvm/video/mkv_decoder.cpp mkv_decoder.h module.mk mpegps_decoder.cpp mpegps_decoder.h mve_decoder.cpp mve_decoder.h paco_decoder.cpp paco_decoder.h psx_decoder.cpp psx_decoder.h qt_data.h qt_decoder.cpp qt_decoder.h qtvr_decoder.cpp smk_decoder.cpp smk_decoder.h subtitles.cpp subtitles.h theora_decoder.cpp theora_decoder.h video_decoder.cpp video_decoder.h src/doors/syncscumm/test/boot_bass.sh fetch_bass.sh
    Log Message:
    syncscumm: a ScummVM point-and-click adventure door

    Vendors ScummVM v2026.3.0 and gives it a Synchronet backend, so a BBS can
    offer Beneath a Steel Sky, Flight of the Amazon Queen, Lure of the
    Temptress and Drascula -- with commercial SCUMM titles sysop-supplied.

    Unlike the other game doors here, this one needs no seam carving: ScummVM publishes a porting API, so the door is an OSystem backend rather than a patched engine. Everything we write lives in door/; the vendor tree takes
    one configure case and a symlink.

    The tree is pruned to what a door needs -- five engines, the null
    platform, curated engine data -- and built out of tree, with the version
    string pinned so it reports the ScummVM release rather than whatever the
    host repo happens to be. PROVENANCE.md records what was removed and how to reproduce it.

    The graphics manager keeps the real surface and palette that upstream's
    null manager throws away, and dumps frames as PPM under an env gate. That
    is not the terminal path -- it is what makes a headless boot test possible before there is a terminal path at all, and the acceptance test boots BASS
    and counts frames.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Fri Jul 17 02:57:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/a57bb304a910bb784e1680f1
    Added Files:
    docs/superpowers/plans/2026-07-16-syncscumm-m4.md docs/superpowers/specs/2026-07-16-syncscumm-m4-audio-design.md
    Log Message:
    syncscumm: M4 audio design and plan

    The design for streaming ScummVM's mixed audio to SyncTERM, and the plan
    that implements it.

    Recorded here because the design was wrong in a way worth keeping: it
    specified the manager's existing stream_chunk() entry point AND arming an
    idle notification to catch an underrun, and those contradict -- that entry point never emits one, hardcodes its own channel, and has neither a
    cushion nor backlog accounting. It cites syncretro for the approach and
    then borrowed a different door's transport. The amendment records the correction and why the extraction is the answer instead.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Fri Jul 17 02:57:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/cb4f1d5351dccdd0620ce338
    Added Files:
    docs/superpowers/plans/2026-07-16-syncretro-lobby-enter-sound.md
    Log Message:
    docs: implementation plan for the SyncRetro lobby enter_sound

    Two tasks against the approved design: the call plus the [lobby] read that feeds it (with the headless harness's console stubs), then the key documented in both consoles' example inis.

    Records why the happy path isn't automated -- driving it through the harness would mean writing a [lobby] key into the live syncretro.ini the harness
    reads, and a test must not edit a sysop's config -- so it's a live check the user runs.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sat Jul 18 03:02:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/be97104307be30aa741cd56a
    Added Files:
    docs/superpowers/plans/2026-07-17-syncscumm-m3.md
    Log Message:
    syncscumm: implementation plan for M3, keyboard and mouse input

    Seven tasks: extract syncconquer's SGR mouse handshake into a shared termgfx/mouse module, refactor syncconquer onto it (behaviour-identical),
    then wire syncscumm -- enable + parse mouse into a game-coordinate event
    FIFO, deliver mouse events (with warpMouse) in pollEvent for a playable-
    mouse checkpoint, decode keyboard via termgfx keymode, deliver key events,
    and a live BASS acceptance pass on SyncTERM and Foot. Follows the M3 design spec committed alongside.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sat Jul 18 22:07:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/02b58d3a514d48dd3e063df0
    Added Files:
    docs/superpowers/plans/2026-07-18-syncscumm-m5.md docs/superpowers/specs/2026-07-18-syncscumm-m5-multititle-queen-design.md src/doors/syncscumm/deploy.js src/doors/syncscumm/test/test_sst_datadir.c
    Modified Files:
    src/doors/syncscumm/build.sh src/doors/syncscumm/door/sst_io.c sst_io.h syncscumm.cpp src/doors/syncscumm/test/unit_sst_io.sh
    Log Message:
    syncscumm: serve multiple titles, choosing Talkie/Floppy data by audio

    The ScummVM door backend gains everything needed to host more than one
    game and to serve each session the game data it can actually use:

    - The game-data path is rewritten before ScummVM sees it. A session
    that can play digital audio is pointed at the "talkie" (speech) data
    set; a silent session is pointed at "floppy" (text captions),
    falling back to the base directory when neither subdir exists. When
    no --path is given at all, the door defaults it to its own working
    directory.

    - Per-user save and config directories (--savepath, -c) are created
    before launch, so two nodes never race one save slot and each user
    keeps their own scummvm.ini.

    - The build links libmad. ScummVM's freeware talkie builds store
    speech as MP3, which stays silent without it; forcing --enable-mad
    fails the build loudly rather than shipping a door that plays music
    but no dialogue.

    - deploy.js content-hash-copies the built binary into each
    xtrn/sync<game> package directory, and a datadir-selection unit test
    covers the Talkie/Floppy choice.

    This is the groundwork for bundling additional ScummVM titles, each in
    its own xtrn/ package sharing the single binary.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sun Jul 19 15:25:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/9429fe22ccb84bbae154bfb1
    Added Files:
    docs/superpowers/plans/2026-07-19-libtermgfx-termio-extraction.md
    Log Message:
    docs: implementation plan for the libtermgfx termio extraction

    Step-by-step plan for sub-project 1: move syncscumm's sst_io.c terminal-I/O orchestration into a shared termgfx_termio module, byte-identical. Seven
    tasks: design the shared API header (surveyed against all doors) -> capture
    a golden wire-byte baseline -> git-mv + rename the module -> wire syncscumm onto it -> migrate the unit tests -> verify (boot tests unedited + wire-byte diff + portability) -> live confirm. Behavior identity is gated on the wire-byte diff.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sun Jul 19 23:59:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/a31b026ed69f1695309dcda2
    Added Files:
    docs/superpowers/plans/2026-07-19-termgfx-truecolor-present.md
    Log Message:
    syncrpg: add the M0 plan (termgfx truecolor present path)

    First executable plan of sub-project 2: add termgfx_termio_present_rgbx (a 32-bit XRGB truecolor path -- the sixel tier quantizes internally, the JXL
    tier encodes the RGB directly) and move the median-cut quantizer into the shared lib as termgfx_quant, gated by syncscumm's boot/unit/PPM regression
    (not raw sixel bytes). The door (M1-M4) is planned separately once M0 lands
    and EasyRPG is vendored.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Tue Jul 21 01:49:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/3525f27515678eeef5cbcd2b
    Added Files:
    docs/superpowers/plans/2026-07-20-syncrpg-door.md
    Log Message:
    syncrpg: add the M1-M4 door implementation plan

    Plan for the EasyRPG door built on the M0 truecolor path: vendor + prune EasyRPG (M1 T1-2), the BaseUi_Synchronet backend + video via present_rgbx
    (M1 T3-4), keyboard mapping (M2), audio via GenericAudio -> termgfx_stream (M3), and package/live (M4) -- a portable getdata.js for the pinned rmarchiv plain-zip, per-user saves, install-xtrn, and a sysop play-test. Carries the rgbx-retain and tokened-URL items forward as explicit tasks.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Tue Jul 21 21:53:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/954bdb7c6ffed676e34762d9
    Added Files:
    docs/superpowers/plans/2026-07-21-door-idle-detection.md
    Modified Files:
    docs/superpowers/specs/2026-07-21-door-idle-detection-design.md
    Log Message:
    doors: implementation plan for idle detection; -i/.ini as base contract

    Adds the phase-1 plan: the shared termgfx/idle clock with its unit test, the game_lobby.js parse_duration() default-unit argument, and adoption in two reference doors -- syncretro for the lobby path and syncconquer for the lobby-less one. The remaining three doors and syncscumm get their own plans; syncscumm needs both a session-deadline concept and an overlay primitive
    built in shared termio code, which is not a task so much as a project.

    Also corrects how the spec framed configuration. The first draft made the
    JS lobby the primary source of the timeout and the door's own ini a
    fallback for lobby-less doors. That is wrong for these doors: they run
    under other BBS software via DOOR32.SYS, where no Synchronet JS exists at
    all, so -i and the [idle] ini section have to be the base contract on every door and the lobby an additional Synchronet-only layer whose one added
    value is evaluating the exempt ARS.

    The distinction has teeth for testing. A lobby always emits -i, including
    -i0 for an exempt user, so on a Synchronet install the ini fallback is
    never exercised -- a broken fallback would leave every non-Synchronet
    install silently without a timeout and nothing on the lobby path would
    reveal it. The plan therefore verifies the no-lobby launch explicitly, and records the ordering requirement that a door must read its ini before it
    arms the clock.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Wed Jul 22 20:38:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/940ee3ba6ea9c959e02c5a61
    Added Files:
    docs/superpowers/plans/2026-07-22-sixel-subsetting-measurements.md
    Log Message:
    docs: sixel subsetting byte-identity proof + README sweep

    Proves (via a real A/B harness against a pre-USED build of sixel.c)
    that SIXEL_PAL_FULL/NONE output stays byte-identical to the legacy
    encoder, so SyncTERM and any door left on FULL/NONE are untouched by
    the palette-subsetting change. Also sweeps the other doors' READMEs
    for stale palette/dirty claims -- both grep hits are still accurate
    or unrelated, so no README changes were needed. Live cross-title
    metrics (Steps 2-3) are left as a pending template for the maintainer's
    manual pass with real ROMs/terminals.

    Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sun Jul 26 23:41:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/aa15a8adedc528dd9b1374fb
    Added Files:
    docs/superpowers/plans/2026-07-26-syncconquer-multiplayer.md
    Modified Files:
    src/doors/syncconquer/CMakeLists.txt DEFERRED.md PROVENANCE.md src/doors/syncconquer/vanilla/redalert/mplayer.cpp src/doors/syncconquer/vanilla/tiberiandawn/mplayer.cpp
    Log Message:
    syncconquer: take Network off the multiplayer menu until it can work

    The engine cannot find peers from inside a door. Its UDP transport binds
    one fixed global port and sends to every peer at that same port, so two
    nodes on one host collide on the bind -- the common case, since most
    BBSes run their nodes on a single machine -- and it announces games by broadcast, which does not reach a node on another host. Choosing Network
    could therefore only fail, so the button is suppressed and the menu
    offers Skirmish alone.

    Skirmish lives in that same menu and is the lone caller's whole game, so
    the menu entry itself stays; only the network option goes. The door
    defines SYNCCONQUER_NO_NETGAME and the vendored edit widens the existing NETWORKING gate on ipx_avail, which drops the button through the engine's
    own two-button path; a second line moves Cancel into the vacated slot so
    the dialog has no hole. Deleting the two definitions restores it.

    Also corrects the deferred-features note claiming classic Tiberian Dawn
    has no skirmish mode. The vendored engine carries one for both titles,
    and its computer opponents are the Red Alert base-building AI --
    USE_RA_AI is defined unconditionally in the Tiberian Dawn sources, so
    syncdawn has been playing against that AI all along.

    The plan file records what intra-BBS multiplayer will take: the game's
    own lobby is kept (it already handles rosters, sides, scenario and rules,
    and the CRC checks lockstep depends on), and only peer discovery is
    added, from a registry the doors publish under data/ with the bind and advertise addresses a multi-host BBS needs.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian L@VERT to Git commit to main/sbbs/m on Sun Aug 2 22:35:00 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/37d1784630f6855fb60a8b95
    Added Files:
    docs/superpowers/plans/2026-08-02-syncretro-save-restore.md
    Log Message:
    Plan: SyncRetro suspend and resume

    Six tasks implementing the design committed alongside it. Task 1 fixes the snapshot staleness key and pins it to one golden value that both halves
    assert, because the two computing it differently is the failure the design
    is exposed to and it reports no error: the picker would mark a cartridge resumable and the door would then decline to resume it. Task 2 gives the
    door the flag, the write and the restore; tasks 3 and 4 give the lobby the decision, the picker marks and the cabinet toggle; task 5 ships the two switches; task 6 documents and verifies.

    Carries the live-system constraints this repository imposes, since it is a running BBS: build.sh deploys through a symlink and must not be run, and exec/load and two packages' lobby.js are live the instant they are saved.

    Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net