Late last year, news broke of impossibly rare artifact from the age of the Nintendo Entertainment System. SimCity was the classic simulation game for PC and just about every other console, and it was written for the NES but never released. Now one guy finally got around to digging out his copy, which was dumped at the Portland Retro Gaming Expos and finally put on the Internet. It’s an unfinished game but it’s mostly playable, even if it is a bit more primitive than the PC version.
[Matt] wanted to build his own copy of SimCity for the NES, so that’s what he did. It’s a project that took months of work and a ton of research, but finally there’s a professional-looking cartridge version of SimCity.
With the ROM for SimCity loose on the Internet, that part of the build was relatively easy. You can still get EPROMs or EEPROMs, UV erasers, and a good programmer will run you fifty bucks through the usual vendors. There are even places on the Internet that will split up the emulator-compatible ROM file into two files for the character and program ROM in each NES cartridge. The trick here is finding the right cartridge with the right mapper. It turns out there are only four games that you can simply drop SimCity ROM chips into and expect everything to work. All of these games cost a small fortune, but their Famicom versions are cheap.
After carefully desoldering the Famicom game, soldering in the new chips, and applying a fancy professional label, [Matt] had his cartridge version of SimCity for the NES. It’s for a Famicom, though, but you can get adapters for that. Check out the video below.
The Zelda series of games are known for their exciting gameplay, compelling story, but also their soundtracks. From fast-paced boss battles, to scenes of emotional turmoil, these tunes have been pumped out millions of Nintendo consoles over the years. [Tyler Barnes] has been a fan for a long time, and decided to produce a compilation of some of these tracks – delivering it on cartridge, of course.
The music was created using the Music Macro Language, and encoded into the NSF format ready to play on the Nintendo Entertainment System. [Tyler] has coded a menu system that allows the user to pick which tracks they wish to listen to. There’s some pretty parallax animations as well, along with an easter egg for those who know the games well enough to unlock it.
[Tyler] hopes to burn a few EEPROMs and send out some custom carts, either using donor carts or fresh builds. If you’re a fan of NES music but need your C64 fix as well, there’s a solution for that too. Video after the break.
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.
In the secret Hackaday bunker, we have some emacs users, some vi users, and some people who don’t really care. However, even the staunchest of our emacs supporters had to do a double take at [Vreeze’s] project that creates a GameBoy emulator using the venerable text editor. You can see [Alexei Nunez’s] reaction to the emulator in the video below.
The Eboy uses unicode characters to output the graphics. You can use emacs commands to load ROM images and use your keyboard to control the game.
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.
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.
Handheld consoles have to make a lot of design choices that their TV connected brethren don’t have to worry about. Battery life is important, as is screen visibility, and the games can’t be too bulky or unwieldy if you’re going to be carrying them around all day. [Chris] is no stranger to building handheld versions of home consoles, and took a few of these lessons on board in his latest portable SNES build.
The motherboard was provided by a SNES Jr., a lightweight, compact model released towards the end of the console’s reign. This was small enough that it required no trimming, however [Chris] elected to replace the inefficient 7805 with a more modern switching regulator. The case was 3D printed on a typical FDM setup, while the buttons were produced on a Form 2 for better dimensional accuracy and surface finish.
The real party piece, however, is the use of an SD2SNES flash cart. This allows a huge variety of ROMs to be loaded onto a single SD card, and played on the original console hardware. This is particularly useful in a portable build, as it becomes possible to carry all the games you could want, rather than having to juggle several full-sized SNES cartridges. The SD2SNES is wired in place permanently inside the console, with an impressive number of patch wires between the motherboard and the cartridge PCB. Despite the long lead length, [Chris] reports no issues with the connection.
There are some limitations – the flash cart doesn’t work properly for games using extra chips on the cartridge, like the SuperFX in Star Fox, for example. Despite this, it’s an excellent, high quality build that we’re sure is a lot of fun to play out and about.