stauff
Member
Hi Crusader fans,
The Pentagram Ultima 8 engine was integrated into ScummVM recently, and I decided to work on some improvements for it. In the process I got interested in the Crusader games - the engines are based on the U8 one, and there was some early-stage support already in Pentagram.
I made some progress on adding more things, and here's where it's at:
* Shapes, sounds, and maps all load - Pentagram already had all this
* Music plays - AMF support was already out there in a few mod players, so it just needed adding to scummvm
* Movies work - luckily someone had worked out the movie encoder already: https://wiki.multimedia.cx/index.php/Origin_Flic_Codec
* The avatar can walk around (needed some hacks to the U8 animation system, speed still not right but it works)
* Some of the simplest game engine events work, so "using" a valve turns it and makes a squeaking noise
Put it all together it looks like this right now:
I'm now at the stage where I need to disassemble a game seriously to work out what the other game engine events are. I've started already (with No Remorse) and I'm making some progress, but it'll be a long journey.
I don't want to get any hopes up about a complete reimplementation, but I'm finding it an interesting project and will probably keep working on it until I've got a playable game, get stuck, or I get totally sick of it all If anyone here wants to help or is just interested then let me know and I'll get into more details.
Some trivia I've noticed so far (many of which you can notice by just looking at strings from the exe):
* The check for 15 megs of free disk space actually checks for 16,000,000 bytes free
* The `-laurie` option (which prints "No pity. No mercy. No remorse." on quit instead of "CRUSADER: No Remorse") is implemented as a series of character checks in the code rather than an option string (to obscure it?) .. but then there's a string that says "FART ...TRY... -laurie (Have fun, Jely)".. hmm..
* There's a memory manager called `YAMM`, which I presume stands for "Yet Another Memory Manager"
* There's only so many times you can see the Asylum Sound System functions (ASSInit, etc) without wondering about whether the name was just chosen for the acronym
* There's a built-in engine debugger, and I would really like to have one of the unk symbol files..
* 16 bit protected mode disassembles into a nightmare of high/low word handling for 32-bit pointers
The Pentagram Ultima 8 engine was integrated into ScummVM recently, and I decided to work on some improvements for it. In the process I got interested in the Crusader games - the engines are based on the U8 one, and there was some early-stage support already in Pentagram.
I made some progress on adding more things, and here's where it's at:
* Shapes, sounds, and maps all load - Pentagram already had all this
* Music plays - AMF support was already out there in a few mod players, so it just needed adding to scummvm
* Movies work - luckily someone had worked out the movie encoder already: https://wiki.multimedia.cx/index.php/Origin_Flic_Codec
* The avatar can walk around (needed some hacks to the U8 animation system, speed still not right but it works)
* Some of the simplest game engine events work, so "using" a valve turns it and makes a squeaking noise
Put it all together it looks like this right now:
I'm now at the stage where I need to disassemble a game seriously to work out what the other game engine events are. I've started already (with No Remorse) and I'm making some progress, but it'll be a long journey.
I don't want to get any hopes up about a complete reimplementation, but I'm finding it an interesting project and will probably keep working on it until I've got a playable game, get stuck, or I get totally sick of it all If anyone here wants to help or is just interested then let me know and I'll get into more details.
Some trivia I've noticed so far (many of which you can notice by just looking at strings from the exe):
* The check for 15 megs of free disk space actually checks for 16,000,000 bytes free
* The `-laurie` option (which prints "No pity. No mercy. No remorse." on quit instead of "CRUSADER: No Remorse") is implemented as a series of character checks in the code rather than an option string (to obscure it?) .. but then there's a string that says "FART ...TRY... -laurie (Have fun, Jely)".. hmm..
* There's a memory manager called `YAMM`, which I presume stands for "Yet Another Memory Manager"
* There's only so many times you can see the Asylum Sound System functions (ASSInit, etc) without wondering about whether the name was just chosen for the acronym
* There's a built-in engine debugger, and I would really like to have one of the unk symbol files..
* 16 bit protected mode disassembles into a nightmare of high/low word handling for 32-bit pointers