News

Jorsys
Jorvik Systems is a site dedicated to modding and reverse engineering WarCraft I, WarCraft II and StarCraft I. The goal is to provide tools, documentation and tutorials to facilitate understanding of what's going on under the hood in these classic games, as well as collections of mods to change them.
Scraping the web
Posted by Ojan

Apologies for the silence here. I've been keeping myself busy whenever time allows, by scraping the remains of various community forums.

It started off in late March when I noticed by chance that the Campaign Creations forums were down. These forums hold decades of community talk, culture and knowledge, and once someone stops paying the bills or maintain the servers, all of that is gone from the face of the Internet. The Internet Archive does a valiant job in backing up sites, but especially forums can be quite lacking in their backups. Fortunately, the Campaign Creations forums went back online soon enough, but I had already decided to swing into action.

I have thus been busy creating scripts to fetch all of the Campaign Creations forums, and Staredit Networks. The fetching is the easy part; I also am trying to convert the forums into json-format, and the posts into Markdown. The latter, turning HTML into Markdown, is quite complicated, as especially on Staredit — people have been using all sorts of markup tags to add "flavour" to their posts. Trimming that away is rather laboursome.

I thus far have the whole of the Campaign Creations forums, the Staredit forums, and all news items from Camelot Systems between 1998 and 1999, as well as 2002. I'm currently fetching and parsing the news items from 2000 and 2001.


So what is the point and the plan? Well, I see value in just keeping this available for the sake of it. It contains lots of knowledge, and holds intristic value due to the culture embodied within. As long as Campaign Creations and Staredit are online, I'll let the backups reside on my harddrive. I intend to do the same with the war2.ru forums (in addition, there seems to be another Russian language forum here). For the other sites, I'd love to try to host forum copies though.

There are several other sites and forums of interest. If the Internet Archive has it, I'd like to scrape and parse these places:

  • WarDraft forums
  • CamSys forums
  • Soverign Modding Empire
  • SAMods
  • ShadowFlare's Realm
  • Infoceptor

If you have suggestions of more places that are relevant for the modding community for StarCraft I, WarCraft I and WarCraft II, then reach out to me!

mpqcli 0.9.9 is out
Posted by Ojan

Yesterday, Thomas Laurenson released version 0.9.9 of mpqcli, a release packed with bugfixes. As previously covered here, mpqcli is a tool for creating and modding MPQ files, used for loading custom data into games.

Fixed in version 0.9.9:

  • Potential path traversal attack in extract subcommand.
  • Empty MPQ archive name when directory supplied with trailing slash.
  • Bug where MPQ internal files were added with create subcommand.
  • Signature being added automatically when not requested.
  • Potential DWORD overflow in add subcommand.

Find version 0.9.9 of mpqcli here.

Chkdraft 2.11 released
Posted by Ojan

TheNitesWhoSay recently released version 2.1 of the StarCraft I map editor Chkdraft.

News in version 2.11:

  • Fix minimap unit position issue for maps with a dimension of 192.
  • Fix a crash on carbot due to certain images/anims not being present on the skin.
  • Support unicode for command line arguments (fixes "Open With" Chkdraft issues for certain maps).

News in version 2.10:

  • Support unicode for command line arguments (the "Open With" menu option in windows).

Version 2.11 is available here.

mpqcli 0.9.8 is out
Posted by Ojan

Yesterday, Thomas Laurenson released version 0.9.8 of mpqcli, mostly containing changes contributed by me. When adding files, there is now support for overwriting existing files, as well as for specifying the path within the archve. Archives can also be created from a single file rather than requiring the user to giv a directory. Finally, some memory leaks have been fixed and all file handles are now properly closed.

The full changelist is as follows:

Added:

  • The create subcommand now supports a single file
  • The add and create subcommands have additional arguments for specifiying the file location in the MPQ archive (filename-in-archive, directory-in-archive and path)
  • The add subcommand can now overwrite existing files if requested (overwrite)

Fixed:

  • Several memory leaks

Find version 0.9.8 of mpqcli here.

One year anniversary of Jorvik Systems
Posted by Ojan

Time flies, and today not only marks the Spring Equinox, but also the one year anniversary of Jorvik Systems.

Jorvik Systems

The website itself has progressed slower than I anticipated, and I had wanted to have more content up on the site by now. However, I have focused the time available on creating tools and software instead. Below is a list of the Blizzard-related software projects I have created and contributed to during this time.

Project Description
IronTBL A tool to convert StarCraft and WarCraft II TBL files to text files.
IronGRP A tool to convert StarCraft, WarCraft I and WarCraft II GRP files to PNG using a PAL color palette.
IronImage Converts IMG files (images) and CUR files (cursors) from WarCraft I and II to PNGs and vice versa.
mpqcli A command line tool to create, add, remove, list, extract, read, and verify MPQ archives using the StormLib library.
MPQDraft MPQDraft allows in-memory patching of Blizzard game data files, added features through plugins, and creation of self-executing mods.
MpqFileLister MPQDraft plugin to list all files the games access.
namebreak-cuda Application to brute-force the names of files inside MPQ archives.

Overall, I'm very happy with that amount of output. As for the site, a major event was in December, when I wrote a piece about the thirty year anniversary of Warcraft II: Tides of Darkness, a post which stayed on the front page of Hacker News for 24 hours and generated quite some site views.

Things have been slow with the site lately, as I've been on vacation with extended travel for a while now. That is about to wrap up in not too long, so I anticipate that I will have some more free time to spend on the site and tools, hopefully.

mpqcli 0.9.7 is out
Posted by Ojan

Yesterday, Thomas Laurenson released version 0.9.7 of mpqcli. I have contributed all the changes in this release, some of which turned out pretty big.

The major thing in this release is game profiles. By using the --game option, you can have mpqcli target the specified game, using the correct compression methods and settings. This allows it to be used to create archives and add files to MPQs for StarCraft I and WarCraft II and all the other games. Great news for us old school guys still digging around in the nineties games!

The full changelist is as follows:

Added:

  • Game profile support for create and add subcommands via -g/--game option
  • Game profiles for Diablo, StarCraft, Warcraft, WoW, and more
  • Game setting override options for create subcommand
  • Compression override options for add subcommand
  • Support for unfamiliar/unknown locales via raw hex LCID
  • Additional built-in locales: ptBR, esMX, ptPT

Fixed

  • Subcommands now properly verify locale before operating on files
  • Error messages now include locale context in remove, extract, and read.
  • MPQ archives are now properly closed across all subcommands
  • Non-zero exit codes returned on failure in extract and remove
  • list subcommand now shows long output when properties are requested

Changed

  • Improved locale printing and display throughout

Find version 0.9.7 of mpqcli here.

(As an aside, when travelling to New Zealand a few weeks ago, I met up with Thomas Laurenson and had a drink with him. Really nice guy!)

Three new Chkdraft releases
Posted by Ojan

In rapid succession, TheNitesWhoSay has released version 2.07, 2.08 and 2.09 of the StarCraft I map editor Chkdraft.

News in version 2.07:

  • Have units on classic minimaps render with the appropriate sizes
  • Add ability to render classic minimap webps in map_gfx_utils
  • Fix resource coloring on classic minimaps

News in version 2.08:

  • Add ability to create locations for sprite units
  • Accurate mini-map unit display sizes
  • Fix map and minimap color displays for remastered colors, fix resource minimap color
  • Fix create location menu options updating the layer but not the dropdown box to locations
  • Fix trigger string-clearing issue
  • Fix actions being added to history when trigger values were unchanged
  • Fix blank strings showing up in string suggestions after opening a map with fragmented strings
  • Fix resources not reciprocal respecting the mineral distance flag with resource depots
  • Fix display of carrier shadows
  • Fix a crash that occurred when using non-empty default triggers with new maps

News in version 2.09:

  • Improved load time for large scenarios (3-5 times faster)
  • Triggering performance improved for maps with large trigger quantities
  • Fixed a crash that occurred when compiling text for an individual trigger from the trigger gui
  • Fixed a bug where the string editor edited game strings when it should edit editor strings

Version 2.09 is available here.

Chkdraft 2.06 released
Posted by Ojan

TheNitesWhoSay have released version 2.06 of Chkdraft yesterday, a map editor for StarCraft I. The tool describes itself as "A remake-in-progress of the beloved Scmdraft to fill the holes left behind".

News in version 2.06:

  • Support for DatExt mods and Cosmonarchy in particular
  • Add profiles json files and the profiles UI, including live-reloading, replacing the old settings.ini file
  • Add ability to drop-to-open multiple map files at once
  • Add ability to customize the unit and sprite trees in the profiles json
  • Add ability to treat a regular filesystem folder like a casc or mpq for data loading
  • Now relies on a stable release of nf hist
  • Clang can now be used on linux to compile map_gfx_utils and generate pictures of maps
  • Many bugfixes (including and beyond those of recent pre-releases) especially those related to profiles and sounds

The release is available here.

MPQDraft 2026-02-04 released
Posted by Ojan

I just made a small fix to MPQDraft. Before, when creating SEMPQs (self-executing MPQs), it used to force you to specify an MPQ and optionally plugins. Now, either an MPQ or plugins are required, i.e. you can now omit MPQs if you specify plugins. This functionality is used by Cosmonarchy, which utilises a hot-loader plugin that downloads the latest MPQs on the fly, allowing frequent updating without having to rely on re-distribution of SEMPQs.

Also in this release are translation of the GUI into Swedish and Korean. Both are AI-translated, with the former language quickly verified by myself while the latter is completely unverified. If you have corrections or want to contribute a new translation, then please reach out.

See the MPQDraft page here, for a download link.

mpqcli PRs
Posted by Ojan

I have on several occations mentioned mpqcli, a wonderful little command line tool to create, add, remove, list, extract, read, and verify MPQ archives using the StormLib library.

Over the course of the past few days, I have made several big and small PRs to mpqcli:

  • PR 1 - Small improvement to make it list details if properties are requested.
  • PR 2 - Big PR that adds built in support for all games using MPQs up until Diablo III.
  • PR 3 - Small improvements to the Readme file.
  • PR 4 - Fairly big PR, mainly adding support for unfamiliar locales.
  • PR 5 - Improvements to the remove, extract and read subcommands of mpqcli - they will now respect locales, not halt on errors and return error codes to the shell.
  • PR 6 - Small PR to fix memory leaks by closing the MPQ archives properly after reading.

Especially PR 2 is a big deal for those of us who want our MPQs compatible with older games. Previously, mpqcli always used Zlib compression, which meant older games could not read the files. With this PR, the user simply specifies what game they target and mpqcli will choose the appropriate compression algorithm based on the files the user wants to add. I mentioned this back in early December, and now we have what is hopefully a pretty solid implementation.

The maintainer of mpqcli, Thomas Lausenson, seems to have been fairly busy as of late, but hopefully he can give feedback on the PRs or merge them fairly quickly.

Jorsys news