First footsteps – and a few wobbles

Early proof of concept work has begun, and I’ve already hit snags. Overcome most of them, but snags none the less.

I’m working on a Linux & Wine setup for this hack, but attempting to use as many native tools as possible. The hex editor I have settled on is Bless – and it has functioned perfectly for my needs. The only feature that I really wanted was tabbed editing of multiple files, so I can refer to the original working ROM easily, and it has that. Has loads of other features too, but I don’t seem to need them yet.

So with this tool in hand, I started looking into the Starflight binary, and thing went better than expected! Started with a random scroll down the data, hoping to find ASCII enconding, and lo and behold I did:-

Bingo! With the knowledge that the main story info and conversations was stored in such an easy to use format, my spirits were lifted. Time for one quick tweak, and to see if I can still get the ROM to load. So I changed the word “STAR” to “RATS”, saved my new ME0.bin file, and went to load it up in Kega Fusion and see what happens.

Aaaand, black screen. I knew the cart checksum would be an issue on hardware, but Fusion has the option to automagically fix it on the fly, so I was hoping it would load anyway. What I wasn’t expecting was for EA to have their own extra checksum function hidden in the ROM. EA are a terrible, distrusting company nowadays – and it appears they’ve been that way since 1991 at least!

A quick google later, and I find that this has been overcome. wboy from the NHL94 hacking scene has offered a solution to the EA ROM checksum issue, which I shamelessly copied into my own project. Save, load, rinse, repeat and the ROM now boots up in the emulator! Thanks wboy! (I felt it unnecessary to sign up to yet another forum just to post a single comment of thanks, so saying it here clears my conscience somewhat).

So I did a bit more text editing, and went to see the results, and it has paid off.

And there, in functional glory, is the first message in the message centre when a new game is started, with text modified for a link to the Mass Effect universe. The only issue I have found is the date at the beginning – if I change that, then the title of the message doesn’t show up in the message centre. I will have to have a little deeper look at why, because the year 4620 puts this game far later than Mass Effect, which doesn’t really work.

So, the proof of concept for changing text has been done, and I’m about to start looking into changing the year – as it’s clearly referenced elsewhere in the code.

I’ll post more when I’ve resolved that issue, and started my proof of concept for the graphics editing.

Genesis – It all starts with an idea…

All things start with an idea, and while playing through BioWare’s Mass Effect trilogy, I had one.

Back in the Mega Drive/Genesis era, I remember playing a game called “Starflight” by Binary Systems.This game had everything I wanted at the time – a giant galaxy to explore, different races to meet and fight, planets to explore, and all tied together with a loose background story of your epic voyage through space. Playing the first Mass Effect reminded me of this game in many ways, especially when exploring planets in the Mako vehicle. The devs at BioWare have even mentioned Starflight as one of their inspirations for the game. (As a side note, I think it’s a shame that vehicle exploration was cut from the rest of the trilogy – it took away a lot of the sense of adventure, seemed to close down the scale of the universe, and made the game feel closer to the normal dull “corridor-shooter”. But the rest of the gameplay mechanics had been tweaked and improved so I could never get too mad.)

With a head full of Mass Effect, and my nostalgia glands throbbing at the memory of Starflight, I have decide to take on a project to combine the two. So I am going to be working on a romhack of the MD/Genesis version of Starflight, replacing graphics and text to make a Mass Effect themed version. Gameplay will remain unchanged, as that kind of assembly hacking is beyond my current knowledge, but after a bit of digging I may end up making some changes – we’ll just have to see what I learn.

I will be documenting the process here, so fingers crossed it actually functions!