It is amazing how the game Doom has been ported to so many things. Enter one more port, where the hardware in question is a Honeywell Prestige thermostat.
In his video, [cz7asm] shows us the game running quite nicely on the 480 x 272 LCD with an NES controller plugged into the USB port originally intended for software updates. The thermostat runs on a STM32F429 which is an ARM9 processor that has the juice to pull it off. The Doom engine being used is based on Chocolate Doom, an open source port of the game, and the binaries can be downloaded for Windows and Mac. The source code is also available as a download for your tinkering pleasure. This project by [cz7asm] is extended from a code on GitHub by [floppes] that was meant for the STM32F429IDISCOVERY evaluation board.
The author shares his code for the STM32F4 on Dropbox as a zip and in order to compile it, the Atmel BSP for GNU GCC is used. The video below demonstrates the hack in action and, though there is no sound yet, the satisfaction that comes from such modifications is its own reward.
What else can you run Doom on? How about a calculator or maybe the Intel Edison or even an ATM machine! If there is a processor with enough muscle power, hackers will find a way to run Doom on it. So have you seen any alien computers lately that you think can be hacked?
:). Getting doom to run on new hardware has essentially become the 1337 version of the blinky!!!! Good job!
Honey, it’s 3am what are you doing standing in the hallway playing with the thermostat?
It was cold and when I came to turn up the temp it asked me if I wanted to play a game of thermo nuclear war….
$500 for a Doom console.
Looks like a bargain.
I’m always confused by ARM numbering, but the STM32F4 is definitely an ARM Cortex-M4, so that’s an ARMv7E, not an ARM9; I think ARM9 would be an older architecture, but again, I’m confused.
It’s a obviously a mistake in the text. The device is based on ARM9 cpu, which is based on armv5 architecture. The MPU is SAM9G35 from Atmel (hence the mentioned Atmel BSP).
Put it right alongside the mistake of calling that a NES controller..
I think the biggest issue with the ARM numbering is that there is so much of it! (and sadly all to easy to be confused)
So, the STM32F contains a Cortex-M4 which is a specific implementation of the ARM Architecture v7E-M (normally just referred to as v7-M – which is a branch of the v7 architecure, with bits specific to Microcontroller devices, compared to the V7-A branch, found in the Cortex-A9, which is Application tuned).
Now, the ARM9 series pre-dates that lot by quite a margin and, depending upon which specific ARM9 core it is, could implement anything from ARMv4T (Thumb) through to ARMv5TEJ (Thumb, DSP and Jazelle DBX).
And all of this becomes even more embroiled when customers of ARM can license at a multitude of different levels and release items with similar numbering such as Apple releasing a ‘M7’ chip which is entirely unrelated to the ARM Cortex-M7 (the former said to contain a Cortex-M3 but both being v7-M architecture). Or take the Apply ‘A9’ chip which contains their own implementation of a V8-A core and so very removed from the ARM Cortex-A9 (which is v7-A) that had appeared within the Apple ‘A5’ (again not to be confused with the ARM Cortex-A5 which happens to also be a v7-A core).
Simple, right?
SNES controller, not NES.
Strange to see what’s essentially a PSP screen in a thermostat. Then again, it’s been 12 years…
Does it make the room warmer when you hit the hell levels?
This is proof positive that our everyday electronics are overpowered.
You are right to an extent but a piece of silicon costs the same anyway so that’s why chips can pack a punch and still be kind of cheap.
Better over than under. One can dial back the former, the latter is harder to over, in the field
“Why is the thermostat water cooled???”
If it gets too hot it will just turn the A/C on.
not always. At least for IoT-Nonsense a µC that has just the power needed is good, because this way there is less power for DDoS or stuff like this if the device gets hacked. (Of course no internet would even be better…)
Look at what happened with routers not so many years ago-
Manufacturers realized they could build a UI that made the device look super advanced, but it ran on a chip that couldn’t handle the heat from real-world load.
Then again that was also to limit how well 3rd Party firmwares would run.
You say that like it’s a bad thing!
Probably because it is. As opposed to “appropriate power for the job”, all the alternative of “as much power as we can buy and still fit in the budget” does is encourage lazy implementation for which raw power is expected to compensate, which in turn more often than not fosters buggy, hackish solutions lacking any robustness and potentially squandering performance at rates that can end up placing the “brute force beast” below its “modest but properly taken advantage of” competition (if you need examples of wasted oomph, just pick an Arduino. Any Arduino…).
Honeywell Brno . . . good job PB :)
nice!
8MB ram in a thermostat HMI? WTF honeywell, does it have buildin camera as well?
Because dram is cheaper than sram, and bigger, so why not?
The Honeywell thermostat has an Atmel SAM9G35 in it, and the code found in the Dropbox link the author of this article clearly targets the SAM9G35 (and explains it in the readme file). There is absolutely no STM32F4 involved in this project at all, yet it’s mentioned several times in the article, and the article is tagged as “stm32”
I’m not sure how this glaring mistake made it through the editing process — especially with an extremely awkward sentence like: “The author shares his code for the STM32F4 on Dropbox as a zip and in order to compile it, the Atmel BSP for GNU GCC is used” — huh?
That was 2 years ago.
Same guy, same thermostat 2 months ago:
https://www.youtube.com/watch?v=iQKnL692q0w
I really wish he’d do a write up on this. I’ve got one of these thermostats lying around, waiting for a hack.