VOGONS


Quake2 + Acebot for DOSBox (128mb)

Topic actions

Reply 680 of 862, by Maraakate

User metadata
Rank Oldbie
Rank
Oldbie

The 3dfx dlls are mini drivers. Back then when GLQuake first came out nothing was really able to use it at the time (except what Carmack wrote it for which I can't recall the card offhand but I think it was an Intergraph Realizm) because they didn't have true OpenGL drivers yet.

3DFX and other companies responded by writing "miniGL" drivers which basically are just the bare minimum functions of OpenGL to play Quake. They likely added special optimizations they knew that would be OK for Quake, but might cause rendering errors if used elsewhere. The source to these types of mini drivers have never appeared and the likely never will. Without someone having intimate knowledge of the card there's no chance of it happening in DOS. However, the performance is still comparable to running from a true OpenGL driver so I guess it's not so bad.

This whole miniGL craze went on up until about Quake 3 or so. Vendors finally started catching up to writing drivers up to OpenGL spec. Though, I believe Quake 3 does contain mini drivers at least for 3DFX.

Reply 681 of 862, by Maraakate

User metadata
Rank Oldbie
Rank
Oldbie

Also be sure to check gl_ext_pointparameters to be sure its set to 0. It may not be from previously running the game.

Reply 682 of 862, by leileilol

User metadata
Rank l33t++
Rank
l33t++

Q3 doesn't ship with any minigl drivers. It does provide GLSetup to get some lost users up to scratch on some ICD support however...

apsosig.png
long live PCem

Reply 683 of 862, by Maraakate

User metadata
Rank Oldbie
Rank
Oldbie

There's an option to specifically choose "Voodoo" in the setup menu. Is it an internal actual glide renderer or what is it? It's been a long time since I've played with it.

Reply 684 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

Thanks for the details! Very good work. I just ran qdos through a custom dosbox debugger that doesn't exit unexpectedly (the others did which rely on x86-fpu code instead of interpreter-fpu) and it looks like the lock happens just about right after the voodoo writes are done (similar to another lock with a page fault). The eip addresses from the debugger screen may help, I'll work on this for a while. 😀

Edit: I'll verify the pointparameters.

Reply 685 of 862, by leileilol

User metadata
Rank l33t++
Rank
l33t++

It sets r_glDriver to 3dfxvgl, which is the system OpenGL ICD for Voodoo2.

apsosig.png
long live PCem

Reply 686 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

Sorry to interrupt your discussions about icd, but I can see the page fault with (using your hint):
qdosfx -particles 0

I couldn't yet capture the page fault message, but you can type exit on the lock and it will receive that command.

Reply 687 of 862, by Maraakate

User metadata
Rank Oldbie
Rank
Oldbie

Also, this is fairly well known, but to disable the splash screen set FX_GLIDE_NO_SPLASH=1 as your environment variable.

I'd force it off by default but it does help to know if the driver is even kicking on in emulators.

Reply 688 of 862, by Maraakate

User metadata
Rank Oldbie
Rank
Oldbie
__ggorts wrote:

Sorry to interrupt your discussions about icd, but I can see the page fault with (using your hint):
qdosfx -particles 0

I couldn't yet capture the page fault message, but you can type exit on the lock and it will receive that command.

Ah, I wonder if it's using the point parameters code in GLQuake1. That's what causes the locks in Quake 2 as soon as a particle is getting ready to draw.

Reply 689 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

Thanks, I actually didn't recall that (good var to know). From a brief glance, it looked like a short crash dump, maybe cwsdpmi (stack, heap or something is worth checking). Can't be sure yet.

Reply 690 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

The particles will be interesting to look at.

Reply 691 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

The eip value at end is 00001221, but that page fault message would be invaluable.

Reply 692 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

Just ran stubedit qdosfx.exe minstack=5K and the page fault shows. Looks like a cwsdpmi error. This looks like an error created specifically by running minstack, but the other page fault may be memory related.

Reply 693 of 862, by Maraakate

User metadata
Rank Oldbie
Rank
Oldbie

Really not sure what it is 😒

Reply 694 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

I'll give it some time, but it looks memory related (perhaps the quake memory model is not gl compatible like the one you designed for q2dos).

Reply 695 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

Your code works! Just these two modifications to command line and binary:
stubedit dqfx.exe minstack=1M
dqfx -mem 46 -heap 100000 -particles 0

I haven't tested with particles yet.

😀

Reply 696 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

Particles work! Edit: set mem=128 in dosbox but I could test lower mem. Edit2: mem=48 works, too. This is the mem= from dosbox.conf not at the command line.

Reply 697 of 862, by __ggorts

User metadata
Rank Member
Rank
Member

I'll return a bit later, but thank you for bringing us glquake to dos, too!

Reply 698 of 862, by Maraakate

User metadata
Rank Oldbie
Rank
Oldbie
__ggorts wrote:
Your code works! Just these two modifications to command line and binary: stubedit dqfx.exe minstack=1M dqfx -mem 46 -heap 10000 […]
Show full quote

Your code works! Just these two modifications to command line and binary:
stubedit dqfx.exe minstack=1M
dqfx -mem 46 -heap 100000 -particles 0

I haven't tested with particles yet.

😀

Didnt you find a way to icnrease the minstack from sys_dos.c in Quake 2?

Also, particles = 0 does nothing. Look at r_part.c It will use 512 no matter what.

Reply 699 of 862, by Maraakate

User metadata
Rank Oldbie
Rank
Oldbie

Also, it just appears that you need -mem. I think -heap is just the same thing but in bytes instead of megabytes