Ioquake3 SGI MIPS question

Hi Devs,

When loading the most recent version of ioquake3 on sgi mips (version 1.35SVN1323M) When reading the console I noticed this:
“Architecture doesn’t have a bytecode compiler, using interpreter”

I am not an expert, but does this mean that not all of the engine has been properly optimized for MIPS? And if so, would there be a straightforward way of compiling a more optimized build? Don’t worry, I will do my own homework and learn what I need to do if I could just get a nudge in the right direction… :slight_smile:

PS will it be possible to compile with SMP support, as MIPS machines can have many CPUs.

Cheers

The first step would be upgrading from a 11+ year old build by compiling the latest ioquake3 code. If it’s an older GPU you may want to use the following command line arguments ioquake3 +set cl_renderer opengl1. SMP (two threads) support was removed; I think because it only helps if the GPU is the performance bottleneck.

To stop using the QVM interpreter a new QVM bytecode compiler would have to be written for MIPS which requires knowledge of assembly and MIPS instruction set. See x86, sparc, powerpc, and armv7l QVM bytecode compilers. If you’re not playing a mod (locally or on non-pure servers) you can use native libraries for game logic (baseq3/cgamemips.so, also game*.so and ui*.so) instead of QVMs for best performance using the follow command line arguments. ioquake3 +set sv_pure 0 +set vm_cgame 0 +set vm_game 0 +set vm_ui 0

1 Like

Hi zturtleman, I have the latest version now. Everything seems to load properly when executing with +set cl_renderer opengl1, a fullscreen black window opens and then quits, I am left with the Quake3 console inside the unix terminal still running. I will attach a photo for you to see. I am thinking that the Opengl1 renderer may have been moved forward in version numbers? The SGI opengl only goes to 1.2. Could you please advise? Thank you.
IMG_20190727_222608

The opengl1 renderer should still work with OpenGL 1.2. I think it might be a window creation issue. Code at code/sdl/sdl_glimp.c::GLimp_SetMode().

You could do ioquake3 +set developer 1 and then type condumb log.txt in tty console and post $HOME/.q3a/baseq3/log.txt here in case there is some useful message. You could also try +set r_fullscreen 0.

Okay I managed to get some success, setting r_fullscreen 0 worked. Then immediately after setting r_fullscreen 1 and vid restarting it wouldn’t create a window as usual. I could not get the engine to dump the console oddly, it said successful but it didn’t create any log file. Still, I am very familiar with the q3 console and there were absolutely no errors. Almost as if the engine is unaware that the opengl fullscreen was not successful. I will ask some friends what they think of the window creation code you posted. I wonder what changed between the old version of ioquake3 and this version in regards to window creation.

ioq3 should catch window create failure. The biggest change related to window creation is probably that ioq3 2009 build used SDL 1.2.15 and ioq3 git master uses SDL 2.0.x. SDL handles the actual X11 window code.