We’ve all seen Doom played on the Raspberry Pi before… but this isn’t a port of the game. No, this was a school project at the Imperial College of London — writing the game in bare assembly. They wrote it from scratch.
Yep. There’s not even an operating system on the Pi. It’s 9800 lines of bare metal ARM assembly. If that doesn’t hurt your brain we dunno what does!
They are using the official textures from the game, and it’s not quite a perfect replica — but it’s pretty darn close.
Part of the project was to build an emulator to make it easier to test the game, but it didn’t work out the greatest — so most of the actual game development was performed on the actual hardware. Yikes!
Stick around after the break to see Doom in all its former glory. Top notch work guys!
The Intel Edison is out, and that means there’s someone out there trying to get a postage-stamp sized x86 machine running all those classic mid-90s games that just won’t work with modern hardware. The Edison isn’t the only tiny single board computer with an x86 processor out there; the legends told of another, and you can connect a graphics card to this one.
This build uses the 86Duino Zero, a single board computer stuffed into an Arduino form factor with a CPU that’s just about as capable as a Pentium II or III, loaded up with 128 MB of RAM, a PCI-e bus, and USB. It’s been a while since we’ve seen the 86Duino. We first saw it way back at the beginning of 2013, and since then, barring this build, nothing else has come up.
The 86Duino Zero only has a PCI-e x1 connector, but with an x16 adapter, this tiny board can drive an old nVidia GT230. A patch to the Coreboot image and a resistor for the Reset signal to the VGA was required, but other than that, it’s not terribly difficult to run old games on something the size of an Arduino and a significantly larger graphics card.
A few months ago, the Intel Edison launched with the promise of putting a complete x86 system on a board the size of an SD card. This inevitably led to comparisons of other, ARM-based single board computers and the fact that the Edison doesn’t have a video output, Ethernet, or GPIO pins on a 0.100″ grid. Ethernet and easy breakout is another matter entirely but [Lutz] did manage to give the Edison a proper display, allowing him to run Doom at about the same speed as a 486 did back in the day.
The hardware used for the build is an Edison, an Arduino breakout board, Adafruit display, speaker, and PS4 controller. By far the hardest part of this build was writing a display driver for the Edison. The starting point for this was Adafruit’s guide for the display, but the pin mapping of the Edison proved troublesome. Ideally, the display should be sent 16 bits at a time, but only eight bits are exposed on the breakout board. Not that it mattered; the Edison doesn’t have 16 pins in a single 32-bit memory register anyway. The solution of writing eight bits at a time to the display means Doom runs at about 15 frames per second. Not great, but more than enough to be playable.
For sound, [Lutz] used PWM running at 100kHz. It works, and with a tiny speaker it’s good enough. Control is through Bluetooth with a PS4 controller, and the setup worked as it should. The end result is more of a proof of concept, but it’s fairly easy to see how the Edison can be used as a complete system with video, sound, and wireless networking. It’s not great, but if you want high performance, you probably won’t be picking a board the size of an SD card.
This tidy little ARM board is the Arietta G25. It’s based around an AT91SAM9G25 which is an ARM9 chip running at 400MHz. Paired with the DDR2 RAM (in 128 or 256 meg options) to the left, the board runs Linux and runs it well. After the break you can see the obligatory running of Doom. But in this case it doesn’t just run a demo, but is playable from momentary push buttons on a breadboard (props to the Arietta team for using wire wrap for that setup).
See the vertical row of pads between the processor and the SD card slot? That’s a breakout header designed to accept a WiFi module. In at €20-30 based on your RAM choice and just €7 for the WiFi module this board is certainly a contender for any embedded Linux projects. But it does have us wondering, should be thinking of these as ARM boards, or forget the low-level development and just think of them as a Linux machines with plenty of GPIO available?
The 20×2 pin header breaks out a lot of the SAM9’s features. We really like the interactive pinout posted for this device. For instance, there are three sets of USB host lines available. But you’ll want to click on each to see that one set is in use for the SD card, and another is used by the WiFi module. The documentation that has been posted for the Arietta G25 is one of its strongest point. Nice work there!
Last May brought the unastonishing news that companies were taking the Systems on Chip found in $20 wireless routers and making dev boards out of them. The first of these is the VoCore, an Indiegogo campaign for a 360MHz CPU with 8MB of Flash and 32MB or RAM packaged in a square inch PCB for the Internet of Things. Now that the Indiegogo rewards are heading out to workbenches the world over, it was only a matter of time before someone got Doom to run on one of them.
After fixing some design flaws in the first run of VoCores, [Pyrofer] did the usual things you would do with a tiny system running Linux – webcams for streaming video, USB sound cards to play internet radio, and the normal stuff OpenWrt does.
His curiosity satiated, [Pyrofer] turned to more esoteric builds. WIth a color LCD from Sparkfun, he got an NES emulator running. This is all through hardware SPI, mind you. Simple 2D graphics are cool enough, but the standard graphical test for all low powered computers is, of course, Doom.
The game runs, but just barely. Still, [Pyrofer] is happy with the VoCore and with a little more work with the SPI and bringing a framebuffer to his tiny system, he might have a neat portable Doom machine on his hands.
Just before the days where every high school student had a cell phone, everyone in class had a TI graphing calculator. In some ways this was better than a cell phone: If you wanted to play BlockDude instead of doing trig identities, this was much more discrete. The only downside is that the TI calculators can’t easily communicate to each other like cell phones can. [Christopher] has solved this problem with his latest project which provides Wi-Fi functionality to a TI graphing calculator, and has much greater aspirations than helping teenagers waste time in pre-calculus classes.
The boards are based around a Spark Core Wi-Fi development board which is (appropriately) built around a TI CC3000 chip and a STM32F103 microcontroller. The goal of the project is to connect the calculators directly to the Global CALCnet network without needing a separate computer as a go-between. These boards made it easy to get the original Arduino-based code modified and running on the new hardware.
After a TI-BASIC program is loaded on the graphing calculator, it is able to input the credentials for the LAN and access the internet where all kinds of great calculator resources are available through the Global CALCnet. This is a great project to make the math workhorse of the classroom even more useful to students. Or, if you’re bored with trig identities again, you can also run a port of DOOM.
There aren’t too many details available about this hack, but we still thought it was interesting enough to share. YouTube user [Aussie50] seems to have figured out a way to install DOOM on an automated teller machine (ATM). Not only is the system running the software, it also appears that they are using the ATM’s built-in buttons to control the action in-game.
Many ATM’s today are simply computers that run a version of Windows, so one would assume it shouldn’t be too difficult to get an older game like DOOM running on the hardware. Towards the beginning of the video, you can quickly get a glimpse of what appears to be a default Windows XP background screen. You can see later in the video that [Aussie50] drops to what appears to be an MS-DOS command line. It stands to reason then that this particular model of ATM does run on Windows XP, but that [Aussie50] may have had to install MS-DOS emulation software such as DOSBOX as well.
At one point in the video, the camera man mentions they are using an I-PAC2. Some research will show you that this little PCB is designed to do USB keyboard emulation for arcade games. It looks like you can just hook up some simple momentary switches and the I-PAC2 will translate that into USB keyboard commands. It is therefore likely that [Aussie50] has hooked up the ATM’s buttons directly to this I-PAC2 board and bypassed the original button controller circuit altogether.
It is also mentioned in the video that [Aussie50] was able to get the receipt printer working. It would be interesting to somehow incorporate this into the DOOM game. Imagine receiving a receipt with your high score printed on it. This also gets us thinking about other possibilities of gaming on ATM hardware. Can you configure the game to require a deposit before being able to play? Can you configure it to dispense cash if you beat the high score? What if you modified the multiplayer deathmatch mode so all players must pay an entry fee and the winner takes all? What creative ideas can you come up with for gaming on ATM hardware? Continue reading “Playing DOOM on an ATM”→