Wing Commander Toolbox

Discussion in 'Fan Projects & Editing' started by UnnamedCharacter, Feb 26, 2015.

  1. rubenbirri

    rubenbirri Spaceman

    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Gender:
    Male
    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)?
     
  2. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    @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
     
    Shades2585 likes this.
  3. rubenbirri

    rubenbirri Spaceman

    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Gender:
    Male
    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:

    [​IMG]

    Thank you very much again!!!
     
    Last edited by a moderator: May 24, 2018
  4. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    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.
     
  5. rubenbirri

    rubenbirri Spaceman

    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Gender:
    Male
    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?
     
  6. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    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.
     
  7. rubenbirri

    rubenbirri Spaceman

    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Gender:
    Male
    Very good! It work!
    [​IMG]

    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! :)
     
  8. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    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
     
  9. rubenbirri

    rubenbirri Spaceman

    Messages:
    5
    Likes Received:
    0
    Trophy Points:
    0
    Gender:
    Male
    Last edited: Oct 23, 2015
  10. Shades2585

    Shades2585 none

    Messages:
    596
    Likes Received:
    22
    Trophy Points:
    26,185
    @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
     

    Attached Files:

  11. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    @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.
     
  12. Shades2585

    Shades2585 none

    Messages:
    596
    Likes Received:
    22
    Trophy Points:
    26,185
    @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
     

    Attached Files:

    Last edited: Oct 24, 2015
  13. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    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.
     
    Shades2585 likes this.
  14. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    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
    
    ...
    
     
    delMar likes this.
  15. Shades2585

    Shades2585 none

    Messages:
    596
    Likes Received:
    22
    Trophy Points:
    26,185
    @UnnamedCharacter Thanks for the update and all your hard work! :D

    Does anyone know what the "Unknown1" and "Unknown2" collomes represent?

    Thanks! :D
     
  16. centaurianmudpig

    centaurianmudpig Captain

    Messages:
    296
    Likes Received:
    59
    Trophy Points:
    10,635
    Gender:
    Male
    Location:
    Earth, New Old England
    A total guess on my part, perhaps Ace and Capital Ship kills?
     
  17. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    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
     
    delMar and Shades2585 like this.
  18. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    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.
     
    delMar and centaurianmudpig like this.
  19. Shades2585

    Shades2585 none

    Messages:
    596
    Likes Received:
    22
    Trophy Points:
    26,185
    Thanks for the update! :D

    Looking good! :D

    Seasons Greetings to you too! :D
     
  20. UnnamedCharacter

    UnnamedCharacter Ensign

    Messages:
    116
    Likes Received:
    88
    Trophy Points:
    2,235
    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.
     

Share This Page