3dfx voodoo chip emulation is back!

Here you can discuss the development of patches.

3dfx voodoo chip emulation is back!

Postby kekko » 2014-12-26 @ 13:28

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 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=auto
voodoomem=standard


- 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!!!
You do not have the required permissions to view the files attached to this post.
User avatar
kekko
Member
 
Posts: 480
Joined: 2004-3-24 @ 18:56

Re: 3dfx voodoo chip emulation is back!

Postby Qbix » 2014-12-26 @ 13:39

Thanks Kekko!
Water flows down the stream
How to ask questions the smart way!
User avatar
Qbix
DOSBox Author
 
Posts: 10356
Joined: 2002-11-27 @ 14:50
Location: Fryslan

Re: 3dfx voodoo chip emulation is back!

Postby gulikoza » 2014-12-26 @ 15:26

The following patch fixes some OS X compilation issues but it was never merged in the main patch. Can you add it :)
You do not have the required permissions to view the files attached to this post.
User avatar
gulikoza
Oldbie
 
Posts: 1698
Joined: 2004-6-25 @ 14:53

Re: 3dfx voodoo chip emulation is back!

Postby Dominus » 2014-12-26 @ 15:35

Moved to the patches forum. It's high time for an official version of Dosbox with this patch!!!!
User avatar
Dominus
DOSBox Moderator
 
Posts: 7267
Joined: 2002-10-03 @ 09:54
Location: Vienna

Re: 3dfx voodoo chip emulation is back!

Postby truth_deleted » 2014-12-26 @ 23:25

Thanks for your work, Mr kekko! I look forward to reading your code. :-)
truth_deleted
 

Re: 3dfx voodoo chip emulation is back!

Postby kolano » 2014-12-27 @ 01:47

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.
User avatar
kolano
Oldbie
 
Posts: 518
Joined: 2010-12-26 @ 21:03

Re: 3dfx voodoo chip emulation is back!

Postby leileilol » 2014-12-27 @ 07:39

Any chance for GLSL'd dither on textures plus a GLSL postprocess filter? It definitely is possible :) :) :) :) :) :) :)
User avatar
leileilol
l33t++
 
Posts: 8582
Joined: 2006-12-16 @ 18:03

Re: 3dfx voodoo chip emulation is back!

Postby Harekiet » 2014-12-27 @ 08:50

You should just buy glasses with a 3dfx filter.
User avatar
Harekiet
DOSBox Author
 
Posts: 1038
Joined: 2002-7-01 @ 07:14
Location: Fryslan

Re: 3dfx voodoo chip emulation is back!

Postby xcomcmdr » 2015-1-05 @ 19:53

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 ( :dead: ).

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.

:happy:
User avatar
xcomcmdr
Newbie
 
Posts: 70
Joined: 2009-9-19 @ 01:03

Re: 3dfx voodoo chip emulation is back!

Postby PhilsComputerLab » 2015-1-05 @ 20:40

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-1-05 @ 20:52, edited 2 times in total.
User avatar
PhilsComputerLab
Hardware Mod
 
Posts: 6180
Joined: 2014-9-28 @ 03:33
Location: Western Australia

Re: 3dfx voodoo chip emulation is back!

Postby Dominus » 2015-1-05 @ 20:44

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 :)
User avatar
Dominus
DOSBox Moderator
 
Posts: 7267
Joined: 2002-10-03 @ 09:54
Location: Vienna

Re: 3dfx voodoo chip emulation is back!

Postby leileilol » 2015-2-02 @ 14:10

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
You do not have the required permissions to view the files attached to this post.
User avatar
leileilol
l33t++
 
Posts: 8582
Joined: 2006-12-16 @ 18:03

Re: 3dfx voodoo chip emulation is back!

Postby Stiletto » 2015-4-29 @ 22:02

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 ... o/voodoo.c
https://github.com/mamedev/mame/commits ... vooddefs.h
https://github.com/mamedev/mame/commits ... o/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

Stiletto
User avatar
Stiletto
l33t
 
Posts: 3677
Joined: 2002-7-01 @ 21:57

Re: 3dfx voodoo chip emulation is back!

Postby njaydg » 2015-4-30 @ 16:31

Just wondering... Does this patch do any miracles with Battle Arena Toshinden's 3dfx mode? * crosses fingers *
njaydg
Member
 
Posts: 215
Joined: 2007-5-29 @ 15:45

Re: 3dfx voodoo chip emulation is back!

Postby petersteele » 2015-9-04 @ 08:01

Thank you Kekko, you are like a gaming God amongst men who dig old games, a saviour. You bring fun and nostalgia to so many.
petersteele
Newbie
 
Posts: 1
Joined: 2015-9-04 @ 07:51

Re: 3dfx voodoo chip emulation is back!

Postby Quaker762 » 2015-9-05 @ 13:25

Looking good over here kekko, managed to get F1RS to run perfectly (albeit it running slow, the recommended specs state a Pentium, so I'm not 100% sure why it's so choppy)

Image
Image
Image
Image
Image
User avatar
Quaker762
Newbie
 
Posts: 1
Joined: 2013-10-12 @ 04:55

Re: 3dfx voodoo chip emulation is back!

Postby OSH » 2016-1-18 @ 12:36

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:
Code: Select all
# 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.

[sdl]
#       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.

fullscreen=false
fulldouble=true
fullresolution=1024x768
windowresolution=1024x768
output=openglnb
autolock=true
sensitivity=100
waitonerror=true
priority=higher,normal
mapperfile=none
pixelshader=none
usescancodes=true

[dosbox]
# 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.

language=
machine=svga_s3
captures=capture
memsize=128

[render]
# 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.

frameskip=0
aspect=false
scaler=none

[cpu]
#      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.

core=dynamic
cputype=pentium_slow
cycles=max
cycleup=10
cycledown=20

[mixer]
#   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.

nosound=false
rate=44100
blocksize=1024
prebuffer=20

[midi]
#     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.

mpu401=intelligent
mididevice=win32
midiconfig=0

[sblaster]
#       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

sbtype=sb16
sbbase=220
irq=7
dma=1
hdma=5
sbmixer=true
oplmode=auto
oplemu=default
oplrate=44100
hardwarebase=220

[gus]
#      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.

gus=true
gusrate=44100
gusbase=240
gusirq=5
gusdma=3
ultradir=C:\ULTRASND

[speaker]
# 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).

pcspeaker=true
pcrate=44100
tandy=auto
tandyrate=44100
disney=false

[joystick]
# 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.

joysticktype=auto
timed=true
autofire=false
swap34=false
buttonwrap=false

[serial]
# 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.

serial1=dummy
serial2=dummy
serial3=disabled
serial4=disabled

[printer]
#     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.

printer=false
dpi=360
width=85
height=110
printoutput=png
multipage=false
docpath=.
timeout=0

[parallel]
# 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

parallel1=disabled
parallel2=disabled
parallel3=disabled

[glide]
#  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

[pci]
# 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=auto
voodoomem=standard

glide=true
grport=600
lfb=full
splash=true

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

xms=true
ems=true
umb=true
keyboardlayout=auto

[ipx]
# ipx: Enable ipx over UDP/IP emulation.

ipx=false

[ne2000]
#  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.

ne2000=true
nicbase=300
nicirq=3
macaddr=AC:DE:48:88:99:AA
realnic=list
User avatar
OSH
Member
 
Posts: 171
Joined: 2007-10-28 @ 23:34

Re: 3dfx voodoo chip emulation is back!

Postby leileilol » 2016-1-20 @ 19:45

IIRC the scaling only works if you're using software Voodoo emulation
User avatar
leileilol
l33t++
 
Posts: 8582
Joined: 2006-12-16 @ 18:03

Re: 3dfx voodoo chip emulation is back!

Postby Da Easy Mitch » 2016-2-04 @ 12:25

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:
DOSBOX_3Dfx.7z


I will try out more games asap.
UPDATE: Bleifuss 2 / Screamer 2 works, too, as well as Fatal Racing / Whiplash.
You do not have the required permissions to view the files attached to this post.
Da Easy Mitch
Newbie
 
Posts: 25
Joined: 2015-10-09 @ 10:11

Re: 3dfx voodoo chip emulation is back!

Postby startmenu » 2016-4-10 @ 15:43

Well, but this patch got broken on Linux, too...
startmenu
Newbie
 
Posts: 2
Joined: 2013-8-07 @ 07:26

Next

Return to DOSBox Patches

Who is online

Users browsing this forum: No registered users and 1 guest