Does anyone remember Grand Theft Auto 2 from 1999? It’s that top-down game, where you can do many of the things, that you can do in more recent parts of the series. Stealing cars, shooting people, doing missions and so on.

I’ve been trying about one month in 2012 and another one in 2013 to get a splitscreen mod going, basically by starting multiple instances in network mode on localhost and moving windows around. Each attempt failed, because I couldn’t send input to all windows at once and so I lost interest again.

I was still amazed by the concept and wanted this hack to happen, so I picked up the project again in 2014. And this time it really got far: I wrote a component that talked to each GTA2 instance via TCP - and with some additional memory hacking, suddenly it was possible to send fake input to each instance independently!

To turn it into something usable, the splitscreen hack wouldn’t be enough. The users also need a convenient way of controlling their player, so it should have game controller support. And while we’re at it, why not make that game controller support work in single player, too?

Stepping it up, I called the whole thing a meta-mod that will combine more smaller mods and announced it in the somewhat still alive GTA2 community at the GTAMP.com forums under the name GTA2: Hacker’s Remix. This is the home of lots of community based GTA2 content, such as the online gaming lobby GTA2: Game Hunter and Vike’s enhanced GTA2 (without that my hacks wouldn’t have been possible).

That thread was started in November, and until January ‘14 I’ve had released 5 alpha versions, the last one being 0.3.2 which is also the latest version right now. It’s feature set consists of the following:

That sounds like pretty much everything there is to do, right? Nope, I’ve envisioned lots of other features even in 2012. My goal was to integrate the splitscreen mode in the game menu, so it feels like part of the official game.

Hacking the game’s menu had some big problems (for example: it looks ugly in 32bit color mode), so while I was at it, I’ve decided to fully reimplement the menu. And that’s the reason why there has not been a release for the past months, something like that can’t be done over night.

Furthermore I thought replacing most AutoIt3 code with C99 and writing something like my own SDL2 GUI toolkit (although not as an external library right now, but maybe in the future) were good ideas. And I still think that they are, though they may have slowed down development some more.

On the other hand, Black Phoenix, the author of the unfinished OpenGTA2 (aka. OpenGBH) engine allowed me to use the source code from his C tools (audio, sprite and font parsing!) as base for my code and that surely saved lots of time.

About 500 commits on github later, the menu was working well, but not polished enough for a release (and code from earlier releases still needs to be re-integrated). In my story telling, it’s end of June 2015 and I had to do other stuff again.

Fast forward a bit more than another month and now it is August ‘15. I want to spend the next ~2 weeks on getting a new release ready, so all that work turns into something usable again. There’s a lot to be polished and even some features are missing right now, but we’ll see what happens. Features that can be expected:

a menu that looks and feels like the normal GTA2 menu

all ressources (fonts, sprites, sounds!) are loaded from the normal game files without converting them

the splitscreen mode is integrated into that menu

the menu can be controlled with the game controller

at least basic config files for controller button mappings

simple, optional update notifications

a custom credits screen, that can be scrolled through manually (of course it also scrolls automatically)

a message shows up in the game, when the controller layout changes

maybe: rumble support

So this is my “short” summary (really, it could have been far more detailed and technical) of what has happened so far with my GTA2: Hacker’s Remix meta-mod. If you’re wondering, why I put so much work in modding a 16 year old game: I’ve learned a lot about reverse engineering, coding (especially C) and GTA2 is just fun to play. Also I’ll be able to re-use lots of this (eg. the GUI toolkit) in other projects.