- 566
- Posts
- 5
- Years
- Seen Apr 29, 2025
This changelog takes the method that North American Yellow Version uses to display super gameboy palettes on the gameboy color, and it then backports it into my hack of red version. Here is a link to the github commit that gives a difference report of all the bare essential changes irrespective of whatever else my hack does. Those that are comfortable with asm and git should be able to follow the report and implement the changes. They are far too extensive to elaborate on in a mere message board post. A lot of the code comes from the pokeyellow disassembly and I have tried to add comments where prudent. It's no DannyE full-color hack, but this one maintains backwards compatibility. Unlike the full-color hack this project allows the game to be played on a regular gameboy or a super gameboy in addition to the GBC and GBA.
EDIT: Here is another link that shows a diff report compared to my baseline branch. It will show all the comprehensive changes as I continue to make improvements after the initial merge.
I wanted to just get that out of the way before dumping a history lesson.
For anyone who has played any of the Gen 1 games (USA version) on virtual console, you may have noticed that red and blue are in grayscale while yellow actually has some rudimentary color. Why is that so? Well it seems to boil down to the virtual console emulating the games as if they were being played on a gameboy color.
You see, red and blue were coded specifically to display some nice coloring when played on the super gameboy. A lot of big gameboy releases in the 90's did. But pop red, blue or japanese yellow into a gameboy color and you get disappointment. The hardware bios will detect the game and, treating it like a grayscale game, will assign a 4-color palette to swap out the grayscale. The fact is that GBC and the SGB are just too different when it comes to handling palettes.
Now back in 1999, Nintendo of America realized they had a problem. You see, pokemon yellow was set to release in north america in October and be on every kid's Christmas list. But the gameboy color had already released in north america the previous November! Kids across the western world already got a GBC for last Christmas, and if they didn't they would get one this Christmas to go with with Yellow version. How's it going to look when they pop the newest Pokemon game into their shiny gameboy "color" to see a crappy 4-tone palette? Not good at all.
So the localizers for Yellow had their job cut out for them. What they succeeded in doing was essentially piggy-backing off the game's SGB functions to hack together an ad-hoc method for converting SGB palettes on the fly into something that the GBC can actually recognize. All new palettes had to be made just for the GBC since the SGB palettes look awful and washed out with the GBC's screen and color mixing. Elegant? No. Effecient? No. Works? Yes!
And so it was that if you fire up a north american Yellow cart in a GBC you get the nice coloring that the games were programmed to display on the SGB. Which then lead to my thinking, could Yellow's hacky solution be back-ported into Red and Blue? It's been a tough few months, but I think I've finally succeeded. I know I'm not the first to attempt this. There are scant random postings on old message boards inquiring about this kind of thing, but nothing has ever really come out of it. So I'm the first to really do it as far as I can tell, and as such I wanted to share the code modifications for all to see and use.
EDIT: Here is another link that shows a diff report compared to my baseline branch. It will show all the comprehensive changes as I continue to make improvements after the initial merge.
I wanted to just get that out of the way before dumping a history lesson.
For anyone who has played any of the Gen 1 games (USA version) on virtual console, you may have noticed that red and blue are in grayscale while yellow actually has some rudimentary color. Why is that so? Well it seems to boil down to the virtual console emulating the games as if they were being played on a gameboy color.
You see, red and blue were coded specifically to display some nice coloring when played on the super gameboy. A lot of big gameboy releases in the 90's did. But pop red, blue or japanese yellow into a gameboy color and you get disappointment. The hardware bios will detect the game and, treating it like a grayscale game, will assign a 4-color palette to swap out the grayscale. The fact is that GBC and the SGB are just too different when it comes to handling palettes.
Now back in 1999, Nintendo of America realized they had a problem. You see, pokemon yellow was set to release in north america in October and be on every kid's Christmas list. But the gameboy color had already released in north america the previous November! Kids across the western world already got a GBC for last Christmas, and if they didn't they would get one this Christmas to go with with Yellow version. How's it going to look when they pop the newest Pokemon game into their shiny gameboy "color" to see a crappy 4-tone palette? Not good at all.
So the localizers for Yellow had their job cut out for them. What they succeeded in doing was essentially piggy-backing off the game's SGB functions to hack together an ad-hoc method for converting SGB palettes on the fly into something that the GBC can actually recognize. All new palettes had to be made just for the GBC since the SGB palettes look awful and washed out with the GBC's screen and color mixing. Elegant? No. Effecient? No. Works? Yes!
And so it was that if you fire up a north american Yellow cart in a GBC you get the nice coloring that the games were programmed to display on the SGB. Which then lead to my thinking, could Yellow's hacky solution be back-ported into Red and Blue? It's been a tough few months, but I think I've finally succeeded. I know I'm not the first to attempt this. There are scant random postings on old message boards inquiring about this kind of thing, but nothing has ever really come out of it. So I'm the first to really do it as far as I can tell, and as such I wanted to share the code modifications for all to see and use.
Last edited: