# News
{{begin-aboutbox}}
Jorvik Systems is a site dedicated to modding and reverse engineering WarCraft&nbsp;I, WarCraft&nbsp;II and StarCraft&nbsp;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.
{{end-aboutbox}}


{{begin-newsitem |time=2026-10-10T21:46:55Z |title=Finding the last unknown filenames in MPQs |author=Ojan |resources=namebreak-small.png |categories=StarCraft I, WarCraft II, modding, Namebreaking |summary=The race is on to find the last unknown filenames in the MPQ files. Using namebreak-bombe we can coordinate efforts to crack the names on GPUs}}

For many years, Blizzard used MPQ files as their archive files for many of their games. MPQ files are basically like ZIP files; they store many other files in a compressed format. One quirk of MPQ files is that they don't contain the filenames of their own content. Some MPQ files contain a listfile consisting of the filenames of their content, but other MPQ files do not. For these, an external listfile is needed. By now, we know the names of nearly all files of these games, but there are a few files whos names are yet to be cracked.

I have made a tool, {{highlight |text=namebreak-bombe}} (available on [GitHub](https://github.com/sjoblomj/namebreak-bombe)), which bruteforces filenames on GPUs. By default, it will contact a [central server](https://namebreak-coordinator.fly.dev/) which will assign it a range to search in, thus allowing coordinated efforts where many people simultaneously can look for filenames (though it can also be set to run locally only without talking to servers).

{{img |file=namebreak-small.png |title=namebreak-bombe}}

I ask everyone who finds this interesting to join in on the search by [running namebreak-bombe](https://github.com/sjoblomj/namebreak-bombe/releases) on their machines - the more machines that run this, the faster we crack this. The [dashboard here](https://namebreak-coordinator.fly.dev/) shows the current progress on the remaining names.

I have over the past month optimised the client significantly, and me and {{highlight |text=Heinermann}} have been testing it together on Linux and Windows 10 over the past few days. Already we have uncovered quite a few names that were previously unknown:

**WarCraft II: Battle.net Edition, War2Dat.mpq:**
```
ART\\CHAT_BNE_PLAIN.PCX
```

**WarCraft II: Battle.net Edition, Install.exe:**
```
MacFiles\\DF.ModuleUniverselUSBHID
MACFILES\\DF.PATCH.TXT
MacFiles\\RF.ModuleUniverselUSBHID
MACFILES\\RF.PATCH.TXT
```

**StarCraft Beta, StarDat.mpq:**
```
GLUE\\BATTLE.NET\\ICONS\\RAD_PRESSED.PCX
GLUE\\BATTLE.NET\\ICONS\\RAD_UNPRESSED.PCX
```

**StarCraft Brazil edition, Install.exe:**
```
CAMPAIGN\\EXPTERRAN\\TERRAN03\\STAREDIT\\WAV\\T3M02GAL.WAV
```

**Diablo II Mac Installer TOME:**
```
103b\\DF.BNUpdate
103b\\DF.Diablo II
103b\\DF.Storm
103b\\RF.BNUpdate
103b\\RF.Diablo II
103b\\RF.Storm

103c\\DF.Diablo II
103c\\RF.Diablo II
103c\\DF.Storm
103c\\RF.Storm
103c\\DF.BNUpdate
103c\\RF.BNUpdate

DF.InputSprocket Extension
RF.InputSprocket Extension
```

Again, if you find this interesting, please join the search by [running namebreak-bombe](https://github.com/sjoblomj/namebreak-bombe/releases) on your machine! The [dashboard here](https://namebreak-coordinator.fly.dev/) shows the current progress on the remaining names.
{{end-newsitem}}


{{begin-newsitem |time=2026-10-06T06:53:37Z |title=IronGRP 0.6 released |author=Ojan |resources=irongrp.png |categories=StarCraft I, WarCraft I, WarCraft II, modding, tools, IronGRP |summary=Released IronGRP 0.6 with a bugfixes, hardening and overhauled commands}}

{{highlight |text=IronGRP}} is a GRP to PNG converter for WarCraft I, WarCraft II and StarCraft.

{{img |file=irongrp.png |title=IronGRP}}

I just released {{highlight |text=IronGRP}} version 0.6. It mainly focuses on bug-fixes, hardening the program and taking care of corner cases. The command-line interface now uses subcommands, which changes the interface compared to before.

Some of the breaking changes:

The command-line interface uses subcommands instead of `--mode`, and takes the input and output paths as positional arguments:
- `--mode grp-to-png --input-path X --output-path Y` is now `grp-to-png X Y`
- `--mode png-to-grp --input-path X --output-path Y` is now `png-to-grp X Y`
- `--mode analyse-grp --input-path X` is now `analyse X` (`analyse-grp` is accepted as an alias)
- `--generate-shell-completions SHELL` is now `completions SHELL`

Some flags are renamed: `--pal-path` to `--palette`, `--use-transparency` to `--transparent`, `--frame-number` to `--frame`, `--compression-type` to `--compression` and `--analyse-row-number` to `--row`. The old names are still accepted. New short forms: `-c` for `--compression`, `-f` for `--frame` and `-r` for `--row`.

Some other safety features:
- Existing files are no longer silently overwritten. `png-to-grp` refuses to overwrite an existing GRP, and `grp-to-png` refuses to overwrite existing PNGs or to write all frames into a directory that already contains frame PNGs, unless the new `--force` flag is given.
- `png-to-grp` writes the GRP to a temporary file and renames it into place, so a failure no longer leaves a partially written GRP.
- `png-to-grp` reports up front when the input path is not a directory.

These are just a few of the many changes. See the full changelog [here](https://github.com/sjoblomj/irongrp/blob/main/CHANGELOG.md).

{{highlight |text=IronGRP}} is available on [GitHub](https://github.com/sjoblomj/irongrp/releases/tag/v0.6.0).
{{end-newsitem}}


{{begin-newsitem |time=2026-10-05T06:55:49Z |title=mpqcli 0.12.0 released |author=Ojan |categories=StarCraft I, WarCraft II, modding, tools |summary=mpqcli 0.12.0 released with many new features}}

{{highlight |text=Thomas Laurenson}} just made a new release of [mpqcli](https://github.com/thegraydot/mpqcli). The release mainly refactors the code, overhauls the install scripts and release artifacts, and makes the program work more in accordance with how terminal programs are expected to behave.


## Changes in {{highlight |text=mpqcli}} 0.12.0:

**Added**
- Stop cleanly on Ctrl-C, leaving no partial archive behind

**Changed**
- Ship one static musl Linux binary per architecture, with the release assets renamed by OS and architecture
- Publish install scripts and a signed checksums file with each release
- Run the Docker image in /data so mounted paths need no prefix
- Print progress and warnings on stderr, leaving stdout for results alone
- Mark an overwritten file as changed rather than added when adding

**Fixed**
- Fail with a non-zero exit code on an unknown subcommand, a missing argument or an internal error
- Fail with a non-zero exit code when closing, signing, listing or printing a signature fails
- Complete every locale, game profile and archive path in the zsh, fish and PowerShell scripts

**Removed**
- Remove the install scripts from the repository; each release now carries its own

## Download:

Find version 0.12.0 of {{highlight |text=mpqcli}} [here](https://github.com/thegraydot/mpqcli/releases/tag/v0.12.0).
{{end-newsitem}}


{{begin-newsitem |time=2026-09-27T19:43:51Z |title=PudForge and RuneFoundry |author=Ojan |categories=WarCraft II, tools |summary=New WarCraft II map making program and modding tool in the making}}

Recently, {{highlight |text=milestone}} started working on some tools for Warcraft II: {{highlight |text=PudForge}} and {{highlight |text=RuneFoundry}}.

{{highlight |text=PudForge}} is a very competent map editor. The map format is the same in the original DOS versions of Warcraft II as well as the Battle.net Edition and the more recent Remastered version. {{highlight |text=PudForge}} thus works for all of them. The author, {{highlight |text=milestone}}, has made [a video showing the features](https://www.youtube.com/watch?v=nTLuCuUqlOg), and it has some really nice capabilities. I was especially impressed with the terrain editing, as the editor supports copying and pasting terrain, replacing a given terrain type with other types, generating maps, drawing symmetrical shapes and much more. 

{{highlight |text=RuneFoundry}} is a set of mod tools for Warcraft II Remastered only {{dash}} not the DOS originals or Battle.net Edition. It has two programs, a mod launcher and an editor. A [video showing its features is available here](https://www.youtube.com/watch?v=2CbPMADp0ao) along with [a video of an example campaign](https://www.youtube.com/watch?v=jKroUVWjOF0) which plays through a campaign made with {{highlight |text=RuneFoundry}}. It can edit things like the campaign, AI-scripts, sprites and unit and weapon properties.

It is fantastic to see such feature rich and capable tools still being put out! Hats off to {{highlight |text=milestone}} for the efforts! 

Find [PudForge here](https://github.com/pudforge/PUDForge) and [RuneFoundry here](https://github.com/pudforge/RuneFoundry).
{{end-newsitem}}


{{begin-newsitem |time=2026-09-26T09:35:32Z |title=mpqcli 0.11.0 released |author=Ojan |categories=StarCraft I, WarCraft II, modding, tools |summary=mpqcli 0.11.0 released with many new features}}

I just saw that {{highlight |text=Thomas Laurenson}} made a new release of [mpqcli](https://github.com/thegraydot/mpqcli) earlier this week. Many of the changes are things I contributed a while back, that has now made it into release 0.11.0. {{highlight |text=mpqcli}} is a command-line tool to create, add and remove files from MPQ archives. MPQ archives were used for many years by Blizzard games such as StarCraft I and Warcraft II, and contain the game assets that game modifications change.

I'd like to highlight a few of the changes that I contributed to this release:

- A rename subcommand has been added, which allows you to rename a file inside an archive without having to remove and re-add it.

- The logic for updating files in an archive has been improved. When working on archives containing the `(attributes)` file, {{highlight |text=mpqcli}} will now {{dash}} if the `--update` flag is given {{dash}} compare timestamps and checksums in addition to just file size when deciding whether to update a file. This means that it will much more quickly decide whether a file needs to be updated or not, and will avoid unnecessary writes to the archive. This was quite an extensive change, that also involved me making some contributions to [StormLib](https://github.com/ladislav-zezula/StormLib), the MPQ library that {{highlight |text=mpqcli}} uses to read and write MPQ archives.

## Changes in {{highlight |text=mpqcli}} 0.11.0:

**Added**
- Add `rename` subcommand to rename a file inside an archive

**Changed**
- Compare timestamps and checksums when updating files, not size alone
- Accept the `--update` flag for single files as well as directories
- Reject the `--update` and `--overwrite` flags on add when both are given

**Fixed**
- Report filesystem errors instead of aborting when a path cannot be resolved
- Add to and create archives on volumes that cannot report real paths
- Block path traversal in extract before anything is written to disk

**Updated**
- Update {{highlight |text=StormLib}} for a variety of fixes
- Add hash-library as a submodule dependency
- Build with {{highlight |text=StormLib}}'s bundled compression libraries instead of system packages
- Require CMake 3.25 or later

## Download:

Find version 0.11.0 of {{highlight |text=mpqcli}} [here](https://github.com/thegraydot/mpqcli/releases/tag/v0.11.0).
{{end-newsitem}}


{{begin-newsitem |time=2026-09-26T08:00:13Z |title=Chkdraft 2.15 released |author=Ojan |categories=StarCraft I, tools |summary=Chkdraft 2.15 is out with three changes}}

Yesterday, {{highlight |text=TheNitesWhoSay}} released version 2.15 of the StarCraft I map editor {{highlight |text=Chkdraft}}.

It is a smaller release with three changes:

- The submenu tools/scripts now has a script to downgrade maps from remastered
- Support for new cosmonarchy weapon limits
- Better logging/debugging/browsing when dat file loading has issues

Version 2.15 is available [here](https://github.com/TheNitesWhoSay/Chkdraft/releases/tag/2.15).
{{end-newsitem}}


{{begin-newsitem |time=2026-09-20T12:48:30Z |title=BlizzCon 2026 |author=Ojan |resources=sc-trailer-holt.png |categories=StarCraft, WarCraft III |summary=BlizzCon 2026 announcements}}

I am probably the last person interested in Blizzard games to hear this, but BlizzCon 2026 wrapped up a week ago. It was last held in 2023, so it's been a while.

There are some announcements for the Warcraft and StarCraft franchises:

- Warcraft III gets its first new campaign in over 20 years: "Return to the Last Days of Lordaeron to experience the fall of one great city and play a part in the founding of another". Blizzard released a [Launch Trailer](https://www.youtube.com/watch?v=I1kXClUCyuA), which seems pretty close to the original intro of Warcraft III from back in the days: two armies clash in futile strife, as the real threat appears from above. A gameplay trailer can be seen [here](https://www.youtube.com/watch?v=m-C20pyrvjk). It is already available from [Blizzard](https://blizzard.com).

- Blizzard is working on a new StarCraft game! It is an open world, first person shooter that is apparently single player and character focused. The [Announce Cinematic](https://www.youtube.com/watch?v=9eQUtOQXYgQ) is pretty gorgeous, but there seems to be no gameplay footage available, and the game is set to be released in 2030; offering "plenty of time for delays". For a deeper dive into what the game might be like, I enjoyed [GameDad VII](https://www.youtube.com/watch?v=q0i6hBYgHmc)'s analysis.

{{img |file=sc-trailer-holt.png |title=Still from the StarCraft trailer}}

For me, it certainly sparks excitement to experience the StarCraft universe from this angle. Of course, Warcraft III from 2002 and the new upcomming StarCraft game of 2030 are both much to new for this site; {{highlight |text=Jorvik Systems}} is dedicated to Warcraft I, Warcraft II and StarCraft from the good ole nineties so don't expect much coverage on this site {{dash}} but it's not every day that 23 year old games get a new campaign and the StarCraft universe expand into new types of games.
{{end-newsitem}}


{{begin-newsitem |time=2026-09-14T19:55:33Z |title=MpqDraft 2026-09-13 released |author=Ojan |categories=StarCraft I, WarCraft II, tools, modding |summary=MPQDraft 2026-09-13 released - Updates to how translations are managed, and added Chinese translations.}}

I released a new version of [MPQDraft](../common/software/mpqdraft.html) yesterday. {{highlight |text=MPQDraft}} is a modding tool that allows in-memory patching of game data files, added features through plugins, and creation of self-executing mods.

This summer, {{highlight |text=jzy-chitong56}} made some Chinese (Simplified) translations for the program and suggested ways in which to make the user experience nicer for those using the translations. While it took me a while to sit down and look at it, I was happy to merge the translations, and {{highlight |text=jzy-chitong56}}'s idea of a dynamic language switcher was much nicer than the convoluted and technical way it was handled before. I thus developed a little menu button on the Main GUI to change languages. Hopefully {{highlight |text=Joel Steudler}}, the graphical artist who made the interface back in the day, won't be too mad at me for slightly deviating from his 2002 work :)

Apart from the new translations and the translations menu, I made it easier to build the application under Arch Linux, and there were improvements to the CI pipeline.

For those who are happy with English and don't intend to build the software yourself, this version unfortunately doesn't bring much excitement. But perhaps that is also a testament to the fact that the original author, {{highlight |text=Quantam}} (Justin Olbrantz), made a pretty solid piece of software back in the day.

See the [MPQDraft page here](../common/software/mpqdraft.html), for a download link.
{{end-newsitem}}


{{begin-newsitem |time=2026-09-08T16:26:27Z |title=MpqFileLister v1.2.0 released |author=Ojan |categories=StarCraft I, WarCraft II, tools, modding |summary=The MpqFileLister plugin v1.2.0 was just released, featuring more hooked Storm.dll calls, which gives completer results.}}

In [December](../archive/december_2025.html#newsitem_2025-12-13T12:31:02Z), I wrote an {{highlight |text=MPQDraft}} plugin, {{highlight |text=MpqFileLister}} that lists all the filenames that a games accesses in its MPQ archives {{dash}} or at least that was the intention. A peculiarity of MPQs are that they don't contain the file names of the content of the archives. But when accessing them, the game will call functions in Storm.dll to open those files, and by hooking into those calls, we can intercept the file it is attempting to open, thus construct a list of all files that are accessed.

I had thought that hooking into the `SFileOpenFile` and `SFileOpenFileEx` calls would be enough, but when {{highlight |text=luauser32167}} pointed out on [GitHub](https://github.com/sjoblomj/MpqFileLister/issues/1) that the resulting list files were not containing all assets that the game loaded, I realized those two calls were not enough.

I have just made a new release of {{highlight |text=MpqFileLister}} that in addition to `SFileOpenFile` and `SFileOpenFileEx` and also hook into `SVidPlayBegin`, `SFileLoadFile`, `SFileLoadFileEx`, `SBmpLoadImage` and `SBmpAllocLoadImage`. I thus believe all Storm.dll functions that load files by their file names are covered.

In addition, this new release allows the user to freely specify the log format and timestamps, some odd bugs have been fixed and the code has been refactored.

You can find version 1.2.0 of {{highlight |text=MpqFileLister}} on [GitHub](https://github.com/sjoblomj/MpqFileLister/releases/tag/v1.2.0).

This is still rather untested on Diablo I. I tried to test, but Diablo I is just too buggy under Wine on my machine, and I don't have access to a Windows computer. I might try to see if I can contribute to Wine and fix it eventually, but I'm not going to prioritize that for a while yet.

By the way, you might be wondering what the need then is for {{highlight |text=namebreak-cuda}}, which I wrote about in the [previous entry](../archive/september_2026.html#newsitem_2026-09-01T19:59:25Z). The answer is simple: not all files are accessed, but finding and naming them is still of interest.
{{end-newsitem}}


{{begin-newsitem |time=2026-09-01T19:59:25Z |title=New MPQ file name found |author=Ojan |categories=WarCraft II, modding, tools, Namebreaking |summary=Namebreaker found a new filename in the WarCraft II MPQs.}}

For many years, Blizzard used MPQ files as their archive files for many of their games. MPQ files are basically like ZIP files; they store many other files in a compressed format. One quirk of MPQ files is that they don't contain the filenames of their own content. Some MPQ files contain a listfile consisting of the filenames of their content, but other MPQ files do not. For these, an external listfile is needed.

The `War2Dat.mpq` archive of WarCraft II: Battle.net Edition has had a 99% complete listfile for years, but there has been one single file that the community has not known the name of.

Around [a year ago](../archive/may_2025.html#newsitem_2025-05-30T19:26:18Z), I made a tool, {{highlight |text=namebreak-cuda}}, which bruteforces filenames on Nvidia GPUs. While I put the heavy lifting in place, I never quite finished it then. So now, after tweaking it for a bit, I ran it for less than two hours, and it returned the missing filename:

`ART\\CHAT_BNE_PLAIN.PCX`

The `War2Dat.mpq` now has complete listfiles after all these years. I was happily surprised that the search was so quick.

There are other archives that also don't have complete listfiles, to which I turn my attention next. I plan to make the tool more polished, create a server which can coordinate the efforts of finding more file names, and publish the code on GitHub.
{{end-newsitem}}


## Jorsys news
* [News archive](archive.html)
* [News feed](feed.html)
