This patch adds basic support for Tseng ET3000 and
Tseng ET4000 SVGA chipset. It also allows to run DOSBox
in "pure VGA" mode with no detectable SVGA hardware.
This implementation is rather incomplete but both new
chipsets pass detection, correctly configure banked
memory, support proper video modes. Some demos that
require high register-level compatibility will not work
but simpler apps seem to work fine. Tested with Deluxe
Paint IIe (of particular interest is Gallery app that
does not support S3 or VESA, it only supports
ET3000), multiple Legend Entertainment games.
Chipset is configurable in dosbox.conf. New section has
been added:
[vga]
svgachipset=tseng et4000
videoram=512
If this section is missing or incomplete, S3 is
selected (identical to the current functionality).
videoram setting is currently supported only for ET4000
(ET3000 had very quirky implementation and I did not
want to break S3 just yet).
Disclaimers:
1. I haven't submitted any patches to SF for quite a
long time, my skills in that respect are rusty. If I
messed up, just let me know.
2. I only used VC.NET configuration for all testing. It
should build with GCC but there is no 100% guarantee
until somebody tests it. I haven't try to fix VC6 --
that config seems to be pretty broken right now.
3. The diff is made against daily CVS drop 20050427. It
may not work against later drops.
Questions, comments:
in forum or vasyl [at] pacbell [dot] net
Logged In: YES
user_id=352450
Updated the patch to match current CVS, there were a few
changes (mostly from another one of mine) that could cause
some issues.
There is one unsolved mystery at this point: there is
sufficient evidence that Tseng chipsets had non-standard
chain4 implementation. Current CVS supports that but I did
not enable it in this version yet -- I am trying to get hold
of the original hardware to make absolutely sure that it was
the case.
Logged In: YES
user_id=352450
Uploaded fixed version. For some reason two files (int10.h
and int10.cpp) got stuck from the previous update. Broken
version has been removed.
Logged In: YES
user_id=352450
Finally got mystery of chain4 on Tseng chipsets solved. So,
ET3000 is completely VGA compatible but ET4000 is not.
Verified on the real hardware. Paradise uses compatible
model; S3 starts in compatible model but can be switched to
incompatible by writing to CRTC port 31h. Incidentally, this
explains why ET4000 had the fastest mode 13h at the time.
Also, added "Tseng" signature to BIOS RAM area. It is not
documented anywhere but I've found at least two games that
look for it -- Drive-In cannot find any Tseng chipset
without signature, and New Age Warrior has troubles finding
ET3000. Fixed.
I am using different version of patch tool this time. Let me
know if anything breaks.
Logged In: YES
user_id=352450
Updates:
- CVS integration (resolving conflicts with yet another my
patch);
- Cleaned up VGA and EGA memwrap logic, a little faster and
a lot more readable;
- Testing my new process of handling multiple patches on
local system: depending how well it works either this patch
is botched or all following patches will be significantly
less prone to wrong file syndrome.
Logged In: YES
user_id=352450
CVS integration -- it has been a while so there were a few
conflicts. No changes.
Logged In: YES
user_id=352450
Updated the patch -- some patching program were getting
confused by multiple changes in paging.*. No functional changes.
Logged In: YES
user_id=352450
New version, plays with current CVS nicely. All
functionality of the previous version is preserved, a lot of
things cleaned up, S3 is a complete driver of its own. There
is even some extra functionality for those who do their own
builds: define symbol C_VGARAM_CHECKED to 0 to remove video
memory overrun protection (most games run fine without it
and current CVS has very little of it but WHATVGA crashes
left and right). You can also use C_SVGA_S3, C_SVGA_TSENG,
or C_SVGA_PARADISE set to 0 to deadlink SVGA drivers --
useful for builds that care about executable size.
I've tested most usual suspects and everything seems to run
fine but I would not be surprised if some bugs crawled in in
this version. Post all bug reports on VOGONS forums, as usual.
There are a few glitches in rarely used S3 video modes (text
mode sizes are incorrect, some "superEGA" modes look odd), I
haven't attempted to fix those yet. A couple of PVGA1A and
ET3K modes look wrong in WHATVGA but I am still not
convinced that it not WHATVGA bug. Pure VGA mode does not
work in the latest version of WHATVGA -- known bug in WHATVGA.
Logged In: YES
user_id=352450
Refreshed with the newest CVS changes. Fixed video codec
files accidentally marked for removal in the last version.
Logged In: YES
user_id=352450
Small update -- forgot to remove debug_gui.cpp change that
should not be there.
Logged In: YES
user_id=352450
Yet another small update -- the previous version broke
32-bit color modes. Apparently, writing to ATTR reg 0x13 has
a dependency on video mode been completely decided. In CVS,
the mode gets decided as a side effect when a value is
written to CRTC reg 0x67 (S3 only). That got moved to driver
code and as a result pel panning was initialized to 1
instead of 0 in some modes. Simple workaround works for now,
still better than the old reliance on an obscure side effect.
Logged In: YES
user_id=352450
Another day, another update. A recent change to CVS caused
minor conflict in int10_vesa.cpp.
Logged In: YES
user_id=352450
Sync to the current CVS. A few changes/fixes this time:
- fixed long-standing bug that screen could become garbled
after leaving SVGA mode (did not clear extended registers);
- added some implementation for clock select functionality
in Tseng and PVGA drivers. Not sure if it really improves
anything but it was on my TODO list for quite some time;
- updated year on new files.
Logged In: YES
user_id=352450
Fixed accidental removal of .rc file in the previous
version. No idea how that happened.
Logged In: YES
user_id=352450
Refreshing against current CVS.
Logged In: YES
user_id=352450
Another refresh.
Logged In: YES
user_id=352450
Updates and bug fixes. See forum for details
Logged In: YES
user_id=352450
Another update, works with current CVS.
Logged In: YES
user_id=352450
Originator: YES
Fix for broken PCjr.
File Added: dosbox-svga-patch-20070106.diff
Logged In: YES
user_id=352450
Originator: YES
Update, fixing some conflicts with current CVS.
File Added: dosbox-svga-patch-20070109.diff
Logged In: YES
user_id=352450
Originator: YES
Yet another update. Minor change in int10_modes.cpp triggered a conflict.
File Added: dosbox-svga-patch-20070114.diff
Logged In: YES
user_id=352450
Originator: YES
Update. There was a major change to the way video memory is handled in vga_memory/vga_draw. That required significant modifications to the patch. It is very possible that there are some regressions. Please test and report in VOGONS forum.
File Added: dosbox-svga-patch-20070131.diff
Logged In: YES
user_id=352450
Originator: YES
A few fixes this time.
1. The first line was drawn incorrectly when it was crossing video memory wrap boundary. This was a regression, some functionality was missing after the last big change. Test case: Commander Keen 7.
2. Tseng ET3000 uses incompatible chain4 after all (finally got properly functioning hardware to test).
File Added: dosbox-svga-patch-20070301.diff
Logged In: YES
user_id=352450
Originator: YES
Minor update so it compiles against CVS once again. One change in render_scalers.h was conflicting, also one line change in int10_modes.cpp needed to be propagated to vga_s3.cpp. At the moment there is a compilation glitch on Win32 -- if serialport.cpp does not compile, replace "#include <windows.h>" with "#include <winsock2.h>" in directserial_win32.h. This is completely unrelated to my patch and is likely to be fixed soon so I did not put it as a change into my patch file.
File Added: dosbox-svga-patch-20070518.diff
Logged In: YES
user_id=352450
Originator: YES
Update -- there were changes to vga_s3.cpp and vga_seq.cpp that could cause merge conflicts. Also, there was an old bug in patched vga_s3.cpp that was preventing reads from sequencer from working. The previously mentioned issue with winsock is already fixed in CVS.
File Added: dosbox-svga-patch-20070528.diff
Logged In: YES
user_id=352450
Originator: YES
Another update. There was a major change that caused multiple conflicts. Everything should build and run properly now but with the scale of recent changes there is a risk of regressions. Look for bugs or anomalies introduced with this version.
File Added: dosbox-svga-patch-20070930.diff