Aren’t you on the wrong ship?

WC3 variant of the Arrow

It was not our intention to port Wing Commander 3 yet, but rather unintentionally we’ve ended up with a bunch of Heart of the Tiger updates.

Excuse me, sir. Did you say the Victory?

“Wait what? Wing Commander 3?” I hear you asking.

We don’t want you to get the wrong idea – we’re still only making Wing Commander 4 (for now), and were considering not showing the work done here; but the truth is if we didn’t show any of the work we did with Wing Commander 3 assets it’d keep us from sharing a lot of the process with you.

Why is that? In some cases it’s just low hanging fruit (such as the additional paint-jobs for ships appearing in both games), but often the quickest way to understanding WCIV’s file formats is to go through WCIII. But before we dig into that; lets cover another one of those pieces of fruit:

Blair reports the loss of the concorida
Blair reports the loss of the Concorida in HD FMV

FMV

I was curious to see if we could play back ODVS‘ AI upscaled PSX videos, which led to supporting some additional formats with our video playback, as well as parsing the original video files in order to extract the subtitles (ffmpeg supports both WC3 and IV video, but not the subtitles).

The PSX version includes a number of scenes cut from the PC version so we also explored the possibility of integrating those either into a remake or the original. The formats were similar enough that we’re confident this would be possible.

In fact they are so similar that we copied the LOOKMOVI.IFF (matches indexes to movie filenames) from the Playstation version rather than renaming the movie files to match the PC version. Even the animated image for the bar TV screen appears to be present in the PC version, so integrating the videos is a tantalizing few splices of data away (but this would mean an MVE encoder to add to vanilla GoG version).

AI up-scaled conspiracy theorist. That’s so 2020

Neat and Shiny Room Files

The next thing we have to show is our first attempt at loading the room files.

Since ODVS had already completed upscaling the FMV we decided to look into extracting the images used for the rooms to see what he could do with those.

Armed with the decoding code that UnnamedCharacter (author of the wctoolbox) has graciously provided us, we proceeded to extract every single image. Going from the original 256-color compressed images to uncompressed 32bit TGAs saw them increase in size from 8MB to a close to 1GB (no 200GB installs in the 90s). ODVS then processed them (he will be documenting the process in another update) to give us a whopping 4GB image pack of BC7 compressed 4k textures.

Hobbes greets you before *redacted*

Once he’d done a few tests we were keen to see them in-game, but Wing Commander 4 doesn’t see you enter a room until after mission 1, and more importantly we struggled to find the information we needed.

As I touched on earlier, Wing Commander 3 data seems to be easier to reverse engineer as almost every variable in its data files has it’s own FourCC identifier (whereas 4 often uses larger chunks, leaving us without valuable metadata).

Presumably this was done to improve loading times; modern games almost always create their data such that it can just be dumped straight into memory without processing, but that makes life hard for us. Starting with 3 we have more context to work with.

The room files were an extreme example of this; there wasn’t even an equivalent of victory.iff (which specified palette and background images that we could see). The path forward was clearer with Wing Commander 3, and so we started there.

Replacement mouse cursors

“It’s a peaceful life”

One shape not located in SHAPES.PAK was the mouse cursor. When we did locate it, it didn’t load correctly using the same routine as the other shapes. Rather than die on this hill we decided that this would be a perfect candidate for something to be recreated.

ODVS offered to remake the cursors for us – true to the original, but HD and animated.

Here you can see the four icons; standard pointer, computer terminal, start a conversation and navigate to a different location.