The many polygons of Solid Snake on an ESP-driven LCD

Metal Gear Solid Moves From PlayStation To ESP32

If you haven’t heard of Metal Gear, you probably haven’t played video games these last few decades. The original Metal Gear dates back to 1987 and launched on the MSX, but the real rise to fame probably started with Metal Gear Solid on the original PlayStation in 1998. What needed a hefty console in 1998 can comfortably fit on a microcontroller in 2026, though, as [David Montero Crespo] demonstrates with his port of MGS to the ESP32-S3.

[David] is — as we always are — standing on the shoulders of giants with this hack. Most specifically, the project relies entirely on the [FoxdieTeam] MGS Reversing decompliation project. Of course what one team decompiles, another can recompile, and in this case [David] chose to recompile the game for Expressif’s exceptional ESP32. It wasn’t quite as easy as just forking the repo and compiling with the ESP32 as a target though, as the blog post explains.

We won’t spoil it, but [David] did have to make some changes to account for the different quirks the MIPS processor in the PlayStation has compared to the Xtensa cores on the microcontroller. Then to make it playable, he put the ESP32-S3 module onto some perfboard with an analog stick from a drone controller, an ILI9341 LCD panel, and a resistor ladder to run the buttons for a barebones handheld.

Fans of MSG and its many sequels may appreciate this replica of the codex communicator. Fans of the ESP32 may remember the Wipeout clone we featured earlier, which already proved the popular microcontroller could handle PlayStation-level graphics. If you were hoping for actual solid metal gears, you can cut your own at home.

Jet Megatextures Demo For ESP32-S3

Mipmapping is a good way to add a lot more detail to a 3D scene without overburdening the rendering hardware with detail that won’t be seen by the user. This level-of-detail rendering technique was demonstrated on the N64 console hardware a few years ago by [James Lambert] with [Michael Biggins], also known as [PhonicUK], now demonstrating it on the ESP32-S3 using his own Jet rendering engine.

Although level-of-detail rendering really speeds things up, it does also require far larger texture sizes, with [James]’s N64 demo taking up 40 MB of a 64 MB cartridge. To fit it on an ESP32-S3 with 16 MB of PSRAM and no SD card expansion or such the textures were further compressed to use 8-bit indexing, resulting in a mere 5.01 MB of textures.

There’s a demonstration video over on the associated Reddit thread, which shows the camera moving through the scene. Even if not as exciting as the Wipeout port by [Michael] that we previously covered, it does make clear that even without a proper 3D GPU the ESP32-S3 is already a pretty capable gaming machine that can go toe-to-toe with some 1990s consoles.

Continue reading “Jet Megatextures Demo For ESP32-S3” →

A grid of screenshots of various applications on the CYD PDA

Cheap Yellow Display Dreams Of PDA

Everybody loves the Cheap Yellow Display (CYD) ESP32 dev boards, so why not treat yours to a little PDA? That’s right: turn it into a Portable Digital Assistant and relive the glory days of Palm with this project from [sau412].

For those readers who are too young to remember, a PDA was basically a phoneless and cameraless smart-phone, and devices running Palm Corporation’s Palm OS ruled the roost for most of the 90s and early 2000s. [sau412] hasn’t written an emulator or port of Palm OS; rather he’s created his own firmware for the ESP32-based CYD that is inspired by the PDAs of yore, and has many features you’d have expected back in the day. That includes a Gopher browser, to let you check out the undying alternative to the World Wide Web. There isn’t a general-purpose web browser, but there are RSS and Wikipedia readers, and what else do you need? At least you won’t end up doomscrolling.

There are also a passel of games and a BASIC interpreter, and the usual practical things like a calendar, calculator and contact list. Everything from ebook readers to translators, all of it by [sau421]. If you’ve got a CYD kicking around, you could do worse than give it a little PDA. Using the web-based flasher, we had it up and running in five minutes or so, but without an SD card we couldn’t test all the apps.

This is hardly the first ESP32 PDA  that we’ve featured, but leaning into the CYD means it’s the simplest project to replicate.  If you’re jonesing for the original Palm OS experience on more modern hardware, Pumpkin OS can get you going on x86 or ARM.

 

Audio Spectrum Analyzer On An ESP32 Display Board

A slick spectrum analyzer used to be the kind of thing that would have been tricky to include in a DIY project, but as [Mirko “mircemk” Pavleski] demonstrates, a modern microcontroller like the ESP32 can handle the task with nothing more than a display panel and a few passives.

This particular example is built around the CrowPanel 3.5, which combines the powerful microcontroller with a 480×320 touch screen LCD. But there’s nothing inherently special about the CrowPanel, and you could get similar results with whatever display you might have kicking around the parts bin — albeit potentially with some code changes to account for the different hardware.

Beyond the microcontroller and the display, all you need to recreate what [mircemk] has done here is a handful of passives to tame the incoming analog audio signal so it can be piped into one of the analog-to-digital converter (ADC) pins on the MCU.

This project is fairly simple, but if you’re looking for something a little more advanced from [mircemk], don’t worry. The more daring home players can try their hand at recreating this high-voltage X-ray machine made from an old TV vacuum tube.

Continue reading “Audio Spectrum Analyzer On An ESP32 Display Board” →

A JavaScript OS For The ESP32

Given the incredible power of modern microcontrollers, we’ve seen quite a few attempts to turn them into more general purpose computers over the years. KryonOS from [Haris] is the latest, and it takes a slightly different path from the norm in that it’s a JavaScript based operating system for the ESP32.

It takes the form of an OS with a simple GUI and graphics library, and a built-in JavaScript runtime interpreter. It runs on a wide variety of ESP32 boards with screens, including the ubiquitous Cheap Yellow Display. It has full access to the SD card filesystem, and an API for using the hardware. Perhaps most interestingly it has an app store for downloadable software, which immediately reminds us of Europe’s Badge.Team. Their SHA2017 badge spawned a succession of devices that continues to this day, and offered a similar experience using Python.

We like this project, and think it has potential due to the ease of JavaScript development for so many people used to working with the web. There was a time when Python running on microcontrollers sounded pretty far fetched, and look where we are now.

Laser Your Way Into Debug Mode On The RP2350

The RP2350 is actually a pretty secure chip, all things considered. It has secure boot, ARMv8’s TrustZone to split secure and non-secure execution, and you can permanently disable debug — the Pi Foundation even included glitch detection, meaning the traditional ‘zap the chip until it obeys’ technique is blocked. That’s why the [Ledger Donjon] security team went full Bond Villain and strapped everyone’s favourite fruit-flavoured microcontroller to a table with a slowly-approaching laser beam.

Continue reading “Laser Your Way Into Debug Mode On The RP2350” →

On Chip Debug For (Some) MicroPython

If you’ve used MicroPython much, you know that debugging usually amounts to printing a few things out, trying your code out, and then repeating. But [ghi-electronics] wants you to have full on-chip source-code debugging in Visual Studio. You don’t need anything special to use it — just a supported MicroPython host and the same USB cable you program with now.

The downside is that you either have to build a custom MicroPython image and flash it or use one that they include. They support several Raspberry Pi Pico versions and ESP32 chips, as well. However, at least one “odd” Pico we had lying around wouldn’t take the firmware. A stock one did, and it worked as you would expect. A little more investigation showed the odd Pico (an RP2040 GEEK) probably did take the firmware; it just produced an error during setup. There is a known problem with Linux and the ESP32-S3 having similar behavior.

Continue reading “On Chip Debug For (Some) MicroPython” →