If there’s one thing tiny Linux Systems on a Chip are good for, it’s emulation. There’s nothing like pulling out an emulation console on the bus for a quick game of old-school NES Tetris, or beating the next level in Super Mario World. This is the smallest emulation console ever. It’ll fit in your pocket, and it has a bright, vibrant screen. It doesn’t get better than this.
This project is an improvement on two projects, both of which are some of the top projects on hackaday.io, the best place on the Internet for hacks and builds. The Keymu is (or was, at the time) the smallest emulation console ever, built as a miniaturized version of the Game Boy Advance SP in a 3D printed case and powered by the Intel Edison. The Edison doesn’t exist anymore, so after that development moved over to the Funkey Zero, a tiny console built around the AllWinner V3s chip and a 240×240 display. Both of these are tiny, tiny consoles, but as silicon gets better there’s always better options, so it’s back to the drawing board.
The design of the Funkey Project is again built on the AllWinner V3S SoC with 64MB of DDR2 DRAM. There’s a 1.5″ display with 240×240 resolution, and of course this retro emulation console retains the classic and very useful clamshell form factor of the famous Game Boy Advance SP.
Already, this project is in the works and it’s shaping up to be one of the most popular projects on hackaday.io ever. Everyone wants an emulation console, and this is the smallest and tiniest one yet. Whether or not this project can carry through to production is another matter entirely, but we’re eager to find out.
The Digital Equipment Corp. PDP-11/70 is a masterpiece of Cold War-era industrial design. This microcomputer was the size of one or two modern server racks depending on configuration, and the front panel, loaded up with blinkenlights, was clad in a beautiful rose and magenta color scheme. The switches — the ones you used to toggle bits in memory — were actually custom designed covers made to match the shape of the completely unnecessary bezel. The aesthetic of the 11/70 is the intersection of baroque and modernism on the design Venn diagram.
[Oscar Vermeulen] built a miniature version of the PDP-11/70 that houses a Raspberry Pi, and [rricharz] has been hard at work bringing an original copy of BSD to this system. The first great project to come out of this effort? It’s a weather station, and it’s exactly as cool as you think it is.
A bit of ground work went into this build, including getting a historical Unix system up and running, in this case 2.11 BSD. Armed with a Pi and the PiDP-11/70 front panel, [rricharz] had a complete BSD system up and running, and with cool-retro-term, the interface looked the part. Doing something useful was another question entirely, but the Pi in the PiDP had some GPIOs free, so this ancient machine got an I2C temperature and pressure sensor.
The completed build is basically just a breadboard, a tiny diagnostic OLED, and a python script that grabs the data and sends it over to the sim. This is pressure and temperature data shoved into an emulation of a Tektronix 4010 terminal. It’s marginally useful work done by an ancient BSD system wrapped in an emulation on a Raspberry Pi. It doesn’t get better than that.
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”
If you’ve ever wanted to sit at the console of the machine that started the revolution in interactive computing, your options are extremely limited. Of the 53 PDP-1 machines that Digital Equipment Corporation made, only three are known to still exist, and just one machine is still in working order at the Computer History Museum. So a rousing game of Spacewar! on the original hardware is probably not something to put on your bucket list.
But thanks to [Hrvoje], there’s now an FPGA emulation of the PDP-1 that lets you play the granddaddy of all video games without breaking into the CHM. The project was started simply to give [Hrvoje] a sandbox for learning FPGAs and Verilog, but apparently went much further than that. The emulation features the complete PDP-1 instruction set, 4kB of core memory, and representations of the original paper tape reader, teletype, operator’s console, and the classic Type 30 CRT. All the hardware is displayed on a standard HDMI monitor, but it’s the CRT implementation that really sells this. The original Type 30 monitor used a CRT from a radar set, and had long-persistence phosphors that gave the display a very distinctive look. [Hrvoje] replicated that by storing each pixel as three values (X, Y, and brightness) in a circle of four chained shift registers. As the pixels move through the shift registers, the brightness value is decreased so it slowly fades. [Hrvoje] thinks it doesn’t look quite right, but we’ll respectfully disagree on that point.
We’ve argued before that the PDP-1 is the machine that started hacker culture, and we think this project is a fitting tribute to the machine as we enter the year in which it will turn sixty. Having the chance to play with it through this emulation is just icing on its birthday cake.
Continue reading “FPGA Emulates a PDP-1, Breathes New Life Into Classic Video Game”
With surface-mount technology pushing the size of components ever smaller, even the most eagle-eyed among us needs some kind of optical assistance to do PCB work. Lots of microscopes have digital cameras too, which can be a big help – unless the camera fights you.
Faced with a camera whose idea of autofocus targets on didn’t quite coincide with his, [Scott M. Baker] took matters into his own hands – foot, actually – by replacing mouse inputs to the camera with an outboard controller. His particular camera’s autofocus can be turned off, but only via mouse clicks on the camera’s GUI. That’s disruptive while soldering, so [Scott] used an Arduino Pro Micro and a small keypad to mimic the mouse movements needed to control the camera.
At the press of a key, the Arduino forces the mouse cursor up to the top left corner of the screen, pulls down the camera menu, and steps down the proper distance to toggle autofocus. The controller can also run the manual focus in and out or to take a screenshot. There’s even a footswitch that forces the camera to refocus if the field of view changes. It looks really handy, and as usual [Scott] provides a great walkthrough in the video below.
Like it or not, if shrinking technology doesn’t force you into the microscope market, entropy will. If you’re looking for a buyer’s guide to microscopes, you could do worse than [Shahriar]’s roundup of digital USB scopes. Or perhaps you’d prefer to dumpster dive for yours.
Continue reading “Arduino Provides Hands-Free Focus for Digital Inspection Scope”
We love seeing hardware and software from bygone eras getting a new lease on life through modern hacks, as longtime readers can surely attest to. Why leave this stuff to rot in a closet somewhere when it can be pushed into service today? Granted it might not always be the most efficient way to accomplish a task in the 21st century, but at least you’ll net some precious Internet Points for originality.
As a perfect example, take a look at this project which lets you read Slack messages through a Super Nintendo game. If your first thought was that such a thing would involve an unreasonable amount of effort and hoop jumping…then you would be correct. [Bertrand Fan] really had to think outside the box to make this one happen, and even admits a bit of imagination is required on the part of the end-user to use it. But it’s undeniably an original approach, so we hereby bestow the customary Internet Points unto him.
So how does this work, and where do the satellites come in? The key is in a fairly obscure Japanese SNES peripheral called the Satellaview, one of Nintendo’s early attempts at creating an online content delivery system for their consoles. Games designed with Satellaview support would be able to pull down new content from regular satellite broadcasts, not too bad for 1995. This means that if you have the hardware, and happen to own a satellite, you can push your own content into an unmodified SNES. No problem, right?
Alright, [Bertrand] didn’t really use a Satellaview modem plugged into an actual SNES. Plus we’re fairly sure he doesn’t have his own satellite network to broadcast Slack messages with anyway. But it turns out some SNES emulators have support for a virtual Satellaview modem, and there’s even software out there that will let you create new content “downloads” for the system’s included game: BS-X: The Story of The Town Whose Name Was Stolen. All he had to do was connect the dots.
[Bertrand] started by stripping the user interface out of SatellaWave, an open source tool for creating Satellaview content, so that it only need to be provided with an XML file of the content to be “downloaded” by the virtual satellite modem. Using the Slack API, he then came up with way to pull the last 10 messages from a server and push them into his modified version of SatellaWave. Each time somebody posts a new message his software kicks in to produce a new satellite download which automatically gets picked up by the SNES emulator and pops up in the game.
If this is still too practical for you, you can always go all in and run Slack on your Commodore 64.
Continue reading “Slack on the SNES via Satellite”
The NES was one of the flagship consoles of the glorious era that was the 1980s. Many of the most popular games on the platform involved some sort of adventure through scrolling screens — Metroid, Super Mario, and Zelda all used this common technique. For many games, keeping track of the map was a huge chore and meant mapping by hand on graph paper or using the screenshots published in Nintendo Power magazine. These day’s there’s a better way. [Daniel] set out to automatically map these huge two-dimensional worlds, developing software he calls WideNES to do it.
WideNES is an add-on to [Daniel]’s own NES emulator, ANESE. As part of the emulator, WideNES can easily read the various registers of the NES’s Picture Processing Unit, or PPU. The registers of the PPU are used to control the display of the background and sprite layers of NES graphics, and by monitoring these, it is possible to detect and map out the display of levels in various NES games.
It’s an interesting piece of software that relies on a thorough understanding of the NES display hardware, as well as the implementation of some neat tricks to deal with edge cases such as vertical scrolling in The Legend of Zelda or room changes in games like Castlevania — the use of perceptual hashing is particularly genius. There’s source and more available on the project page, including a GitHub link, if you’re interested in getting down to brass tacks.
We’re impressed by the manner in which WideNES is able to so neatly map out these games of yesteryear, and can’t wait to see where the project goes next. [Daniel] notes that it should be possible to integrate into more popular emulators without too much trouble. If that’s not enough, check out this reverse-emulation Nintendo hack.
[Thanks to Michael for the tip!]