Crusader games in ScummVM?

Finally got around to capturing a video, here it is:

Some obvious bugs in this video:
  • Silencer movement is still yucky
  • Firing is still not hitting the right target always, need to review the code compared to original
  • Health and energy bars still visible during mission intro movie
  • People don't always fall over properly on death
  • Music stops randomly at some point
  • "Atmospheric" sounds overload the mixer - they should be limited to 4 channels based on original code
  • Entering the correct code still doesn't work to open the door
Slow and steady progress..
 
Christmas means lots of free time, so here's what I'm up to:
  • Added Weasel (aka Wezzy)
  • Added movement 'slide' to the left and right like the original - now feels *way* more like the game
  • Added dedicated "atmospheric" channels so the bubbling acid doesn't use all the mixer channels (matching original game behavior)
  • Fixed static items so they animate at the correct speeds and with the correct behavior
  • Fixed enemy weapon firing animations so they actually fire (ow!)
  • Fixed firing to work more correctly - source location, ammunition type, etc (removes some hacks and uses the same values as original)
  • Fixed music stopping randomly
  • Fixed anim direction flags - enemies no longer moonwalk!
  • Fixed NPC death animation a little
  • Fixed No Regret startup (resolves a few issues in it, but siren is still non-stop)
  • Fixed keypads - now work properly, display digits, and support keyboard input
  • Fixed mission start movie to not have visible health bar at the bottom
  • Fixed splash damage - now exploding barrels break floor tiles like they should
  • Fixed sick bays / telporters / elevators so they now get triggered more correctly, although the fix is not guaranteed correct - needs more testing
That's a lot of fixes.. here are some videos. First, I wired Weasel up to the first computer for testing:

And then, here's me just playing through the game - since it mostly works now just with janky bits here and there:

.. I'm not very good at it :)

Obvious bugs:
  • Splash damage from barrels seems to be a bit too strong - I think I know why
  • One of the NPCs get stuck in a loop drawing his weapon - I think I know why for this too
  • Various z-order issues means sometimes things don't appear where they probably should - especially sprites
  • Shooting is better, but still isn't hitting the target sometimes when it should
  • Avatar movement a lot better, but still not as smooth as it should be - Need to keep digging here how the original works
 
Nice work Stauff! I noticed the splash damage too. I know it's not consistent with the vanilla game, but probably more realistic. I kinda like it actually. :cool:

I remember z-ordering being a pain during the development of Exult. They had to hard code a number of exceptions for certain map areas. I don't if Exult ultimately managed to fix everything with an algorithm or whether the Pentagram team also faced the same kind of exception issue thing.

Anyway, many thanks for the Christmas present! 🎁
 
I wrote a data file explorer for crusader about 15 years ago. let me know if u need help with something. I enjoy a bit of reversing from time to time.
 
Registered on the forum to track this project, playing these games again has been on my bucket list for literal decades now. With actual scrolling it looks smoother than ever. I'm not sure I could help with anything (my skills are more in the direction of pixel art) but I wish to offer my sincere gratitude for undertaking this and I do hope so, so very much that you manage to see this project through to completion. Will be following progress!
 
Thanks for the note @rotterdxm!

Since I haven't updated for a while, lest you think I've stopped working, here's what I've been up to in the last 2 months when I have a free moment. It's kind of all over the place, but the whole point of the project is I do whatever I feel like:
  • Added fine turning in weapon-drawn mode - turns now are exactly the right speed - I timed it to be sure!
  • Added combat rolls left/right, side-steps, and crouch movements
  • Added CRT-like mode for videos to reproduce original behaviour (might make this optional.. my cpu is fast enough to upscale now)
  • Added engine movie function needed for meeting informant on first level
  • Added save/load support (via ScummVM default dialogs) and fixed bugs around there so the games also load/save correctly
  • Fixed jump animation, can now jump on things correctly (previously flew off into the sky amusingly..)
  • Fixed splash damage to (probably) the same as the original
  • Fixed crosshair position (barely noticeable error)
  • Fixed "hit" events, now med bays and telepads work correctly
  • Fixed music looping, now loops to the right point
  • A bunch of small fixes to make movement closer to the original
  • No Regret: Finally fixed endless siren :) and a bunch of other engine events
  • No Regret: Started work on movie decoder (uses a totally different format - more like Wing Commander 3/4)
  • Lots of other small bugfixes (eg, no longer mysteriously get stuck or lose weapon, slightly more correct fire accuracy)
Not bad when I add it all up - the first level is getting close to completable! Unfortunately despite fixing a bunch of things, adding new features has left the movement a bit more broken than my last video so I'm in the middle of hammering out problems there - will post a new video once I've worked that out a bit.
 
Last edited:
I'm so glad that you're enjoying cracking this complex puzzle that you've set for yourself, Stauff! Congratulations on your impressive progress, looking forward to the next video :)

I take it that the amount of tasks you can switch between at will starts to decrease as the project progresses, with the tougher/less enjoyable ones remaining. Let's hope that there are no big showstoppers hiding there!

Personally speaking, when working on videogame related projects I also like to switch things up so I don't get burned out on it; I completely see where you are coming from.
 
Awesome. That's a nice buffet of fixes!

Looking forward to playing that iconic first level with Andrew's sweet sound track. 🎶
 
I've worked out some of the issues I mentioned in the last video, and still a few left.. but too long since I've posted a video!

Here are the extra new things on top of last update:
* Finished implementing Xan movie codec for No Regret
* Fixed weapon fire to more closely match original (again..). Now it's really close.
* Fixed up movement even more.. kneeling now works, running looks mostly right.

Only a few points, but they make all the difference. First, here's the movie decoding and a little bit of gameplay for No Regret:


Still a few broken things - gun overlays don't work, one enemy doesn't die (also he's supposed to roll back and forth, that's not implemented), a box explodes but it's still there.

But I haven't spent as much time on that as No Remorse. Now here's me just playing No Remorse for 18 minutes with all those fixes above - until just after meeting the informant. It's so close to being right now that you can basically just play it:


Listen to that music looping in the right place! Watch the combat rolls work perfectly! See how my shots hit the right target!

There are still a few problems that stick out to me:

* Explosions have the wrong z-order, so they sometimes appear below other things. Probably should be always-on-top.
* I got "stuck" a couple of times in the video and used the cheat mover.
* Running from gun drawn gets into a weird loop, mover transitions are not quite all right.
* Enemy AI is still kinda broken. The first guy just stands there, which is clearly wrong.
* When I turn off the steam valve, you see a couple of frames of the "full" steam at the end - so there's still something wrong there.

But all that said.. I just had a couple of weeks away from it and played it fresh last night .. and it was actually fun!


A side note on the Xan movie codec (by Blue Mu Productions??). ffmpeg and programs that use it (like VLC) have a partial implementation of this codec. With a lot of help from their code, I think I've made the first "full" reimplementation that is pixel-correct to the original - ffmpeg doesn't get all the luma right. You can also use it to play Wing Commander 4 videos, if you like some middle-aged Mark Hamill. This is from replacing the Origin video with a WC4 movie:

Screen Shot 2021-03-13 at 16.51.05.png
 
Exciting news regarding the Xan codec. I've shared it with my friends at the WCCIC.

Awesome update! Getting closer and closer!
 
That's ridiculously exciting news! Great work Stauff! Please let me know if you need someone to help with testing at any time!

Question, while I still have both the original CDs lying around, I have no optical drive and no guarantee the CDs still function. Of course, these installations will then also need a veritable array of patches as well. So I guess Origin/GoG will be needed?
 
That's ridiculously exciting news! Great work Stauff! Please let me know if you need someone to help with testing at any time!

Question, while I still have both the original CDs lying around, I have no optical drive and no guarantee the CDs still function. Of course, these installations will then also need a veritable array of patches as well. So I guess Origin/GoG will be needed?

Great question! I've been testing with the GOG versions as I no longer had my original CDs anyway. I think that's the easiest place to get the data these days. Depending when you got the CD the data may be identical anyway - as far as I know the GOG version is just the most recent released version. Also, most of the patch changes are in the exe I think, so I'm not sure how different the pre-patched game data will be either way. I'm happy to get new detection entries though, as the ideal will be that all the versions just work.
 
Another quick update since I made some good progress in the last couple of weeks:

* Switched NPC pathfinding to a reimplementation of the Crusader style (previously used more complex U8 style). Now attack process behavior is much closer to original - although not perfect, seems to still need some tweaks
* Fixed run-with-gun-drawn restarting sometimes
* Make sprites always-on-top so explosions and the crosshair don't disappear
* Fixed gravity process to have a small hang time like original
* Fixed collision for certain dynamic objects (eg, broken guns no longer fall through the floor)
* Fixed bug which caused overlapping pickup notifications when there were many of them
* Fixed not being able to select "bomb" style items in inventory (made mission 1 not possible to complete)
* Fixed inventory using wrong shape sometimes
* Fixed crusader stance not updating after weapon switch small/large
* Fixed palette fade-in effect at start of game on health/energy bars

The most visible remaining bugs for me now are:
* Actors don't always die properly
* I still sometimes get a bit stuck
* Falling into the acid doesn't trigger the correct animation
* Saved games always load with the "menu" music (that's what was playing when they got saved..)
* A few small missing features (difficulty selector, 'grab' operation (g button), jump with tab key, subtitles in movies, etc).
* One big missing feature - switch to robot (control via computer)
* A few game engine intrinsic functions that I haven't needed yet (map jump, isFalling(), etc)

And honestly that's about it! Remorse is getting surprisingly close to "done".
 
Last edited:
I started feeling like I'm close to finished, so I got excited and did a bunch of new work:
  • Added ability to control robots! Mostly good, some tweaks still needed?
  • Added subtitles to videos (for No Remorse only, No Regret has a different format)
  • Added some missing intrinsic functions: "map jump", "shoot object", "is falling", "set target" (most are rarely used in practice in the game engine)
  • Fixed death animation when falling into acid
  • Fixed music track restore after game load
  • Lots of fixes for large weapons, and adjust firing to be even closer to original
  • Set shield type on startup
  • Fix "egg hatcher" range to be correct for Crusader (I think)
  • Adjusted item selection distance to be exactly like original (probably no noticeable difference, was pretty close before)
  • A bunch of internal bug fixes which probably make no visible difference
That's nearly half my TODOs from the last update.. plus some other things. Need to capture a video to show it all off - fire some big guns, take control of a robot, then fall in the acid :)

Remaining things I need to feel finished**, most of which I've mentioned before:
  • Actors don't always die properly
  • Silencer still sometimes gets a bit stuck
  • A few small missing features:
    • Difficulty selector for new games
    • 'Grab' operation (g button, only in No Regret?)
    • Jump with tab key
    • Scrolly effect on computers (currently just displays in one block)
    • Ammo usage for higher difficulty levels
    • Reload animation for shotgun
    • Support cheat codes?
** Finished for me is not *exactly* reproducing original. For example, the informant video needs a greyscale background, and I haven't done any work on joystick or mouse support.. but that's not so interesting - mouse is really the worst way to control the original :)
 
"... if you like some middle-aged Mark Hamill."

Haha, if viewing a middle-aged Mark Hamill is the price for pixel perfect vids, I'll take that any day! 🎥🎬(y)(y)(y)
 
I haven't actually done any of the things on my todo list above, but I've made a lot of small fixes. Here are the major changes since my last message:
  • Fixed engine execution corner case, makes telepad at end of Mission 1 work properly and jump to rebel base with movies.
  • Added attack timeout values after moving (so you can "dodge" attacks a bit), to match original
  • Fix when target update happens (so broken guns no longer get targetted)
  • Small fixes for "gravity", things should fall through floors a bit less?
  • Correct "hurl" parameters for explosion damage
  • A few movement fixes for the robot control, and stop it from targeting itself
  • A few bugfixes for end-of-level cutscenes
  • Don't allow attack movements at rebel base
And some videos. First, big guns, big explosions!

Then, using the robot:

And finally, the end of Mission 1 (complete with an annoying leftover bug that means the barrier doesn't clear correctly after planting the bomb)

TODO list is still all the things above, plus a bunch of small bugfixes like:
  • Bullet splashes seem to still appear in the wrong place
  • Can't get to mission 2 - the telepad in the rebel base doesn't work
  • Need to adjust silencer's height during certain moves (particularly kneeling)
 
Man, that's a night-and-day difference between the first videos you've posted and these. I'm pumped.
 
Made some progress over the last few days. Here's the latest change list:
  • Added ammo usage and energy usage to match original, no more infinite grenade launcher..
  • Added reload animations and sounds (shotgun looks good now)
  • Fixed up a few more things about firing, hits the right thing a bit more often
  • Fixed up some engine differences so now elevator speeds (and a bunch of other events like camera moves) are frame-perfect to original
  • Found some other subtle engine differences which caused bugs like Thresher cannon not working (.. for 3 different reasons) and the barrier bug in the end-of-mission video above.
  • Finally got rid of strange numbers in some pickup notifications
  • Hide ammo display for guns which have infinite ammo
  • Hide other status bar items when controlling robots (to match original)
The result is that it's now possible to finish Mission 1, visit the rebel base, and advance to Mission 2 without needing any cheat moves. It's still possible to encounter some noticeable bugs along the way, but not so many any more!

TODO list of small things is still kinda long, but really starting to feel close now. Here's the list of key things I'll need to fix before general testing:
  • Actors don't die properly (probably the most annoying and hardest to fix)
  • Some small movement bugs in the robot (eg, if you try to run with it)
  • It's still occasionally possible to get stuck
  • Fix height of silencer while kneeling (also need to check if that should apply while rolling, I guess so?)
  • Add difficulty selector menu to the start (been putting this off as it just adds an extra button click to me starting the game for testing)
  • Add Ability to load game directly from ScummVM launcher
.. and any other bugs I discover along the way I guess!
 
Had a few days free, so making some good progress - and unusually, attacking my TODO list head-on. Here's where I'm at:
  • Added all the custom death animations for big guns (so much more fun!)
  • Finally fixed actors not dying properly!!! yay!!
  • Most robot movement bugs fixed
  • Added difficulty selector menu
  • Added loading game directly from scummvm launcher
And, a video showing off these and also the faster elevators, hidden ammo display for energy weapons, etc from the last update..
(if you want the "guy running around on fire", it's near the end)

So that leaves just a few real issues I know of:
  • Fix height of silencer while kneeling (also need to check if that should apply while rolling, I guess so?)
  • Bullet splashes sometimes appear on the other side of walls
  • Walking up/down stairs causes silencer to pause for a moment (I know why, but it's hard to fix..)
  • Occasional paint order issues (items popping up/down)
  • Turning off steam valve leaves 2 extra frames of full steam at the end
  • Computer text appears all at once, need to add scrolly effect
And after that we get to the really minor things (small graphical glitch at the start of the level, fade not exactly like original, etc)
 
Back
Top