mallard wrote:
Not sure where you get the idea that using "VGA directly" will get you anything beyond 8-bit colour or access to anything beyond 256KB of VRAM
Korona wrote:
Anything sophisticated compared to today's standards just doesn't fit into the 256KiB.
VGA cards were not limited to 8-bit or 256KiB. I still have a card somewhere in the attic with 512KiB. It's a Realtek or Trident if I remember correctly. The problem was all manufacturers had their own standards, actually this lead to VESA (VGA cards supported SVGA modes years before VESA). RBIL still has tables of pre-VESA era for Video BIOS.
Korona wrote:
So, do those VBE-based DOS games do VBE page flipping? How do they avoid the latency of writes to the ISA/PCI bus?
Some cards supported double buffering. With EGA you can select whether to display B0000 or B8000 on screen in a standard way, unfortunately on VGA cards this wasn't standardized, but most card supported a switch between A0000 and B0000.
Old games did not care about the bus latency either, because the main issue was back then
bank switching. This is a procedure selecting which 64KiB you want to access at A0000-AFFFF from the total VGA RAM. Using VBE BIOS int 10 for that is terribly slow. Therefore VESA were mostly used in strategic and adventure games where big FPS was not a requirement. See Settlers II, Little Big Adventure from the 90's etc. Many games have also included "drivers" for the popular cards, these were just a bank switch functions really, not real drivers. Back in the days I've reverse engineered many of those routines, they used different VGA registers. I remember my favourite was Realtek VGA card as it only needed a simple "outb SPECVGAPORT, banknum".
This limitation was overcome by the introduction of the Linear Frame Buffer, where the whole screen area (not just 64k) was mapped at a different location than A0000, hence rendering bank switching unnecessary.
Cheers,
bzt