Common searches

VIDEO - 3dfx voodoo emulation (SDL1)

Topic actions

First post, by kekko

User metadata
Rank Member

Hi all!
I'd like to share with you all the latest 3dfx patch with opengl accelerated rendering.
No one worked on it in years, but still, it works quite nice, even if it's not bug-free.

The following options will be available into your config file:

[pci] # voodoo: Enable VOODOO support. # Possible values: false, software, opengl, auto. # voodoomem: Specify VOOD […]
Show full quote

# voodoo: Enable VOODOO support.
# Possible values: false, software, opengl, auto.
# voodoomem: Specify VOODOO card memory size.
# 'standard' 4MB card (2MB front buffer + 1x2MB texture unit)
# 'max' 12MB card (4MB front buffer + 2x4MB texture units)
# Possible values: standard, max.


- voodoo: use 'opengl' mode for higher speed, 'software' mode for a more accurate emulation
- voodoomem: a standard voodoo1 card usually came with 4mb, but you can max out memory in order to get higher screen/textures resolution

Please find attached:
- a binary file you have to drop into your dosbox installation folder
- a .diff patch against current svn tree (if you don't know what it is, you don't need it)

Just a few recommendations:
- please post all your questions in this thread, don't PM me or anyone else on this and don't open new threads
- if you do anything with this, like adding features or fixing bugs, please share it with everyone by posting your changes on this thread
- if you like this patch, let us know by posting some nice screenshots or videos (please use external image upload service to save vogons.org bandwidth)

Happy Holidays!!!


  • Filename
    File size
    69.42 KiB
    File comment
    .diff patch file
    File license
    Fair use/fair dealing exception
  • Filename
    File size
    1.1 MiB
    File comment
    windows binary file (.exe)
    File license
    Fair use/fair dealing exception

Reply 2 of 108, by gulikoza

User metadata
Rank Oldbie

The following patch fixes some OS X compilation issues but it was never merged in the main patch. Can you add it 😀


  • Filename
    File size
    7.29 KiB
    File license
    Fair use/fair dealing exception


Reply 3 of 108, by Dominus

User metadata
Rank DOSBox Moderator
DOSBox Moderator

Moved to the patches forum. It's high time for an official version of Dosbox with this patch!!!!

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox

Reply 5 of 108, by kolano

User metadata
Rank Oldbie

Is there a change log for this?
If not, how is this differentiated from the patch in the current DAUM build by Yhkwong? It seems like that has was last updated May 1, 2011.

Eyecandy: Turn your computer into an expensive lava lamp.

Reply 8 of 108, by xcomcmdr

User metadata
Rank Member

Thanks a lot ! Really, you're awesome !

I was struggling yesterday on a Windows 8 box trying to get Resident Evil 2 to run without using the ugly software mode. I got the cutscenes to work by installing ffdshow tryouts and enabling it's VFW Intel Indeo 5 decoder, but software mode was in 320x200, really slow, and really ugly. I remember playing it with a 3DFX back in the time in 640x480 fullscreen (16 bpp). The only real solution I found was to use a real Win98 PIII-based PC with a 3DFX, which means I've got to rebulid the damn thing. Again ( 😵 ).

With this patch and DOSBox-X (which, as I understand, is more Win9X friendly than vanilla DOSBox) I might get RE 2 - and other games that even nglide can't get to run because they use DirectX and not Glide - to run properly on a modern computer. At least, there is definitely hope it will be possible someday.

(yes I know I can get the PSX original, or the N64 port, or the Gamecube port running in an emulator today, but I prefer the PC-version-in-hardware-mode's filtered textures).

And that makes a whole lot of DOS Glide games playable now on my Archlinux laptop. That's crazy awesome. 😀
I will definitely try to make an Archlinux AUR script available and maintained.


Reply 9 of 108, by PhilsComputerLab

User metadata
Rank Hardware Mod
Hardware Mod

Ok this is interesting!

I have a noob question, the whole thing with SVN DOSBox always confused me.

Tweaking GOG.com DOSBox games is one of my interests and I had good success with nGlide.

Now will this emulation work with the DOSBox versions that GOG.com packs their games or will I need to replace / upgrade it?

What are the installation steps?

I tried it in one game. I put the Dosbox3dfx into the DOSBox folder, changed the game shortcut to launch Dosbox3dfx instead of Dosbox, edited the existing config file and added the copy paste section from the first post but when running it the DOSBox crashes to the desktop right away.

Last edited by PhilsComputerLab on 2015-01-05, 20:52. Edited 2 times in total.

YouTube, Facebook, Website

Reply 10 of 108, by Dominus

User metadata
Rank DOSBox Moderator
DOSBox Moderator

kind of replace it, instead of using the GOG version you use another one but you need to use the configs from the gog one. There is a how to somewhere, please search and post additional questions in there 😀

Windows 3.1x guide for DOSBox
60 seconds guide to DOSBox

Reply 11 of 108, by leileilol

User metadata
Rank l33t++

I have no good place to put this, but here's a rough port of the new leifx filter shader to the Direct3D patch's shader system. Use with kekko's software Glide rendering for best effect. 😀

tried to turn my 4 pass method into a 1 pass, probably failed doing so. but it does work with the dither sort of. For reference this is my original glsl version


  • Filename
    File size
    3.31 KiB
    File license
    Fair use/fair dealing exception


Reply 12 of 108, by Stiletto

User metadata
Rank l33t

FWIW, MAME's voodoo.c has undoubtedly been touched since kekko last looked at it. BSD 3-clause-licensed.
https://github.com/mamedev/mame/commits/maste … /video/voodoo.c
https://github.com/mamedev/mame/commits/maste … ideo/vooddefs.h
https://github.com/mamedev/mame/commits/maste … /video/voodoo.h
Bug fixes just went in to fix problems with iteagle.c

"I see a little silhouette-o of a man, Scaramouche, Scaramouche, will you
do the Fandango!" - Queen


Reply 16 of 108, by OSH

User metadata
Rank Member

Well. Is any way to force DOSBOX 3dfx to scale Voodoo image? When i set up a scaler for example "hardware3x", the display is scaled but only on 8-bit screens. When i set 16 or 32-bit depth, or when I try to display Voodoo image (for example from X-Wing for Windows 95), I see only a small window. Can someone tell me, what I'm doing wrong?
Here my config:

# This is the configurationfile for DOSBox 0.74-uber. (Please use the latest version of DOSBox)
# Lines starting with a # are commentlines and are ignored by DOSBox.
# They are used to (briefly) document the effect of each option.

# fullscreen: Start dosbox directly in fullscreen. (Press ALT-Enter to go back)
# fulldouble: Use double buffering in fullscreen. It can reduce screen flickering, but it can also result in a slow DOSBox.
# fullresolution: What resolution to use for fullscreen: original or fixed size (e.g. 1024x768).
# Using your monitor's native resolution with aspect=true might give the best results.
# If you end up with small window on a large screen, try an output different from surface.
# windowresolution: Scale the window to this size IF the output device supports hardware scaling.
# (output=surface does not!)
# output: What video system to use for output.
# Possible values: surface, overlay, opengl, openglnb, openglhq, ddraw, direct3d.
# autolock: Mouse will automatically lock, if you click on the screen. (Press CTRL-F10 to unlock)
# sensitivity: Mouse sensitivity.
# waitonerror: Wait before closing the console if dosbox has an error.
# priority: Priority levels for dosbox. Second entry behind the comma is for when dosbox is not focused/minimized.
# pause is only valid for the second entry.
# Possible values: lowest, lower, normal, higher, highest, pause.
# mapperfile: File used to load/save the key/event mappings from. Resetmapper only works with the defaul value.
# pixelshader: Pixelshader program (effect file must be in Shaders subdirectory).
# usescancodes: Avoid usage of symkeys, might not work on all operating systems.


# language: Select another language file.
# machine: The type of machine tries to emulate.
# Possible values: hercules, cga, tandy, pcjr, ega, vgaonly, svga_s3, svga_et3000, svga_et4000, svga_paradise, vesa_nolfb, vesa_oldvbe.
# captures: Directory where things like wave, midi, screenshot get captured.
# memsize: Amount of memory DOSBox has in megabytes.
# This value is best left at its default to avoid problems with some games,
# though few games might require a higher value.
# There is generally no speed advantage when raising this value.


# frameskip: How many frames DOSBox skips before drawing one.
# aspect: Do aspect correction, if your output method doesn't support scaling this can slow things down!.
# scaler: Scaler used to enlarge/enhance low resolution modes. If 'forced' is appended,the scaler will be used even if the result might not be desired.
# Hardware modes (all except surface) also support hardware2x or hardware3x, use for hardware scaling.
# Possible values: none, normal2x, normal3x, advmame2x, advmame3x, advinterp2x, advinterp3x, hq2x, hq3x, 2xsai, super2xsai, supereagle, tv2x, tv3x, rgb2x, rgb3x, scan2x, scan3x, hardware2x, hardware3x.

Show last 275 lines

# core: CPU Core used in emulation. auto will switch to dynamic if available and appropriate.
# Possible values: auto, dynamic, normal, full, simple.
# cputype: CPU Type used in emulation. auto is the fastest choice.
# Possible values: auto, 386, 386_slow, 486_slow, pentium_slow, 386_prefetch.
# cycles: Amount of instructions DOSBox tries to emulate each millisecond.
# Setting this value too high results in sound dropouts and lags.
# Cycles can be set in 3 ways:
# 'auto' tries to guess what a game needs.
# It usually works, but can fail for certain games.
# 'fixed #number' will set a fixed amount of cycles. This is what you usually need if 'auto' fails.
# (Example: fixed 4000).
# 'max' will allocate as much cycles as your computer is able to handle.
# Possible values: auto, fixed, max.
# cycleup: Amount of cycles to decrease/increase with keycombo.(CTRL-F11/CTRL-F12)
# cycledown: Setting it lower than 100 will be a percentage.


# nosound: Enable silent mode, sound is still emulated though.
# rate: Mixer sample rate, setting any device's rate higher than this will probably lower their sound quality.
# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# blocksize: Mixer block size, larger blocks might help sound stuttering but sound will also be more lagged.
# Possible values: 1024, 2048, 4096, 8192, 512, 256.
# prebuffer: How many milliseconds of data to keep on top of the blocksize.


# mpu401: Type of MPU-401 to emulate.
# Possible values: intelligent, uart, none.
# mididevice: Device that will receive the MIDI data from MPU-401.
# Possible values: default, win32, alsa, oss, coreaudio, coremidi, mt32, none.
# midiconfig: Special configuration options for the device driver. This is usually the id of the device you want to use.
# See the README/Manual for more details.


# sbtype: Type of Soundblaster to emulate. gb is Gameblaster.
# Possible values: sb1, sb2, sbpro1, sbpro2, sb16, gb, none.
# sbbase: The IO address of the soundblaster.
# Possible values: 220, 240, 260, 280, 2a0, 2c0, 2e0, 300.
# irq: The IRQ number of the soundblaster.
# Possible values: 7, 5, 3, 9, 10, 11, 12.
# dma: The DMA number of the soundblaster.
# Possible values: 1, 5, 0, 3, 6, 7.
# hdma: The High DMA number of the soundblaster.
# Possible values: 1, 5, 0, 3, 6, 7.
# sbmixer: Allow the soundblaster mixer to modify the DOSBox mixer.
# oplmode: Type of OPL emulation. On 'auto' the mode is determined by sblaster type. All OPL modes are Adlib-compatible, except for 'cms'.
# Possible values: auto, cms, opl2, dualopl2, opl3, none, hardware.
# oplemu: Provider for the OPL emulation. compat might provide better quality (see oplrate as well).
# Possible values: default, compat, fast.
# oplrate: Sample rate of OPL music emulation. Use 49716 for highest quality (set the mixer rate accordingly).
# Possible values: 44100, 49716, 48000, 32000, 22050, 16000, 11025, 8000.
# hardwarebase: base address of the real hardware soundblaster:
# 210,220,230,240,250,260,280


# gus: Enable the Gravis Ultrasound emulation.
# gusrate: Sample rate of Ultrasound emulation.
# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# gusbase: The IO base address of the Gravis Ultrasound.
# Possible values: 240, 220, 260, 280, 2a0, 2c0, 2e0, 300.
# gusirq: The IRQ number of the Gravis Ultrasound.
# Possible values: 5, 3, 7, 9, 10, 11, 12.
# gusdma: The DMA channel of the Gravis Ultrasound.
# Possible values: 3, 0, 1, 5, 6, 7.
# ultradir: Path to Ultrasound directory. In this directory
# there should be a MIDI directory that contains
# the patch files for GUS playback. Patch sets used
# with Timidity should work fine.


# pcspeaker: Enable PC-Speaker emulation.
# pcrate: Sample rate of the PC-Speaker sound generation.
# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# tandy: Enable Tandy Sound System emulation. For 'auto', emulation is present only if machine is set to 'tandy'.
# Possible values: auto, on, off.
# tandyrate: Sample rate of the Tandy 3-Voice generation.
# Possible values: 44100, 48000, 32000, 22050, 16000, 11025, 8000, 49716.
# disney: Enable Disney Sound Source emulation. (Covox Voice Master and Speech Thing compatible).


# joysticktype: Type of joystick to emulate: auto (default), none,
# 2axis (supports two joysticks),
# 4axis (supports one joystick, first joystick used),
# 4axis_2 (supports one joystick, second joystick used),
# fcs (Thrustmaster), ch (CH Flightstick).
# none disables joystick emulation.
# auto chooses emulation depending on real joystick(s).
# (Remember to reset dosbox's mapperfile if you saved it earlier)
# Possible values: auto, 2axis, 4axis, 4axis_2, fcs, ch, none.
# timed: enable timed intervals for axis. Experiment with this option, if your joystick drifts (away).
# autofire: continuously fires as long as you keep the button pressed.
# swap34: swap the 3rd and the 4th axis. can be useful for certain joysticks.
# buttonwrap: enable button wrapping at the number of emulated buttons.


# serial1: set type of device connected to com port.
# Can be disabled, dummy, modem, nullmodem, directserial.
# Additional parameters must be in the same line in the form of
# parameter:value. Parameter for all types is irq (optional).
# for directserial: realport (required), rxdelay (optional).
# (realport:COM1 realport:ttyS0).
# for modem: listenport (optional).
# for nullmodem: server, rxdelay, txdelay, telnet, usedtr,
# transparent, port, inhsocket (all optional).
# Example: serial1=modem listenport:5000
# Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial2: see serial1
# Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial3: see serial1
# Possible values: dummy, disabled, modem, nullmodem, directserial.
# serial4: see serial1
# Possible values: dummy, disabled, modem, nullmodem, directserial.


# printer: Enable printer emulation.
# dpi: Resolution of printer (default 360).
# width: Width of paper in 1/10 inch (default 85 = 8.5'').
# height: Height of paper in 1/10 inch (default 110 = 11.0'').
# printoutput: Output method for finished pages:
# png : Creates PNG images (default)
# ps : Creates Postscript
# bmp : Creates BMP images (very huge files, not recommend)
# printer : Send to an actual printer (Print dialog will appear)
# multipage: Adds all pages to one Postscript file or printer job until CTRL-F2 is pressed.
# docpath: The path where the output files are stored.
# timeout: (in milliseconds) if nonzero: the time the page will
# be ejected automatically after when no more data
# arrives at the printer.


# parallel1: parallel1-3 -- set type of device connected to lpt port.
# Can be:
# reallpt (direct parallel port passthrough using Porttalk),
# printer (virtual dot-matrix printer, see [printer] section)
# Additional parameters must be in the same line in the form of
# parameter:value.
# for reallpt:
# Windows: realbase (the base address of your real parallel port).
# Standard ports are 378, 278 and 3BC. The first two can be ECP ports.
# PCI add-on cards may use nonstandard ports, look them up in the device manager.
# Default: 378
# You have to install the PortTalk driver from
# http://www.beyondlogic.org/porttalk/porttalk.htm first.
# Linux: realport (the parallel port device i.e. /dev/parport0).
# for printer:
# printer still has it's own configuration section above.
# parallel2: see parallel1
# parallel3: see parallel1


# glide: Enable glide emulation: true,false.
# grport: I/O port to use for host communication.
# lfb: LFB access: full,read,write,none.
# splash: Enable 3dfx splash logo: true,false. Need 3DfxSpl2.dll

# voodoo: Enable VOODOO support.
# Possible values: false, software, opengl, auto.
# voodoomem: Specify VOODOO card memory size.
# 'standard' 4MB card (2MB front buffer + 1x2MB texture unit)
# 'max' 12MB card (4MB front buffer + 2x4MB texture units)
# Possible values: standard, max.



# xms: Enable XMS support.
# ems: Enable EMS support.
# umb: Enable UMB support.
# keyboardlayout: Language code of the keyboard layout (or none).


# ipx: Enable ipx over UDP/IP emulation.


# ne2000: Enable Ethernet passthrough. Requires [Win]Pcap.
# nicbase: The base address of the NE2000 board.
# nicirq: The interrupt it uses. Note serial2 uses IRQ3 as default.
# macaddr: The physical address the emulator will use on your network.
# If you have multiple DOSBoxes running on your network,
# this has to be changed for each. AC:DE:48 is an address range reserved for
# private use, so modify the last three number blocks.
# I.e. AC:DE:48:88:99:AB.
# realnic: Specifies which of your network interfaces is used.
# Write 'list' here to see the list of devices in the
# Status Window. Then make your choice and put either the
# interface number (2 or something) or a part of your adapters
# name, e.g. VIA here.


Reply 18 of 108, by Da Easy Mitch

User metadata
Rank Newbie

Out of curiosity I applied kekkos patch to the current SVN (r3957) and tried it with Screamer Rally. And it worked! 😀 Here's the binary if everyone wants to check it out more:

File size
1.19 MiB
File license
Fair use/fair dealing exception

I will try out more games asap.
UPDATE: Bleifuss 2 / Screamer 2 works, too, as well as Fatal Racing / Whiplash.