GameBoy Color: Fix it Felix JR.

Fix It Felix JR GBC

While developing my Worms World Party TI-89 remake, I realized that after 18 years of development experience that I wasn’t as intimidated by the C language as much as I previously thought.

I decided to see what else I could develop with C and got side tracked from the Worms project to make GameBoy Color games! That’s right – I was able to write C code and compile a GBC ROM (GameBoy Color ROM). It really is magical – I can write some C code in a file and compile it to a ROM that will work in a Nintendo GameBoy Color emulator. More than that, I can copy the rom to a micro SD card and pop it in my GBC  Everdrive cartridge and play my game on a REAL GameBoy color!

For those that don’t know – Everdrive is a legally gray-area hardware manufacturer that makes cartridges for popular retro systems like NES, SNES, Sega Genesis, GameBoy Color (of course) as well as more. You can copy ROM dumps from real system cartridges to an SD / Micro SD card and play it on a real system! Of course most people probably use these to play pirated game ROM’s, but developers like me can use an Everdrive cartridge as a makeshift dev system. By compiling my C code to a GBC Rom, I can test and play it on real hardware!

In 2012 Disney released the film, Wreck It Ralph, from their Pixar based sister team. The plot features a fictional video game villain, Wreck it Ralph (or just Ralph), who envies game heroes and wants to break his typecast mold and finally earn a medal (achievement) like the good-guys. Ralph is analog to Donkey Kong in the classic Nintendo arcade game of the same name.

To promote the movie, Disney contracted a video game development company to make a modern game in a similar vein to the 1980’s classic Donkey Kong game. The result was Fix It Felix JR. The “JR.” suffix was deliberately borrowed from the Nintendo Donkey Kong sequel, Donkey Kong JR. Disney manufactured a small run of pseudo-retro arcade cabinets with PC-hardware to showcase their custom pseudo-retro game. The arcade cabinets were displayed at Disney Land and Disney World, but also some cabinets were sent to popular arcades as well as Movie Theatre lobby’s. In addition to the arcade game, a Flash version was commissioned (and programmed from scratch) for the Disney web-game portal.

Shown below, you can see that the Fix It Felix JR. arcade cabinet was clearly inspired by the 1980’s Nintendo Donkey Kong cabinet:

Image result for fix it felix jr arcade donkey kong

Even the hardware was artificially aged with artistic skill – each Fix It Felix JR. cabinet was dirtied up with custom surface chips, dings and dents, as well as unique spills and other surface imperfections. Some suspect that original Nintendo cabinets were purchased and repurposed / rethemed, but I believe they were custom made – no classic hardware was harmed. That aside, I’ve personally played two real Fix it Felix JR’s cabinets, one in an Northern California Arcade, and another in a popular NYC Arcade Bar, Barcade. The California machine disappointingly used a flat screen while the NYC Bar had a true CRT in their machine. That’s cool, because CRT’s are no-longer manufactured and becoming increasingly rare.

Luckily, after some research, I was able to find a compiled executable (Windows *.exe) of the official arcade game – Disney used modern Windows machines for their Arcade hardware, so I was able to play the real-deal without a MAME emulator.

Since the GameBoy Color has an official Nintendo Donkey Kong port, I thought it would be fitting to port (well, clone) Fix It Felix JR. to the GBC. FIFJ was inspired by Nintendo / DK, so it would feel at home on one of Nintendo’s iconic platforms.

Another homebrew coder already made an excellent port of Fix It Felix JR. for the Sega Genesis, and even released a physical cartridge version on Amazon! The developer is a Sega savant of sorts, and did an amazing job, but I feel like a homebrew port would be more at home on a Nintendo system.

I decided that my first GameBoy Color project would be a clone of Fix It Felix JR. The scope was small: since FIFJ was based on an 80’s arcade game, the mechanics weren’t too complicated and the graphics were limited enough. That said, the modern pseudo-retro game took liberties that would not be possible in the 80’s, but I was able to adapt them well enough to the system. The GBC has some sprite and tile limitations. That is, it can support a fixed number of moving graphics that are 8×8 tiles, and the background was a grid of 8×8 tiles. The sprites (moving graphics) and background tiles could only have a handful of colors, stored in a palette – and there was also a fixed number of palettes at any one time. So, you must design a limited number of palettes with a few colors, and then make all the tiles and moving graphics using only those palettes. It’s hard. Especially since many palettes will have almost identical color sets, so really you don’t have that many.

Further, the GBC was originally designed to be programmed in Assembly. The GameBoy original (DMG) and the GameBoy Color (CBG) both use a customized version of the Z80 processor. The instruction set is compatible with the Z80 proper, but Nintendo added some custom instructions specialized for game dev. While I understand ASM in principal, I’ve never written a full program in Assembly. Luckily I found a C compiler for GBC, but it’s far from perfect. Compiling C to such a limited hardware set with limited registers is no easy task. I try to keep all my variables within the 8 bit limitations. And of course there is processing overhead running a compiled language VS. writing ASM from scratch.

That said, I was able to kick ass and get pretty far. I’m still not done, but someday I want to follow up this post with a finished version of the game. I found a manufacturer on Alibaba that can produce small runs of custom GBC cartridges – so I would like to make limited release. Below you can see progress of my 100% scratch written Fix It Felix JR. port to GBC, as well as the game running on real hardware! Stay tuned!

 

 

July 19, 2018 at 8:13 am | Code Projects

 

Add Comment

* Required information
(never displayed)
 
Bold Italic Underline Strike Superscript Subscript Code PHP Quote Line Bullet Numeric Link Email Image Video
 
Smile Sad Huh Laugh Mad Tongue Crying Grin Wink Scared Cool Sleep Blush Unsure Shocked
 
1000
 
Notify me of new comments via email.
 
 
Powered by Commentics

Comments

No comments yet.
© Greg Miller, 2009-2018
2fc29791367c6a4ba13727b560c2f2bd7c5945e536a239782d