Ah I see, I thought you meant that the 64bit version was missing the dynarec. I'll try 32bit at some point later then.
That config option... kinda helped? I get about 10fps now, so obviously still not great (it's an i7-5775C processor, so not much above it) so I'm wondering if I'm using the wrong glide2x.ovl file. Which should I be using?
The one that comes with OpenGlide doesn't work, it crashes DOSBox with "terminate called after throwing an instance of 'char*' - Aborted (core dumped)".
The one that comes with the GoG release of the game works, but that's the one I only get 10fps with.
I also tried the Official one that comes with the Voodoo drivers. Oddly enough that's the only one that produces any terminal output from DOSBox - "VOODOO: OpenGL: mode set, resolution 640:480 (fullscreen)" - but unfortunately the screen just stays black and the game doesn't seem to load (or it does load and I can't see it).
As it enulates the Voodoo card I think the official should be used. As this is the only one that triggers the terminal Voodoo output I'd say go from there.
Black screen often hints that you need a different output in the config
Tried all output modes, black screen / window with all of them. If I used anything other than opengl or openglnb then I didn't even get the "VOODOO: OpenGL: mode set, resolution 640:480" message.
Aren't glide2x_emu.ovl and glide2x.ovl 2 different things though? One emulates it and the other is part of the version that converts Glide calls to OpenGL, thus the former is a lot slower?
EDIT2: That one doesn't really seem to work at all. In the DOSBox window itself, it says: "glidedll:Warning, using default LFB address: 0x600000000" and... doesn't seem to progress past that point. The _emu one does exactly the same.
Aren't glide2x_emu.ovl and glide2x.ovl 2 different things though?
AFAIK, glide2x_emu.ovl is to be used with chip emulation and glide2x.ovl with the Glide patch.
Glide2x.ovl won't work correctly with chip emulation and glide2x_emu.ovl won't work with a Glide wrapper.
EDIT:
BTW, you did rename glide2x_emu.ovl to glide2x.ovl and put it in the game directory, right?
Last edited by zirkoni on 2016-10-08, 18:26. Edited 1 time in total.
Does anyone know if there has been a combination of this 3dfx patch with an SDL2 patch?
From a quick search of the forum, it looks like the answer is no, so may have to do it myself. 🙁
I attempted to do this today, the results are OK-ish, but I've run into a few specific issues.
First issue, I suspects affects SDL1.2 as well, but I think people aren't using the software renderer much to replicate it. If you capture video, voodoo_interface.cpp:Voodoo_UpdateScreen sets the frame rate to 16fps, which results in avi's playing back at 16fps (while the audio plays back as if it were 60fps.) This could probably be fixed by having it actually calculate a fixed 15fps, 30fps, 45fps or 60fps locked rate, but it's just incomplete in the code as it is. (Literately "TODO proper implementation of refresh rates and timings")
Under SDL 2.0, it will not compile out of the box, obviously, but even after you switch the SQL 1.2 for 2.0 commands so it compiles, it won't get past the OpenGL extensions, which I'm assuming is some kind of conflict with SDL's use of OpenGL as a renderer.
It will compile with #define C_OPENGL 0 set, and the OpenGL renderer not compiled in.
But what happens under SDL 2.0
1e:\c\dosbox_svn_r4000_sdl2_glide\src\hardware\voodoo_vogl.h(30): error C2365: 'glActiveTextureARB': redefinition; previous definition was 'function' (compiling source file ..\src\hardware\voodoo_vogl.cpp) 21> E:\C\SDL2-2.0.4\include\SDL_opengl.h(2019): note: see declaration of 'glActiveTextureARB' (compiling source file ..\src\hardware\voodoo_vogl.cpp) 31>e:\c\dosbox_svn_r4000_sdl2_glide\src\hardware\voodoo_vogl.h(31): error C2365: 'glMultiTexCoord4fARB': redefinition; previous definition was 'function' (compiling source file ..\src\hardware\voodoo_vogl.cpp) 41> E:\C\SDL2-2.0.4\include\SDL_opengl.h(2047): note: see declaration of 'glMultiTexCoord4fARB' (compiling source file ..\src\hardware\voodoo_vogl.cpp) 51>e:\c\dosbox_svn_r4000_sdl2_glide\src\hardware\voodoo_vogl.h(32): error C2365: 'glMultiTexCoord4fvARB': redefinition; previous definition was 'function' (compiling source file ..\src\hardware\voodoo_vogl.cpp) 61> E:\C\SDL2-2.0.4\include\SDL_opengl.h(2048): note: see declaration of 'glMultiTexCoord4fvARB' (compiling source file ..\src\hardware\voodoo_vogl.cpp)
However all the other extension lines it doesn't complain about. I presume it's this thing that is broken, because if I comment out the lines in voodoo_vogl.h and voodoo_vogl.cpp I just get a linker error. The fix suggested here is to modify gl.h, which is a kludge of a solution, but I went and did it anyway just to get it to compile, and it works.
Well as much as I can expect it to. The patch destroys and recreates the SDL window like it did with 1.2 which apparently isn't supposed to be necessary any more to switch to full screen, but I haven't changed the functionality. You can not capture video in the Voodoo window, you can not use scalers in the Voodoo window (obviously.) I'm pretty sure there is a way to copy back the framebuffer for video capture, but I haven't looked into it yet.
Da Easy Mitch wrote:Out of curiosity I applied kekkos patch to the current SVN (r3957) and tried it with Screamer Rally. And it worked! :) Here's th […] Show full quote
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.
This build got my 3dfx build of Whiplash working in 3dfx 😎😀
I'm currently trying to get a Linux build of DOSBox working, but the patch won't compile under Linux. I get the following errors:
1In file included from voodoo_opengl.h:33:0, 2 from voodoo_emu.cpp:81: 3voodoo_vogl.h:28:34: error: ‘void (* glActiveTextureARB)(GLenum)’ redeclared as different kind of symbol 4 extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB; 5 ^ 6In file included from /usr/include/SDL/SDL_opengl.h:46:0, 7 from voodoo_vogl.h:24, 8 from voodoo_opengl.h:33, 9 from voodoo_emu.cpp:81: 10/usr/include/GL/gl.h:1971:23: note: previous declaration ‘void glActiveTextureARB(GLenum)’ 11 GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture); 12 ^ 13In file included from voodoo_opengl.h:33:0, 14 from voodoo_emu.cpp:81: 15voodoo_vogl.h:29:36: error: ‘void (* glMultiTexCoord4fARB)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat)’ redeclared as different kind of symbol 16 extern PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB; 17 ^ 18In file included from /usr/include/SDL/SDL_opengl.h:46:0, 19 from voodoo_vogl.h:24, 20 from voodoo_opengl.h:33, 21 from voodoo_emu.cpp:81: 22/usr/include/GL/gl.h:1999:23: note: previous declaration ‘void glMultiTexCoord4fARB(GLenum, GLfloat, GLfloat, GLfloat, GLfloat)’ 23 GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, 24 ^ 25In file included from voodoo_opengl.h:33:0, 26 from voodoo_emu.cpp:81: 27voodoo_vogl.h:30:37: error: ‘void (* glMultiTexCoord4fvARB)(GLenum, const GLfloat*)’ redeclared as different kind of symbol 28 extern PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB; 29 ^ 30In file included from /usr/include/SDL/SDL_opengl.h:46:0, 31 from voodoo_vogl.h:24, 32 from voodoo_opengl.h:33, 33 from voodoo_emu.cpp:81: 34/usr/include/GL/gl.h:2000:23: note: previous declaration ‘void glMultiTexCoord4fvARB(GLenum, const GLfloat*)’ 35 GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); 36 ^ 37voodoo_emu.cpp: In function ‘void init_fbi(voodoo_state*, fbi_state*, int)’: 38voodoo_emu.cpp:566:14: error: ‘FALSE’ was not declared in this scope 39 f->vblank = FALSE; 40 ^ 41voodoo_emu.cpp: In function ‘UINT32 register_r(UINT32)’: 42voodoo_emu.cpp:2784:25: error: ‘TRUE’ was not declared in this scope 43 update_statistics(v, TRUE); 44 ^
Kekko, do you know what might cause these errors and how to fix them? If so, would you please provide an updated patch?
Since kekkos last patch the file "src\hardware\makefile.am" obviously changed a little bit. The patch still worked because the patcher found the correct lines to replace by itself, but nontheless I updated the patch to work without any warnings during patching with current DOSBox SVNs:
voodoo_20160825.diff
What version of DOSBox should I run the patch against?
Could someone tell me the proper command to run this patch, I tried:
DarthNvader wrote:What version of DOSBox should I run the patch against?
Could someone tell me the proper command to run this patch, I tried: […] Show full quote
What version of DOSBox should I run the patch against?
Could someone tell me the proper command to run this patch, I tried:
1patch < voodoo_20160825.diff
The patch works with every SVN since 2016-08-25, including the current SVN (r4006 at this moment). Run it from your dosbox source directory with
1patch -p0 -i <path where your patchfile is located>
EDIT: Got around that error by specifying the path to the int10.h in the pic_bus.cpp, but now I get about the same error that was in the post before my first post:
1voodoo_emu.cpp:566:14: error: use of undeclared identifier 'FALSE' 2 f->vblank = FALSE; 3 ^ 4voodoo_emu.cpp:2784:25: error: use of undeclared identifier 'TRUE' 5 update_statistics(v, TRUE); 6 ^ 72 errors generated. 8make[4]: *** [voodoo_emu.o] Error 1 9make[4]: *** Waiting for unfinished jobs.... 10voodoo_opengl.cpp:1054:33: error: assigning to 'UINT32' (aka 'unsigned int') 11 from incompatible type 'GLhandleARB' (aka 'void *') 12 extra->info->so_shader_program=m_hProgramObject; 13 ^~~~~~~~~~~~~~~~~ 14voodoo_opengl.cpp:1055:32: error: assigning to 'UINT32' (aka 'unsigned int') 15 from incompatible type 'GLhandleARB' (aka 'void *') 16 extra->info->so_vertex_shader=m_hVertexShader; 17 ^~~~~~~~~~~~~~~~ 18voodoo_opengl.cpp:1056:34: error: assigning to 'UINT32' (aka 'unsigned int') 19 from incompatible type 'GLhandleARB' (aka 'void *') 20 extra->info->so_fragment_shader=m_hFragmentShader; 21 ^~~~~~~~~~~~~~~~~~ 22voodoo_opengl.cpp:1082:24: error: comparison between pointer and integer 23 ('GLhandleARB' (aka 'void *') and 'UINT32' (aka 'unsigned int')) 24 if (m_hProgramObject != extra->info->so_shader_program) { 25 ~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 26voodoo_opengl.cpp:1083:26: error: cannot initialize a parameter of type 27 'GLhandleARB' (aka 'void *') with an lvalue of type 'UINT32' 28 (aka 'unsigned int') 29 glUseProgramObjectARB(extra->info->so_shader_program); 30 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31voodoo_opengl.cpp:1084:21: error: assigning to 'GLhandleARB' (aka 'void *') from 32 incompatible type 'UINT32' (aka 'unsigned int') 33 m_hProgramObject = extra->info->so_shader_program; 34 ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 35voodoo_opengl.cpp:1795:33: warning: comparison of unsigned expression >= 0 is 36 always true [-Wtautological-compare] 37 ...if (info->so_vertex_shader >= 0) glDetachObjectARB(info->so_shader_progr... 38 ~~~~~~~~~~~~~~~~~~~~~~ ^ ~ 39voodoo_opengl.cpp:1795:57: error: cannot initialize a parameter of type 40 'GLhandleARB' (aka 'void *') with an lvalue of type 'UINT32' 41 (aka 'unsigned int') 42 ...>= 0) glDetachObjectARB(info->so_shader_program, info->so_vertex_shader); 43 ^~~~~~~~~~~~~~~~~~~~~~~ 44voodoo_opengl.cpp:1796:35: warning: comparison of unsigned expression >= 0 is 45 always true [-Wtautological-compare] 46 ...if (info->so_fragment_shader >= 0) glDetachObjectARB(info->so_shader_pro... 47 ~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~ 48voodoo_opengl.cpp:1796:59: error: cannot initialize a parameter of type 49 'GLhandleARB' (aka 'void *') with an lvalue of type 'UINT32' 50 (aka 'unsigned int') 51 ...>= 0) glDetachObjectARB(info->so_shader_program, info->so_fragment_shader); 52 ^~~~~~~~~~~~~~~~~~~~~~~ 53voodoo_opengl.cpp:1797:33: warning: comparison of unsigned expression >= 0 is 54 always true [-Wtautological-compare] 55 ...if (info->so_vertex_shader >= 0) glDeleteObjectARB(info->so_vertex_shader); 56 ~~~~~~~~~~~~~~~~~~~~~~ ^ ~ 57voodoo_opengl.cpp:1797:57: error: cannot initialize a parameter of type 58 'GLhandleARB' (aka 'void *') with an lvalue of type 'UINT32' 59 (aka 'unsigned int') 60 ...(info->so_vertex_shader >= 0) glDeleteObjectARB(info->so_vertex_shader);
…Show last 22 lines
61 ^~~~~~~~~~~~~~~~~~~~~~ 62voodoo_opengl.cpp:1798:35: warning: comparison of unsigned expression >= 0 is 63 always true [-Wtautological-compare] 64 ...if (info->so_fragment_shader >= 0) glDeleteObjectARB(info->so_fragment_s... 65 ~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~ 66voodoo_opengl.cpp:1798:59: error: cannot initialize a parameter of type 67 'GLhandleARB' (aka 'void *') with an lvalue of type 'UINT32' 68 (aka 'unsigned int') 69 ...>= 0) glDeleteObjectARB(info->so_fragment_shader); 70 ^~~~~~~~~~~~~~~~~~~~~~~~ 71voodoo_opengl.cpp:1799:24: error: cannot initialize a parameter of type 72 'GLhandleARB' (aka 'void *') with an lvalue of type 'UINT32' 73 (aka 'unsigned int') 74 ...glDeleteObjectARB(info->so_shader_program); 75 ^~~~~~~~~~~~~~~~~~~~~~~ 764 warnings and 11 errors generated. 77make[4]: *** [voodoo_opengl.o] Error 1 78make[3]: *** [all-recursive] Error 1 79make[2]: *** [all-recursive] Error 1 80make[1]: *** [all-recursive] Error 1 81make: *** [all] Error 2
Same here on linux. I changed the backflips (windows) '\' to linux '/' ones on the int10.h include error and got some similar errors later. I'm using the 2016 version of the patch that Yesterplay80 kindly provided here.
1In file included from voodoo_opengl.h:33:0, 2 from voodoo_emu.cpp:81: 3voodoo_vogl.h:28:34: error: ‘void (* glActiveTextureARB)(GLenum)’ redeclared as different kind of symbol 4 extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB; 5 ^ 6In file included from /usr/include/SDL/SDL_opengl.h:46:0, 7 from voodoo_vogl.h:24, 8 from voodoo_opengl.h:33, 9 from voodoo_emu.cpp:81: 10/usr/include/GL/gl.h:1971:23: note: previous declaration ‘void glActiveTextureARB(GLenum)’ 11 GLAPI void GLAPIENTRY glActiveTextureARB(GLenum texture); 12 ^ 13In file included from voodoo_opengl.h:33:0, 14 from voodoo_emu.cpp:81: 15voodoo_vogl.h:29:36: error: ‘void (* glMultiTexCoord4fARB)(GLenum, GLfloat, GLfloat, GLfloat, GLfloat)’ redeclared as different kind of symbol 16 extern PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB; 17 ^ 18In file included from /usr/include/SDL/SDL_opengl.h:46:0, 19 from voodoo_vogl.h:24, 20 from voodoo_opengl.h:33, 21 from voodoo_emu.cpp:81: 22/usr/include/GL/gl.h:1999:23: note: previous declaration ‘void glMultiTexCoord4fARB(GLenum, GLfloat, GLfloat, GLfloat, GLfloat)’ 23 GLAPI void GLAPIENTRY glMultiTexCoord4fARB(GLenum target, GLfloat s, GLfloat t, 24 ^ 25In file included from voodoo_opengl.h:33:0, 26 from voodoo_emu.cpp:81: 27voodoo_vogl.h:30:37: error: ‘void (* glMultiTexCoord4fvARB)(GLenum, const GLfloat*)’ redeclared as different kind of symbol 28 extern PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB; 29 ^ 30In file included from /usr/include/SDL/SDL_opengl.h:46:0, 31 from voodoo_vogl.h:24, 32 from voodoo_opengl.h:33, 33 from voodoo_emu.cpp:81: 34/usr/include/GL/gl.h:2000:23: note: previous declaration ‘void glMultiTexCoord4fvARB(GLenum, const GLfloat*)’ 35 GLAPI void GLAPIENTRY glMultiTexCoord4fvARB(GLenum target, const GLfloat *v); 36 ^ 37voodoo_emu.cpp: In function ‘void init_fbi(voodoo_state*, fbi_state*, int)’: 38voodoo_emu.cpp:566:14: error: ‘FALSE’ was not declared in this scope 39 f->vblank = FALSE; 40 ^ 41voodoo_emu.cpp: In function ‘UINT32 register_r(UINT32)’: 42voodoo_emu.cpp:2784:25: error: ‘TRUE’ was not declared in this scope 43 update_statistics(v, TRUE); 44 ^ 45Makefile:437: recipe for target 'voodoo_emu.o' failed 46make[4]: *** [voodoo_emu.o] Error 1 47make[4]: Leaving directory '/media/i30817/Huggin/Documents/projects/dosbox/src/hardware' 48Makefile:457: recipe for target 'all-recursive' failed 49make[3]: *** [all-recursive] Error 1 50make[3]: Leaving directory '/media/i30817/Huggin/Documents/projects/dosbox/src/hardware' 51Makefile:436: recipe for target 'all-recursive' failed 52make[2]: *** [all-recursive] Error 1 53make[2]: Leaving directory '/media/i30817/Huggin/Documents/projects/dosbox/src' 54Makefile:377: recipe for target 'all-recursive' failed 55make[1]: *** [all-recursive] Error 1 56make[1]: Leaving directory '/media/i30817/Huggin/Documents/projects/dosbox' 57Makefile:318: recipe for target 'all' failed 58make: *** [all] Error 2
1. does this patch work with Redguard? I had to get the glide2x.ovl from the original glide drivers here. My reward was a blackscreen on load instead of 'missing dll' message (gog version).
edit : 🤣, copied the archimedian dynasty glide2x.ovl to the redguard dir and it started mysteriously working... maybe i downloaded the wrong driver? Pity this version of the dll has that obnoxious uninterruptible 3dfx logo intro.
edit2: it also needs 'cputype=486_slow' on svn for some reason... Performance is abyssal as somewhat expected.
2. when it does work, (i tried archimedian dynasty that worked out of the box), is there any way to make the resolution changes on 3dfx mode not show the desktop underneath and still scale up the image non-distorted? I have the patch to scale up 15 and 16bpp on opengl output but not the pixel perfect output patch, do i need it for this?
In archimedian dynasty at least, it seems to switch between voodoo mode and not eg:
VOODOO: OpenGL: mode set, resolution 640:480 (fullscreen) //3dfx logo
GFX LF: fullscreen switching not supported
VOODOO: OpenGL: quit //on the menu
VOODOO: OpenGL: mode set, resolution 640:480 (fullscreen) //into a mission
And it really switches rez instead of scaling it up like i'm used to if i use
[sdl]
fullresolution=desktop
output=openglnb //or just opengl
which seems different and quite inconvenient behavior.
BTW, as the log shows, fullscreen switch is not supported, and what is worse, alt+tab switch doesn't seem to either.
edit: this seems supported on output=surface and overlay. Unfortunately, these do no scale up, i need to to test the pixel perfect patch.