Miasmata

Miasmata

View Stats:
Miasmata > General Discussions > Topic Details
Andy Sep 26 @ 7:59am
QR code at the end of the credits
I noticed there's a mysterious QR code at the end of the credits scene. I don't have an app that can read it, so I wonder if anyone's found out what's behind the QR code?

Just curious :)
< >
Showing 1-12 of 12 comments
BenM64 Sep 26 @ 8:47am 
It leads to http://ionfx.com/ablastfromourpast.htm.
Consider it a little treat from Bob and Joe for having beaten Miasmata.
(A fascinating treat chock-full of potential, IMO. I would've made a whole Discussion about it months ago, but, y'know, it's supposed to be secret.)
Last edited by BenM64; Sep 26 @ 10:25am
Andy Sep 26 @ 9:20am 
Yeah, it really does look like it would've had great potential! I wonder if the indie game scene of nowadays would be interested of it, it sure reminds me of Zelda:Majoras Mask graphic-wise.

Maybe develop and publish it finally as a retro indie game? Dunno, I wonder how the developers are doing these days. Sure I've heard that they're making a new game but I've got this fear it's fallen into development limbo.
BenM64 Sep 26 @ 10:13am 
I tried emailing them out of curiosity, asking for more details, but they never replied… They're probably too busy working on their next game.

Maybe if we spread the word of the prototype, someone from the indie scene would take interest?
But then again, it was supposed to be kept only to people who've finished Miasmata…only they didn't keep it a secret very well because you can easily find the page by Googling the right terms ("ImmersionX2", another of IonFx's home-made engines, was what led me to the page before I even purchased Miasmata, back when I used to turn the Web Archive upside-down researching as much as I possibly could about them).

If IonFx were a little more active on the Steam Discussions, I would've suggested resurrecting Into Outland for the PC like they did with Obulis. Or maybe port over the existing Windows Mobile assets to Android or Windows Phone?
Into Outland looked like exactly my kind of game; exploring 3D environments, finding items/learning skills with which you can explore more of said environments… Miasmata only fulfilled the first half for me.
(Besides, I'm still lovin' the software-rendered 3D aesthetics! That's my kind of retro, more than the done-to-death Mega Drive/NES throwbacks we've seen on the PC and Wii U.)

Come to think of it, IonFx's entire portfolio of Windows Mobile games, including Into Outland and their also-cancelled "Overdrive: GeoRally 2", could easily be remade for PC, Nintendo hardware (since they wanted to release Into Outland on the DS at the time), Android, etc.
It could give them a few more sources of income to help them develop their higher-end projects, like Miasmata's spiritual successor. (I'm personally a little doubtful that they'll make it through with just Miasmata's/Obulis's sales supporting them.)
…But maybe I'm getting too carried away here.

You know, considering how actively DarkStarSword's been reverse-engineering and bug-fixing Miasmata, I'd be surprised if he hasn't done the same with the downloadable prototype yet.
Last edited by BenM64; Sep 30 @ 1:21pm
You know, considering how actively DarkStarSword's been reverse-engineering and bug-fixing Miasmata, I'd be surprised if he hasn't done the same with the downloadable prototype yet.
No, these days I'm the #1 skilled modder over in the 3D Vision community.
BenM64 Sep 30 @ 1:10pm 
Oh yes, of course! You were going to work your 3D Vision magic with Miasmata's successor, right?

If you (or anyone with similarly-awesome reverse-engineering skills) could spare some time to take a look inside the prototype, I'd love to know what's hidden inside it.
Myself, all I've managed to find are a few odd tags in log.txt, such as "MESSAGE:TEX\UI\MENU\INGAME\Icon_QuickItem". There must be more unused content hidden in the files, right?
Last edited by BenM64; Sep 30 @ 1:31pm
If anyone was to start looking at this, I did spend a little time examining the .pk2 format used by both Obulis and Into Outland back in the day, and added some initial support to my Miasmata modding tools in a topic branch:

https://github.com/DarkStarSword/miasmata-fixes/commit/0efc329f2f532f824df8764a603afc9aaea458ff

At the time I was looking for clues as to what audio format & codec they were using in Miasmata, but beyond confirming that Obulis used the same format I didn't find any leads.
BenM64 Oct 2 @ 1:31pm 
…So those Python scripts… Do you mean they can extract whatever's in test.pk2? Or was it purely a side-experiment of yours?
(I'm now trying to figure out how to make the scripts work with the prototype.)
I honestly can't recall how far I got with those - I never merged it back into the master branch, which means that I didn't consider it complete, but it looks like it should be enough to extract the files from the .pk2 file.

From my commit message it looks like it won't consider any of the contained resources to be made up of multiple "chunks", so it would extract them all as single files that you may then need to separate (e.g. in Miasmata, texture resources have some kind of header "chunk" followed by a DDS file, and extracting them with --chunks will separate those into two separate files allowing the dds file to be opened by any tool that understands that format). I have noted in the commit message that it looks like the "u2" (unknown/unidentified/unnamed 2) field can be used to determine which resources are made up of multiple chunks.

If you're playing with these scripts you should set up a cygwin environment with python2 installed to match how I developed them - in theory they should work with native Python for Windows as well (and they do, because these scripts are used by the patcher for the community mod and miasmod, both of which use native Python, and you will find the source code for both of those in this same repository), but I don't test that as frequently and have been bitten by subtle differences such as Windows lame wildcard processing (or lack there of) on many occasions (and you usually have to specify the path to python.exe, which gets annoying fast).

If you also install git when installing cygwin (native git works too) you can check out the repository like:

git clone git://github.com/DarkStarSword/miasmata-fixes.git cd miasmata-fixes git checkout pk2

The usage should be similar to rs5-extractor.py (and tar if you are familiar with Unix tools), something like:

path/to/miasmata-fixes/pk2.py -x foo.pk2
Last edited by DarkStarSword; Oct 2 @ 4:46pm
BenM64 Oct 2 @ 4:47pm 
Interesting info, but… I'm still not entirely sure how to proceed, or where to start.
Since my main intention is just to extract whatever's inside test.pk2, or anything to help me find out more about Into Outland… Is that doable with these Python scripts (having installed Python 3.6.2 (32-bit))?
You will need Python 2.7.x for these scripts, not Python 3 (Python 3 was a major language update and is not backwards compatible - my more recent work is Python 3, but this was before I switched). Stick with 32bit if going native because some of my scripts use numpy which last time I checked was only packaged for 32bit on Windows - it won't matter just to extract files or if you use cygwin, but if you play with any of the scripts that decodes an image from the game (like miaschiev) they will need that because I use numpy to accelerate the DDS block decompression.

I personally prefer working in a cygwin environment over native because I'm familiar with Unix and Linux (I was a Linux Kernel Developer until recently), and when you install cygwin you have the option of installing a bunch of other packages - you want to select at least git and python2.

With that installed you should be able to run the commands I added to my above comment (I edited it a little) from a cygwin terminal to extract the files. If you aren't using cygwin you use the git bash terminal for the git commands (there are GUI frontends, but I'm not familiar enough with them to offer recommendations) and have to prefix the extract command with the path to python (like c:\python27\python.exe c:\users\dss\miasmata-fixes\pk2.py -x c:\...\obulis\obulis.pk2).
Last edited by DarkStarSword; Oct 2 @ 5:21pm
Looks like it extracts it to the current directory (that would be some more polish it needed before merging into master - rs5-extractor.py extracts into a directory named after the rs5 file by default), so you might want to make a new directory and run the script from there.
I just checked - Obulis is *NOT* using DDS for textures like Miasmata. I'm not sure what Into Outland is using, but I'd guess it more likely be the same as Obulis than Miasmata. DDS = Direct Draw Surface, which is a format designed for DirectX. Since Into Outland and Obulis were designed for Windows Phone they are more likely to use formats suited to that platform.

Just to show what I mean about chunks, this is tex\ball_black from Obulis in a hex editor:

00000000 48 45 41 44 00 00 00 20 10 00 00 00 00 00 00 00 HEAD... ........ 00000010 00 00 00 00 40 00 00 00 40 00 00 00 01 00 00 00 ....@...@....... 00000020 44 41 54 41 00 00 00 20 66 06 00 00 00 00 00 00 DATA... f....... 00000030 0F 05 01 00 02 07 16 00 10 D0 00 C0 01 09 08 10 ................ 00000040 C4 08 00 A8 68 11 02 45 10 13 25 C2 88 08 E4 21 ....h..E..%....! 00000050 C4 08 50 C0 38 6C 08 20 04 43 09 0B 13 2A 3C 88 ..P.8l. .C...*<. 00000060 D0 E0 04 82 05 63 C0 A9 20 42 E0 40 80 01 C5 C8 .....c.. B.@.... ...

You can see this file contains two chunks: "HEAD" and "DATA". There's some more information after each, which is parsed in rs5file.py Rs5ChunkDecoder.__init__():
(self.name, u1, u2, self.size, u3) = \ struct.unpack('<4s3sBI4s', header)
That's: 4 byte chunk name/signature/magic/eyecatcher (HEAD/DATA), 3 byte unknown field (00 00 00), 1 byte unknown field (0x20), 4 byte little endian chunk size (0x10 / 0x666), 4 byte unknown field (00 00 00 00), followed by the chunk itself and any padding necessary to align the next chunk to an 8 byte boundary (that's 8 bytes in Miasmata - here it might be 4 bytes if it's consistent with the padding on the filename).

The code immediately under that checks a couple of assertions I made when decoding Miasmata's file format, which will fail in this case (u1 was 00 00 01 in Miasmata, but is 00 00 00 here, and u2 indicated whether the file was empty in Miasmata (pk2 uses "FREE" for this instead based on what I wrote in pk2.py) whereas here it seems to indicate whether the file is chunked or not) and cause it to fall back to extracting the file as non-chunked. Fixing those assertions to pass for Obulis/Into Outland as described in my commit message should then allow it to properly extract the individual chunks (barring any other problems I've forgotton or variations I hadn't encountered yet).
Last edited by DarkStarSword; Oct 2 @ 6:07pm
< >
Showing 1-12 of 12 comments
Per page: 15 30 50

Miasmata > General Discussions > Topic Details