Subj : src/doors/syncretro/syncretro.h syncretro_config.c syncretro_input.c s To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Fri Jul 10 2026 02:22:18 https://gitlab.synchro.net/main/sbbs/-/commit/3a041360e8df4a3732cb5743 Modified Files: src/doors/syncretro/syncretro.h syncretro_config.c syncretro_input.c syncretro_io.c xtrn/syncivision/syncretro.ini Log Message: syncretro: sweep the disc for paddle carts, so a held key moves the paddle Brickout!'s paddle moved one step per press and then stopped dead, however long the key was held. Nothing in the input path was at fault: the disc was doing exactly what the hardware does. The Intellivision disc is a 16-position ring, and a paddle cart steps its paddle once per CHANGE of the disc's value, in the direction of that value's horizontal component. Driving the core directly and parking the disc at each detent in turn shows it plainly: detents 0 through 3 push the paddle +3.9 px apiece, detent 4 (90 degrees, purely vertical) moves it not at all, detents 5 through 12 pull it -3.9 px apiece. A held arrow key is a CONSTANT disc value, so the paddle takes its one step and waits. Four keys cannot rotate a disc. So a cart named in the new [disc] rotate list no longer pins the disc while Left or Right is held: the door alternates between two adjacent detents on that side -- 0 and 22.5 degrees for right, 180 and 202.5 for left -- every fourth frame. Each toggle is a fresh disc value whose horizontal component points the same way, so the paddle steps again and again and the travel is smooth. The disc rides the LEFT analog stick, which FreeIntv reads as the disc and which this door left idle (the right stick carries the keypad); the d-pad's own Left/Right bits are withheld while sweeping, or the core folds them back into the disc and fights it. Measured against FreeIntv with Brickout!, from one starting position over 120 frames: holding the d-pad travels 2 px, pulsing the d-pad bit travels 57 px, and alternating adjacent detents travels 115 px. The door's own vectors and cadence give +115.4 px holding Right and -116.4 px holding Left. One toggle per four frames beats both two and six -- toggle faster and the core samples past the change, slower and there are simply fewer steps. Only the listed carts sweep. Everywhere else a held direction pins the disc, as the console always did, because that is what Astrosmash and Utopia want. The matcher is a case-insensitive substring test against the cartridge's FILENAME, since dumps carry year and publisher markers and a sysop should write only the title. Also completes the keytrace diagnostic with a capture of the raw OUTBOUND stream (keytrace.out, same switch): what the door actually sent, framed for replay. Reconstructing that stream by hand cost three wrong theories about a phantom key-release that turned out never to exist. Co-Authored-By: Claude Opus 4.8 (1M context) --- þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net .