That
near-term update I mentioned earlier has arrived!
If you take a look at the
first post in the thread, you'll find that I have uploaded a new file:
wctools.zip. This contains a few tools that I've been tinkering on as I develop wcdx. The tools were originally written as I was figuring out the data formats used by the games and have been extremely useful for figuring out what the game is doing. They were originally just hastily thrown-together programs designed to verify my assumptions and make my life a little easier, so I wasn't planning to release them, but I think they may be of interest to the kind of people who still hang around a community-run game forum twenty-two years after Kilrathi Saga was released. I've been spending some time lately getting these ready for broader consumption, and here they are! As always, the source code is available on
GitHub.
So what are they?
- wcres: A tool for extracting individual resources from the data files in the GAMEDAT directory. Others have written this tool, and probably better, but I was interested in working it out for myself, and WCToolbox didn't exist at the time.
- wcimg: A tool for converting sprite images to PNG format. You can use this with wcres to view any sprite in WC1 or WC2. These are the tools I used to extract the images for this post.
Both wcres and wcimg can perform bulk operations, extracting one or all resources from a given resource file. For example, to extract all of the sprite images from COCKPIT.VGA, use the following commands from within the GAMEDAT directory:
Code:
wcres -o COCKPIT -extract-all COCKPIT.VGA
wcimg -o COCKPIT -extract-all -prefix 0_ COCKPIT\0
wcimg -o COCKPIT -extract-all -prefix 1_ COCKPIT\1
wcimg -o COCKPIT -extract-all -prefix 2_ COCKPIT\2
...
wcimg also has the ability to pack new images into a sprite resource, but I never got around to adding resource packing to
wcres, so it's not very useful yet. I should probably work on that...
Last, but
definitely not least:
- wcjukebox: A music player for Kilrathi Saga! This tool can play back any music track from WC1 and WC2. Detailed instructions are in the tool; just run it with no arguments to read all about it.
wcjukebox plays back music from the STREAMS directory in exactly the same way that the games do. This includes support for looping playback and following transitions between tracks as indicated by the stream files. Tracks can be specified either by track number (which follows the numbering used internally by the game), or by providing "trigger" and "intensity" values to go with a specific stream file. These values are used by the game to control transitions between tracks without the game having to keep track of them too closely. (This is also the source of the infamous endlessly repeating victory music bug.) You can use the
-show-tracks option to see how the games map track numbers to trigger and intensity values, or use the
-show-triggers option for a complete list of triggers and intensities available for a given stream. With the
-o option, you can save the music as a .wav file instead of listening to it.
Here's where I'd like your help:
I've put together this list of track names based on my vague recollection of where they turned up in the game. Some of these names are definitely wrong, while others are simply vague (such as "Combat 1" or "Mission 3"). If there's a canonical list of names somewhere, I'd love to update this list; otherwise, I'll happily take your best efforts at coming up with reasonable names for these!
Here's the list. Wing Commander 2 reused the same track numbers for all of the music that it had in common with Wing Commander 1, so there's only one list, which makes things easier. Additionally, there are four tracks in WC2 that don't have track numbers in the game (meaning you never heard them). One of these tracks is just a repetition of the jump music, but the others appear to be alternate orchestrations that George Oldziey was trying out before settling on the versions that actually appear in the game! I have listed them below as bonus tracks:
Wing Commander 1:
0 - Combat 1
1 - Combat 2
2 - Combat 3
3 - Combat 4
4 - Combat 5
5 - Combat 6
6 - Victorious combat
7 - Tragedy
8 - Dire straits
9 - Scratch one fighter
10 - Defeated fleeing enemy
11 - Wingman death
12 - Returning defeated
13 - Returning successful
14 - Returning jubilant
15 - Mission 1
16 - Mission 2
17 - Mission 3
18 - Mission 4
19 - OriginFX (actually, fanfare; the OriginFX music didn't make it into Kilrathi Saga, but this is the track number it would have had)
20 - Arcade Mission
21 - Arcade Victory
22 - Arcade Death
23 - Fanfare
24 - Halcyon's Office 1
25 - Briefing
26 - Briefing Dismissed
27 - Scramble
28 - Landing
29 - Damage Assessment
30 - Rec Room
31 - Eject
32 - Death
33 - Debriefing (successful)
34 - Debriefing (failed)
35 - Barracks
36 - Halcyon's Office / Briefing 2
37 - Medal of Honor
38 - Golden Sun
39 - Bronze/Silver Star
40 - Gold Star
Wing Commander 2:
41 - Prologue
42 - Torpedo lock
43 - Flight deck 1
44 - Angel
45 - Jazz 1
46 - Briefing
47 - Jump
48 - Prologue (quieter)
49 - Lounge 1
50 - Jazz 2
51 - Jazz 3
52 - Jazz 4
53 - Interlude 1
54 - Theme
55 - Bombing run
56 - Final Mission
57 - Fighting Thrakhath
58 - Kilrathi Theme
59 - Good Ending
60 - Lounge 2
61 - End Credits
62 - Interlude 2
63 - Jazz 5
64 - Flight Deck 2
65 - Sabotage
Wing Commander 2 Bonus Tracks:
66 - Defeated fleeing enemy (alternate)
67 - Wingman death (alternate)
68 - Unknown
69 - Jump (looping)