Wing Loader (KS/WCDX) Loader & Voice Over Mod

Yeah, I was thinking something similar for the Hobbs message scene... Not sure if that is in the PC version, been ages since I've played it on PC. And no the game fully pauses when not in focus, so when Wing Loader is playing a video WC3's process halts, so I can play an unlimited amount of videos.

It shouldn't be to big of a mess because I can run sc_101a.mp4 then sc_302.mp4 right after one another while WC3 is paused in the background. So there is no need to do any video editing. ODVS could make an updated pack, as long as his naming structure remains the same it will still be compatible with this method. :)
 
Ah the hobbs scene. Unfortunately it isn't in the PC version (Though should be I feel). I would think a player normally would have triggered when they check their locker in the barracks. Similar to the angel message. Though that would take some executable editing to do it that way. So your method maybe the only easy route.
 
Ah the hobbs scene. Unfortunately it isn't in the PC version (Though should be I feel). I would think a player normally would have triggered when they check their locker in the barracks. Similar to the angel message. Though that would take some executable editing to do it that way. So your method maybe the only easy route.
If I can find a mission value or what mission the player is on, I can just tie it in with the "Enter Barricks" video. :)
 
As I say I’m pretty certain you can put it in properly. Even if the hotspots aren’t present the images are and I can provide you details of the format so you can add an extra animated one.
The iff tool on the dev cd will let you make the necessary changes.

Also I don’t know if in the place you are injecting you have movie names or indexes, but as with all things the psx lookup files are exactly the same as pc so you can use lookmovi.iff from the psx version and use the same file names as ODVS’ pak.
 
Destro, I have been watching this project from afar for years now and just wanted to say thank you for all the work you have been put into it! 👍
I appreciate that. It's nice to know that the hard work is paying off. 😊 Hopefully I can keep impressing with each update. :p
 
i still wish it is possible to increase the game's internal resolution and possibly replace the backgrounds with higher res ones

i say this because of Gemini's superb job at Resident Evil, Dino Crisis and now Legacy of Kain redux patches
 
Hey, thank you for the excelent work on the WingLoader. I really enjoyed playing WC1 on it.
Noticed something in the installation guide a few pages back. Couldn't start WC2 maingame. I couldn't get the game to run. Found out on an old entry on the github page i had to rename the WC2 exe into Wing2. Might want to edit it in there ;)
I take it WC2 and 3 are still in various states of "early"?
Thanks again for all the great work and enjoy Italy!
 
Hey, thank you for the excelent work on the WingLoader. I really enjoyed playing WC1 on it.
Noticed something in the installation guide a few pages back. Couldn't start WC2 maingame. I couldn't get the game to run. Found out on an old entry on the github page i had to rename the WC2 exe into Wing2. Might want to edit it in there ;)
I take it WC2 and 3 are still in various states of "early"?
Thanks again for all the great work and enjoy Italy!

Turns out the newer GitHub post used to fail to mention that, and it drove me mad before he fixed it. LOL
WC2 Plays ok, except I wouldn't manually skip the cutscenes.

:)
 
Last edited:
So you played WC2DX? How was the experience for you? I'm just wondering because my experience was barely playable for WC2. Speed issues, crashes, cutscenes stopping or not playing. Is that just my experience or is that the general "in dev" situation for WC2?
 
Hey, thank you for the excelent work on the WingLoader. I really enjoyed playing WC1 on it.
Noticed something in the installation guide a few pages back. Couldn't start WC2 maingame. I couldn't get the game to run. Found out on an old entry on the github page i had to rename the WC2 exe into Wing2. Might want to edit it in there ;)
I take it WC2 and 3 are still in various states of "early"?
Thanks again for all the great work and enjoy Italy!
Interesting. I've not encountered this issue. It's not hard for me to force a rename in the bat file if needed. I'll review my install process and see if I can make that better. WC2 works ok for me (Minus the cutscene speed) but WC3 I'm having control issues with mouse and keyboard. I can only fly in a straight line, I can't seem to move the ship. I can boost and fire weapons but that's it. Works ok with a joystick. But all my program really does is launch the games (at least WC2 and currently WC3)

Thanks and Italy is great, so much amazing food. :p
 
Tested it with FlightShtick. He experienced the same installation issues. Also the same issue of cutscenes skipping (Like the explosion of the tigers claw) Other issues i experienced were missing voices every now and then, several seemingly random crashes happened for example during a debriefing cutscene, or when it asked me wether i wanted to import a character from WC1. I can check if the vanilla version has the same cutscene skipping issue?
 
Strange, I played WC2 KS edition flawlessly using WCDX update patch but I have not use the WIngLoader for WC2 only for WC1.

the only issue is cutscene speed and that is why I prefer WC2 Delux edition via DOSBOX, the game runs perfect speeds with the CTRL F11/F12 speed toggle, I have a few settings in the ,conf file also for joystick accuracy etc but I'm very happy with it, completed both Special Ops packs too.
 
Time flies when you're having fun I guess, seems only yesterday that I saw the front page post about someone playing with this, and it turns out that it's 3 years later and now there is a working port of the sega-cd speech into Kilrathi Saga!

First up, this is incredible - I've only played a little bit, but I love it! Inspired and curious about how it was working - I decided to take a look at how hard a similar scripting exercise would be for WC2 (I know that EmuMusicFan did some sterling analysis on doing this the 'proper' way by modding the game files). I've managed to identify the memory address where onscreen text is printed during cutscenes and where the game stores the playercharacter names (oddly it stores them twice, once for the savegame, and once for the cutscenes, which will be relevant later...)

From that, I managed to whip up a quick prototype WC2 script file that does what I need here, but identified a couple of issues with the engine/scripting logic (at least as I understand it) as it stands:

Firstly, WC2 uses the same memory address for the cutscene text, as it uses for the 'distance to target' during flight. That means that the console gets spammed during flight, and that the script will be parsed to some degree almost continually during gameplay (which seems to be causing performance impacts).
Logically, I can use the HasWord function in Destro's scripting to check for this - if the string contains ' km' then we can skip the rest of the script - but that doesn't help for the ' m' case. Destro, would it be possible to have an 'EndsWith' string test (without the code I can't be sure, but I don't think there is one)?

Secondly, in the scripting I had real issues with the string replacement - specifically in wanting to check for the below example from the 1st mission debriefing:
If|String|[String.Buffer1]|=|No, I'm not. That patrol scared me, s{[String.Name]}

For those curious, these are the memory addresses I have found so far:
0x0049345E - Mission Series (1-12) - updated during flight and on game-load - indicates Last (current) Mission flown
0x00493460 - Mission Number (0-3) - updated during flight and on game-load - indicates Last (current) Mission flown
0x00499EF8 - Player callsign
0x00499F10 - Player surname
0x00499F28 - Player firstname
0x005D1C41 - Cutscene text - Technically the address is 0x005D1C40 but both CheatEngine and the peek seem to fail to spot this as a string most of the time - using 0x005D1C41 just means that you chop off the first character. This is also the distance to current target counter address during spaceflight.
0x005D3C10 - Mission Letter (e.g. A/B/C/D) - updated during flight - updated during flight (not on game load) - indicates last (current) mission flown
0x005D3C41 - Mission Series Name (e.g. Gwynedd/Niven/Ghorah Khar)- updated during flight - updated during flight (not on game load) - indicates last (current) mission flown



0x0A33A1C1 - During spoken cutscenes this address, or one near it gets the original dos text - it can move though.
 
Time flies when you're having fun I guess, seems only yesterday that I saw the front page post about someone playing with this, and it turns out that it's 3 years later and now there is a working port of the sega-cd speech into Kilrathi Saga!

First up, this is incredible - I've only played a little bit, but I love it! Inspired and curious about how it was working - I decided to take a look at how hard a similar scripting exercise would be for WC2 (I know that EmuMusicFan did some sterling analysis on doing this the 'proper' way by modding the game files). I've managed to identify the memory address where onscreen text is printed during cutscenes and where the game stores the playercharacter names (oddly it stores them twice, once for the savegame, and once for the cutscenes, which will be relevant later...)

From that, I managed to whip up a quick prototype WC2 script file that does what I need here, but identified a couple of issues with the engine/scripting logic (at least as I understand it) as it stands:

Firstly, WC2 uses the same memory address for the cutscene text, as it uses for the 'distance to target' during flight. That means that the console gets spammed during flight, and that the script will be parsed to some degree almost continually during gameplay (which seems to be causing performance impacts).
Logically, I can use the HasWord function in Destro's scripting to check for this - if the string contains ' km' then we can skip the rest of the script - but that doesn't help for the ' m' case. Destro, would it be possible to have an 'EndsWith' string test (without the code I can't be sure, but I don't think there is one)?

Secondly, in the scripting I had real issues with the string replacement - specifically in wanting to check for the below example from the 1st mission debriefing:
If|String|[String.Buffer1]|=|No, I'm not. That patrol scared me, s{[String.Name]}

For those curious, these are the memory addresses I have found so far:
0x0049345E - Mission Series (1-12) - updated during flight and on game-load - indicates Last (current) Mission flown
0x00493460 - Mission Number (0-3) - updated during flight and on game-load - indicates Last (current) Mission flown
0x00499EF8 - Player callsign
0x00499F10 - Player surname
0x00499F28 - Player firstname
0x005D1C41 - Cutscene text - Technically the address is 0x005D1C40 but both CheatEngine and the peek seem to fail to spot this as a string most of the time - using 0x005D1C41 just means that you chop off the first character. This is also the distance to current target counter address during spaceflight.
0x005D3C10 - Mission Letter (e.g. A/B/C/D) - updated during flight - updated during flight (not on game load) - indicates last (current) mission flown
0x005D3C41 - Mission Series Name (e.g. Gwynedd/Niven/Ghorah Khar)- updated during flight - updated during flight (not on game load) - indicates last (current) mission flown



0x0A33A1C1 - During spoken cutscenes this address, or one near it gets the original dos text - it can move though.
First I got to say, I love that you used my scripting. Fills me with a little nerdy joy. 😝 I'm glad you're enjoying it!

The string compair looks good. The only things to note would be to always end the line with | Becuase that is the divider and the code looks for the next one to end... That said it should just go to the end of the line. I also see a double space after "I'm not." this could be the game has a double space. But pointing it out. And then all your scripting if true and end with EndIf|

I've also seen sometimes ' are stylized when typing in notpead++ (or whatever youre using) but the game requires less stylized ones and its a different character code. Coping from the debug console sometimes fixes this. Hopefully that helps get you in track. If you're still having issues I'll look into it further when I'm back from Italy.

There is no "EndsWith" Script but shouldn't be difficult to make one. I'll whip it up for you no problem.

The scripting is still in a pretty early state and I have some ideas to make it better. Currently I'm in the process of re-writing the entire engine code as I was using arrays that had some nesting issues with If statements. (If you watch the memory size in Task Manager and keep reloading WC1 you can see the memory get bigger each reload) It's not game breaking but it's an issue. I have a solution but it requires me to replace all the arrays with std::vector. This also let's the scripting work better as I don't need to define their size at compile.

Thanks for the Memory addresses. I'll definitely be messing around with them and cataloging them for future reference. :)
 
Back
Top