’Cause all games were better on the GBC

You are not logged in.

#1 2014-04-14 03:56:41

Registered: 2011-06-27
Post 10/12

Pokemon Multiplayer Red [WIP]

Hi. Recently I've been working on a PC remake of Pokemon Red with the end goal to have it be co-op style. You and your friend will battle trainers together, collect badges together, and experience the original game exactly as it was - but together. This was inspired by Twitch Plays Pokemon, and this let's play.

It's still a heavy work-in-progress, but I think it's looking promising. Almost all core overworld features are implemented, and pretty soon I'll be working on battling. Before I know it the project will be done, and Nintendo will be trying to shut it down. But in the mean time, I'll be posting my progress here, my YouTube channel, and my Twitter. Also I occasionally post screenshots in the IRC.

This project is being programmed in C++ using SFML 2.1, which means it should be cross-platform. Almost every bit of data is being loaded from data I've dumped from the ROM myself, with the exception being some text macros, an ASCII/Pokemon string equivalent table, and other constants. The project is also entirely open-source and hosted on GitHub, which you can find the link to at the bottom of this post. To avoid any copyright issues, only the code is hosted there. My goal is to only distribute what I've written and created myself, which will include the game's code, scripts, and dumping utility, just in case if Nintendo does try to shut the project down, they shouldn't be able to. But I'm no lawyer, so what do I know. That said, you can't run the game unless you download all of the resources for the game, which I've decided to link at the bottom of this post.

My goal is to make this a near-perfect clone. All of the timings, graphics, and sounds should be spot-on with the original. Of course, there will be some major changes with how battles work, since you will actually be able to fight with your friend. This will mean trying to re-balance the game too so it isn't super easy.

Another goal is to make the engine flexible enough to, provided this gets finished, create a multiplayer version of other Pokemon games, but not so flexible the original C++ code doesn't have to be changed (so my life is easier).

Implemented Features (may or may not be fully implemented but are working to some extent)
-Map viewing
-All graphics support palettes
-Overworld entities
-Entity movement and collisions
-Tall grass drawing over entities
-Ledge jumping
-Moving between maps
-All warps (except teleport tiles in Saffron)

I recommend checking out my YouTube channel for feature overview videos, since there isn't much to capture in a screenshot.

-I've heard people suggest resizing the game window, and while I don't recommend it, you can change it in the Constants.h file. I don't plan on making it official because most of the maps are designed around the small window, meaning you'll see border tile changes you weren't meant to.
-Most of the code isn't finalized and exists for testing purposes. MapScene's Update function is very cluttered, but it won't look like that when the project is done.
-If you wish to compile the code yourself, you'll need SFML 2.1 and a compiler supporting C++ 11, and to change the resource location (ResourceCache.h)
-I'm not looking for programming help with this project yet. I have most of it planned out and think I can manage doing it all alone within a reasonable amount of time. Although, once it comes time for creating scripts for NPCs and such, I will welcome all the help people want to give me.
-If you have access to the game's sound effects, such as cries and other sound effects (I have music taken care of), I would greatly appreciate some help. Please note they must not have any enhancing effects, like reverb.

Download Alpha 1.00 (win32)
Download Alpha 1.01 (win32)
Download Resources (NOTE: This folder must go in C:\, so it looks like C:\red dumps\, or match the location in ResourceCache.h)
My YouTube Channel
My Twitter
GitHub Repository

Big thanks to the disassembly of Pokemon Red. This has come in handy a lot so far. Also a special thanks to Padz for answering questions I had, and Frogg for help with music.


Last edited by Lin (2014-04-23 08:04:17)


#2 2014-04-18 07:17:23

From: Anywhere.
Registered: 2012-09-12
Post 318/331

Re: Pokemon Multiplayer Red [WIP]

Wow, awesome :D
I-I can't say anything ._.

my FB

Lurking somewhere here...


#3 2014-04-18 09:18:19

Registered: 2011-06-27
Post 11/12

Re: Pokemon Multiplayer Red [WIP]

Some update news. Warps are pretty much done with almost every single one working. I spent a long time figuring out how to group all warps together and properly deal with either having to walk against a wall or just on the warp, and then if you'll walk forward afterwards. With no hard-coding specific warps and using only warp points (no warp-to points), every warp I've tested works properly. There are a couple of things to note. The elevator warps must be specially programmed, since the same warp can lead to different maps. Also, two rooms in the S.S. Anne must be horizontally stretched by 1 tile to avoid being able to walk out the bottom door via the right wall. A small price to pay honestly. To handle walking against walls to warp, I've added the tiles you can walk against to the door tile list. In terms of things that don't work, Saffron City's teleport pads don't work yet. Also, cross-warp maps like Diglett's tunnel and the underground paths don't work. Those maps must be modified manually, since they're set to warp to the previous outside map.

Some bugs have been fixed, such as cross-map collisions and walking right after warping. You won't enter a connected map if there is a tile blocking the way, grass will continue to get drawn on top of the player when switching between maps, and you're forced to stop walking after entering a map.

In other news, thanks to Yepoleb and IIMarckus, this project now compiles with the GCC and can run on Linux (after the resource directory is changed of course). I didn't expect having it compile with both Visual Studio and GCC be a problem, but the GCC is much more picky. Issues such as std::to_string not being supported in the latest version of MinGW (it works in MinGW-W64), primitive data types not defaulting to 0, and std::functions not being able to be assigned "nullptr" by another variable (seriously, if you have a function pointer that equals nullptr and assign that pointer to a std::function variable, that variable will not be nullptr...) made it quite annoying to get working. But I'm glad it does now, which will make maintaining cross-platform compatibility a lot easier.

y0r124 wrote:

Wow, awesome :D
I-I can't say anything ._.

Thanks :)

Last edited by Lin (2014-04-18 09:20:04)


#4 2014-04-19 07:13:22

Registered: 2013-03-18
Post 291/383

Re: Pokemon Multiplayer Red [WIP]

i know hard it can be to programm a game in c++.
salute to your hard work.


#5 2014-04-23 08:03:36

Registered: 2011-06-27
Post 12/12

Re: Pokemon Multiplayer Red [WIP]

I finished up the inventory and decided to release another version.

Executable (win32):                   
C++ 2013 redist (only if you can't run it): … st_x86.exe

Just as before, Resources must go in C:\ so it reads "C:\red dumps\".

Here's a video:


#6 2014-05-24 19:28:58

Registered: 2014-05-24
Post 3/15

Re: Pokemon Multiplayer Red [WIP]

Can't wait, I have been following you're twitter feed since the conception of PMR.


#7 2014-05-25 05:05:36

Registered: 2012-03-12
Post 254/300

Re: Pokemon Multiplayer Red [WIP]

The few, the proud, C++ coders

This isn't easy to say, but…
Music and ASM hacker


Board footer

Powered by FluxBB