Ouch my eye!

Do not look at LASER with remaining eye!


June 2024



  • The PIC of despair

    I may or may not have rage quit at the end of the last post. I had spent so much time debugging and getting it working only to have this one file break everything… again! It was late, I was tired, I was frustrated, and I was already past my self imposed deadline to wrap up for my blog post. I needed to walk away and get some rest and come back with fresh eyes. So here I am 12 hours later, after finally publishing my last post, let’s see if we can get to the bottom of what’s going on with the troublesome PIC file.

    (more…)
  • Honey, I shrunk the kids

    In my last post we took the first steps towards writing an PIC encoder by implementing the necessary pixel packing and RLE encoding schemes. All that is left is writing the LZW compressor, and that is the subject for this post. While I had hoped that by the end of this post we will have all the parts necessary to make a fully functional encoder for MicroProse PIC files., the Fates had another path in mind…

    (more…)
  • Return to Sender

    So far we’ve been focusing on decoding and rendering a PIC88 image from F15-SE2 into something standard tools can open, and we’ve accomplished that fairly successfully I think. Now it’s time to turn things around and start writing a PIC encoder, so that we can take a custom image and turn it into a PIC file the game can open. This post will focus on the pixel packing and RLE encoding, and the next one will be on the LZW compression.

    (more…)
  • Show me the money

    Okay well maybe not the money, but the palette. As we left off in my last post, we have been looking for the palette to be able to correctly render the 256 colour images from the game. While we did find a chunk of it, a few small bits remained elusive. In one of our Email exchanges about our mutual progress on various parts of reverse engineering F15-SE2 Neuviemeporte suggested I look into the slideshow “demo” for the F-15 Desert Storm Scenario pack for the palette. It’s a great idea, and this post is in response to that.

    Down the rabbit hole we go…

    (more…)
  • Colour your world

    In my last post we solved the last secret of the PIC file format we have been looking at. But the image itself contains one more secret… the colour palette. Unlike more recent incarnations of the PIC file format, which have a companion PAL file, the PIC88 version used by F19 and F15-SE2 does not. In this post we will endeavour to locate the custom palette utilized by the game.

    (more…)
  • Nobody expects the Spanish Inquisition

    So far we’ve managed to make great progress in being able to fully decode the PIC image into a raw image that we can then save to whatever format that we like. There is one last part of the PIC format that remains unexplained/unexplored, and that is the ‘Format Identifier’ byte that is at the very start of the file. In this post we are going to investigate that, in a rather inquisitive manner…

    (more…)
  • A Heritage Minute

    Now that we have our decoding of the PIC images up to a well-defined point for F15-SE2, it’s time to look and see where else MicroProse has used this format. As we know from the DarkLands document we discovered back on my second post, along with the thread on a Civilization forum, we know that the format was used in those games, albeit in a different form. Lets dig through the archives to see what other titles use the format, and if that format is the same.

    (more…)
  • Some assembly required

    Some assembly required

    In a previous post, we left off having validated that all the parts we created for the pipeline required to decode a PIC file worked. While it was helpful in testing/debugging each part to have it as a stand-alone program, and it will be helpful again when we go on to write an encoder, the time has come to put all the pieces together into a single unit, but thankfully no actual Assembly will be required.

    (more…)
  • The other foot

    Before we get into putting the decoding pipeline together, I wanted to take a quick break to talk about the other asset files. Back in my first post in this series I mentioned two different graphics asset file extensions PIC and SPR (likely sprites), but so far we have only been talking about the PIC files. There may be others, but those two stood out.

    (more…)
  • Houston, we’ve had a problem…

    Okay maybe the end of my last post was a little evil. But I swear it wasn’t just a gimmick to get you to come back and read more. I knew things weren’t perfect, and I wanted to separate out the debugging of those issues, as they are not directly related to the rendering code that was the scope of that post. So just to recap a little, we have all the pieces of the pipe built in order to be able to take a PIC file and convert it into a PPM image file. Now we can visually see the results of what is happening in the images themselves, which will hopefully make things easier to debug. So without further ado, let’s get on with the big reveal.

    (more…)