Ouch my eye!

Do not look at LASER with remaining eye!


Reverse Engineering

Posts related to my various reverse engineering endeavours



  • Just a trim off the top

    With luck this will be the final post on the Bellard-LZSS compressor, allowing us to sign off on the last piece of the puzzle required to write a PIC encoder for the Railroad Tycoon Deluxe (RRDX) variant of the MicroProse PIC file format PIC93. Last time we left off having found a few bugs, and some implementation variances that resulted in our output being different than that of the reference file. We finished off by having our primary test file pass a full validation. However upon looking at a few others we were still failing on those. So in this post we pick-up where the last one left off and try to find whatever other bugs and variances remain.

    (more…)
  • Sometimes you need a hammer

    In my last post, we wrapped up writing our Bellard-LZSS compressor, to facilitate eventually writing a PIC93 encoder for Railroad Tycoon Deluxe (RRDX) from MicroProse. In this post we will take the next steps, debugging and validating the code which we have written. I have no doubt it will take some tweaking to get the compressor to generate the original compressed stream that we have as a reference, I just hope we are not too far off right out of the gate. So with that said, lets get into it.

    (more…)
  • Shoving the toothpaste back into the tube

    In my last post on the PIC93 version of the MicroProse PIC file format we left off having successfully decompressed the LZSS compressed image data within the file and reconstituting the image. That part was easy, as the code was pretty much already written for us in the form of the unlzexe github repository. It wasn’t easy getting to the point of identifying that Bellard-LZSS was actually the compression used. In the end we got there. In this post we’re going to try and reverse the process. This could prove to be far more challenging as we don’t have a full reference to look back onto.

    (more…)
  • SPC: Above and Beyond (part 2)

    Last time we left off in a pretty good place, and with a decent understanding of the structure of the MicroProse SPC file format. Even if not totally correct, or complete, it seems to be good enough to traverse through the file to locate all the data. So with that, in this post we are going to convert that data into images we can see, and make any adjustments to our understanding of the format as necessary from there.

    (more…)
  • SPC: Above and Beyond (part 1)

    I decided to take a brief interlude from the MicroProse PIC file format we have been reverse engineering over the last while. In this post we will look at another MicroProse file format, the SPC file format and try to learn its secrets. SPC files appear to be another format used by MicroProse in Railroad Tycoon Deluxe to store graphic assets. Many of the file names correspond with PIC assets which we have already analyzed in my previous post. I suspect that these are perhaps sprites, as most of the PIC images I’ve looked at so far appear to be full screen images. Only one way to find out, let’s dig in!

    (more…)
  • Oops, I did it again

    This post is not what I thought it would end up being about. I had plans, but it seems fate, and the dark corners of my brain, had a different path set out for me. You see after I wrapped up my last post on PIC93 I had LZSS compression on my mind, and thought maybe it was a good time to dive into LZSS. Specifically how it was used to compress the executable files for many MicroProse titles in the early 1990’s. I wasn’t even planning to blog about it at this time, it was only meant as a distraction for a little while. Then it happened…

    (more…)
  • PIC: The Next Generation

    Time to take on the last of the MicroProse PIC variants we have uncovered so far, PIC93. This variant stands out from the others a bit as it is the first update to the format that we’ve seen in 3 years. Also to the best of our knowledge, the only released title ever to use it was Railroad Tycoon Deluxe (RRDX). RRDX is also one of the last titles to use the PIC format that we can see. Though even with that, the titles that did release after RRDX seem to have gone back to the PIC90 variant. Another oddity is that this format seems, at first glance, closer in kin to the PIC89 format than the PIC90 format. PIC89 being the format used with the games predecessor Railroad Tycoon. With that said, let’s dig into it and see if we can reveal its secrets.

    (more…)
  • Dither me this

    In a previous post we investigated the remaining unknowns with the PIC90 PIC89 variant of the MicroProse PIC file format. This post will be more of the same, except this time we will tackle the PIC91 PIC90 variant, bringing us one step closer to fully understanding the format, and it’s evolution, based on the sample set of files we have available to us. Also as a side note before we go on here, in that previous post I’ve updated it a bit to include the CGA remap/dithering rendering at the end to be complete.

    (more…)
  • Rewriting history

    Maybe not rewriting it, but correcting our recording of it. In my last post we analyzed the assets for a large number of titles from MicroProse that expanded our understanding of the sub variants and when they first came to use. As a result I am having to correct the designations I have been using to identify them.

    (more…)
  • Input, more input!

    Input, more input!

    I’ve interrupting my planned post to make this one, as this potentially has an effect on that post. Yesterday after my post about additional titles went live, one of my readers, who wishes to remain anonymous, gifted me with a substantial array of PIC game assets for various MicroProse titles (spanning 1988-1994) to help me further catalogue which games use which variants, and to identify any more variants or sub-variants. To that reader I say thank you, what you provided is sure to be helpful, as we are about to find out.

    (more…)