Wing Commander Toolbox

rubenbirri

Spaceman
Thank you for this tool!

How to proceed to compile the folder with all images to a file .VGA? And with font file(FONTS.FNT)?
 
@Shades2585

I had not considered creating a GUI, but I might be able to add one for the next release. At the moment I am making changes to the consoles applications and I will see if I can easily add a graphical interface to the tools.


@rubenbirri

To unpack a game data file to XML, including extracting images, type the following at the command line:

WC1Xml.exe ARROW.VGA

Afterwards, make any modifications to the XML and/or images, making sure to preserve the color palette. When done, pack the XML, and images, into a game data file:

WC1Xml.exe ARROW.VGA.XML
 

rubenbirri

Spaceman
Using WC1Xml.exe images are .gif

1_As I edit those images while maintaining the color palette?

And the last:

2_In the letters, I add the following symbols: áéíóúñÁÉÍÓÚÑ --->What I have to edit to introduce these symbols?

as in your example:

diacritical-marks-png.7738


Thank you very much again!!!
 
Last edited by a moderator:
1. Edit the GIF images extracted from the font file using any image editor that preserves the color palette; I know GIMP software is able to do so. The number of colors in the palette and the ordering of these colors is important since they are used to map to the game palette.

2. The BRIEFING files contain the majority of the dialog in the game; from the command line: WC1Xml.exe BRIEFING.000.
 

rubenbirri

Spaceman
2. The BRIEFING files contain the majority of the dialog in the game; from the command line: WC1Xml.exe BRIEFING.000.

Yes, I know, but would like to know, how do I insert to game the new characters: ¡¿áéíóúñÁÉÍÓÚÑ

So then if I translate the file BRIEFING recognize those characters...

Do I need an font editor(.fnt) for that?
 
I need to preface all of the following by saying that currently the WCToolbox only supports ASCII. I do intend to add support for other character encodings, it’s just not in place right now. That does not mean it is impossible to do what you want, it’s just more difficult than it needs to be. Also, I am going to skip the details of character encoding; it is a complex subject, but if you have any questions, just ask.

For starters, the font file (FONTS.FNT) needs to be updated.
  1. Unpack the fonts, from the command line: WC1Xml.exe FONTS.FNT; this will extract all the font glyphs (characters) as images.
  2. Edit the glyphs of the first font (from Block 0).
    1. Edit individual images corresponding to the specific position of each character. For the characters you have indicated, you can use ISO-8859-1 encoding (Western European); you can find tables that list the positions of characters. For example, the character "é" is at position 233; so you would modify the image: FONTS.FNT-FontBlock000-Font-Glyph233.gif.
  3. Once the edits are complete, pack the font, from the command line: WC1Xml.exe FONTS.FNT.XML.
After the font has been updated, you need to modify the dialog (BRIEFING.000). This is where it gets more complicated because of the lack of support for non-ASCII encodings.
  1. Unpack the conversations, from the command line: WC1Xml.exe BRIEFING.000.
  2. Edit the text of a conversation.
    1. Because ASCII is required at the moment, exclude diacritical marks. So for example, instead of "étudier", use "etudier".
  3. Once the edits are complete, pack the conversations, from the command line: WC1Xml.exe BRIEFING.000.XML.
  4. Using a HEX editor, search-and-replace the non-accented words for accented ones.
Make sure to backup everything.
 

rubenbirri

Spaceman
Very good! It work!
BDC.png


But other questions arise now...

1_Why it appears without color?
2_For the "é" is "Glyph233"...What are the other positions for the signs: á í ó ú ñ Á É Í Ó Ú Ñ ¿ ¡

Thank you very much for your help! I really admire your knowledge! :)
 
Great! I'm glad you got it to work (could you fix the reference to the image, I would like to see the result).

1. I will take a guess as to the problem. Fonts have two colors with special significance: one is used as the background color, the other as the foreground color. These are not just specific colors, but specific positions within the game palette. If you look in the XML for the font file (FONTS.FNT.XML), you will see that each font specify these values; so for the first font, not just any black is used for the background, but the first black entry in the palette (index 0), and the same for white (index 15).

These two special colors are manipulated as needed by the game; either removing the background or replacing the foreground color with the color of a speaking character. All other colors are displayed as is; you can see the effect in the last font, the one used for the scoreboard.

Here is the palette, for reference:

GAME.PAL-linear.png


(You can also generate it yourself using: WC1Extractor.exe GAME.PAL)


2. For the other glyphs, Wikipedia has a table: https://en.wikipedia.org/wiki/ISO/IEC_8859-1
 
@UnnamedCharacter I'm not sure what I'm doing wrong. I wanted to extract all the font images with the hopes of creating a real font from their images but I'm getting this error. I'm using the Win 10-64 Command Prompt.

Thanks for all your help and keep up the great work. I look forward to the GUI! :D
 

Attachments

  • Capture.JPG
    Capture.JPG
    41.9 KB · Views: 98
@Shades2585

The Extractor will output the file(s) to the current directory and since you are executing it from the root of your C: drive (C:\), it tries to create them there, but the application does not have write permission.

Try executing the application from the specific folder instead. In your case from the default command prompt: "cd Desktop\WCTools". This will place you in the specific folder (C:\Users\...\Desktop\WCTools>), then execute the application. Also, make sure the palette (GAME.PAL) is along side the font file.

Let me know if you need more help.
 
@UnnamedCharacter Thanks! That worked like a charm! :D Note, it doesn't place the images in a folder of the same files name like you were mentioning earlier in this thread.
I also had an issue extracting the Midgame.v03. I'm sure I'm doing something silly. Thanks.
If it is possible to save the images with their transparent backgrounds that would be awesome! :D
Keep up the great work! :D

EDIT: I just extracted the briefing.vga and it did give transparent backgrounds, fonts however did not. Just thought I'd let you know.

Again, thanks for all your hard work! :D
 

Attachments

  • Capture2.JPG
    Capture2.JPG
    39.4 KB · Views: 98
Last edited:
Another update adding support for character encodings, partial support for executables, experimental support for MIDGAME, and a new console application replacing the previous ones.

See first post for the complete list of new features and file attachment.


@rubenbirri

If you are still working on translating the BRIEFING file, this update will simplify your process. Here are updated instructions.
  1. Unpack the conversations, from the command line: WC1ToolsCmd.exe xmlunpack BRIEFING.000 /encoding:iso-8859-1.
  2. Edit the text of a conversation. With this update, the XML will be in UTF-8; this encoding supports accented characters.
  3. Once the edits are complete, pack the conversations, from the command line: WC1ToolsCmd.exe xmlpack BRIEFING.000.XML /encoding:iso-8859-1.

@Shades2585

The MIDGAME files were not supported; these contain the cutscene animations and will probably take some time to fully understand. This update includes experimental support.

For the fonts, the background is deliberately not transparent. The font glyphs reference specific colors in the palette and they happen not to be referencing the transparent color for the background.

Also, I have pushed the GUI to the next release; I wanted to get this release out without delaying it any further.
 
File Format: EXE

The WCToolbox supports several *.EXE type files (WC.EXE, SM1.EXE SM2.EXE, WC1.EXE, WING1.EXE). These are the game executables.

A sample of the output of the XML Unpack command:

Code:
<ExeFile>
  <Pilots>
    <Pilot CallSign="SPIRIT" LastName="TANAKA" MilitaryRankIndex="1" Sorties="11" Kills="14" Unknown1="3" Unknown2="1" />
    <Pilot CallSign="HUNTER" LastName="ST.JOHN" MilitaryRankIndex="2" Sorties="25" Kills="32" Unknown1="4" Unknown2="4" />
    <Pilot CallSign="BOSSMAN" LastName="CHEN" MilitaryRankIndex="3" Sorties="35" Kills="37" Unknown1="1" Unknown2="2" />
    <Pilot CallSign="ICEMAN" LastName="CASEY" MilitaryRankIndex="3" Sorties="28" Kills="43" Unknown1="0" Unknown2="1" />
    <Pilot CallSign="ANGEL" LastName="DEVEREAUX" MilitaryRankIndex="2" Sorties="22" Kills="20" Unknown1="0" Unknown2="1" />
...

A sample of the output of the Extract command:

Code:
EXE File
========

PILOTS
------

 # Last Name     Call Sign     Rank Sorties Kills Unknown1 Unknown2

 0 TANAKA        SPIRIT           1      11    14        3        1
 1 ST.JOHN       HUNTER           2      25    32        4        4
 2 CHEN          BOSSMAN          3      35    37        1        2
 3 CASEY         ICEMAN           3      28    43        0        1
 4 DEVEREAUX     ANGEL            2      22    20        0        1

...
 
Well I missed the front page update by a day. Here is a small update which includes the new graphical interface, a simple front-end with similar functionality as the console. There is also a tiny bit of new functionality: editing the common and dialog text colors in the EXE.

See first post for the file attachment.

WC1Tools.png
 
Updated the EXE file to support editing of the initial game state, and editing of the cockpit damage and instrument layouts.

A sample of the output of the XML Unpack command:

Code:
  <CockpitInstrumentLayouts>
    <CockpitInstrumentLayout>
      <Light Position="101,122" OnImageIndex="3" OffImageIndex="14" />
      <Light Position="101,145" OnImageIndex="3" OffImageIndex="14" />
      ...
      <Gauge StartPosition="215,122" EndPosition="219,152" StepDirection="Up" Steps="31" OnImageIndex="5" OffImageIndex="16" />
      <Gauge StartPosition="143,97" EndPosition="175,99" StepDirection="Right" Steps="33" OnImageIndex="1" OffImageIndex="12" />
      ...
      <Readout Position="99,130" />
      <Readout Position="99,140" />
      ...
      <VDU1 StartPosition="10,133" EndPosition="82,198" />
      <VDU2 StartPosition="236,133" EndPosition="309,198" />
      <Radar CenterPosition="159,126" StartPosition="145,113" EndPosition="173,139" />

A sample of the output of the Extract command:

Code:
Cockpit Instrument Layouts
--------------------------

SHIP  0

Lights:
Shield, Front: XY: 101,122; On Image Index:  3; Off Image Index: 14
Shield, Rear:  XY: 101,145; On Image Index:  3; Off Image Index: 14
...

Gauges:
Fuel:          Step Direction: Up   ; XY-Start: 215,122; XY-End: 219,152; Steps: 31; On Image Index:  5; Off Image Index: 16
Gun:           Step Direction: Right; XY-Start: 143, 97; XY-End: 175, 99; Steps: 33; On Image Index:  1; Off Image Index: 12
...

Readouts:
Shield, Front: XY:  99,130
Shield, Rear:  XY:  99,140
...

VDU1: XY-Start:  10,133; XY-End:  82,198
VDU2: XY-Start: 236,133; XY-End: 309,198

Radar: XY-Center: 159,126; XY-Start: 145,113; XY-End: 173,139


See first post for the file attachment.


This will probably be the last update for this year; Merry Christmas everyone.
 
Updated the EXE file to support editing of the ships, hardpoints, and flight formations.

A sample of the output of the XML Unpack command:

Code:
<Ships>
  <Ship ClassIdentifier="12" Radius="100" Mass="125" MaximumScale="1024" PowerPlant="5" Fuel="200000" Damage="5" Explosive="4000" MaximumSpeed="42" ... Shields="40 40" Armor="45 40 30 30">
  <Weapon ShipIndex="24" HardpointIndex="0" Selected="true" />
  <Weapon ShipIndex="24" HardpointIndex="1" Selected="true" />
  <Weapon ShipIndex="28" HardpointIndex="2" Selected="true" />
  <Weapon ShipIndex="28" HardpointIndex="3" Selected="false" />
  <Weapon ShipIndex="29" HardpointIndex="4" Selected="false" />
  ...
  <Ship ClassIdentifier="12" Radius="120" Mass="135" MaximumScale="1024" PowerPlant="3" Fuel="250000" Damage="6" Explosive="6000" MaximumSpeed="45" ... Shields="80 75" Armor="60 55 50 50">
  <Weapon ShipIndex="24" HardpointIndex="14" Selected="false" />
  <Weapon ShipIndex="24" HardpointIndex="18" Selected="false" />
  <Weapon ShipIndex="25" HardpointIndex="12" Selected="true" />
  <Weapon ShipIndex="25" HardpointIndex="20" Selected="true" />
  <Weapon ShipIndex="31" HardpointIndex="16" Selected="false" />
  ...

A sample of the output of the Extract command:

Code:
Ship:  0: Class: 12; Radius: 100; Mass:  125; Max Scale: 1024; Power Plant:  5; Fuel: 200000; Damage:  5; Explosive:  4000; Max Speed:  420; ...
Shields: Fore:  4; Aft:  4; Armor: Front: 4.5; Rear:  4; Left:  3; Right:  3
  Weapon 0: Ship Index: 24; Hardpoint Index:  0; Selected: True
  Weapon 1: Ship Index: 24; Hardpoint Index:  1; Selected: True
  Weapon 2: Ship Index: 28; Hardpoint Index:  2; Selected: True
  Weapon 3: Ship Index: 28; Hardpoint Index:  3; Selected: False
  Weapon 4: Ship Index: 29; Hardpoint Index:  4; Selected: False
...

Ship:  1: Class: 12; Radius: 120; Mass:  135; Max Scale: 1024; Power Plant:  3; Fuel: 250000; Damage:  6; Explosive:  6000; Max Speed:  450; ...
Shields: Fore:  8; Aft: 7.5; Armor: Front:  6; Rear: 5.5; Left:  5; Right:  5
  Weapon 0: Ship Index: 24; Hardpoint Index: 14; Selected: False
  Weapon 1: Ship Index: 24; Hardpoint Index: 18; Selected: False
  Weapon 2: Ship Index: 25; Hardpoint Index: 12; Selected: True
  Weapon 3: Ship Index: 25; Hardpoint Index: 20; Selected: True
  Weapon 4: Ship Index: 31; Hardpoint Index: 16; Selected: False
...

See first post for the file attachment.
 
Top