News

Release of mpqcli 0.9.3
Posted by Ojan

mpqcli, a command line tool to create, add, remove, list, extract, read, and verify MPQ archives has just released version 0.9.3. The tool makes it easy to work with MPQs from the command line, while powered by the well-maintained StormLib library under the hood.

Version 0.9.3 comes with two changes:

  • Added support for add subcommand to have path inside MPQ archive.
  • Fixed bug in add subcommand when exceeding max file count.

Thomas Laurenson, the author of the tool, is hard at work pushing the tool to version 1.0. To follow the progress, see the issues page on GitHub.

Added TBL and SPK specs
Posted by Ojan

The specs for TBL files and SPK files are now available on the formats page.

TBL files are lists of strings, containing things such as unit names and stats, dialog and game texts, file paths to resources such as graphics or sounds, etc. TBL files are used in StarCraft and WarCraft II.

SPK files are the star parallax background of the Space tileset in StarCraft I.

See the formats page for all specs currently available.

Site auto-deployment
Posted by Ojan

I have made some site maintenance over the past few days. The DNS records are updated and should be in order, and I have made some minor fixes to the site, such as making images more web-friendly, adding a favicon and 404-page, and doing some tweaking.

I have also made some updates to Incunable — the templating engine that generates this site. Together with some GitHub webhooks, this site will now automatically deploy whenever I push updates to its GitHub repo.

All of this leading to a faster and smoother process to go live with content.

News archive and news feed
Posted by Ojan

I hacked together a script for the site that will automatically take all news items, divide them by year and month and create a news archive. It will also put the news items into an RSS feed.

The pages are available in the navigation menu, as well as here:

Powering this site is Incunable — a hackish templating engine for static site generation that I started a few years back. I have also made some updates to it the past few days, so that is at least indirectly related to this site.

Things are a bit slower now compared to a few months ago. I have an extended, long trip coming up, for which planning has taken a lot of time. And right now I'm in my home town where I try to meet friends and family, leaving limited time to work on Jorsys.

Format specs live
Posted by Ojan

Some format specifications have been published, from the Camelot Systems site. For now, it is only four DAT files from StarCraft, and the Unit data DAT file from WarCraft II.

The plan is to let the collection of formats grow, hopefully to be of pretty much all modding-relevant files. The specifications are available on the Format specifications page.

Camelot System downloads
Posted by Ojan

Digging through my files, I found some modding software from the old Camelot Systems days, some 25 years ago. While CamSys was mainly focused on StarCraft and WarCraft II, they also made some software for other, non-Blizzard games:

Camelot Systems

While these are not games I myself ever played, I suppose they might as well be uploaded here as they once briefly were on the CamSys website. The respective modding communities of these games (of which I know nothing) have presumably long since superceded these with other tools, but I thought it would be fun to upload these here anyway as a little digital library.

IronTBL 1.0
Posted by Ojan

I finally made some finishing touches on IronTBL, the TBL to TXT converter, so I decided to release it as version 1.0.

IronTBL

Not much has changed since the last release (apart from some logging improvements), it mostly has some external integrations: comes with ImHex pattern language definitions and yazi integration, and it can now generate shell completions.

IronTBL is available on GitHub.

IronGRP 0.5
Posted by Ojan

IronGRP is a GRP to PNG converter for WarCraft I, WarCraft II and StarCraft.

IronGRP

IronGRP version 0.5 was just released with the following features:

  • Added ImHex pattern language definitions for Normal GRPs, Uncompressed GRPs and WarCraft I style GRPs.
  • Added yazi integration.
  • Included fallback greyscale palette.
  • Added a Readme file.
  • Added a logo.
  • Moved the PNG handling to an external library, palpngrs.
  • Better logging: Introduced logging library and the log level 'trace'.
  • Removed some Optimisation schemes from CompressionType Optimised. This makes it slightly less optimised but identical to how Blizzard did it, and the code is less complex.

IronGRP is available on GitHub.

IronImage
Posted by Ojan

After creating palpngrs (GitHub) out of code from IronGRP, I decided to create a little utility that can convert between Palettized images and PNGs. I called it IronImage.

It can convert between PNGs and Palettized images from WarCraft I and WarCraft II. It can also convert between PNGs and the cursor format of WarCraft I and WarCraft II (which has the identical format to Palettized images, but with two extra bytes in the header — one for the x-hotspot and one for the y-hotspot).

IronImage

The code is available at GitHub.

I would like to add support for PCX images, which are used in StarCraft. Image support in palpngrs is provided by image-rs, and there seems to be an experimental image-rs module, image-extras where PCX support is being considered (see discussion here). However, it does not yet seem to be in a stable state, and GIMP supports the PCX format anyway. I will probably revisit PCX support at a later time. For now, IMG and Cursor support will have to do.

Namebreaking
Posted by Ojan

From Diablo I and onward, up until fairly recently, Blizzard has used MPQ files to store their game data. The MPQ format is a container format that can hold multiple files and directories, like ZIP files. While the MPQ files store files, they do not store file names. To know the names of the files, an external listfile must be used. Internally, the MPQ files instead store two hashes of the file names to identify the files.

Almost all file names of all MPQ files are known, but there are a few unknown file names.

Back in the days, some 20 years ago, I tried to figure out all the names of the MPQ files of Blizzard. At university, I wrote a distributed brute-force program that would try to find one of the remaining portrait files, but it never found it.

I just created a little CUDA program to make use of the GPU to continue to brute-force where I left off many years ago. Just a little something to run in the background, in the hopes that some of the last unknown properties of the games will be revealed.

Jorsys news