https://gitlab.synchro.net/main/sbbs/-/commit/c3abb18b543f19fd531ed7a0
Modified Files:
src/doors/syncscumm/syncscumm.example.ini src/doors/termgfx/termgfx_termio.c
Log Message:
termgfx: repaint under the stats bar, show dr%, add an aspect key
Three things about the Ctrl-S row and what sits under it.
Toggling the bar OFF left a black band across the bottom of the picture
until something happened to change those pixels. Erasing the row assumed
it was the reserved one, which it is on the sixel tier -- but the JXL tier reserves nothing, so there the bar is drawn straight over the image and
ESC[K takes game pixels with it. Nothing repainted them either: an
unchanged frame is deduped, and the dirty path only patches cells the GAME changed, which those are not. Invalidate the last-frame cache instead, so
the next present is a whole frame. One repaint per toggle; on the sixel
tier the row is outside the image and correctly stays blank.
The bar now carries dr%, the share of frames patched rather than
repainted, over the same rolling window as fps and KB/f -- the sibling
doors have shown this for a while and it is the number that says whether
the dirty path is doing anything on this content. Three states, as
elsewhere: a percentage, "n/a" when there is no cell grid to place a box
in, and "-" before the first window closes. A lifetime average is the
wrong readout, since a session's early frames (with nothing to diff
against) drag it down forever and a static screen can never move it.
Finally, an "aspect" ini key: square (the default, and what this module
has always drawn), 4:3, or a plain decimal. These games are VGA mode 13h,
whose art was drawn on a 320x200 grid for a 4:3 monitor -- pixels that
were never square, which is what ScummVM's own aspect-ratio correction
undoes. Whether a given title looks right that way is a judgement rather
than a fact: Flight of the Amazon Queen was compared side by side and
looked better square, and nothing else has been checked. So the shape is
a sysop's choice per install, with today's behaviour as the default.
It has no effect on SyncTERM, which applies an aspect of its own per
video mode (conio/vidmodes.c) and cannot be asked which way it is set, so correcting here as well would correct twice. The gate is the terminal's identity rather than the tier, because a SyncTERM without JXL still lands
on the sixel path.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)