Menu

#82 Support for multiple SVGA chipsets

open
c2woody
None
5
2015-01-25
2005-04-28
No

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=none

svgachipset=tseng et3000

svgachipset=tseng et4000

svgachipset=s3 trio64

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

Discussion

<< < 1 2 3 > >> (Page 2 of 3)
  • Vasyl Tsvirkunov

    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.

     
  • Vasyl Tsvirkunov

    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.

     
  • Vasyl Tsvirkunov

    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.

     
  • Vasyl Tsvirkunov

    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.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    CVS integration -- it has been a while so there were a few
    conflicts. No changes.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Updated the patch -- some patching program were getting
    confused by multiple changes in paging.*. No functional changes.

     
  • Vasyl Tsvirkunov

    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.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Refreshed with the newest CVS changes. Fixed video codec
    files accidentally marked for removal in the last version.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Small update -- forgot to remove debug_gui.cpp change that
    should not be there.

     
  • Vasyl Tsvirkunov

    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.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Another day, another update. A recent change to CVS caused
    minor conflict in int10_vesa.cpp.

     
  • Vasyl Tsvirkunov

    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.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Fixed accidental removal of .rc file in the previous
    version. No idea how that happened.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Refreshing against current CVS.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Another refresh.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Updates and bug fixes. See forum for details

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450

    Another update, works with current CVS.

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450
    Originator: YES

    Fix for broken PCjr.
    File Added: dosbox-svga-patch-20070106.diff

     
  • Vasyl Tsvirkunov

    Logged In: YES
    user_id=352450
    Originator: YES

    Update, fixing some conflicts with current CVS.
    File Added: dosbox-svga-patch-20070109.diff

     
  • Vasyl Tsvirkunov

    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

     
  • Vasyl Tsvirkunov

    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

     
  • Vasyl Tsvirkunov

    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

     
  • Vasyl Tsvirkunov

    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

     
  • Vasyl Tsvirkunov

    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

     
  • Vasyl Tsvirkunov

    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

     
<< < 1 2 3 > >> (Page 2 of 3)

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.