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.
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.

MPQDraft 2026-01-01 released
Posted by Ojan

The calendar now shows 2026. I hope your previous year was splendid and that the new one will be even better!

To kick the year off, I'm releasing MPQDraft 2026-01-01. Compared to the beta releases I have previously made, it does not contain much worth mentioning, but it is the culmination of what I have done to modernise the code base during the past two months.

Download page

Overview of the changes:

  • Completely rewritten GUI in Qt. It has a few more features than the old and is more structured.
  • More help for the user, with texts that explain what things do.
  • Ability to patch games without built-in support.
  • CLI that can do all that the GUI can (except configure plugins, which for technical reasons is not feasible from the terminal in a pretty way — if you want to configure a plugin, use the GUI once and then the plugins in the CLI should have the same settings)
  • Support for adding custom icons to SEMPQs.
  • Cross-compilation is now possible. Using MinGW-w64, one can now compile the code from a Linux machine (Mac too presumably). All MFC code has been removed. MPQDraft itself is still very much a Windows 32-bit only program though, but at least you no longer need a Windows machine to build it.

The title screen by Joel Steudler remains the same as it always has:

MPQDraft title screen, graphics by Joel Steudler

The first public release of MPQDraft by Quantam (Justin Olbrantz) was on 2002-01-01. Given the date, I figured that today, exactly 24 years later, was a good date to release this revamp. Let me know if you experience any issues.

Download page

Happy Yule holidays
Posted by Ojan

I want to wish everyone happy Yule festivities! Midwinter in the northern hemisphere has passed, the days are now slowly becoming longer.

Whether you celebrate something or not, I wish you all happy holidays and end of the year.

Midvinterblot, by Carl Larsson
mpqcli 0.9.6 released
Posted by Ojan

Just a little while ago, Thomas Laurenson released version 0.9.6 of mpqcli. The main highlight is a bugfix for MPQ signatures by him, and support for locales added by me.

MPQ archives uniquely identifies files by hashes of their file names, locale and platform (only one platform has ever been observed and the platform is thus usually ignored). With this release, mpqcli has support for listing, adding and removing files with different locales.

MPQDraft 2025-12-22 beta released, plus dedicated page
Posted by Ojan

I have just released MPQDraft 2025-12-22 beta, with a CLI interface that has feature-parity with the GUI (with the exception that plugins cannot be configured from the CLI — use the GUI once to configure any plugins, and then the plugin should have the same settings saved for later when you run it through the CLI).

I was a bit worried that the CLI would turn into an overly complex beast, but I decided to use CLI11 which made things very smooth. I am reluctant to bring in any third-party dependencies, but this one is a single C++ header to include, so I figured the trade-off was well worth it.

MPQDraft logo

In other news, I have made a dedicated MPQDraft page with a description of the program and a download link. So, find a download link to the binaries at the MPQDraft page and as always, find the source on GitHub.

MpqFileLister 1.1 released
Posted by Ojan

As I wrote the other day, I have created a little plugin for MPQDraft called MpqFileLister.

Games that use MPQ archives use a library called Storm.dll to access the files inside those archives. A peculiarity of MPQs are that they don't contain the file names of the files inside, but when Storm.dll opens files it does so using the file names. MpqFileLister allows you listen in to those calls from Storm.dll, and the plugin creates a list of all files that are being accessed.

As I wrote in the previous post about it, the plugin was not working flawlessly, and only listed a subset of game assets. I reached out to ShadowFlare about it, and after she saw my e-mail a few days later she kindly pointed me in the right direction: I had only been hooking into the SFileOpenFileEx calls of Storm.dll, but not the SFileOpenFile calls. By intercepting both calls, the asset lists are now complete (at least so it seems to me).

MpqFileLister configuration dialog

So, I just released MpqFileLister 1.1. Changes since 1.0:

  • Can now intercept calls to SFileOpenFile.

  • Support for Diablo I (untested though).

  • Support for logging timestamps, in the form of milliseconds since epoch.

  • Some UI improvements:

    • More logically grouped controls.
    • Descriptive labels.
    • Keyboard shortcuts.
MPQDraft 2025-12-15 beta released
Posted by Ojan

I today release MPQDraft 2025-12-15 beta. MPQDraft is used to load mods and plugins, with built in support for Diablo I, Diablo I: Hellfire, Diablo II, StarCraft I + StarEdit, WarCraft II: Battle.net Edition, WarCraft III + WorldEdit, WarCraft III: The Frozen Throne and Lords of Magic SE.

MPQDraft, originally released in 2002 by Quantam (Justin Olbrantz), immediately became the goto-tool for modding the Blizzard classics.

The beta release contains a completely rewritten GUI using Qt, and the code base has been refactored and modernised. Oddities have been fixed and all MFC code, which previously prevented cross-compiling has been replaced. The code can now be compiled from a Linux system with MinGW-w64 to produce a Windows executable. The GUI can be compiled natively under Linux, but not the underlying program as that code is very tied to the Windows platform (and it is 32-bit only!)

MPQDraft SEMPQ Creation screen. Graphics by Joel Steudler.

I will try to make some tests to verify that this all works before making a full release. It must be said that there has been some opportunity for bugs to creep in. For example, the original code has around 100 lines of assembly code that it injects, and my AI assistant has translated it for cross-compiling reasons. It is not at all obvious to me from reading the assembly, that it is bug-free. So far it seems to work, and if compiling on a Windows system, the original battle-proven assembly is used, though.

MPQDraft filelister plugin
Posted by Ojan

I spent some time last week writing an MPQDraft plugin, called MpqFileLister. Games that use MPQ archives use a library called Storm.dll to access the files inside those archives. A peculiarity of MPQs are that they don't contain the file names of the files inside. But when accessing them, the game will call the SFileOpenFileEx function in Storm.dll to open those files, and by hooking into that call, we can intercept the file it is attempting to open, thus construct a list of all files that are accessed.

The MpqFileLister plugin does just that; it hooks into the SFileOpenFileEx function call and constructs a list of the accessed files. While the community has long since made complete file lists of all files that are accessed from the MPQs, I still found it interesting to make. It serves as a nice example of how to make an MPQDraft plugin; it can teach us when files are accessed and from which archive; and it can serve as an example of how to access and poke around in the Storm function calls.

The main reason I wrote it was to test that my MPQDraft refactoring and modernising did not break the plugin functionality, or the ability to configure plugins. I thus needed a plugin to test with, and it just seemed easier to make one myself than scour the Internet for something.

The plugin is not working flawlessly, unfortunately. In StarCraft, I do get file lists of many game assets from it, but it does not list GRPs (graphics files) nor music files. It must mean the game loads them in some different fashion, but I'm not sure why or how. I reached out to ShadowFlare with an inquiry about it since she has written similar plugins back in the day and is very knowledgeable in the ins and outs of MPQs, but she has not replied yet. Presumably she is no longer using her hotmail account from twenty five years ago that her website lists, and I have no other means of contacting her.

The plugin is available here.

WarCraft II stories
Posted by Ojan

After publishing my text on the 30 year anniversary of WarCraft II: Tides of Darkness and posting about it on Hacker News, I'm proud and humbled to see that it has now stayed on the front page for around 24 hours. Many people shared stories and memories in the thread:

WarCraft II Screenshot
my sister and I opened it Xmas morning, then had to wait all day agonizingly to be able to play jt because we hosted the family holiday, we were supposed to be socializing with relatives, not playing computer games upstairs.

We had to wait until after mom and dad went to sleep that night, then snuck up the hall to install it and play it as quietly as possible.

mock-possum

This was the first game I was really obsessed with. I remember having one floppy disc and I wanted to copy the game from a friend, so we split the game to ~10 parts, and for a whole weekend I was going back and forth between our houses, "downloading" those 10mb.
yoavm

I love Warcraft II. My first ever RTS, and one of the all time greats even now. The game just has soul oozing out of every pore; you can feel the excitement of the Blizzard guys for the game as you play it. The expansion was great too.
bigstrat2003

This game lead me down a path that resulted in me becoming a software engineer. Good game.
bfors

I know the game was horribly unbalanced against humans once bloodlust showed up, but I still quit after they "patched" bloodlust years later in Battle.net. Felt sacrilege, like patching the queen in chess. Yeah, the queen is imba, but that's chess. Beating an orc player as a human was a fun flex.
jquery

One thing that was delightful about this game was how the community discovered that Farms made for better walls than the actual walls, and so an enormous variety of strategies developed around this. As players developed knowledge of how units were pushed out of buildings, walling off buildings to push units past forest was another strategy that developed from this, creating the potential for sneaky tricks.
Tiktaalik

Back then we were playing WarCraft II over a LAN with... The neighbors. We managed, as teenagers, to snatch some old 10BASE2 "ethernet over coax" gear: cables, BNC connectors and terminators, and most of all ethernet adapter cards.

We weren't fully geared though, so we'd assemble the cables manually, using whatever we could find to attach the connectors.

Then we'd use a long piece of string with something attached to it that we'd throw, from the 2nd or 3rd floor of the house, to the neighbor's house. And then we'd use the string to pull up the coax cable.

And then humans and little orcs would transit through the coax cables.

Oh the memories.

TacticalCoder

You cannot imagine the lengths we had to go to play this game in our home. We were lucky enough to have two apple computers and so my brother and I would play each other using the battle net technology over appletalk. The thing was, the only appletalk cable in our house was barely long enough to make it between the two bedrooms, so when we wanted to play the cable would hang in the air stretched across the hallway where the slightest tug would rip it out of the port killing the match.

The number of times that cable got unplugged mid-game and the inter-household rancor that would ensue is the stuff of legends. I honestly remember the fits we had about whose fault it was that the cord got unplugged more than I remember any specific aspect of those Warcraft games.

It just goes to show, networking topography matters.

WCII ToD is absolutely one of the most insane games to ever be birthed unto the world. It was so brain breaking compared to everything else we were playing at the. time. Just a real quantum leap in terms of dopeness.

josh2600

I was 10 a the time and yes I’m not sure people realize how magical it felt at the time. When I got it in Christmas 96 on a 68k Mac it felt like it really opened a parallel universe compared to other games.

The graphics (looked like a high res SNES game, which at the time was quite unique on PC), the CD quality soundtrack, the booklet concept art, the unit voices and buildings sounds… as a kid discovering Fantasy it had everything.

And the attention to details, like Christmas string lights on building or a snowman when the map was in winter may seem insignificant, but as a kid it was wonderful.

Even my dad who was not into video games but had played tabletop war games in the past and got hooked and spent a few nights on it to complete a solo campaign.

This is by far the retro game I have the most nostalgia for.

tarsinge

What grunts do in their spare time, by Cyberkarkas

A special thanks also to barfoure who pointed out that "you can find the War 2 for PSX source on Archive. It has all the Windows stuff commented out. It might be possible to uncomment and compile with something like Borland C or Watcom C or whatever they used". It seems that this item on Archive is what is being referred to, but it appears to no longer be up. I would venture to guess that it can still be found on the deeper parts on the Internet, though. Edit: Here

30 year anniversary of WarCraft II: Tides of Darkness
Posted by Ojan

It has now been 30 years since WarCraft II: Tides of Darkness was released. After the great response to Warcraft: Orcs and Humans, released in November 1994, Blizzard began working on Warcraft II: Tides of Darkness. Development stared in the first months of 1995, and the game was released in North America and Australia on December 9, 1995.

While WarCraft: Orcs and Humans had laid the foundations of the series — arguably even for the RTS genre at a whole — it was really WarCraft II that took things to new heights. More units could be selected at once, the player could right-click to issue commands, naval and aerial combat was introduced, and buildings and units could be upgraded. The graphics were more vivid and visually appealing, and features like the Fog of War was introduced, where you could only see in the vicinity of your own units — unlike in the first game, where you could indefinitely see any area you had previously visited, you now had to continuously scout the map.

WarCraft II: Tides of Darkness

Many things still resembled the first game. The two factions — the Humans and the Orcs — were balanced through their similarites. For every unit and building of one faction, the other had one that was functionally equivalent, and so the sides largely mirrored each other. The only real differences lay in the spells available to their higher-level units. In that regard, the clear winners were the Orcs, who had a tremendous advantage thanks to the incredibly powerful and unbalanced Bloodlust spell of the Ogre-Magi.

It is quite impressive that Blizzard managed to release a title of such quality in such a short span of time, especially considering that the overall design and gameplay evolved during development. Originally, Blizzard’s concept blended modern and fantasy elements, such as fighter pilots being ambushed by a fire-breathing dragon. In the Alpha version (it is still probably floating around somewhere on the Internet) which was given to magazines for review shortly before the game's release, players could, for example, mine rocks which acted as an additional required resource.

Several versions and bundles of WarCraft II were released over the years:

  • WarCraft II: Tides of Darkness, originally written for DOS, though it had a Windows launch screen and ran well under Windows 95. A Macintosh version was also released. The DOS version supported multiplayer games via null modem cable, modem, or IPX, while Mac players could also play via TCP/IP or AppleTalk.
  • WarCraft II: Beyond the Dark Portal, the expansion, released in April 1996.
  • WarCraft: Battle Chest, released in 1996, was a bundle which included WarCraft: Orcs and Humans, WarCraft II: Tides of Darkness, and WarCraft II: Beyond the Dark Portal.
  • WarCraft II: The Dark Saga, released in 1997, was a port for the Sega Saturn and PlayStation consoles by Electronic Arts, including the campaigns from both Tides of Darkness and Beyond the Dark Portal.
  • WarCraft II: Battle.net Edition, released in 1999, ported the game's code to Microsoft Windows, fixed some minor bugs, and enabled multiplayer support via Blizzard's online service, Battle.net.
  • WarCraft II Battle Chest, released in 1999, included the Battle.net Edition and its official strategy guide.
  • WarCraft II: Remastered, released in November 2024, is modern remaster of Tides of Darkness and Beyond the Dark Portal, with improved graphics and updated controls.

WarCraft II: Tides of Darkness received enthusiastic reviews, elevating Blizzard to the top ranks alongside Westwood Studios, id Software, and LucasArts. The rivalry between Blizzard's series and Westwood Studios' Command and Conquer series helped fuel the RTS boom of the late 1990s. PC Gamer US named WarCraft II the best game of 1995, calling it an "easy" choice and writing that "Warcraft II stand[s] out — way out — as the most impressive, most entertaining, game of 1995". The editors also awarded it Best Multi-Player Game of 1995.

WarCraft II was notable for the large number of third-party utilities created for it. Quickly, Daniel Lemberg reverse-engineered and published the map file (*.pud) format and wrote the first third-party map editor, War2xEd, which could do multiple things that the bundled map editor could not, such as editing unit attributes. Blizzard apparently began using War2xEd internally, and it influenced their decision to later ship a feature-rich map editor with StarCraft.

Next, Alexander Cech and Daniel Lemberg reverse-engineered the game data format, the WAR archives. Alexander Cech went on to make a hugely important tool called Wardraft, which allowed users to browse and modify the contents of the WAR archives. This enabled extensive game modifications, known as "Total Conversions". Many such projects gained popularity and remained in development for a long time, notable examples being DeathCraft: Twilight of Demons, War of the Ring, Editor's Total Conversion, Funcraft and Rituals of Rebirth.

Most of these utilities and conversions have long since faded into obscurity, but their legacy lives on. They impacted Blizzard's decision to bundle ever more powerful editors and trigger systems into StarCraft and later WarCraft III, which in turn later spawned entire games such as Dota (which began as a WarCraft III map). Hopefully, someday (soon?) we can host some of the Total Conversions here at Jorvik Systems.


As a personal anecdote, I vividly remember two defining moments related to the game. I was young when it came out, and my dad's friend had pirated it; somehow the game ended up on our computer. I was too young to speak English at the time, and the interface was confusing to me, so a relative helped me understand the basics — how to make peons construct buildings, how to control units, and how to navigate around the map. I hadn't played computer games much before then, but from that moment on, I was arguably obsessed.

A second strong memory came a few months later, at my friend Erik's house, on his Intel 486 PC. He was experimenting with the WarCraft II map editor, which I hadn't known existed, and I was blown away. I simply could not believe that Blizzard would ship such a tool with the game; to me, it meant that people could essentially create their own games by designing entirely new scenarios. It is quite possible that my fascination with modding was born in that very moment. We probably went outside to play shortly afterward, which I found incredibly lame — we had at our disposal the most powerful tool I could imagine, so why were we not inside using it?


Edit 2025-12-10 00:10:30 UTC: Hacker News discussion about this news post

Jorsys news