You must be logged in to post messages.
Please login or register

AoW1 Mod Packs
Moderated by Enginerd, Ziggurat Mason

Hop to:    
Topic Subject: Format of release.hss
posted 08-01-15 08:04 PM EDT (US)   
Hey all, long time AOW player (and hitherto anonymous site user) here.

Can anyone help me with the format of the release.hss file? I've consumed the excellent ILB documentation at, and I've now noticed that release.hss contains several ILB files within it, including several core map tiles. I can use a little program to scan for "\x04ILB" and extract the files but it would be much nicer to know how to look them up properly.

The one clue I have so far is the front of the file appears to contain a table of contents of the form:

00000080 41 53 45 02 02 00 01 01 03 81 b6 01 00 00 00 00 |ASE.............|
00000090 01 00 00 00 47 0a 00 00 02 00 00 00 9a 14 00 00 |....G...........|
000000a0 03 00 00 00 ed 1e 00 00 04 00 00 00 40 29 00 00 |............@)..|
... ...
00000e20 b3 01 00 00 58 f8 0f 00 b4 01 00 00 4b fd 0f 00 |....X.......K...|
00000e30 b5 01 00 00 8c fe 0f 00 b6 01 00 00 86 ff 0f 00 |................|
00000e40 53 01 02 00 03 02 00 07 04 08 0a 0b 00 00 00 01 |S...............|
00000e50 00 00 00 02 fe 04 49 4c 42 00 16 50 55 00 00 80 |......ILB..PU...|

Line 0x90 has the first two 8-byte entries, and line 0xe30 the last two. The start of the first ILB file is shown at position 0xe55. In the entries, the first 2 (or 4 bytes) appear to be an incrementing id number. The last 4 bytes are an offset of sorts. The offsets roughly correspond with the locations of ILB files plus a constant (approximately the size of this table of contents). But they don't line up exactly. There are gaps of around 20 bytes between files.

If you're wondering why, it's because I've got a modest game engine project heavily inspired by AOW, which can (optionally) reuse some of the same resources. Many of you are probably thinking, "oh great, another overly-ambitious amateur game attempt doomed to eventual abandonment!". Such cynicism is perfectly reasonable and I share it myself (though, of course, the project will never be abandoned; it'll simply be put into indefinite suspension). Nonetheless, as long as I'm having fun with it, none of the effort is wasted. And if someone can help me with a few fun technical details, then I'd be most grateful.

(I'm not prepared to give a demo, yet, but I would be delighted to discuss what I'm doing. I can show the code too, if you like.)

Updated 20170423 - I've made a lot of progress figuring out the HSS format.

[This message has been edited by ejrh (edited 04-22-2017 @ 11:16 PM).]

posted 08-17-16 06:30 PM EDT (US)     1 / 12  
I cannot help at all - but will be excited to see your game when it is complete!
posted 12-10-16 06:27 PM EDT (US)     2 / 12  
Hi ben_danger, thanks for the words of encouragement. So you know that I haven't shelved the project just yet, I spent a lot of yesterday adding graphics for structures. Here's a screenshot:

[PNG, (556.68 KB)]

For comparison, see the equivalent from AOW. The biggest difference right now is the shadow coming out of the death node. I haven't figured out how to get SDL to draw that the way it is in AOW.

If you've ever played with the DevEditor you might have seen how graphics are defined for things. I don't use the same system, instead I have a little "scripting language" that can look at various attributes of what it's drawing and choose what frames/animations to add to the result, e.g.

DefineScript("small_flag_ps", [
IfMatch(faction_type, "|independent", Return()),
SetVariable(paint_library, flags),
SetVariable(paint_offset_x, 12),
SetVariable(paint_offset_y, -52),
SetVariable(paint_library, none),
SetVariable(paint_offset_x, -12),
SetVariable(paint_offset_y, -66),
IfMatch(faction_type, "orcs", SetVariable(paint_library, rorc)),
IfMatch(faction_type, "drow", SetVariable(paint_library, rdarkelf)),
PaintAnimation(2, [12,13,14,15,16,17,18,19,20,21,22,23])

SetVariable(paint_library, str_node),
SetVariable(paint_offset_x, -35),
SetVariable(paint_offset_y, -128),
IfMatch(terrain_type, "grass.*|desert.*|steppe.*", PaintFrame(80)),
IfMatch(terrain_type, "snow.*", PaintFrame(81)),
IfMatch(terrain_type, "wasteland.*", PaintFrame(82)),
SetVariable(paint_offset_x, -15),
SetVariable(paint_offset_y, -8),
PaintAnimation(1, [85,86,87,88,89,90,91,92,93,94,95]),
SetVariable(paint_offset_x, -35),
SetVariable(paint_offset_y, -128),
SetVariable(paint_blend_addition, 120),
PaintAnimation(1, [100,101,102,103,104,105,106,107,108,109,110,111,112,113])

Anyway, back to work. I should have some kind of demo ready in the next 5 to 10 years...
posted 11-11-17 03:39 PM EDT (US)     3 / 12  
I'm very interested in this. I'm trying to figure out how Warlock made the changes he did...
posted 12-16-17 09:57 PM EDT (US)     4 / 12  
I've learned a lot about the internals, but probably not quite enough to make a mod WR.

I'm still working on my engine. Maybe I'll have enough for another screenshot soon...
posted 12-27-17 01:56 PM EDT (US)     5 / 12  
Please document and share any and all findings!

Most of what precious little information that was once available online has been lost.
posted 04-21-18 11:24 PM EDT (US)     6 / 12  
It would be interesting to learn if AoW assets could be effectively ported for mobile devices.
posted 05-06-18 00:36 AM EDT (US)     7 / 12  
> Please document and share any and all findings!

I'll try to find some time to write up what I've got so far. Mostly I've only learned enough to solve some particular problem (like extracting the hex sprites from release.hss), but I did have a scenario/saved-game dump program mostly working.

Lately I've been working on some basic in-game editing tools. You can open up an Editing panel and paint tiles, features, and simple structures. If I get that dump program working I'll be able to import existing AoW maps.

I've also been starting to implement cities. Most structures are simple, but cities are not!

Here's me trying to draw a smiley face.

[PNG, (355.27 KB)]

There's a little city at the bottom left. Since it doesn't have any race specified, there is no actual city to paint. It does have city walls though.

The big thing that I'm really stuck on, and keep putting off, is AI. I have a little AI demo with a lonely Azrac rider who is supposed to do nothing except explore a big map, and that's hard enough by itself.
posted 05-06-18 06:42 PM EDT (US)     8 / 12  
Impressive stuff. This is a timeless game thanks to its aesthetic and wide range of mechanics, so I think there'll always be some appreciators of this sort of work... myself for one.
posted 05-08-18 05:57 PM EDT (US)     9 / 12  
What programming language are you using for all of this?
I'm no master coder but sharpening skills and breathing some life into a project like this is right up my alley.

Let me know
posted 05-19-18 08:48 PM EDT (US)     10 / 12  
What programming language are you using for all of this?
I'm no master coder but sharpening skills and breathing some life into a project like this is right up my alley.

Let me know
I started it in C++ as a way to relearn it "properly". Unfortunately I am mostly self-taught, and mostly a C programmer, and I suspect it shows in the codebase.

The project is called hex. I haven't advertised it previously because the codebase was in such a state of flux, but perhaps now it's stable enough.

The instructions are terribly inadequate, but it's easier to get running on Linux. You need to copy (or link) various AOW files into the "data/" subdirectory.

[This message has been edited by ejrh (edited 05-22-2018 @ 08:19 PM).]

posted 06-28-18 05:02 AM EDT (US)     11 / 12  
Interesting. What are you planning to add, or already added, compared to the basic aow map editor?
posted 07-05-18 03:30 PM EDT (US)     12 / 12  
Don't suppose anyone has figured out how to change the upkeep costs of units?
Age of Wonders 2 Heaven » Forums » AoW1 Mod Packs » Format of release.hss
You must be logged in to post messages.
Please login or register
Hop to:    
Age of Wonders 2 Heaven | HeavenGames