https://gitlab.synchro.net/main/sbbs/-/commit/7bc25a9c77efba39dc93bf95
Modified Files:
src/doors/syncdoom/v_video.c
Log Message:
syncdoom: tolerate widescreen TITLEPIC/INTERPIC instead of I_Error
A door that had been working started dying at the title screen with
"Bad V_DrawPatch x=0 y=0 patch.width=560 patch.height=200" (reported via
IRC). Cause: the WAD carries WIDESCREEN art -- 560x200 (or wider) TITLEPIC/INTERPIC/help lumps, which Freedoom >= 0.13 and the Unity-port
IWADs now ship. Vanilla V_DrawPatch's RANGECHECK I_Error's out on any
patch wider than the 320-wide screen, aborting the door (a Windows
message box) the moment such a screen is drawn.
Make V_DrawPatch / V_DrawPatchFlipped tolerate over-wide patches: a
fullscreen draw (x == 0) of a patch wider than SCREENWIDTH is
re-centered and the columns hanging off either edge are clipped
(skip x < 0, stop at x >= SCREENWIDTH); V_MarkRect is clamped to the
screen. Vanilla-size patches (width <= SCREENWIDTH) take the exact old
path with the original RANGECHECK intact, so normal WADs are unchanged.
The classic 320-wide center of a widescreen pic is what shows -- correct
for our 4:3 320x200 framebuffer.
Reproduced with a synthetic 560x200 TITLEPIC PWAD: pre-fix the door
exits with the Bad V_DrawPatch error; post-fix it renders the title
screen and runs. Verified under MSVC only (Windows) -- the change is
plain portable C.
Co-Authored-By: Claude Fable 5 <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net