[GEM Development] FreeGEM drivers updated
John Elliott
jce at seasip.demon.co.uk
Mon Mar 11 17:22:43 PDT 2013
A little while agao, I wrote:
> And thirdly, I wrote the driver to
> present the 256-colour linear framebuffer as eight mono planes, and the
> transformation to and fro slows things down.
I've now worked out a way round that, and updated the driver packs at
<http://www.seasip.info/Gem/drivers3.html> and
<http://www.seasip.info/Gem/drivers4.html> with the result. It's been
done as a new variant of the 1024x768x256 driver called SDVX89.VGA
(or SDVX810.VGA in the GEM/4 version). I've only tested it unscientifically
on DOSBox, but it feels a lot faster.
The way it works is that the screen is still presented as eight planes
(GEM insists on there being planes) but instead of a 'plane' being defined
as a specific bit from every byte, it's defined as a specific byte from
every group of eight bytes. That cuts out an awful lot of logic operations.
As an example: At A000:0003 and A000:A004 are two bytes, abcdefgh and
ijklmnop. In the old and new mappings, these are stored as:
old new
plane 0 ---ai--- --------
plane 1 ---bj--- --------
plane 2 ---ck--- --------
plane 3 ---dl--- abcdefgh
plane 4 ---em--- ijklmnop
plane 5 ---fn--- --------
plane 6 ---go--- --------
plane 7 ---hp--- --------
Unless I hear bad reports of the new blitting engine / data format, at
some point I'll migrate all the other 256-colour drivers to use it.
(Also: A bug has been fixed that could cause the 256-colour drivers to
crash when outputting text).
--
John Elliott
More information about the gem-dev
mailing list