Super Mario Land DX ROM Hack Shows What Game Boy Could Have Looked Like

It was about time (Mario Time) that Super Mario Land for the original Game Boy was revisited. The game served as the entry point into the world of portable gaming for millions, and it was an early example of the type of adventure players could expect from a handful of AA batteries. The original Game Boy system itself may have only been able to display four shades of grey, however, that never stopped players of Super Mario Land from imagining what the game would have looked like in stunning color. Now thanks to [toruzz] we no longer have to imagine, because their Super Mario Land DX ROM Hack does just that…and then some.

The Super Mario Land DX ROM hack adheres to the Game Boy Color’s 16-bit color palette, so it actually runs on real hardware. No changes to the gameplay were made and it also runs in the native 10:9 aspect ratio for the Game Boy. According to the patch readme file, it is recommended to use a legally sourced dump of the 1.0 version of Super Mario Land and utilize Lunar IPS to apply the patch. Additionally a CRC check sum is provided to ensure everyone is working from the same starting point.

Super Mario Land was a launch title for the Game Boy in 1989, but there was another handheld game system that released that year as well (the Atari Lynx). The Lynx featured a full color backlit LCD display, so it was not as if handheld game systems of the era were restricted to being monochromatic. Granted the Lynx came with a price tag nearly twice that of the Game Boy, but a transformative ROM hack such as the Super Mario Land DX one can serve almost as an alternate history. An alternate history that we all can experience now be it on a desktop or in true portable form.

To see the Super Mario Land DX ROM Hack in motion, there is the gameplay video from YouTube user Vincent Hernandez below:

Continue reading “Super Mario Land DX ROM Hack Shows What Game Boy Could Have Looked Like”

Circuit-Level Game Boy: Upping Emulation Ante By Simulating Every Cycle

Usually when writing emulation software for a system like the Game Boy, one makes sure to take as many shortcuts as possible in order to reduce the resources required for the emulation. This has however the unfortunate side-effect that it reduces the overall accuracy of the emulation and with it the compatibility with games on the system.

This is the basic reasoning behind projects which seek to abandon simplistic abstractions in favor of cycle-accurate, full compatibility approaches, of which MetroBoy is probably the most extreme one. Instead of abstracting away the hardware, it instead does the emulation at the circuit level. As with such other projects, this means that the emulator requires a lot more CPU cycles to get things just right. On the bright side, one can likely still run this emulator on any modern system.

As the MetroBoy author explains, he implemented code in C++ which allowed him to construct circuits in an HDL-style manner, which should theoretically also allow him to generate a Verilog (or VHDL) softcore out of the project. As a demonstration of implementing HDL in C++ it’s decidedly interesting.

An approach like this is pretty much the exact opposite of a project like the UltraHLE (ultra high-level emulator) Nintendo 64 emulator, which used the knowledge that Nintendo 64 games are written in C as a first step to creating libraries that the code in the Nintendo 64 ROMs would call instead of the native (Nintendo) libraries. This allowed N64 games to directly run on the target system, with the graphic and system calls translated by UltraHLE into native OS calls, using the 3dfx Glide API for accelerated graphics.

While an approach like UltraHLE took allows for the most minimal use of system resources by essentially foregoing emulation completely, for retro systems like the Game Boy where games were implemented in assembly on bare hardware, using this circuit-level emulation ensures that one gets the most accurate match with the original handheld console experience.

As a word of caution to those who are now itching to try out MetroBoy, its Github site notes that it currently lacks support for game saves, uses a mixture of original Game Boy (DMG) and Game Boy Advance SP (AGS) hardware that confuses some games and has rather buggy sound support.

If playing around with software-defined Game Boy circuits isn’t enough and would like to literally look inside a real Game Boy, the X-ray image from the top of the article is something Chris over at Elektronaut pulled off several years ago.

Clock Mod Brings Super Game Boy To Competitive Arena

For one time small window between 1994 and 1998, you could play Game Boy games in color with a Super Game Boy. This was a cartridge that plugged into a Super Nintendo, and using proprietary Lock-On™ technology, you could play Game Boy games on the big screen. Inside the Super Game Boy was the guts of a real Game Boy. This was, and still is, the best way to experience everything from Kirby’s Dream Land or the Pokemon of Kanto.

Unfortunately, the Super Game Boy doesn’t exactly replicate the Game Boy experience. The crystal in the Super Game Boy means that games and sound run between 2 and 4% faster. The Super Game Boy is out for competitive speed running, and if you’re using Little Sound DJ, you’ll be out of tune with the rest of the band. The Super Game Boy doesn’t have link cable support, either.

Now, [qwertymodo] over on Tindie has the solution to the faster Super Game Boy. It’s a clock mod, but it’s not just swapping a crystal. This is a board that solders to existing pads, and still allows you to access the speed up and slow down functions available from the Commander controller from Hori. It’s a slightly impressive bit of PCB art, and certainly something that deserves notice.

This mod fixes the 2-4% speedup of the Super Game Boy, but then there’s still one feature missing: the link cable. Well, hold on to your butts, because there’s a mod for this one too. The Super Game Boy Link Port is a small little breakout board that requires fly wires to the main chip in the Super Game Boy. The installation isn’t quite as clean as the crystal hack, but if you’re fixing the clock, you might as well add the link cable port while you’re in there.

[qwertymodo] has a comparison test of the Super Game Boy running Pokemon Red, and this thing is dead on. It runs at exactly the same speed as an original Game Boy, only in color, on a TV. You can check that out below.

Continue reading “Clock Mod Brings Super Game Boy To Competitive Arena”

It’s (Almost) Two Keytars In One!

All the best retro-1980s chiptune acts should possess a keytar. It’s the Law, or something. [Theremin Hero] has reminded us of this with a new video we’ve shown below featuring an instrument he had a part in creating alongside [Sam Wray] and [Siddharth Vadgama] a few years ago. The Blade is a 3D-printed keytar featuring two Guitar Hero necks and an integrated pair of Game Boys to provide the sound from the authentic silicon.

To describe it in those terms though is to miss a wealth of other components and featured. The keyboard itself is from a Rock Band keytar which feeds MIDI to a Raspberry Pi running PD Extended that handles all the button press mappings. An Arduino Mega performs the same task for the two Guitar Hero necks. Midi from the various sources is processed by an Arduino Boy which then feeds the Game Boys that make the sounds. Oh – and there’s a Leap Motion 3D motion controller in the mix as well, though that doesn’t seem to be used directly in the chiptune synth functionality.

We’ve had a few keytars here over the years, but this one makes us think of the Commodore 64 instrument created by [Jeri Ellsworth].

Continue reading “It’s (Almost) Two Keytars In One!”

A Game Boy Supercomputer for AI Research

Reinforcement learning has been a hot-button area of research into artificial intelligence. This is a method where software agents make decisions and refine these over time based on analyzing resulting outcomes. [Kamil Rocki] had been exploring this field, but needed some more powerful tools. As it turned out, a cluster of emulated Game Boys running at a billion FPS was just the ticket.

The trick to efficient development of reinforcement learning systems is to be able to run things quickly. If it takes an AI one thousand attempts to clear level 1 of Super Mario Bros., you’d better hope you’re not running that in real time. [Kamil] started by coding a Game Boy emulator in C. By then implementing it in Verilog, [Kamil] was able to create a cluster of emulated Game Boys that enabled games to be run at breakneck speed, greatly speeding the training and development process.

[Kamil] goes into detail about how the work came to revolve around the Game Boy platform. After initial work with the Atari 2600, which is somewhat of a defacto standard in RL circles, [Kamil] began to explore further. It was desired to have an environment with a well-documented CPU,  a simple display to cut down on the preprocessing required, and a wide selection of games.

The goal of the project is to allow [Kamil] to explore the transfer of knowledge from one game to another in RL systems. The aim is to determine whether for an AI, skills at Metroid can help in Prince of Persia, for example. This is arguably true for human players, but it remains to be seen if this can be carried over for RL systems.

It’s rather advanced work, on both a hardware emulation level and in terms of AI research. Similar work has been done, training a computer to play Super Mario through monitoring score and world values. We can’t wait to see where this research leads in years to come.

Corn Starch Fixes A Game Boy Screen

Nintendo’s Game Boy was the handheld of the 1990s. Like many of their products, it was famous for its ability to stand up to punishment from angry children and military strikes alike. Its biggest weakness is perhaps its unbacklit LCD screen. Retrogamers and chiptuners alike find themselves modifying and replacing these regularly.

A common problem during these swaps is “Newton rings” – an issue where the polarizer comes into contact with the LCD glass, causing unsightly visual artifacts. Thankfully, there is a simple fix. It’s possible to keep the two separated with the application of microscopic particles, too small to see. [esotericsean] uses cornstarch, while [bogamanz] favors diatomaceous earth. For best results, a makeup brush can be used to apply a fine coating, and compressed air used to clean out the Game Boy and remove any excess.

It’s rare to fix a delicate screen problem with a household staple, but gratifying when it works. The results are hard to see on camera, but many report this fixing the frustrating issue. So, if you’re planning to backlight your Game Boy, keep this in your bag of tricks. It’ll allow you to get the best possible result, and may be useful on other old-school LCDs as well. Video after the break.

Continue reading “Corn Starch Fixes A Game Boy Screen”

Playing Pokemon On A CRT Thanks to A Powerful Microcontroller

Microcontrollers come in a broad swathe of capabilities these days. There are the venerable 8-bit micros that have been around forever and valiantly crunch away, all the way up to modern 32-bit powerhouses with advanced peripherals and huge amounts of RAM and ROM. If you’re blinking a few LEDs or opening a garage door, the former is fine. For what [Jared] had in mind, a little more horsepower was required.

[Jared]’s project started out as an experiment with composite video output on a STM32F446RE microcontroller. Using a 4-bit resistor DAC, the device was able to output NTSC signals, using interrupts and NOPs to handle timing. The hardware worked, and was tested by playing the entirety of Star Wars: A New Hope from an SD card.

Attention then turned to creating a Game Boy emulator for the platform. After many hurdles with various bugs and edge cases, things started working, albeit slowly. The Pokemon game ROM wouldn’t fit in the microcontroller’s limited flash storage, so [Jared] implemented a complicated bank switching scheme. This combined with the limited computational resources meant the game was playable, but limited to just 10 FPS.

Enter the STM32H7. With over double the clock speed and capable of 856 DMIPS versus 225 of the original chip, things were coming together. Pokemon now ran at 60 FPS, and the built-in DAC greatly improved the sound. The DMA subsystem allowed further performance gains, and even running in debug mode, performance far exceeded that of the previous hardware.

With unit prices of most microcontrollers being remarkably low, it goes to show that once you’ve tapped out on performance on one platform, there’s usually a faster option available. It’s possible to emulate the Game Boy on the ESP-32 too, as Sprite_TM showed us in 2016. Video after the break.

[Thanks to Ben for the tip!]

Continue reading “Playing Pokemon On A CRT Thanks to A Powerful Microcontroller”