Difference between revisions of "Wiimms SZS Tools"

From Custom Mario Kart
Jump to navigation Jump to search
Line 1: Line 1:
 
== Introduction ==
 
== Introduction ==
  
'''Wiimms SZS Tools''' is a set of different tools to manipulate [[SZS]] and [[BMG]] files. All tools are command line tools and run without any interaction. The main goal is to run them in batch files and scripts to automate recurring jobs. There are two tools:
+
'''Wiimms SZS Tools''' is a set of different tools to manipulate [[SZS]], [[U8]], [[BRRES]] and [[BMG]] files. All tools are command line tools and run without any interaction. The tools are available for Linux, mac and Windows. The main goal is to run them in batch files and scripts to automate recurring jobs. At the moment there are two tools:
* '''wszst''' : Wiimms SZS Tool
+
* '''wszst''' : Wiimms SZS Tool (handles  [[SZS]], [[U8]] and [[BRRES]] archives)
* '''wbmgt''' : Wiimms BMG Tool
+
* '''wbmgt''' : Wiimms BMG Tool (handles raw and text [[BMG]] files).
Both tools together can be used to change the track names of all message files of all languages without interaction.
+
One main goal is the fully automated [[Wiimms SZS Tools/How To#Replace Track Names|track name replacement]]. Both tools together can do this.
One main goal is the fully automated [[Wiimms SZS Tools/How To#Replace Track Names|track name replacement]].
 
  
This toolset will not replace the [[SZS Modifier]] or [[CTools|SZS Explorer]], because they are interactive tools with GUI support and can work directly with many sub file formats.
+
This toolset will not replace the [[SZS Modifier]] or the [[CTools]], because they are interactive tools with GUI support and can work directly with many sub file formats.
  
 
== History and Download ==
 
== History and Download ==
Line 13: Line 12:
 
'''Last changes:'''
 
'''Last changes:'''
 
<pre>
 
<pre>
szs v0.04a r2457 - 2011-04-09
+
szs v0.05a r2498 - 2011-04-15
  
  - SZS compression improved: It uses now overlaps and save about 2% size.
+
  - Code view & fine tuning (many little things...)
  With more complicated algorithm (that needs much more time) better
+
- wszst NORMALIZE: Bug fixed if source does not contain a "." directory.
  compression is possible -- but it's not worth it.
+
- wszst CREATE+NORMALIZE: The files are ordered like Nintendo does it.
  - wszst LIST --long: View the magic (first 4 bytes) of each file too.
+
  - New command: wszst SHA1: calculate and print the SHA1 checksum of
  - wszst can list, diff, (de-)compress and extract SZS.BRRES files.
+
  the decompressed data of all source files.
  - wbgmt: Bug fix: Wrong string end detection for the last message if
+
  - wszst+wbmgt DIFF: If option --dest is set then all sources are compared
   scanning Nintendos 0x1a (CTRL-Z, ASCII 'SUB') escape sequences.
+
  with the destination.
  - BGM/TEXT format: Allow \z{head,value} for Nintendos 0x1a escape sequence.
+
  - New option: wszst --pdir (`point directory'): Decides if a base directory
  - Bug fix for wszst+wbmgt DIFF: Some files only in source #2 were not listed.
+
   named "." should be created. Modes are: REMOVE, AUTO, FORCE.
  - New command: wszst NORMALIZE: resort and recompress an U8 archive.
+
  - New option: --preserve: If set, mtime and atime of the source(s) are used
- New option: wszst --norm: Force normalization while copying/converting.
+
  to set the destination time stamps.
  - Many layout things.
+
  - wbmgt: If creating a text BMG file option --ho-header (or -H) suppresses
 +
  the output of the syntax information section.
 +
  - wbmgt: If creating a text BMG file the message IDs for tracks, battle
 +
  tracks and chat messages will be replaced by 'Txx', 'Ux' and 'Mxx'.
 +
  This feature is disabled if option ---long is set.
 +
 
 +
Known bugs:
 +
 
 +
  - wszst can list, compare and extract BRRES files, but it can't create them.
 
</pre>
 
</pre>
  
Line 36: Line 43:
  
 
'''wszst''' is a command driven tool to manipulate [[SZS]] files.
 
'''wszst''' is a command driven tool to manipulate [[SZS]] files.
 +
* [http://szs.wiimm.de/wszst Tool wszst: Features, commands and options]
  
 
=== Features ===
 
=== Features ===
* '''wszst''' supports compressed and uncompressed SZS files. Uncompressed files are good for analysis. The format of each source file is detected independent of the file name.
+
 
 +
* '''wszst''' supports compressed and uncompressed [[SZS]] files. Uncompressed files are good for analysis. Supported archive formats are [[U8]] and [[BRRES]]. The format of each source file is detected independent of the file name.
 
* '''wszst LIST''' lists the content of a SZS files and directories. It lists also extracted file systems to preview the creation process.
 
* '''wszst LIST''' lists the content of a SZS files and directories. It lists also extracted file systems to preview the creation process.
 
* '''wszst DIFF''' compares 2 SZS files on file level. This comparing is independent of the compression and of file order.
 
* '''wszst DIFF''' compares 2 SZS files on file level. This comparing is independent of the compression and of file order.
 
* '''wszst NORMALIZE''' read an [[U8]] archive, compressed or not, and write it back in a normalized form.
 
* '''wszst NORMALIZE''' read an [[U8]] archive, compressed or not, and write it back in a normalized form.
 +
** The files are sorted in a ''Nintendo like'' order.
 +
** Unused data holes are removed.
 +
** If directory <tt>'.'</tt> is available it becomes the root directory for all others.
 +
** Compressed sources are compressed again with maximum compression (level 9).
 +
** The destination is only written if any data changed.
 
* '''wszst COMPRESS''' and '''wszst DECOMPRESS''' convert SZS files from and to compressed format.
 
* '''wszst COMPRESS''' and '''wszst DECOMPRESS''' convert SZS files from and to compressed format.
 
* '''wszst CREATE''' creates SZS files from directory structures. All files, but not files starting with a point, are included.
 
* '''wszst CREATE''' creates SZS files from directory structures. All files, but not files starting with a point, are included.
 
* '''wszst EXTRACT''' extract the directories and files to the local file system to make access very easy.  
 
* '''wszst EXTRACT''' extract the directories and files to the local file system to make access very easy.  
* Extrating a SZS file and creating again results in the same SZS file. Only the order of the files may be changed.
 
 
* '''wszst CAT''' allow to access one or more sub files within SZS files. The output of all sources is concatenated and written to stdout.
 
* '''wszst CAT''' allow to access one or more sub files within SZS files. The output of all sources is concatenated and written to stdout.
 
+
* Extrating a [[SZS]] file and creating again results in the same SZS file. Only the internal order of the files may be changed.
 
+
* '''wszst DIFF''' compares 2 SZS files on file level. This comparing is independent of the compression and of file order.
=== wszst HELP ===
 
 
 
The HELP command print the built in help. Type <tt>wszst HELP</tt> for a general help. Add a command to print command specific help:
 
 
 
&rArr; [http://szs.wiimm.de/cmd/wszst/help wszst HELP]
 
  
 
=== wszst LIST ===
 
=== wszst LIST ===
Line 63: Line 71:
 
'''Example:'''
 
'''Example:'''
 
<pre>
 
<pre>
# wszst lll pool/ref/szs/Award_G.szs
+
# wszst lll Award_G.szs
  
* Files of pool/ref/szs/Award_G.szs
+
* Files of Award_G.szs
  
off/hex siz/hex size/dec  file or directory/
+
off/hex siz/hex size/dec  magic file or directory/
 
-------------------------------------------------------------------------------
 
-------------------------------------------------------------------------------
       -      -        -  ./
+
       -      -        -  -    ./
       -      -        -  ./award/
+
       -      -        -  -    ./award/
       -      -        -  ./dpd_pointer/
+
       -      -        -  -    ./dpd_pointer/
       -      -        -  ./message/
+
       -      -        -  -    ./message/
     120    2580    9600  ./message/Common.bmg
+
     120    2580    9600 MESG ./message/Common.bmg
   26a0  18300    99072  ./message/Menu.bmg
+
   26a0  18300    99072 MESG ./message/Menu.bmg
   1a9a0    1fc0    8128  ./message/Race.bmg
+
   1a9a0    1fc0    8128 MESG ./message/Race.bmg
       -      -        -  ./message_window/
+
       -      -        -  -    ./message_window/
       -      -        -  ./pad_recognize/
+
       -      -        -  -    ./pad_recognize/
       -      -        -  ./winning_run/
+
       -      -        -  -    ./winning_run/
 
</pre>
 
</pre>
  
 
=== wszst DIFF ===
 
=== wszst DIFF ===
  
The command '''DIFF''' compares two sources (each [[SZS]], [[U8]] or directory)
+
The command '''DIFF''' compares two sources (each [[SZS]], [[U8]], [[BRRES]] or directory)
 
on file level and report mismatches for each sub file.
 
on file level and report mismatches for each sub file.
  
Line 90: Line 98:
 
'''Example:'''
 
'''Example:'''
 
<pre>
 
<pre>
# wszst diff pool/ref/szs/Award_G.szs pool/ref/szs/MenuMulti_G.szs
+
# wszst diff Award_G.szs MenuMulti_E.szs
 +
 
 
* Only in source #1: ./award/
 
* Only in source #1: ./award/
 
* Only in source #2: ./bg/
 
* Only in source #2: ./bg/
Line 96: Line 105:
 
* Only in source #2: ./control/
 
* Only in source #2: ./control/
 
* Only in source #2: ./globe/
 
* Only in source #2: ./globe/
 +
* File size differ:  ./message/Common.bmg [9984+256=10240]
 +
* File size differ:  ./message/Menu.bmg [97920-7552=90368]
 
* Only in source #1: ./message/Race.bmg
 
* Only in source #1: ./message/Race.bmg
 
* Only in source #2: ./model/
 
* Only in source #2: ./model/
Content differ: pool/ref/szs/Award_G.szs : pool/ref/szs/MenuMulti_G.szs
+
* Only in source #1: ./winning_run/
 +
Content differ: Award_G.szs : MenuMulti_E.szs
 
</pre>
 
</pre>
  
Line 105: Line 117:
 
The command '''NORMALIZE''' read an [[U8]] archive, compressed or not,
 
The command '''NORMALIZE''' read an [[U8]] archive, compressed or not,
 
and write it back in a normalized form:
 
and write it back in a normalized form:
* The files are sorted in ASCII order.
+
* The files are sorted in a ''Nintendo like'' order.
 +
** ('/' is less than) '.' is less than digits is less than letters is less than others.
 +
** The case of letters is ignored.
 +
** For same group of characters use ASCII order.
 +
** For each directory: Real files are inserted before sub directories.
 
* Unused data holes are removed.
 
* Unused data holes are removed.
* '.' becomes the root directory for all others.
+
* If directory <tt>'.'</tt> is available it becomes the root directory for all others.
* The maximum available compression is used.
+
* Compressed sources are compressed again with maximum compression (level 9).
 +
* The destination is only written if any data changed.
 +
 
 +
Normalized files are for archives and to find files with the same content.
  
 
&rArr; [http://szs.wiimm.de/cmd/wszst/normalize wszst NORMALIZE]
 
&rArr; [http://szs.wiimm.de/cmd/wszst/normalize wszst NORMALIZE]
 
=== wszst COMPRESS ===
 
 
The command '''COMPRESS''' compresses a binary file and creates [[SZS]] file.
 
 
&rArr; [http://szs.wiimm.de/cmd/wszst/compress wszst COMPRESS]
 
 
=== wszst DECOMPRESS ===
 
 
The command '''DECOMPRESS''' decompresses a [[SZS]] file
 
and stores the decompressed data into file.
 
 
&rArr; [http://szs.wiimm.de/cmd/wszst/decompress wszst DECOMPRESS]
 
 
=== wszst CREATE ===
 
 
The command '''CREATE''' creates a [[SZS]] file
 
by adding all files of the directory structure.
 
 
&rArr; [http://szs.wiimm.de/cmd/wszst/create wszst CREATE]
 
 
=== wszst EXTRACT ===
 
 
The command '''EXTRACT''' extracts the sub file of source files
 
and copy the files into a directory structure.
 
 
&rArr; [http://szs.wiimm.de/cmd/wszst/extract wszst EXTRACT]
 
 
=== wszst CAT ===
 
 
The command '''CAT''' one or more named sub files of [[SZS]] and [[U8]] archives.
 
The output of all sources is concatenated and written to stdout.
 
 
&rArr; [http://szs.wiimm.de/cmd/wszst/cat wszst CAT]
 
  
 
== wbmgt (Wiimms BMG Tool) ==
 
== wbmgt (Wiimms BMG Tool) ==
  
 
'''wbmgt''' is a command driven tool to manipulate [[BMG]] files.
 
'''wbmgt''' is a command driven tool to manipulate [[BMG]] files.
 +
* [http://szs.wiimm.de/wbmgt Tool wbmgt: Features, commands and options]
  
 
=== Features ===
 
=== Features ===
 +
 
* '''wbmgt''' supports raw and text BMG files. '''Raw BMG''' is the file format needed by Nintendos software. '''Text BMG''' is a user readable and editable format. In each text export an little syntax documentation is included.
 
* '''wbmgt''' supports raw and text BMG files. '''Raw BMG''' is the file format needed by Nintendos software. '''Text BMG''' is a user readable and editable format. In each text export an little syntax documentation is included.
* When reading a file, '''wbmgt''' detect the format of each source file independent of the file name. This make the usage of raw and text BMG files interchangable.
+
* When reading a file, '''wbmgt''' detect the format of each source file independent of the file name. This make the usage of raw and text BMG files interchangeable.
* '''wbmgt''' may read BMG files directly from SZS files. Just enter the path and assume that the SZS file is a directory.
+
* '''wbmgt''' may read BMG files directly from SZS files. Just enter the path and assume that the SZS file is a directory. Example: <tt>pathto/my.szs/message/Common.bmg</tt>
 
* '''wbmgt LIST''' lists the contained strings for a fast preview.
 
* '''wbmgt LIST''' lists the contained strings for a fast preview.
 
* '''wbmgt DIFF''' compares the strings of 2 BMG files and reports the differences.
 
* '''wbmgt DIFF''' compares the strings of 2 BMG files and reports the differences.
Line 160: Line 147:
 
* '''wbmgt ENCODE''' converts each source file into raw mode. Patching while encoding is possible.
 
* '''wbmgt ENCODE''' converts each source file into raw mode. Patching while encoding is possible.
 
* Decoding a raw BMG file and encoding again results in the same BMG file.
 
* Decoding a raw BMG file and encoding again results in the same BMG file.
 
=== wbmgt HELP ===
 
 
The HELP command print the built in help. Type <tt>wszst HELP</tt> for a general help. Add a command to print command specific help:
 
 
&rArr; [http://szs.wiimm.de/cmd/wbmgt/help wszst HELP]
 
 
=== wbmgt LIST  ===
 
 
The command '''LIST''' lists the messages to proof the content.
 
Patches are applied before listing.
 
The lines are cut to fit the terminal width.
 
 
&rArr; [http://szs.wiimm.de/cmd/wbmgt/list wszst LIST]
 
 
=== wbmgt DIFF ===
 
 
The command '''DIFF ''' compares two BMG (raw or text) file on string level
 
and report mismatches for each string.
 
Patches are applied to both sources before comparing.
 
 
&rArr; [http://szs.wiimm.de/cmd/wbmgt/diffwszst DIFF ]
 
 
=== wbmgt PATCH  ===
 
 
The command '''PATCH''' changes the entered files by using a patch list.
 
The coding of the source files is not changed.
 
 
&rArr; [http://szs.wiimm.de/cmd/wbmgt/patch wszst PATCH]
 
 
=== wbmgt DECODE  ===
 
 
Read the entered message files and decode them to text files.
 
Pathcing while decoding is also possible.
 
 
&rArr; [http://szs.wiimm.de/cmd/wbmgt/decode wszst DECODE]
 
 
=== wbmgt ENCODE  ===
 
 
Read the entered message files and encode them to binary files.
 
Pathcing while encoding is also possible.
 
 
&rArr; [http://szs.wiimm.de/cmd/wbmgt/encode wszst ENCODE]
 
  
 
== Tests ==
 
== Tests ==
Line 211: Line 155:
  
 
The tests:
 
The tests:
* Decompress and compress and decompress again SZS files and compare the results.
+
* Decompress and compress and decompress again [[SZS]] files and compare the results.
 
* Extract all files, create SZS and extract again. The both extracted file system are equal.
 
* Extract all files, create SZS and extract again. The both extracted file system are equal.
 
* Extract some of the files with SZS Explorer and compare them to my extracted files.
 
* Extract some of the files with SZS Explorer and compare them to my extracted files.
 
* Extract all files and create a new SZS files. Then create a new ISO image with the new SZS files and play it.
 
* Extract all files and create a new SZS files. Then create a new ISO image with the new SZS files and play it.
* Read BMG file, convert to internal representation and write a new BMG. Then compare the new BMG with the original one.
+
* Read [[BMG]] file, convert to internal representation and write a new BMG file. Then compare the new BMG with the original one.
 
* Convert all BMG files into the text format and back again. Then compare the new BMG with the original one.
 
* Convert all BMG files into the text format and back again. Then compare the new BMG with the original one.
  
All tests are run without errors.
+
All tests run without errors.
  
 
== Links ==
 
== Links ==
 
* [http://szs.wiimm.de/ Wiimms SZS Tools]
 
* [http://szs.wiimm.de/ Wiimms SZS Tools]
 +
** [http://szs.wiimm.de/wszst Tool wszst: Features, commands and options]
 +
** [http://szs.wiimm.de/wbmgt Tool wbmgt: Features, commands and options]
 
* [http://www.mariokartwii.com/f72/wiimms-szs-tools-75689.html Discussion at MarioKartWii.com]
 
* [http://www.mariokartwii.com/f72/wiimms-szs-tools-75689.html Discussion at MarioKartWii.com]
 
* [http://gbatemp.net/t286476-wiimms-szs-tools?view=findpost&p=3559819 Discussion at GBAtemp.net]
 
* [http://gbatemp.net/t286476-wiimms-szs-tools?view=findpost&p=3559819 Discussion at GBAtemp.net]
 
* [http://forum.wii-homebrew.com/board197-pc-tools/p319981-wiimms-szs-tools/#post319981 Discussion at Wii-Homebrew.com] (german forum)
 
* [http://forum.wii-homebrew.com/board197-pc-tools/p319981-wiimms-szs-tools/#post319981 Discussion at Wii-Homebrew.com] (german forum)
 
  
 
{{Custom Track Tutorial}}
 
{{Custom Track Tutorial}}
 
{{User-Wiimm-Link}}
 
{{User-Wiimm-Link}}
 
[[category:Software]]
 
[[category:Software]]

Revision as of 13:56, 15 April 2011

Introduction

Wiimms SZS Tools is a set of different tools to manipulate SZS, U8, BRRES and BMG files. All tools are command line tools and run without any interaction. The tools are available for Linux, mac and Windows. The main goal is to run them in batch files and scripts to automate recurring jobs. At the moment there are two tools:

  • wszst : Wiimms SZS Tool (handles SZS, U8 and BRRES archives)
  • wbmgt : Wiimms BMG Tool (handles raw and text BMG files).

One main goal is the fully automated track name replacement. Both tools together can do this.

This toolset will not replace the SZS Modifier or the CTools, because they are interactive tools with GUI support and can work directly with many sub file formats.

History and Download

Last changes:

szs v0.05a r2498 - 2011-04-15

 - Code view & fine tuning (many little things...)
 - wszst NORMALIZE: Bug fixed if source does not contain a "." directory.
 - wszst CREATE+NORMALIZE: The files are ordered like Nintendo does it.
 - New command: wszst SHA1: calculate and print the SHA1 checksum of
   the decompressed data of all source files.
 - wszst+wbmgt DIFF: If option --dest is set then all sources are compared
   with the destination.
 - New option: wszst --pdir (`point directory'): Decides if a base directory
   named "." should be created. Modes are: REMOVE, AUTO, FORCE.
 - New option: --preserve: If set, mtime and atime of the source(s) are used
   to set the destination time stamps.
 - wbmgt: If creating a text BMG file option --ho-header (or -H) suppresses
   the output of the syntax information section.
 - wbmgt: If creating a text BMG file the message IDs for tracks, battle
   tracks and chat messages will be replaced by 'Txx', 'Ux' and 'Mxx'.
   This feature is disabled if option ---long is set.

Known bugs:

 - wszst can list, compare and extract BRRES files, but it can't create them.

wszst (Wiimms SZS Tool)

wszst is a command driven tool to manipulate SZS files.

Features

  • wszst supports compressed and uncompressed SZS files. Uncompressed files are good for analysis. Supported archive formats are U8 and BRRES. The format of each source file is detected independent of the file name.
  • wszst LIST lists the content of a SZS files and directories. It lists also extracted file systems to preview the creation process.
  • wszst DIFF compares 2 SZS files on file level. This comparing is independent of the compression and of file order.
  • wszst NORMALIZE read an U8 archive, compressed or not, and write it back in a normalized form.
    • The files are sorted in a Nintendo like order.
    • Unused data holes are removed.
    • If directory '.' is available it becomes the root directory for all others.
    • Compressed sources are compressed again with maximum compression (level 9).
    • The destination is only written if any data changed.
  • wszst COMPRESS and wszst DECOMPRESS convert SZS files from and to compressed format.
  • wszst CREATE creates SZS files from directory structures. All files, but not files starting with a point, are included.
  • wszst EXTRACT extract the directories and files to the local file system to make access very easy.
  • wszst CAT allow to access one or more sub files within SZS files. The output of all sources is concatenated and written to stdout.
  • Extrating a SZS file and creating again results in the same SZS file. Only the internal order of the files may be changed.
  • wszst DIFF compares 2 SZS files on file level. This comparing is independent of the compression and of file order.

wszst LIST

The command LIST list the sub files of SZS files.

wszst LIST

Example:

# wszst lll Award_G.szs

* Files of Award_G.szs

off/hex siz/hex size/dec  magic file or directory/
-------------------------------------------------------------------------------
      -       -        -  -     ./
      -       -        -  -     ./award/
      -       -        -  -     ./dpd_pointer/
      -       -        -  -     ./message/
    120    2580     9600  MESG  ./message/Common.bmg
   26a0   18300    99072  MESG  ./message/Menu.bmg
  1a9a0    1fc0     8128  MESG  ./message/Race.bmg
      -       -        -  -     ./message_window/
      -       -        -  -     ./pad_recognize/
      -       -        -  -     ./winning_run/

wszst DIFF

The command DIFF compares two sources (each SZS, U8, BRRES or directory) on file level and report mismatches for each sub file.

wszst DIFF

Example:

# wszst diff Award_G.szs MenuMulti_E.szs

* Only in source #1: ./award/
* Only in source #2: ./bg/
* Only in source #2: ./button/
* Only in source #2: ./control/
* Only in source #2: ./globe/
* File size differ:  ./message/Common.bmg [9984+256=10240]
* File size differ:  ./message/Menu.bmg [97920-7552=90368]
* Only in source #1: ./message/Race.bmg
* Only in source #2: ./model/
* Only in source #1: ./winning_run/
Content differ: Award_G.szs : MenuMulti_E.szs

wszst NORMALIZE

The command NORMALIZE read an U8 archive, compressed or not, and write it back in a normalized form:

  • The files are sorted in a Nintendo like order.
    • ('/' is less than) '.' is less than digits is less than letters is less than others.
    • The case of letters is ignored.
    • For same group of characters use ASCII order.
    • For each directory: Real files are inserted before sub directories.
  • Unused data holes are removed.
  • If directory '.' is available it becomes the root directory for all others.
  • Compressed sources are compressed again with maximum compression (level 9).
  • The destination is only written if any data changed.

Normalized files are for archives and to find files with the same content.

wszst NORMALIZE

wbmgt (Wiimms BMG Tool)

wbmgt is a command driven tool to manipulate BMG files.

Features

  • wbmgt supports raw and text BMG files. Raw BMG is the file format needed by Nintendos software. Text BMG is a user readable and editable format. In each text export an little syntax documentation is included.
  • When reading a file, wbmgt detect the format of each source file independent of the file name. This make the usage of raw and text BMG files interchangeable.
  • wbmgt may read BMG files directly from SZS files. Just enter the path and assume that the SZS file is a directory. Example: pathto/my.szs/message/Common.bmg
  • wbmgt LIST lists the contained strings for a fast preview.
  • wbmgt DIFF compares the strings of 2 BMG files and reports the differences.
  • wbmgt PATCH patches each source by using a list of patch files. There are several patching modes: REPLACE, INSERT, OVERWRITE, DELETE, MASK, EQUAL and NONEQUAL. Like every source, raw and text BMG files are accepted as patch.
  • wbmgt DECODE converts each source file into text mode. Patching while decoding is possible.
  • wbmgt ENCODE converts each source file into raw mode. Patching while encoding is possible.
  • Decoding a raw BMG file and encoding again results in the same BMG file.

Tests

I have made several tests with the following files:

  • All files of Scene/UI/.
  • All files of Race/Course/, some of the tracks have been replaced by custom tracks before.

The tests:

  • Decompress and compress and decompress again SZS files and compare the results.
  • Extract all files, create SZS and extract again. The both extracted file system are equal.
  • Extract some of the files with SZS Explorer and compare them to my extracted files.
  • Extract all files and create a new SZS files. Then create a new ISO image with the new SZS files and play it.
  • Read BMG file, convert to internal representation and write a new BMG file. Then compare the new BMG with the original one.
  • Convert all BMG files into the text format and back again. Then compare the new BMG with the original one.

All tests run without errors.

Links