joncampbell123 / dosbox-x

DOSBox-X fork of the DOSBox project
GNU General Public License v2.0
2.55k stars 372 forks source link

Cannot go Fullscreen when using 3dfx/direct3d Windows 95 #2238

Open MrMe85 opened 3 years ago

MrMe85 commented 3 years ago

I installed windows 95 on dosbox-x and managed to get 3dfx/direct3d to work. When I launch a game, it works as intended, but it is in a windowed mode. The window will not stretch fullscreen, and there does not appear to be an option to do so. Is this a feature that has been disabled, or is there some way around this?

Wengier commented 3 years ago

Thanks for your report. For 3dfx in Windows 95, are you using the Voodoo hardware emulation or the Glide passthrough? If you use Windows SDL1 build in Glide passthrough mode (and with a Glide wrapper like nGlide), then full-screen mode may be supported. Otherwise a special window mode will be used for 3dfx games (no full-screen in such case).

MrMe85 commented 3 years ago

It appears I am using Voodoo hardware emulation, since my particular game (Mechwarrior 2 3dfx) uses the original glide.dll rather than glide2x.dll (if thats whats required for glide passthrough?).

May I ask if there there is a reason why Direct3d and 3dFX currently does not support full-screen mode and requires a special window? I apologize if this has not been asked before. It just seems like it would be an amazing feature to have.

joncampbell123 commented 3 years ago

When 3Dfx is enabled, DOSBox-X disables minimizing, resizing, and fullscreen of the window because the 3Dfx emulation is very sensitive to OpenGL state as well as the size of the window in general.

MrMe85 commented 3 years ago

Thanks for the reply Jon, and understandable.

Is this something that can be fixed? Perhaps there is a way to resize the host machine's resolution on the fly to cater for a reduced resolution that comes from most 3dfx games in the past?

Wengier commented 3 years ago

For now Voodoo hardware emulation in OpenGL mode has to be in a non-resizable window mode; lifting this restriction may be possible, but will apparently require non-trivial amount of work. Try software mode which can give you full-screen mode, but it is slower.

MrMe85 commented 3 years ago

It would be a nice feature to eventually have if it is possible to lift this restriction, given that the Voodoo emulation is such an impressive feature for anyone looking to run a mid '90s windows (95/98) VM on a higher-res display. There are few VMs out there that has the performance and compatibilities to what Dosbox-X provides in terms of 3d acceleration. Emulators like PCem or 86Box does have Voodoo emulation with fullscreen capability, but they also have issues such as mipmapping and low performance.

I-Megaman-I commented 2 years ago

shame, Resident Evil 1 does not support AMD video cards and this is the only way to launch the game. Whats the point of using Glide if it doesnt work in fullscreen and/or in different resolution.

pgalbraith commented 2 years ago

I believe I have glide passthrough working for a Win95 game, but I'm not sure how to tell for certain if it's really working (as opposed to using the internal voodoo emulation). I can't go fullscreen in game. Does this mean maybe that the game is actually still using the emulated voodoo card, rather than glide passthrough?

joncampbell123 commented 2 years ago

If you can't go fullscreen, then it is using OpenGL rendering in DOSBox-X. The reason that limit exists is because the guest commands are rendered directly to the surface of the window, so if the window is larger than expected, it might cause problems.

A solution to this is to render 3DFx to texture and then scale up in the DOSBox-X window.

arromdee commented 1 year ago

How about a stopgap solution: if you are in glide mode and need to go fullscreen, but you can't do normal fullscreen at fullresolution, check to see if X has 640x480 resolution available. If so, change the resolution to 640x480 and go fullscreen using it, so it would not be larger than expected.

This has its problems (for instance, not all modern monitors do 640x480 well), so it would only be a stopgap solution, but it's better than not doing fullscreen at all.