# May 2025 - News archive
{{begin-newsitem |time=2025-05-30T19:26:18Z |title=Namebreaking |author=Ojan |categories=StarCraft I, WarCraft II, modding, tools, Namebreaking |summary=Started work on MPQ name bruteforcer}}

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.
{{end-newsitem}}



{{begin-newsitem |time=2025-05-20T18:55:19Z |title=Work begun on image converter |author=Ojan |categories=WarCraft I, WarCraft II, modding, tools, IronImage |summary=Started work on a new tool for converting palettized images from WarCraft I and WarCraft II}}

I have started to work on an image converter for WarCraft I and WarCraft II. I have made a library called [palpngrs](https://github.com/sjoblomj/palpngrs) out of the code I had for {{highlight |text=IronGRP}}, which can handle conversions to and from Palettized images and PNG files. Very few lines of code then allowed me to slap together a little utility that can convert raw IMG files (used for backgrounds and dialog elements in WarCraft I and WarCraft II) as well as Cursor files (used for the mouse cursor in WarCraft I and WarCraft II) to PNGs and back.

I have some finishing touches to do and I can't decide on a name I like for it. But with this utility, {{highlight |text=IronGRP}} and {{highlight |text=IronTBL}}, a fair amount of the game files of WarCraft I and WarCraft II can now be converted to and from more accessible formats.
{{end-newsitem}}



{{begin-newsitem |time=2025-05-10T06:13:47Z |title=IronGRP 0.4 released |author=Ojan |categories=StarCraft I, WarCraft I, WarCraft II, modding, tools, IronGRP |summary=Did some refactoring and some minor features}}

{{highlight |text=IronGRP}} 0.4 has just been released and is avaliable at [GitHub](https://github.com/sjoblomj/irongrp). Some of the features have been mentioned before: It has support for Extended Uncompressed GRPs and WarCraft I GRPs, and it can now correctly differentiate between different GRP types. I have added some boundary checks for width, height, offsets and frame count, and added more unit tests. It can now also generate shell completions, to make the tool more ergonomic to work with.

When converting from GRP to PNGs, {{highlight |text=IronGRP}} will now name the output files "uncompressed_frame_xxx.png" or "war1_frame_xxx.png", respectively. This is to make it easier to identify the type of GRP that was used when converting back to GRP. When converting from PNGs to GRP, if no CompressionType is given (or if CompressionType Auto is given), {{highlight |text=IronGRP}} will create an Uncompressed GRP if any of the input filenames contains "uncompressed", and create a WarCraft I style GRP if any of the input filenames contains "war1".

A fair amount of refactoring has been done, so the code is now a bit better structured, and I've prepared to move a chunk of the code to handle the conversion between PNGs and Palettized images into its own library. This will allow me to use the same code in upcomming tools that I have in mind. The cursor formats of WarCraft I and WarCraft II uses the same principle of Palettized Images, as does the Parallax SPK files of StarCraft. I suspect the tilesets of all these games do too, but I haven't looked into that yet.
{{end-newsitem}}



