PHO - Pokémon Hackers Online

PHO - Pokémon Hackers Online (
-   Archived Hacks (
-   -   Pokémon Red - Gen. II Graphics And Music Patch V2.0 (

Danny-E 33 29th July 2013 02:46 PM

Pokémon Red - Gen. II Graphics And Music Patch V2.0
Hack Name: Pokémon Red - Gen. II Graphics Patch

Hack of: Pokémon Red

Pokémon Red - Gen. II Graphics Repository

The readme pretty much says it all:

|            Pokémon Red - Gen. II GFX&Music Patch            |
|                          Version 2.0                          |
|                        By: Danny-E 33                        |


This hack includes several graphical improvements over the
original game to give it the quality of a Gen. II game. It
also includes all songs from GSC. There is nothing new
about the storyline. It is for the purpose of getting to play
through the game again with a little more aesthetic appeal.
It is also highly intended to be a base ROM for anyone to
create a hack of this Gen. I game. With the major overhauls
added into this hack, anyone who wants to create their own
hack of Pokémon Red can use this base ROM and have a game that
is beautiful.

For all the custom assembly for this hack, please see:

No one needs to ask me up front to use this for their hack,
but you MUST give credit to me for the base ROM when your
hack is announced.


-Customizable sprite banks
-All sprites from GSC
-Individualized sprite palettes (Pokémon and trainers!)
-Gen. II style 6x6 back sprites
-Several palette corrections (The Pokéball tile is always red.
Oak intro in full color!)
-Updated font, and other tiles, to match Gen. II
-Inserted the graphics for the GSC battle HUD
-The "Pokémon owned" Pokéball tile in wild battles
-Fully functional in-battle experience bar!
-All songs GSC!


The pokered disassembly (
Swampert22's PaletteEd GB - inserting custom palettes


These men have always been there for me when I had my noobish
questions and have let me grow into the person I am today by
challenging my creativity and problem solving. This hack would
not be possible without the help of these individuals.

Special credits go to Sanqui for porting Crystal's sound engine
into Red.


Version History:

01-08-2013: V1.0 - Initial release
01-21-2013: V1.1 - Several updates including:
Cleaned-up ASM and a few mistakes fixed in the readme
Updated tileset 0 with GSC's Kanto tileset
Replaced OW palettes with GSC's Kanto OW palettes (Super
Gameboy mode)
Fixed Leaders' sprites in the Trainer Card
Added three songs from GSC, Trainer Battle, Wild Battle,
Leader Battle (thanks to FroggestSpirit)
06-17-2013: V1.2 - Repointed the palette table to an empty
bank and expanded the table to include a palette for every
single Pokémon and trainer sprite
Corrected several Pokémons' sprite and palette data so that
the Pokémon look correct when viewed in a monochrome setting
Added my FRLG Cueball devamp
01-23-2014: V1.3 - Modified the battle hud to perfectly
resemble the GSC battle hud
Added the small Pokéball tile that appears in wild battles
against Pokémon that are already owned
Fixed the bug that loads the wrong palette when Transform is
Added 13 total GSC songs.
03-03-2014: V1.4 - Restored SGB Border
Added a fully functional experience bar to the battle HUD
03-05-2014: V1.5 - Fixed an exp bar bug that occurs when the
player uses Transform
01-30-2015: V2.0 - Fixed the player back sprite in the Hall
Of Fame Room
Ported Crystal's sound engine and all Crystal music

It should be noted that this is not related to my personal hack, Pokémon Prototype (although it includes many of the same features).
Any opinion/preference in Prototype, such as choosing a few sprites from other games, is not put into this hack. Every sprite came directly from GSC, with the exception of a few trainer sprites that did not exist in Gen. II. Those sprites are credited accordingly.
If you find any bugs, please let me know. Also, feel free to give any advice or feedback.


Title Screen with improved "POKéMON" title:

Colorized Oak intro:

New Trainer Sprites/Palettes:

New Pokémon Sprites/Palettes:

"Pokémon Owned" Pokéball Tile:

Colorized Box List and Pokédex:

Poketto's Sprites:
Red Backsprite Revamp - Gambler Recolor - Channeler Recolor - Giovanni Recolor

Fire Red/Leaf Green Devamps:
Old Man Backsprite (Mateo) - Enigneer (Luigi-San) - Cueball - Tamer - Lorelei - Agatha
Pokémon Red Graphics V2.0 IPS
Pokémon Red GFX&Music V2.0 IPS

Pokémon Blue Graphics V2.0 IPS
Pokémon Blue GFX&Music V2.0 IPS

Danny-E 33 20th August 2013 04:39 PM

Recently, I spent several days recreating the Graphics Patch V1.2 using the pokered disassembly.
If anyone is serious about using this as a base rom for a hack, I highly recommend using this disassembly for creating their hack.
It can be located here: Pokémon Red - Gen. II Graphics Repository

Danny-E 33 25th August 2013 07:33 PM

Here is a pretty important update! I fully implemented the Pokéball tile that is displayed by the enemy health bar in wild battles with Pokémon you've already caught!
Here it is!
Also, you may notice that the enemy health bar is now identical to gsc. Before, there was a slight difference because there is originally a tile that is used in both the player and enemy battle hud. Now I edited how tiles are loaded to the battle hud to make the enemy hud load a separate tile so that it can be edited independently from the player hud.
I also changed how the enemy's level is loaded so that it is also loaded in the same place as in gsc.
Least importantly, I removed the player name centering feature that makes player Pokémon with four or less letters in its name placed further to the right. This feature is not in gsc.
This was made possible by the power of the disassembly and the wisdom of those in the skeetendo irc.

Miksy91 25th August 2013 09:13 PM

Out of topic here as well!

Just started reading your change log for fun, and that way, checking how much of the code could be optimized in less machine instructions, and smaller space. While at it, I noticed you did quite a lot of;


compare register a with case1
if [something], jump toPlace1
compare register a with case2
if [something], jump toPlace2

These kind of things should be put in jump tables. There is machine instructions "jp hl" in Gameboy CPU instruction set which you probably knew though. But yeah, since tables are the only significant way of storing data with the instruction set GB has, it's convenient to use tables often as well.

Danny-E 33 27th August 2013 01:15 AM

I don't get what you mean.. what exactly would be changed? And if I added 'jump tables' (I don't know what those are), I would be taking up more bytes, even if it takes less asm instructions. I don't see how it would be very space-saving. But maybe I'm just misunderstanding.

Miksy91 27th August 2013 06:24 AM

Example of jump table;


ld a, indexValue
ld hl, tableStartAddress
dec a
ld c, a
ld b, 00
add hl, bc
add hl, bc
ldi a, (hl)
ld h, (hl)
ld l, a
jp hl

I guess you'd rather want to save space by writing the way you have, but if we weren't rom hacking, but would be programming instead, any programmer would replace comparing cases with jump tables.
I've never had that much problems with free space when it comes to coding new stuff, only with existing data structures. So I'm used to trying to think of the smartest way the code the feature, though it might not always be the most save spacing.

(Anyway, what you could do about the code is to remove useless "cp a, 00" instructions. "and a, a" and "xor a, a" are instructions that take only one byte and can do a lot of valuable stuff on their own.)

and a,a
-Always resets carry flag // scf + ccf
-Resets zero flag if a = 00 // cp a, 00

xor a,a
-Always sets a to 00 // ld a, 00
-Always resets zero flag

They have a pretty good implementation of jump table in pokemon G/S/C as two of the RST instructions.

Danny-E 33 24th January 2014 02:44 PM

Just uploaded V1.3. This update mostly features:
The Pokéball tile that is in GSC that is displayed when you already own the enemy Pokémon
A bug fix for the Transform palette bug problem
Ten additional GSC songs.

Right now, the SGB border does not work. I may get around to fixing this soon.

Mattysoxfan 18th February 2014 09:58 PM

How far does the hack go?

MercuryShadowScizor 20th February 2014 04:58 AM

This seems like an interesting hack of Red. Great job! ^^

Though I wonder... would this same patch work for Blue as well or is the coding for Blue different enough from Red that it wouldn't work?

Danny-E 33 3rd March 2014 12:42 PM


Originally Posted by Mattysoxfan (Post 128581)
How far does the hack go?

Well this is a graphics and music hack, so it works for the whole game...

Originally Posted by MercuryShadowScizor (Post 128613)
This seems like an interesting hack of Red. Great job! ^^

Though I wonder... would this same patch work for Blue as well or is the coding for Blue different enough from Red that it wouldn't work?

Yes, this patch can be applied to a Blue rom.
Also, you have the option to compile the source code for this hack from and it will compile a Red and a Blue version.

All times are GMT. The time now is 02:58 AM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2019 DragonByte Technologies Ltd.
Pokémon characters and images belong to Pokémon USA, Inc. and Nintendo.
Pokémon Hackers Online (PHO) is in no way affiliated with or endorsed by Nintendo LLC, Creatures, GAMEFREAK inc,
The Pokémon Company, Pokémon USA, Inc., The Pokémon Company International, or Wizards of the Coast.
All forum/site content (unless noted otherwise) and site designs are © 2006-2013 Pokémon Hackers Online (PHO).

Green Charizard Christos TreeckoLv100