Skip to content

v2.2.5 — fix "start a new game" freeze (gl_trans_lighting / base1 glass)

Choose a tag to compare

@matthewdeaves matthewdeaves released this 31 May 20:10

Fix: "Start a new game" froze on G4/G5 (base1 "Outer Base")

The v2.2.4 DMG installed clean everywhere, but starting a new game froze on the
G4-mini and iMac G5 (pegged process, no crash log, ignored a normal quit) while the
G3 was fine. It looked like a fullscreen/driver wedge — it wasn't.

Root cause: our gl_trans_lighting feature (lightmap-modulate glass/grates,
ported from kmquake2) builds lightmaps for translucent surfaces at map load, calling
R_BuildLightMap — whose stock guard rejects SURF_TRANS33/66 as "non-lit"
and raises ERR_DROP. That drop longjmps to a console the engine then redraws
forever, presenting as a freeze. base1 ("Outer Base") has non-warp glass, so it hit
it immediately; base2's translucent surfaces are mostly water (caught by an earlier
guard), which masked the bug. kmquake2 relaxes that exact guard to
(SURF_SKY|SURF_WARP); we ported the feature but not the guard.

Fix: one line in r_light.c(SURF_SKY|SURF_TRANS33|SURF_TRANS66|SURF_WARP)
(SURF_SKY|SURF_WARP), matching upstream kmquake2. Non-warp translucent surfaces
carry real lightmap data and are meant to be lit.

Validated fleet-wide via this DMG (installed from the mounted image, production
launch, in-game "Outer Base" confirmed): iMac G5 (ppc970/Leopard), G3 (ppc750/Panther),
Intel mini (Lion), quicksilver (ppc7400/Tiger), G4-mini (ppc7400/Tiger).

DMG contents verified byte-identical to source (md5 7e3c1a09fc34d7b5845aefaf4f5f6701).

🤖 Generated with Claude Code