Snakes And Ladders: Game Boy Emulator In Python

If a Game Boy was a part of your childhood, you were probably more than once dreaming of spending your entire school day with it. Well, they had to wait a few more years for that, but eventually in 2015, [Asger], [baekalfen], and [troelsy] made that dream reality when they created a Game Boy emulator in Python for a university project. However, it didn’t stop there, and the emulator has since grown into a full-blown open source project, PyBoy, which just reached the version 1.0 release.

Since it started out as an academic project, the three of them had to do their research accordingly, so the background and theory about the Game Boy’s internal functionality and the emulator they wrote is summarized in a report published along with the source code. There is still some work to be done, and sadly there is no sound support implemented yet, but for the most part it’s fully functional and let’s you successfully play your own extracted cartridges, or any ROM file you happen to have in your possession.

Being an emulator, you can also inspect its inner life when run in debug mode, and watch the sprites, tiles, and data as you play, plus do cool things like play the emulation in reverse as shown in the clip below. Even more so, you can just load the instance in your own Python scripts, and start writing your own bots for your games — something’s we’ve seen in action for the NES before. And if you want to dive really deep into the world of the Game Boy, you should definitely watch the 33c3 talk about it.

Continue reading “Snakes And Ladders: Game Boy Emulator In Python”

Commodore Tape Drive Emulator On A Raspberry Pi

We imagine most of the people reading Hackaday have an old Raspberry Pi or two laying around. It’s somewhat less likely you’ve still got an 8-bit Commodore in working condition, but we’d wager there’s more than a few in the audience that can count themselves among both groups. So why not introduce them?

[RhinoDevel] writes in to tell us about CBM Tape Pi , an open source Commodore tape drive emulator for Raspberry Pi that needs only a handful of passive components to get wired up. Even better, the project targets the older Pis that are more likely to be languishing around in the parts bin. In the video after the break, a Commodore PET can be seen happily loading content from the original Raspberry Pi with its quaint little composite video connector.

Without any special software on the Commodore itself, the project allows the user to load and save PRGs on the Pi’s SD card, as well as traverse directories. Don’t expect stellar I/O, as [RhinoDevel] notes that no fast loader is currently implemented. Of course if you’re enough of a devotee to still be poking around a VIC-20 or C64 this far into 21st century, then we imagine you’ve got enough patience to get by.

Continue reading “Commodore Tape Drive Emulator On A Raspberry Pi”

Ambitious LED Cube Provides Endless Video Game Scrolling; Plays Castlevania

LED cubes are all the rage right now, and rightly so given the amount of work that goes into them and the interesting things people find to do with them. Not content to make yet another position-sensitive display or an abstract design, though, [Greig Stewart] opted for something a bit more ambitious: an LED cube with a playable game of Castlevania.

As ambitious projects often do, this one required leveraging the previous art, some of which we’ve featured before. [Greig] pulled inspiration and information from cube builders like [polyfloyd], [Greg Davill], and [kbob] to put the six 64-LED matrix panels to work. Getting the structural elements figured out was an early stumbling block, but [Greig] pulled it off with 3D-printed brackets and a hinge that’s a work of art in itself; the whole thing looks like something the Borg would have built. The Raspberry Pi inside made a Gameboy emulator possible, and his first stab at it was to have six different games running at once, one on each panel. He settled on just one game, the classic side-scroller Castlevania, played on just four of the panels. Some wizardry was required to de-scroll the game so that the character walks around the cube rather than having the background scroll; you can check out the results in the clip below.

Currently, the cube sits on a lazy susan with a small motor controlling the swiveling in response to a foot control. [Greig] wants to put the motor under control of the game so that physical scrolling is synced with gameplay; we heartily endorse that plan and look forward to the results.

Continue reading “Ambitious LED Cube Provides Endless Video Game Scrolling; Plays Castlevania”

That Game Cartridge Isn’t As Straightforward As You’d Think

Classic games consoles played their games from cartridges, plastic bricks that held a PCB with the game code on it ready to be run by the console hardware. You might therefore expect them to be an easy prospect for emulation, given that the code can be extracted from whatever ROM they contain. But as anyone with an interest in the subject will tell you, some cartridges included extra hardware to boost the capabilities of their games, and this makes the job of an emulator significantly more complex.

[Byuu] has penned an article exploring this topic across a variety of consoles, with in-depth analyses of special-case cartridges. We see the obvious examples such as the DSP coprocessors famously used on some SNES games, as well as Nintendo’s Super Game Boy that contained an entire Game Boy on a chip.

But perhaps more interesting are the edge-case cartridges which didn’t contain special hardware. Capcom’s Rockman X had a copy protection feature that sabotaged the game if it detected RAM at a frequently used save game address emulated by copiers. Unfortunately this could also be triggered accidentally, so every one of the first generation Rockman X cartridges had a manually attached bodge wire that a faithful emulator must replicate. There is also the case of the Sega Genesis F22 Interceptor, which contained an 8-bit ROM where most cartridges for this 68000-powered platform had a 16-bit part. Simple attempts to copy this cartridge result in the upper 8 bits having random values due to the floating data lines, which yet again an emulator must handle correctly.

It’s a subject with a variety as huge as the number of console developers and their games, and a field in which new quirks are constantly being unearthed. While most of us don’t spend our time peering into dusty cartridges, we’re grateful for this insight into that world.

We’ve visited the world of emulators a few times before, such as when we looked at combatting in-game lag.

Yo Dawg, I Heard You Like FPGAs

When the only tool you have is a hammer, all problems look like nails. And if your goal is to emulate the behavior of an FPGA but your only tools are FPGAs, then your nail-and-hammer issue starts getting a little bit interesting. That’s at least what a group of students at Cornell recently found when learning about the Xilinx FPGA used by a researcher in the 1990s by programming its functionality into another FPGA.

Using outdated hardware to recreate a technical paper from decades ago might be possible, but an easier solution was simply to emulate the Xilinx in a more modern FPGA, the Cyclone V FPGA from Terasic. This allows much easier manipulation of I/O as well as reducing the hassle required to reprogram the device. Once all of that was set up, it was much simpler to perform the desired task originally set up in that 90s paper: using evolutionary algorithms to discriminate between different inputs.

While we will leave the investigation into the algorithms and the I/O used in this project as an academic exercise for the reader, this does serve as a good reminder that we don’t always have to have the exact hardware on hand to get the job done. Old computers can be duplicated on less expensive, more modern equipment, and of course video games from days of yore are a snap to play on other hardware now too.

Thanks to [Bruce Land] for the tip!

Hackaday Podcast 017: Are Cheap Microcontrollers Worth It? Android On Your Bike. Plus Food Printers And Coffee Bots

Join Editors Mike Szczys and Elliot Williams as they recount a week of fascinating hacks. We take a good look at the PMS150C, a microcontroller that literally costs pennies but can only be flashed once. SNES emulators have a new trick up their sleeves to make low-def a lot less low, and you retro enthusiasts will either hate or love the NES zapper chandelier. Elliot’s enamored by a bike computer running Android core, and both Mike and Elliot delve into the food hacking scene, be it meat, chocolate, coffee, or of course frosting!

Take a look at the links below if you want to follow along, and as always, tell us what you think about this episode in the comments!

Take a look at the links below if you want to follow along, and as always, tell us what you think about this episode in the comments!

Direct download (60 MB or so.)

Continue reading “Hackaday Podcast 017: Are Cheap Microcontrollers Worth It? Android On Your Bike. Plus Food Printers And Coffee Bots”

ESP8266 Gets Its Game On With Open Source Engine

This is likely not to come as much of a shock to you, but the ESP8266 is pretty popular. At this point, we’re more surprised when a project that hits the tip lineĀ doesn’t utilize this incredibly cheap WiFi-enabled microcontroller. If you’re making a gadget that needs to connect to the Internet, there’s a good chance some member of the ESP family is going to be a good choice. But is it a one-trick MCU?

ESP Little Game Engine Logo

Well, judging by software frameworks like the “Little Game Engine” created by [Igor], it looks like the ESP is expanding its reach into offline projects as well. While it might not turn the ESP8266 into a next-gen gaming powerhouse, we’ve got to admit that the demos shown off so far are pretty impressive. When paired with a couple of buttons and a TFT display such as the ILI9341, the ESP could make for a particularly pocket-friendly game system.

The game engine that [Igor] has developed provides the programmer with a virtual screen resolution of 128×128, a background layer, and 32 sprites which offer built-in tricks like collision detection and rotation. All while running at a respectable 20 frames per second. This environment is ideal for the sort of 2D scrolling games that dominated the 8 and 16-bit era of gaming, and as seen in the video after the break, it can even pull off a fairly decent clone of “Flappy Bird”.

In addition, [Igor] created an online emulator and compiler which allows you to develop games using his engine right in your web browser. You can load up a selection of example programs and execute them to see what the engine is capable of, then try your hand at developing your own game before ever having to put the hardware together. Incidentally, the performance of this online development environment is fantastic; with even the fairly complex “Flappy Bird” example code compiling and starting in the emulator nearly instantaneously.

This isn’t the first handheld game we’ve seen powered by the ESP8266, but it would be fair to say this one is a generational leap over its predecessors. Of course, if you really want to start throwing around some pixels, you might want to make the leap to the ESP32; which is theĀ heart of the incredibly awesome (and tiny) PocketSprite.

Continue reading “ESP8266 Gets Its Game On With Open Source Engine”