Table of Contents
How I wanted to become a game developer #
From time to time some events happen in your life that, for one reason or another, end up changing your future. I’ve always liked computers and video games, and of course I’ve had some interest in learning making them. In fact, I already did a veeery simple text adventure when I was a kid. But there was a game back in 2002, that was one of the main reasons of my big interest in game development.
I’m talking about an unfinished small indie game. It’s a small Pokémon fangame called
Pokémon PC, developed by
The day I found out about this game (don’t remember where), downloaded it, installed it and played it, something fascinated me. I found incredible that someone, totally on his own, developed his own engine and a 3D Pokémon game. Nowadays that wouldn’t be that uncommon. Game development is more accessible than ever to everyone and there are all kinds of tools that make development a lot easier. But we are talking about 2002, times when indie game development was a lot more niche and difficult. Besides, I was an impressionable young kid, that only knew about the games on the Nintendo consoles he owned, and just a bit of what there was available for other consoles and PC, and that they were developed by these big mysterious and unreachable game companies (at least for someone that lives in a small mediterranean city). However, we’ve all had that friend that kept saying that had a cousin working for PlayStation.
And there I was, playing that Pokémon fangame, exploring a 3D world, with 3D battles, MIDI music, while my mind was blown out thinking that that was made by someone like you and me, and not one of those big companies. And I couldn’t stop thinking… But how? Where could I start doing something like this? I don’t recall if I did something about it immediately, but I definitely had that thought of wanting to learn for a long time.
Sadly, the author never finished the game. I remember how the demo ended in a city at the top of a hill, during night, that contained the first and only gym. The game is a little bit messy on today’s computers, but running it with Windows XP compatibility and with a bit of luck, the game is more or less playable. And I did say luck because it tends to freeze. I have replayed it recently, and despite one could consider it a bit crappy by today’s standards, I enjoyed a lot playing it again. I was able to reach the end again and I did everything there was to do.
From what I’ve seen by checking out the author’s website through Web Archive, he lost the code while migrating PCs, so he never could continue it. However, he started a second part that had some graphical improvements, like dynamic shadows and a 360 degree rotating camera. I didn’t play this back in the day because I didn’t know about its existence until many years later, and because, for some reason, it’s harder to run on modern computers. The game always freezes while booting, no matter the compatibility mode. Probably the best option is to virtualize a Windows XP.
A bit of reverse engineering #
Due to all these problems I’ve been having, I decided to investigate and do a bit of reverse engineering to both games. On one side, I patched the supported resolutions and aspect ratio to be able to play at 16:9 and HD resolutions. On the other side, I investigated the reason of those freezes and tried to figure out if I could do something about it. It turns out that it happens on most UIs and menus. These are not properly implemented because their input processing is implemented in a loop that blocks the main loop. That means that the game waits constantly for the player to make an input to navigate the menu, preventing that the game can process other stuff like rendering and Windows events. Not being able to process Windows events (move and resize the window, press the title bar buttons, redraw the window, etc.) is what makes Windows think the game has frozen.
So, how is it that the game worked well back in the day? Well, it worked by chance. Back in those times, Windows handled frozen programs in a more rudimentary way. If a program froze, Windows didn’t do anything about it. It froze and that’s it, you had to kill the process. Nowadays, Windows can detect when a program stops processing Windows events, and after several seconds, the window turns whiter and it lets you close the window by just pressing the X button. Regarding these games, I guess Windows just let the game run without considering it frozen.
Fixing this would be a bit complicated, as I would probably have to hack each menu of the game. But what I actually did is to remove the title screen of the second game, that would always make the game freeze. And as long as you don’t stay in a menu too long, the game is more or less playable. Remember to save frequently though.
With these workarounds I’ve been able to finish the second part for the first time while I was writing this article. I don’t have the same nostalgia as with the first game, and it is shorter and with less things to do, but I’m happy to have “completed” the Pokémon PC saga.
What was originally going to be an article about a game that was big inspiration, ended up being, in an improvised way, about how I tried to get my hands dirty to make it more playable. At least now is a more complete story about all my experience with these games, and what they mean to me.
Interestingly, the author must have had one of those nostalgic days recently, because he uploaded in his Youtube channel, which is not about video games, a gameplay of the second part.
If you’d like to play them, the author put a download link in the description in the video, and here is the first part.
Now, let’s catch them all!