Crusader games in ScummVM?

stauff

Member
Joined
Jun 7, 2020
Messages
34
More updates..
  • Fixed height of silencer while kneeling (also need to check if that should apply while rolling, I guess so?)
  • Fixed bullet splashes sometimes appearing on the other side of walls
  • Fixed Turning off steam valve leaves 2 extra frames of full steam at the end
And since it's basically playable, here is me basically playing it - all the way through mission 1, messing up a couple of times.


Here are the remaining bugs (same list as before):
  • Walking up/down stairs causes silencer to pause for a moment
  • Occasional paint order issues (items popping up/down)
  • Computer text appears all at once, need to add scrolly effect
  • Death animations can still get stuck when the NPC falls as they die, at least I understand this problem now
I plan to play through Mission 2 onward in the next couple of days, will play until I find more bugs!
 

stauff

Member
Joined
Jun 7, 2020
Messages
34
Nothing like a playthrough to demonstrate to me how many bugs are left.. here is what I've fixed over the last couple of days..

* Fix actor animation speed! Finally feels right! - I had tried and removed a hack in for this ages ago, but I finally understand the code well enough to exactly make it correct, so I'm happy with it
* Fixed a couple of deep engine bugs which caused various game engine problems (eg, elevator doors not closing properly, Mission 2 impossible to complete)
* Fix detpac usage, doesn't spawn extra ones any more
* Fix z "centre on avatar" button to focus on the centre of the avatar, not his feet.
* Remove count text from inventory display when Crusader dies
* Fix animations used for combat rolls (when kneeling vs standing)
* Don't reset FIRSTSTEP on non-step animations, so crusader moves left-foot / right-foot even on separate steps
* Refactor and fix so all movies get subtitles (even intro and weasel)
* Remove mouse cursor (finally..)
* Add 'e' key for energy cube
* Add 'g' key for grab
* Fix items sometimes reappearing after exploding
* Only move camera on 'z' key if avatar position is valid
* Adjust 'slide' step distances to match original
* Implemented keyboard freeze so 'z' key can't be used during remote camera viewing and escape key will close that view (rather than open the menu)

So many fixes! I'm now up to the start of mission 3 and I'll keep adding videos to a longplay playlist as I go:


I'll keep fixing bugs as I go so each mission should look better than the last, I hope.
 

Uroboros

New member
Joined
May 10, 2021
Messages
6
Hi, nice work, I tried your latest version and it's great. thank you.

Do you have a list of possible fixes somewhere?

I'd like to ask about the avatar movement.
When testing it, it seems to me that there is a delayed sprint and rotation.
It seems to be reacting with a delay.
 

Uroboros

New member
Joined
May 10, 2021
Messages
6
Alternatively, if you could point me to parts of the code, I could possibly try to fiddle with it myself, but so far I haven't been able to find places that address avatar movement.
 

stauff

Member
Joined
Jun 7, 2020
Messages
34
Thanks for taking a look @Uroboros! Yes there are still some small movement annoyances I need to work out - the basic walking and running should now be frame and pixel identical, and standing turns are the right speed, but I haven't looked at time to start running or the response of trying to turn while moving, those both may be a bit wrong. There is also an issue that when the z of the floor changes subtley the actor "falls" which causes the animation to pause or stop. I need to dig through the original code a little bit more again to make that right.

I have a TODO list in a google sheet because I haven't gotten it stable enough to use the main bug tracker yet.

If you try the latest code you also will need to update the ultima.dat to get the right behaviour on larger weapons by the way, to do that you can just zip everything in devtools/create_ultima/files and use the zip file to replace ultima.dat.

The avatar movement is mostly controlled by engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp, which decides which animation to do next. The animation data and process in anim_dat.cpp and actor_anim_process.cpp also control how the speed works. Since it has to handle Ultima 8 too, there's a few things in there that are probably not how it would be structured if it was just for Crusader. Particularly, since the animations got renumbered I have a few hacks in place to renumber things as it goes, and it's a little bit messy as a result.
 

Uroboros

New member
Joined
May 10, 2021
Messages
6
Thank you for your quick response.

I ran into almost the same problems when testing the original.
1. I apologize because I assumed that the original did not contain these errors. :)
2. You did a really great job I think there are minor differences.
3. I would like to write them down this weekend.

Thanks for taking a look @Uroboros! Yes there are still some small movement annoyances I need to work out - the basic walking and running should now be frame and pixel identical, and standing turns are the right speed, but I haven't looked at time to start running or the response of trying to turn while moving, those both may be a bit wrong. There is also an issue that when the z of the floor changes subtley the actor "falls" which causes the animation to pause or stop. I need to dig through the original code a little bit more again to make that right.

I have a TODO list in a google sheet because I haven't gotten it stable enough to use the main bug tracker yet.

If you try the latest code you also will need to update the ultima.dat to get the right behaviour on larger weapons by the way, to do that you can just zip everything in devtools/create_ultima/files and use the zip file to replace ultima.dat.

The avatar movement is mostly controlled by engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp, which decides which animation to do next. The animation data and process in anim_dat.cpp and actor_anim_process.cpp also control how the speed works. Since it has to handle Ultima 8 too, there's a few things in there that are probably not how it would be structured if it was just for Crusader. Particularly, since the animations got renumbered I have a few hacks in place to renumber things as it goes, and it's a little bit messy as a result.
 

Uroboros

New member
Joined
May 10, 2021
Messages
6
1. In the original, when the avatar is standing up and when the ctrl + left arrow key is pressed.
it rolls to the left, but stays crouched.

In the scummvm version, it rolls to the left and returns to standing.
 

stauff

Member
Joined
Jun 7, 2020
Messages
34
1. In the original, when the avatar is standing up and when the ctrl + left arrow key is pressed.
it rolls to the left, but stays crouched.

In the scummvm version, it rolls to the left and returns to standing.

Nice catch! I just pushed a fix for that, and for the annoying pausing that can happen when navigating onto elevators etc.
 

Uroboros

New member
Joined
May 10, 2021
Messages
6
2. ORIGINAL Laser wall barrier
In SCUMMVM prevents passage but does not take life
3. ORIGINAL. After pressing the space bar, shooting continues and accelerates.
In SCUMMVM, while holding the space bar, it fires once until the space bar is pressed again.
 

Uroboros

New member
Joined
May 10, 2021
Messages
6
4. COMPARE avatar movement while running
DOSBOX avatar movement while running
SCUMMVM avatar movement while running

I have a feeling that the problem is that I sometimes have to press the left or right button twice to change direction.
If I hold the left or right button longer it shows up.

In the original, I just press it once and the change takes effect immediately.
 

stauff

Member
Joined
Jun 7, 2020
Messages
34
More great catches, thanks for those notes!

I just pushed fixes for the repeat-shooting (3) and turning immediately while moving (4). For No (2) I need to look harder at the fire type and damage info to know how it should affect shields vs health.
 

stauff

Member
Joined
Jun 7, 2020
Messages
34
Just (finally!) finished my full playthrough of Mission 3. In addition to the above fixes, got some major bugs in the process:

* A maths bug in the engine that made hover platforms sometimes move the wrong way
* A problem that caused the silencer to "stop" briefly when moving over small steps
* A game lock-up that can happen for a certain hover platform near the end of the mission
* A problem for the AVI decoder that made the screen get stuck on black for the end of mission 3 videos
* A bug that meant you could accidentally walk through laser barriers if pointed diagonally

There are still a few big bugs I found that need fixing:

* Spider bombs never explode at the moment (makes taking out turrets *really* hard..)
* One of the movies at the end of Mission 3 has some weird decoding errors at the top of the frame
* AI still seems broken - the thermatrons just kind of dance around and never attack me
* Still some chance of dead NPCs getting stuck :cry:
* My workaround for the game lock-up is just a workaround, I'd prefer to fix the root cause if I knew what it was.

But otherwise, it feels like the game plays as well as it ever did now! Here's the video of my Mission 3 playthrough:
 

stauff

Member
Joined
Jun 7, 2020
Messages
34
Made some nice progress in the last few weeks. Just finished Mission 6 in my playthrough, and there were no new game-breaking bugs (or even very large bugs) in this mission. Here's what's new:
  • Fixed spider bombs
  • Fixed Movie decoding glitches
  • Dying NPCs finally die properly!
  • Fixed AI a bit, but it's still kinda broken
  • Fixed some bugs in Weasel (eg, missing ammo), now works more like original although not perfect yet
  • Fixed a battery type bug
  • Fixed a broken cutscene in Mission 5
  • Fixed a subtle event order bug that was causing "ghost" people in the rebel base
  • Fixed a bug with music restore on load

I also got distracted during the playthrough and made some No Regret updates:
  • Added more weapon and firetype info for the extra weapons in No Regret
  • Added all the special things that happen when various No Regret NPCs get hurt
  • Updated some engine intrinsics to match what they are supposed to do
  • Implemented 'Bobo Boomer' process which makes lots of explosions
  • Implemented 'Rolling Thunder' process (which is NPCs rolling out / firing / rolling back) - unfortunately this created yet another hang on death... so still needs fixing

What's left in No Remorse?
  • Scrolly text on computers
  • Some paint order bugs
  • Try to really fix the AI so it shoots at me more and doesn't just walk around so much
  • Anything else that comes up as I go..
 

stauff

Member
Joined
Jun 7, 2020
Messages
34
Finished Mission 7 playthrough (will upload my kind of broken video cap of it soon) and found+fixed 3 new excellent bugs:
  • I had the wrong "z" threshold on teleport eggs, so walking over certain places which had a teleport trigger downstairs would incorrectly teleport sometimes. Fixed.
  • Fixed the end-of-mission transitions to the rebel base occasionally failing.
  • .. and in the process fixed an original game bug! Explanation below.
This is a stupidly small bug, but have you ever noticed that the rebel couple at the bar don't animate until you've triggered them by moving nearby? Probably not.

To see what I mean, watch closely to this original game playthrough vid:


When the silencer is walking around the rest of the bar, they are stationary. When he moves close to them, they look at him, and after his has moved away they occasionally animate like they are having a conversation. The exact reason for this is subtle and probably only interesting to me, but either way it is FIXED in ScummVM! They now animate from the start. I'm sure no one will ever notice except people who read this :)
 

IGTC

New member
Joined
Apr 21, 2017
Messages
11
This is a stupidly small bug, but have you ever noticed that the rebel couple at the bar don't animate until you've triggered them by moving nearby? Probably not.

When the silencer is walking around the rest of the bar, they are stationary. When he moves close to them, they look at him, and after his has moved away they occasionally animate like they are having a conversation. The exact reason for this is subtle and probably only interesting to me, but either way it is FIXED in ScummVM! They now animate from the start. I'm sure no one will ever notice except people who read this :)
Nice catch about the couple! You're right, I probably wouldn't have noticed.:oops:
 
Top Bottom