VOGONS


VGA behavior when "scrolling over the edge"

Topic actions

Reply 20 of 23, by keenmaster486

User metadata
Rank l33t
Rank
l33t
mkarcher wrote on 2023-05-03, 17:59:

That strategy works perfectly. That's exactly the "magic scrolling technique ID software invented for Commander Keen", IIRC they called it "adaptive tile refresh".

VGA cards with more than 256 KBytes generally have some "super vga enable" bit in the chipset. As long as this bit is clear, you definitely get wrap-around at 256KB.

Sorry to necropost, but I want to add on to this thread as it's the right place for this discussion.

mkarcher, do you know anything else about this "Super VGA enable" bit that usually exists on SVGA cards? Was this standardized at all or was it manufacturer dependent? Just wondering if this could be used to get around having to copy the entire screen at the 256K boundary.

World's foremost 486 enjoyer.

Reply 21 of 23, by mkarcher

User metadata
Rank l33t
Rank
l33t
keenmaster486 wrote on 2026-01-27, 19:05:

mkarcher, do you know anything else about this "Super VGA enable" bit that usually exists on SVGA cards? Was this standardized at all or was it manufacturer dependent? Just wondering if this could be used to get around having to copy the entire screen at the 256K boundary.

This was not standardized at all, and as we know from the discussions around Keen's infinite scrolling, there is a very prominent SVGA chip that does not have this enable bit, which is the Tseng Labs ET4000. The "SVGA compatibility" option in Command Keen 4 and newer enables the "entire screen copy" at the 256K boundary.

Reply 22 of 23, by keenmaster486

User metadata
Rank l33t
Rank
l33t

I must have missed that piece of info about the ET4000. Thanks for the info.

World's foremost 486 enjoyer.

Reply 23 of 23, by clb

User metadata
Rank Oldbie
Rank
Oldbie

Yeah, there were a couple of SVGA cards that dropped the ball on VGA compatibility:
- Tseng ET 4000 (e.g. Diamond SpeedSTAR 24)
- Tseng ET 4000/W32p
- Tseng ET 6000
- Trident TVGA 8800CS (e.g. on Trident TVGA8816CSC2 and ASKA ZyMOS POACH 51)
- Alliance Semiconductor ProMotion 3210 (e.g. as seen on MiroVideo 12PD)

I believe the Tsent ET3000 also had the problem, though haven't been able to verify.

Trident recognized the compatibility issue, and fixed their later Trident 8900 card. Likewise for Alliance Semi, they fixed the VGA scrolling issue on their later ProMotion 6420 card.

Tseng Labs shines on the hall of shame, they very very likely saw the bug since Keen was so famous for leveraging it, but didn't fix the issue even for their later cards. ET3000AX came out sometime in 1990-1991 I believe, and ET6000 was already a PCI accelerator card in 1996, still with that compatibility bug. So naughty. 😀

https://oummg.com/manual/adapters.html contains testing from the above cards (with notes on KEEN4 / KEEN5 or SCROLL demos)

If you check the internal I/O register space for many SVGA cards, they have a specific bit for the scroll wraparound mode, to control whether to wrap at 256KB mark, or at full memory mark. Typically if you used INT10h SVGA or VESA routines to set up high resolution video modes, then the card internally and automatically would flip that bit. The bit was only needed to manually flip e.g. when writing custom code to access more than 256KB in a regular VGA mode, like Mode 13h.

In which case, one would also need to access custom vendor specific I/O register space to set the extra bits for the Display Start register value.