79 lines
3.2 KiB
Plaintext
79 lines
3.2 KiB
Plaintext
|
|
||
|
______ ____ ______ _____ ______
|
||
|
| ____| | _ \| ____| / / _ \| ____|
|
||
|
| |__ _ __ ___ ___| |_) | |__ / / |_| | |__
|
||
|
| __| '__/ _ \/ _ \ _ <| __| / /| _ | __|
|
||
|
| | | | | __/ __/ |_) | |____ / / | | | | |
|
||
|
|_| |_| \___|\___|____/|______/_/ |_| |_|_|
|
||
|
|
||
|
|
||
|
ATI mach64 driver implementation notes.
|
||
|
|
||
|
|
||
|
|
||
|
This driver is currently a limited implementation of VBE/AF for mach64.
|
||
|
It is not very well tested and may not work for you (if it doesn't,
|
||
|
give me your system description and a description of the problems).
|
||
|
It has a built-in table of known VESA modes, as well as all non-VESA
|
||
|
modes that the mach64 BIOS supports, but currently the non-VESA mode
|
||
|
setting doesn't work properly, so only VESA modes are enabled. However,
|
||
|
it is able to take advantage of extra VESA modes provided by tools like
|
||
|
Scitech Display Doctor.
|
||
|
|
||
|
It supports 8, 15, 16, 24, and 32 bits per pixel, if available. It
|
||
|
currently provides acceleration for these primitives:
|
||
|
|
||
|
DrawScan()
|
||
|
DrawPattScan()
|
||
|
DrawRect()
|
||
|
DrawPattRect()
|
||
|
BitBlt()
|
||
|
SrcTransBlt() (not in 24bpp)
|
||
|
DrawLine() (not in 24bpp)
|
||
|
|
||
|
These accelerated functions are planned and may be provided in the
|
||
|
future:
|
||
|
|
||
|
DrawTrap() (actually the mach64 seems to be able to draw entire
|
||
|
polygons, too bad there isn't a DrawPoly() in VBE/AF;
|
||
|
DrawTri() and DrawQuad() may be possible, but since
|
||
|
they are not widely used, who cares about them)
|
||
|
PutMonoImage() (using HOST transfer, perhaps)
|
||
|
BitBltSys() (using HOST transfer)
|
||
|
SrcTransBltSys() (same here)
|
||
|
SetCursor()
|
||
|
SetCursorPos()
|
||
|
SetCursorColor()
|
||
|
ShowCursor()
|
||
|
|
||
|
This driver is not portable to anything but DOS+DPMI, since it uses
|
||
|
DPMI to communicate with the mach64 BIOS.
|
||
|
|
||
|
Both linear and banked modes are supported, but SetBank32 is in the
|
||
|
current (sloppy) implementation not fully relocatable, but this should
|
||
|
rarely be a problem since linear modes are much more fun anyway.
|
||
|
|
||
|
If you want to have 32bpp and 1600x1200 modes without having to
|
||
|
install Scitech Display Doctor, define REFUSE_VESA and try to find out
|
||
|
why the mach64 mode settings doesn't work properly, then uncomment the
|
||
|
appropriate extra modes, and report to me.
|
||
|
|
||
|
Virtual heights above screen height (for hardware scrolling) may not
|
||
|
work properly above 8bpp, I'm not sure why yet, but it looks like it
|
||
|
could be a bug in Allegro.
|
||
|
|
||
|
DrawLine does not seem to be rounded exactly like Allegro's, which
|
||
|
becomes evident when clipping.
|
||
|
|
||
|
I'm not sure how to do patterns. It is possible to load an 8x8 mono
|
||
|
pattern into the mach64 registers and use it, but I'm not sure how,
|
||
|
but I made a guess and implemented that, and it seems to work, but
|
||
|
I'm not totally sure. As for color patterns, I have just disabled
|
||
|
them since I haven't figured out how to do those yet. It would be
|
||
|
possible to use Shawn's technique; to bitblt them from offscreen VRAM,
|
||
|
but use TILE_X enabled for automatic tiling, but it doesn't seem
|
||
|
worthwhile at present, if there is a better way.
|
||
|
|
||
|
Ove Kaaven <ovek@arcticnet.no>
|
||
|
|