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”
It’s that time of year again, when fall is quickly ushered out to make room for all things holiday-related. For many of us, this means going on trips to visit relatives, which, depending on the relatives, can mean soul-crushing boredom. [Andy] has fun relatives who frequent the casino tables, and they inspired him to brush up on his blackjack game.
Some people would just find a virtual blackjack table or bust out an actual deck of cards to practice, but this is Hackaday. [Andy] busted out his PyPortal and tried his hand at making a blackjack game. The PyPortal is an Adafruit IoT box that makes it easy to scrape and display all kinds of JSON goodness from around the web, like NASA’s image of the day. GUI building is already baked in, so he just needed some oome open source playing card images and he was off.
The real gamble here might be the code he wrote; at 500+ lines, [Andy]’s probably pushing his luck with the PyPortal. But you know what they say — you can’t win if you don’t play. And if you want to improve your odds of winning, teach a robot to count cards for you.
Thanks for the tip, [foamyguy].
Graphics accelerators move operations to hardware, where they can be executed much faster. This is what allows your Raspberry Pi to display high definition video decently. [Andy]’s latest build is a 2D sprite engine, featuring hardware accelerated graphics on an FPGA.
In the simplest mode, the sprite engine just passes commands through to the LCD. This allows for basic control. The fun part sprite mode, which allows for sprites to be loaded onto the FPGA. At that point, you can show, hide, and move the sprite. By overlapping many sprites, you something like the demo shown above.
The FPGA is from Xilinx, and uses their Block RAM IP to store the state of the sprites. The actual sprite data is contained on a 128 Mb external flash chip, since they require significant space.
The game logic runs on a STM32 Cortex M4 microcontroller which communicates with the FPGA and orders the sprites around. The FPGA then deals with generating frames and sending them to the LCD screen, freeing up the microcontroller.
If you’re wondering about the LCD itself, it’s 3.2″, 640 x 360, and taken from a Ericsson U5 Vivaz cellphone. [Andy] has a detailed writeup on reverse engineering it. After the break, he gives us a video overview of the whole system.
Continue reading “Sprite Graphics Accelerator On An FPGA”
Spinning DNA animation using sprites
[James Bowman] shows a way to use sprites to simulate parts of DNA moving in 3 dimensional space. The animations are driven by an Arduino board and Maple board, which allows a comparison of the processing differences between the two. [Thanks Andrew]
This Pong game is so small (translated), you’ll be fighting over who gets a closer view of the screen.
More CNC halftone pieces
[Christian] made a bunch of halftone pictures with a CNC mill. He took the concept from [Metalfusion’s] halftone projects and ran with it. He even posted some video of the machining process (turn down your sound before viewing this one).
Most useless machine
[Jumbleview’s] take on the most useless machine makes the entire lid shut off this rocker switch, instead of using a separate arm for the task.
[Noel] is using a couple of 7400 chips in an unorthodox way to form a full-wave rectifier. They’re not powered, but instead used for the internal diodes. It’s his entry in the 7400 contest.