Reverse-Engineering a Game Boy Clone’s Boot ROM

[nitro2k01] got his hands on a Game Fighter, a clone of the original Game Boy. While there’s a ton of information about the boot ROM and operation of the original Game Boy, not much is known about these clones. [nitro2k01] wanted to learn more, so he used a clock-glitching technique to dump the device’s ROM and made some interesting discoveries about its copyright protection and boot process along the way.

Reading the contents of the Game Boy ROM is a bit challenging. The ROM is readable while booting, but afterwards the address space of the ROM is remapped for interrupt vectors and other uses. There are a couple of methods to get around this, but the simplest method involves glitching the crystal by grounding one of its leads. This causes the CPU to jump to random locations in memory. Eventually the CPU will jump to a location where the boot ROM is accessible (if you’re lucky!).

Although [nitro2k01]’s clone can run the same games as the Game Boy, it has a different boot ROM and also has some significant hardware differences. [nitro2k01] managed to use a modified version of the crystal-grounding technique to glitch his clock and dump the clone’s boot ROM. He found that the clone uses an unusual variation on the Game Boy’s copyright-checking technique, along with some other oddities. [nitro2k01] also posted a disassembly of the boot ROM, which he explains in detail.

Thanks for the tip, [Ove].

ArTICam Interfaces Game Boy Camera with TI Calculators

[Christopher Mitchell] has given Texas Instruments calculators the ability to capture images through a Game Boy Camera with ArTICam. First introduced in 1998, The Game Boy Camera was one of the first low-cost digital cameras available to consumers. Since then it has found its way into quite a few projects, including this early Atmel AT90 based hack, and this Morse code transceiver.

TI calculators don’t include a Game Boy cartridge slot, so [Christopher] used an Arduino Uno to interface the two. He built upon the Arduino-TI Calculator Linking (ArTICL) Library  to create ArTICam. Getting the Arduino to talk with the Game Boy Camera’s M64282FP image sensor turned out to be easy, as there already are code examples available. The interface between the camera sensor and the Arduino is simple enough. 6 digital lines for an oddball serial interface, one analog sense line, power and ground. [Christopher] used a shield to solder everything up, but says you can easily get away with wiring directly the Arduino Uno’s I/O pins. The system is compatible with the TI-83 Plus and TI-84 Plus family of calculators. Grabbing an image is as simple as calling  GetCalc(Pic1) from your calculator program.

So, If you have an old calculator lying around, give it a try to enjoy some 128×123-pixel grayscale goodness!

Original Gameboy Gets Stuffed Full Of Cool Parts

Raspberry Pi Gameboy

One day at Good Will, [microbyter] came across an original Gameboy for $5. Who reading this post wouldn’t jump on a deal like that? [microbyter] was a little disappointed when he got home and found out that this retro portable did not work. He tried to revive it but it was a lost cause. To turn lemons into lemonade, the Gameboy was gutted and rebuilt into a pretty amazing project.

Looking at the modified and unmodified units, it is extremely obvious that there is a new LCD screen. It measures 3.5″ on the diagonal and is way larger than the 2.6″ of the original screen. Plus, it can display colors unlike the monochrome original. Flipping the unit over will show a couple of buttons have been added to the battery compartment door to act as shoulder buttons.

The brains of the project is a Raspberry Pi running Retropie video game system emulation software which will emulate a bunch of consoles, including the original Gameboy. The video is sent to the LCD screen via the composite video output. The Pi’s headphone jack is connected to a small audio amplifier that powers the original speaker that still resides in the stock location. Connecting the controller buttons got a little more complicated since the original board was removed. Luckily there is a replacement board available for just this type of project that bolts into the stock location, allows the use of the original iconic buttons and has easily accessible solder points. This board is wired up to the Pi’s GPIO pins.

Continue reading “Original Gameboy Gets Stuffed Full Of Cool Parts”

Pokemon Artificial Intelligence Is Smarter Than You

Who out there hasn’t angrily thrown a game controller across the room after continually getting killed by some stupid game-controlled villain? That is such a bummer! You probably wished there was some way to ‘just get past that point’. To take a step in that direction, [Ben] created an Artificial Intelligence program that will win at Pokemon Blue for Game Boy Advance.

The game is run in a Game Boy Advance emulator known as Visual Boy Tracer, which itself is a modified version of the most common GBA emulator, Visual Boy Advance. What sets Visual Boy Advance apart from the rest is that it has a memory dump feature which allows the user to send both the RAM and the ROM out of the emulator. The RAM holds all values currently needed by the emulator, this includes everything from text arrow flash times to details about currently battling Pokemon to the players position in the currently loaded map. The memory dump feature is key to allow the AI to understand what is happening in the game.

Continue reading “Pokemon Artificial Intelligence Is Smarter Than You”

Twitch Plays Pokémon: Better than Prime Time TV

Twitch_plays_pokemon_animated

What do you get when you put together a classic Game Boy game, some glue code, a streaming video website and 1 internet? Twitch Plays Pokémon (TPP), a social experiment where thousands of people “cooperatively” play a game of Pokémon Red/Blue. TPP was created by an anonymous Australian programmer who enjoyed the SaltyBet interactive channel on twitch.tv. Rather than use SaltyBet’s method of having users interact via an external website, [TPP’s creator] decided to use twitch’s own IRC based chat servers. Starting with VisualBoyAdvance, a popular C/C++ based Game Boy emulator, [TPP’s creator] began building the system. [TPP’s creator] went with python to create the web-to-emulator interface. A JavaScript app displays the live moves on the right side of the screen.

Gameplay is simple – users type their command (Up, Down, A, B) into their IRC or web client. In the original configuration, commands were processed in the order they arrived at the game. The system worked until the whole thing went viral. With thousands of people entering commands at any given time, poor “RED” would often be found spinning in place, or doing other odd things. The effect is so compelling that even [Randal Munroe] has written an XKCD entry about it. To help the players get through some of the tricky parts of the game, [TPP’s creator] added a game mode selection. Users can play in “Democracy” where the system takes votes for several seconds, then issues the highest voted command. The original anything goes game mode was renamed “Anarchy”. Switching from one mode to the other is determined by the users themselves in real-time.

[Devon], one of our readers, has been busy as well. He’s written up a tutorial on turning a Raspberry Pi into a dedicated TPP viewer. We’d love to see a TPP battlestation – a Game Boy modified to display TPP, as well as send commands to the IRC servers when buttons are pressed. Who will be the first reader to knock that hack out?

The BitBox Console Gets Upgraded

BitBox Rev2

The Bitbox, an open source game console, has received a number of updates in the past couple of months. Last time we covered this DIY console, [Makapuf] had just managed to get the first revision to run a simple game. The second revision will increase the colors to 32k, add another channel of sound for stereo, switch controllers from PS2 to USB, and add support for Olimex’s UEXT expansion devices.

While the hardware upgrades are impressive, there’s been a lot of work on the Bitbox software as well. A new game demo called Fire was created as a set of tutorials to help people start developing for the console. There’s also a BitBoy, a GameBoy emulator for the Bitbox. BitBoy is a ported version of gnuboy for the ARM Cortex-M4 processor that powers the Bitbox. It successfully emulates a number of commercial GameBoy ROMs.

We’re looking forward to seeing what’s next for the Bitbox. After the break, check out a video of BitBoy running on the Bitbox.

Continue reading “The BitBox Console Gets Upgraded”

The PiBoy

piboy

What do you do with a broken Gameboy, a 3″ LCD, a pile of wires, a USB SNES controller, a 32gb SD card, and a Raspberry Pi? You make a pocket emulator, of course!

[Anton] decided he wanted to build an emulator awhile ago. He had a few specific goals in mind: it had to be hand-held, portable, child safe, and usable without a keyboard. He started by stripping the broken Gameboy down to its external shell, then removing all of the internal plastic mounting features with a hot soldering iron. Next was the challenge of fitting everything into the case and powering it. Because his 3″ LCD runs off 12V, [Anton] needed a way to get 5V to the Pi. Lucky for him, it turned out that his LCD’s controller board had a 5V test point/expansion pin-out!

From there it was just a matter of reusing the original Gameboy’s speaker, closing up the case, and loading the emulator! As always, there’s a demo video after the break.

Continue reading “The PiBoy”