VOGONS


Voodoo1 emulation and glide pass-through 2-in-1 patch for DOSBox SVN

Topic actions

  • This topic is locked. You cannot reply or edit posts.

First post, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie

Attach the clean patch to enable kekko's voodoo1 emulation and gulikoza's glide pass-through at the same time in single DOSBox build. Kekko voodoo1 emulation has been updated based on the latest build as in VIDEO - 3dfx voodoo emulation (SDL1).

Just a reminder so that you don't get confused with the placement of GLIDE2X.DLL and GLIDE2X.OVL. Kekko's voodoo1 emulation must use the real version from Diamond Monster3D drivers. Gulikoza's glide pass-through includes special GLIDE2X.DLL and GLIDE2X.OVL to thunk glide APIs from guest to host.

All credits go to Kekko and Gulikoza for their contributions to bring 3Dfx gaming into life for DOSBox on modern machines.

Attachments

  • Filename
    v1emu_glide2h_r4335.txt
    File size
    420.92 KiB
    Downloads
    608 downloads
    File comment
    2-in-1 Glide pass-through & Voodoo chip emulation
    File license
    Fair use/fair dealing exception
Last edited by kjliew on 2020-03-29, 04:20. Edited 2 times in total.

Reply 1 of 14, by MastaG

User metadata
Rank Newbie
Rank
Newbie

It fails to build for me.
I'm building with OpenGlide...

i686-redhat-linux-g++ -DHAVE_CONFIG_H -I. -I../.. -I../../include -I /usr/local/include/openglide -I/usr/include/c++/5.1.1/i686-redhat-linux -I/usr/lib/gcc/x86_64-redhat-linux/5.1.1/include -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -m32 -mno-ms-bitfields -MT voodoo_emu.o -MD -MP -MF .deps/voodoo_emu.Tpo -c -o voodoo_emu.o voodoo_emu.cpp
In file included from voodoo_opengl.h:33:0,
from voodoo_emu.cpp:81:
voodoo_vogl.h:28:34: fout: ‘void (* glActiveTextureARB)(GLenum)’ redeclared as different kind of symbol
extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
^
In file included from /usr/include/SDL/SDL_opengl.h:46:0,
from voodoo_vogl.h:24,
from voodoo_opengl.h:33,
from voodoo_emu.cpp:81:
/usr/include/GL/gl.h:1971:23: note: previous declaration ‘void glActiveTextureARB(GLenum)’
GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture);
^
In file included from voodoo_opengl.h:33:0,
from voodoo_emu.cpp:81:
voodoo_vogl.h:29:36: fout: ‘void (* glMultiTexCoord4fARB)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat)’ redeclared as different kind of symbol
extern PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB;
^
In file included from /usr/include/SDL/SDL_opengl.h:46:0,
from voodoo_vogl.h:24,
from voodoo_opengl.h:33,
from voodoo_emu.cpp:81:
/usr/include/GL/gl.h:1999:23: note: previous declaration ‘void glMultiTexCoord4fARB(GLenum, GLfloat, GLfloat, GLfloat, GLfloat)’
GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t,
^
In file included from voodoo_opengl.h:33:0,
from voodoo_emu.cpp:81:
voodoo_vogl.h:30:37: fout: ‘void (* glMultiTexCoord4fvARB)(GLenum, const GLfloat*)’ redeclared as different kind of symbol
extern PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB;
^
In file included from /usr/include/SDL/SDL_opengl.h:46:0,
from voodoo_vogl.h:24,
from voodoo_opengl.h:33,
from voodoo_emu.cpp:81:
/usr/include/GL/gl.h:2000:23: note: previous declaration ‘void glMultiTexCoord4fvARB(GLenum, const GLfloat*)’
GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v);
^
voodoo_emu.cpp: In functie ‘void init_fbi(voodoo_state*, fbi_state*, int)’:
voodoo_emu.cpp:566:14: fout: ‘FALSE’ was not declared in this scope
f->vblank = FALSE;
^
voodoo_emu.cpp: In functie ‘UINT32 register_r(UINT32)’:
voodoo_emu.cpp:2758:25: fout: ‘TRUE’ was not declared in this scope
update_statistics(v, TRUE);
^
Makefile:438: recept voor doel 'voodoo_emu.o' is mislukt
make[4]: *** [voodoo_emu.o] Fout 1

Any ideas?

Reply 5 of 14, by Yesterplay80

User metadata
Rank Oldbie
Rank
Oldbie

A quick question about OpenGlide: What exactly is it required for? Is it used as default wrapper for gulikozas patch? Is any external DLL still required or can other wrappers like nGlide or dgVooDoo2 be used as well?

My full-featured DOSBox SVN builds for Windows & Linux: Vanilla DOSBox and DOSBox ECE (Google Drive Mirror)

Reply 6 of 14, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
Yesterplay80 wrote:

A quick question about OpenGlide: What exactly is it required for? Is it used as default wrapper for gulikozas patch? Is any external DLL still required or can other wrappers like nGlide or dgVooDoo2 be used as well?

OpenGlide is a Glide wrapper that emulates Glide2x 2.4 APIs similar to dgVoodoos and nGlide. Yes, you can replace it with dgVoodoos or nGlide. There is no so-called default wrapper for Glide pass-through, it just loads the 1st instance of Glide2x DLL in the search path. OpenGlide plays a significant role for development because it is open-sourced, based on OpenGL technology which makes it portable to any systems with OpenGL. Its Glide emulation is not stellar by today's standard, which has been greatly surpassed by dgVoodoos and nGlide, and has not been maintained for years. I believe it is the only Glide emulation solution for Linux and MacOS (from MacGlide a fork of OpenGlide) today. We shall see if nGlide with Vulkan backend will make a break-through for non-Windows system, especially Linux.

I do hope to see zeckensack's GlideWrapper will still be around and he would be able to open source it to help Linux to catch up with Windows on Glide emulation. I have been trying to contact him but so far to no avail.

Reply 7 of 14, by robertmo

User metadata
Rank l33t++
Rank
l33t++

I think the dosbox.conf descriptions should be this way:

# voodoo: Enable VOODOO emulation.

# glide: Enable glide pass-through to external wrappers (eg. nGlide, dgVoodoo 2): true,false.

And glide enabled as default as both can be enabled at the same time right now.

Reply 11 of 14, by MastaG

User metadata
Rank Newbie
Rank
Newbie

@kjliew could you please rebase the patch on top of the latest dosbox svn?
It doesn't apply any longer..

patch -p1 <../../Downloads/v1emu_glide2h_r4228.txt
patching file configure.ac
Hunk #1 succeeded at 579 (offset 25 lines).
patching file include/glide.h
patching file include/glidedef.h
patching file include/logging.h
Reversed (or previously applied) patch detected! Assume -R? [n] n
Apply anyway? [n] y
Hunk #1 FAILED at 28.
1 out of 1 hunk FAILED -- saving rejects to file include/logging.h.rej
patching file include/Makefile.am
Reversed (or previously applied) patch detected! Assume -R? [n] n
Apply anyway? [n] y
Hunk #1 FAILED at 36.
1 out of 1 hunk FAILED -- saving rejects to file include/Makefile.am.rej
patching file include/mem.h
patching file include/pci_bus.h
Reversed (or previously applied) patch detected! Assume -R? [n] n
Apply anyway? [n] y
Hunk #1 FAILED at 19.
Hunk #2 succeeded at 86 (offset 3 lines).
1 out of 2 hunks FAILED -- saving rejects to file include/pci_bus.h.rej
patching file include/video.h
Hunk #1 FAILED at 59.
Hunk #2 succeeded at 82 with fuzz 2 (offset 13 lines).
1 out of 2 hunks FAILED -- saving rejects to file include/video.h.rej
The next patch would create the file include/voodoo.h,
which already exists! Assume -R? [n] n
Apply anyway? [n] y
patching file include/voodoo.h
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file include/voodoo.h.rej
patching file src/cpu/paging.cpp
Reversed (or previously applied) patch detected! Assume -R? [n] n
Apply anyway? [n] y
Hunk #1 FAILED at 144.
Hunk #2 FAILED at 160.
2 out of 2 hunks FAILED -- saving rejects to file src/cpu/paging.cpp.rej
patching file src/debug/debug_gui.cpp
Reversed (or previously applied) patch detected! Assume -R? [n] n
Apply anyway? [n] y
Hunk #1 succeeded at 252 with fuzz 2 (offset 2 lines).
patching file src/dosbox.cpp
Hunk #1 FAILED at 76.
Hunk #2 FAILED at 527.
Hunk #3 succeeded at 770 (offset 26 lines).
2 out of 3 hunks FAILED -- saving rejects to file src/dosbox.cpp.rej
patching file src/gui/sdlmain.cpp
Hunk #1 FAILED at 49.
Hunk #2 succeeded at 1315 with fuzz 1 (offset 877 lines).
Hunk #3 succeeded at 1965 (offset 1115 lines).
Hunk #4 succeeded at 2956 (offset 1290 lines).
Hunk #5 succeeded at 3409 (offset 1303 lines).
Hunk #6 FAILED at 2232.
2 out of 6 hunks FAILED -- saving rejects to file src/gui/sdlmain.cpp.rej
patching file src/hardware/glide.cpp
patching file src/hardware/Makefile.am
Hunk #1 FAILED at 2.
1 out of 1 hunk FAILED -- saving rejects to file src/hardware/Makefile.am.rej
patching file src/hardware/memory.cpp
Hunk #1 FAILED at 23.
Hunk #2 FAILED at 140.
Hunk #3 succeeded at 194 (offset 3 lines).
2 out of 3 hunks FAILED -- saving rejects to file src/hardware/memory.cpp.rej
patching file src/hardware/pci_bus.cpp
Hunk #1 FAILED at 19.
Hunk #2 succeeded at 448 with fuzz 1 (offset 30 lines).
Hunk #3 succeeded at 518 (offset 30 lines).
1 out of 3 hunks FAILED -- saving rejects to file src/hardware/pci_bus.cpp.rej
patching file src/hardware/pci_devices.h
Hunk #1 FAILED at 16.
1 out of 1 hunk FAILED -- saving rejects to file src/hardware/pci_devices.h.rej
patching file src/hardware/vga_s3.cpp
The next patch would create the file src/hardware/voodoo.cpp,
which already exists! Assume -R? [n]

Reply 12 of 14, by kjliew

User metadata
Rank Oldbie
Rank
Oldbie
MastaG wrote:

@kjliew could you please rebase the patch on top of the latest dosbox svn?
It doesn't apply any longer..

patch -p1 <../../Downloads/v1emu_glide2h_r4228.txt

Checked latest SVN at r4292, it still applies.

$ patch --dry-run -p0 -i ~/Downloads/v1emu_glide2h_r4228.txt 
checking file ./configure.ac
Hunk #1 succeeded at 579 (offset 25 lines).
checking file ./include/glide.h
checking file ./include/glidedef.h
checking file ./include/logging.h
checking file ./include/Makefile.am
checking file ./include/mem.h
checking file ./include/pci_bus.h
checking file ./include/video.h
checking file ./include/voodoo.h
checking file ./src/cpu/paging.cpp
checking file ./src/debug/debug_gui.cpp
checking file ./src/dosbox.cpp
checking file ./src/gui/sdlmain.cpp
Hunk #4 succeeded at 1671 (offset 4 lines).
Hunk #5 succeeded at 2111 (offset 4 lines).
Hunk #6 succeeded at 2237 (offset 4 lines).
checking file ./src/hardware/glide.cpp
checking file ./src/hardware/Makefile.am
checking file ./src/hardware/memory.cpp
checking file ./src/hardware/pci_bus.cpp
checking file ./src/hardware/pci_devices.h
checking file ./src/hardware/vga_s3.cpp
checking file ./src/hardware/voodoo.cpp
checking file ./src/hardware/voodoo_data.h
checking file ./src/hardware/voodoo_def.h
checking file ./src/hardware/voodoo_emu.cpp
checking file ./src/hardware/voodoo_emu.h
checking file ./src/hardware/voodoo_interface.cpp
checking file ./src/hardware/voodoo_interface.h
checking file ./src/hardware/voodoo_opengl.cpp
checking file ./src/hardware/voodoo_opengl.h
checking file ./src/hardware/voodoo_types.h
checking file ./src/hardware/voodoo_vogl.cpp
checking file ./src/hardware/voodoo_vogl.h

Reply 13 of 14, by legluondunet

User metadata
Rank Newbie
Rank
Newbie

Hello, I would like to use this patch but it does not applied on latest dosbox svn 4482.
Is there a more recent patch version?

$ patch --dry-run -p0 -i patchs/3DFX/voodoo_20200616.diff 
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/include/Makefile.am
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/include/logging.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/include/pci_bus.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/include/video.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/include/voodoo.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/debug/debug_gui.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/dosbox.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/Makefile.am
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/memory.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/pci_bus.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/pci_devices.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/vga_s3.cpp
Hunk #1 succeeded at 21 with fuzz 2.
Hunk #2 FAILED at 563.
1 out of 2 hunks FAILED
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_data.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_def.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_emu.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_emu.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_interface.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_interface.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_opengl.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_opengl.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_types.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_vogl.cpp
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/src/hardware/voodoo_vogl.h
(Stripping trailing CRs from patch; use --binary to disable.)
checking file dosbox/visualc_net/dosbox.vcproj
Hunk #1 succeeded at 646 (offset -3 lines).