So I was struggling with trying to set up an ending cinematic screen for Qonquer. I wanted to do a screen where it would spit out some stats on your game and give you some closure rather than just sitting there staring up from the floor in your dead body.
However, when I tried to customize the text being sent to the SVC_FINALE screen in QuakeC I discovered that you can’t send a dynamic text block. You can only send a static string. Even better, you can’t even send multiple strings. You can only send one if you’re using the WriteString function. Nasty.
So Preach over at func_msgboard gave me a link to some source code that included routines for spitting out chars to a channel in QuakeC. There were 8 versions of the function, each sending from 1-8 characters at a time to the channel (I named them pr1() through pr8() in my code base). I thought I was home free. Nope! Those emit values, not characters. Which means that if you want to spit out, for example, the word “Qonquer” you need something like this in your code:
pr7( 81,111,110,113,117,101,114 );
Those numbers are the ASCII character codes for each letter. Yeah, not exactly intuitive to read OR to write.
So what I ended up doing was writing a real simple Cocoa application to help me out. It will take a text string and split it up into the necessary function calls to get that text into the SVC_FINALE screen.
For example, let’s say I wanted to spit out “[Qonquer] – game over!”. I would use my program and it would generate this:
// [Qonquer] - game over!
pr8( 91,81,111,110,113,117,101,114 );
pr8( 93,32,45,32,103,97,109,101 );
pr6( 32,111,118,101,114,33 );
As you can see, it breaks the string up into multiple calls because QuakeC can only handle 8 arguments in any given function. It also emits a comment line at the top so you can see what those lines are supposed to be emitting.
Here’s a screenshot of the utility in action:
I need to add some checkboxes and things to this screen to support adding newlines and things like that but this is basically it! This will help me out a lot on this and future QuakeC projects. When it’s done, I’ll make the source available with the rest of the Qonquer mod.

The only problem with this is that Inside3d technically, rocks harder.
Preach definitely knows his shit, it just weirds me out when such discussion happens at func_, considering he is also at I3d (and theres a whole host of other really really smart coders there, such as FrikaC and LordHavoc).
Not me though… I’m just the news guy and avid Quaker.
Suggestion on Qonquer though, regarding that closure… In Qonquer you cannot win, you merely struggle. You struggle bitterly and onward, until you are overwhelmed. It is very very Quake. I’d say, sample a bit of the really oppressive ambiance in the soundtrack, manipulate it to fade in and then back out, cue that sound on death, and if possible fake a fade to black and print to console your kills and any other relevant information.
There is something remarkable to Quake’s oppression, and I’ve found some of the best maps and mods tap into this (Zerstorer, Beyond Belief).
func_msgboard does indeed rock