djcev.com

//






Adding airsteps to Ironwail 0.8.1

In Quake if the player runs into and is blocked by any sufficiently vertical plane the movement code will re-try the move with the starting position one stepheight up then move the player one stepheight down in an attempt to step over the obstruction. Quake 1 as shipped in 1996 only attempts this stepped move if the player is on the ground. This means that if you jump into a set of stairs and hit the vertical part of a step without landing on ground first you lose your momentum as though you'd run into a wall.

Later Quake games allow the player to step up even if they're in the air. Some Quake 1 sourceports implement this feature as well, often disabled by default. The feature is called an "airstep" in these engines and is typically enabled by setting the pm_airstep cvar to 1. The Quakespasm lineage of Quake engines (notably: Ironwail) do not, from what I can tell, implement airsteps.

That's an issue for me because I'd like to play the new cool singleplayer Quake mods but I don't want to get stuck on stairs. Fortunately this is easy to fix. Ironwail is used for most of these new mods & it's just a couple lines of code. Here's a quick patch for Ironwail 0.8.1 that adds rudimentary good-enough airsteps:


ironwail-0.8.1-airsteps.patch

diff --exclude Makefile -Nru ironwail-0.8.1-orig/Quake/sv_phys.c ironwail-0.8.1-hacked/Quake/sv_phys.c
--- ironwail-0.8.1-orig/Quake/sv_phys.c 2026-01-01 13:04:04.000000000 -0800
+++ ironwail-0.8.1-hacked/Quake/sv_phys.c   2026-01-20 19:17:37.866332969 -0800
@@ -865,9 +865,6 @@
    if ( !(clip & 2) )
        return;     // move didn't block on a step

-   if (!oldonground && ent->v.waterlevel == 0)
-       return;     // don't stair up while jumping
-
    if (ent->v.movetype != MOVETYPE_WALK)
        return;     // gibbed by a trigger

@@ -888,7 +885,6 @@
    VectorCopy (vec3_origin, upmove);
    VectorCopy (vec3_origin, downmove);
    upmove[2] = STEPSIZE;
-   downmove[2] = -STEPSIZE + oldvel[2]*host_frametime;

 // move up
    SV_PushEntity (ent, upmove);    // FIXME: don't link?
@@ -914,16 +910,26 @@
    if ( clip & 2 )
        SV_WallFriction (ent, &steptrace);

+   downmove[2] -= ent->v.origin[2] - oldorg[2];
+
 // move down
    downtrace = SV_PushEntity (ent, downmove);  // FIXME: don't link?

-   if (downtrace.plane.normal[2] > 0.7)
+   if (downtrace.allsolid)
+   {
+       VectorCopy (nosteporg, ent->v.origin);
+       VectorCopy (nostepvel, ent->v.velocity);
+   }
+   else if (downtrace.plane.normal[2] > 0.7)
    {
        if (ent->v.solid == SOLID_BSP)
        {
            ent->v.flags =  (int)ent->v.flags | FL_ONGROUND;
            ent->v.groundentity = EDICT_TO_PROG(downtrace.ent);
        }
+
+       if (oldvel[2] > 0)
+           ent->v.velocity[2] = oldvel[2];
    }
    else
    {



2025 Morrowind Mod List

After about 6 (!) months I recently finished a streamed playthrough of Morrowind. As finished as TES III can get anyway - the main quests of the base game and the two expansions complete. I played with around 85 mods, mostly sourced from the lists on Modding OpenMW.

After the cut you'll find a list of the mods I used with links back to nexusmods where they can be downloaded. Like the other modded game I played in 2025 I don't recommend this list. It's a better idea to pick one from modding-openmw.com and start from there.


bsd.network/@cev/115895702201464746

@cev@bsd.network's avatar image

@cev@bsd.network // / 115895702201464746 Origin link. Source file.
Tags: , , .

Continuing Outward (PC, 2019) today at twitch.tv/andreaen. Will be exploring the starting area & gathering some equipment so my character will have an easier time.

exploring, gathering (Outward first playthrough pt. 2)

Steve continues to have bad days

Twitch


bsd.network/@cev/115884018456294489

@cev@bsd.network's avatar image

@cev@bsd.network // / 115884018456294489 Origin link. Source file.
Tags: , , .

I'm starting a game of Outward (PC, 2019) today over at twitch.tv/andreaen. Outward is a third-person open world fantasy RPG where you start the game as a relatively normal person, a commoner, struggling to survive.

the return of Steve (Outward first playthrough pt. 1)

saving Steve's house, Steve has several bad days

Twitch


bsd.network/@cev/115878072340415426

@cev@bsd.network's avatar image

@cev@bsd.network // / 115878072340415426 Origin link. Source file.
Tags: , .

got my second amdgpu driver "flip_done timed out" crash last night. Same behavior as before, the graphics driver goes into an unrecoverable state requiring the system to be powered off and back on. No video until the power is cycled. The system can still be accessed via SSH though and seems to be fine outside of the lack of video.

It's definitely a known issue at this point judging by the volume of reports on the freedesktop gitlab. Here's hoping there'll be a good fix for it soon.


bsd.network/@cev/115866636489977924

@cev@bsd.network's avatar image

@cev@bsd.network // / 115866636489977924 Origin link. Source file.
Tags: , , .

Picking up Morrowind (PC, 2002) again today over at twitch.tv/andreaen. This session: more Bloodmoon main quest in the Skaal village.

tested by the Skaal (modded Morrowind pt. 27)

Bloodmoon main quest complete

Twitch


bsd.network/@cev/115843113866528182

@cev@bsd.network's avatar image

@cev@bsd.network // / 115843113866528182 Origin link. Source file.
Tags: , , .

Picking up my Morrowind (PC, 2002) save again today at twitch.tv/andreaen. I'll be doing quests on the island of Solstheim (in the second expansion, Bloodmoon).

an island to the north (modded Morrowind pt. 26)

Bloodmoon quests up to Skaal test of wisdom

Twitch


bsd.network/@cev/115837034240940713

@cev@bsd.network's avatar image

@cev@bsd.network // / 115837034240940713 Origin link. Source file.
Tags: , , .

I'm starting to run out of disk space so I spent a few hours combining multiple Wine prefixes into one. An empty Wine 10 prefix, it turns out, takes around 800 megs on my system. So keeping a small program (say a 300 meg game) in its own prefix adds up pretty fast.

New policy, only programs that need special configuration get their own Wine prefix.