top of page

ESP32-P4 Tomb Raider Port Runs Playably Without a GPU

Sep 14
13 min read

The ESP32-P4 Tomb Raider port reportedly runs near 30 frames per second on two 400 MHz RISC-V cores, while drawing roughly one watt at peak. Developer alexkid77 achieved that result without a desktop processor, discrete GPU, or PlayStation emulator. The striking 1,024 x 600 display output also hides an important compromise: OpenLara actually renders each frame at 320 x 240.

That distinction makes the project more interesting, not less. The port divides the workload between software rendering and a fixed-function Pixel Processing Accelerator, or PPA, that enlarges completed frames. It demonstrates how carefully assigned hardware can make a modest microcontroller perform work normally associated with much larger computers.

The demonstration also offers a useful comparison with Espressif’s existing Quake work. Both projects avoid brute-force rendering at the panel’s native resolution. Instead, they conserve processor time by producing a smaller image and delegating display scaling to dedicated hardware.

The result is not proof that a microcontroller has become a modern gaming system. It is evidence that the boundary between embedded controller and small multimedia computer has moved. That shift matters to developers building displays, appliances, portable instruments, control panels, and other constrained devices.

The ESP32-P4 Tomb Raider Port Is Native Code, Not Emulation

The central achievement is a purpose-built OpenLara port that runs directly on the ESP32-P4 hardware.

OpenLara is an open-source reimplementation of the engine used by the original Tomb Raider. It reproduces the game’s logic and rendering behavior while supporting many modern and unusual platforms. The ESP32-P4 version adapts that engine to Espressif’s embedded software environment.

That approach differs fundamentally from running the PlayStation version through an emulator. Emulation would require the microcontroller to reproduce another machine’s processor, graphics system, memory behavior, and supporting hardware. Every translated operation would consume resources before the game could perform its own work.

A native port removes much of that overhead. OpenLara’s engine code can execute as RISC-V instructions compiled for the ESP32-P4. The developer can also connect rendering, storage, audio, and input directly to the microcontroller’s available peripherals.

According to the public project repository, the port targets Espressif’s ESP32-P4 Function EV Board and its MIPI DSI display hardware. MIPI DSI is a high-speed interface designed to carry pixel data from a processor to a display panel.

The software renders Tomb Raider at 320 x 240 using RGB565, a 16-bit color format that assigns five bits to red and blue. Green receives six bits because human vision is particularly sensitive to that color range. This format halves the memory needed per pixel compared with a typical 32-bit frame buffer.

A 320 x 240 RGB565 frame occupies about 150 KiB before alignment or additional buffering. A native 1,024 x 600 frame in the same format needs about 1.17 MiB. Rendering at the smaller resolution therefore reduces both pixel computation and working memory substantially.

The target configuration includes external PSRAM, which is pseudo-static random-access memory attached outside the processor’s fastest internal memory. The project reportedly places game allocations in PSRAM while reserving internal SRAM for time-sensitive operations, stacks, and transfer buffers.

That separation matters because external memory has different latency and bandwidth characteristics. A successful embedded port must manage where data lives, not merely whether total capacity appears sufficient. Poor placement can erase the benefit of an otherwise fast processor.

The port also supports stereo audio through an ES8311 codec, with the audio stream sent through the chip’s I2S interface. I2S is a digital connection commonly used between processors and audio converters. A USB HID keyboard supplies the controls, while game data resides on a microSD card.

Users must provide their own original Tomb Raider files. The repository does not distribute copyrighted levels, audio, or cinematics. OpenLara supplies an engine implementation, but the commercial game assets remain a separate requirement.

These details turn the demonstration from a video trick into a complete embedded software project. Lara can move through levels with input, sound, game logic, and continuous rendering operating together. That integrated workload provides a more useful test than a rotating model or isolated graphics benchmark.

The initial reported demonstration describes gameplay as smooth and playable. However, the reported power figure and frame rate should be treated as project-specific measurements. They are not universal guarantees for every board, display, build, or game scene.

The 1,024 x 600 Output Depends on a Deliberate Rendering Shortcut

The display contains 614,400 pixels, but the CPU does not calculate a fully rendered 614,400-pixel scene for every frame.

OpenLara produces a 320 x 240 frame containing 76,800 pixels. The ESP32-P4’s PPA then scales that image for the larger panel. The output frame has eight times as many pixels, but most additional pixels come from enlargement rather than fresh 3D rendering.

That distinction prevents a misleading interpretation of the headline resolution. The demonstration drives a 1,024 x 600 display, yet its internal rendering workload remains closer to the original game’s low-resolution presentation. The panel resolution describes the final signal, not the engine’s native scene resolution.

The scaling operation still has practical value. It converts the game’s compact output into a signal that fills a modern display without making the CPU perform every enlargement calculation. Espressif’s official PPA documentation lists scaling, rotation, mirroring, blending, and filling among the accelerator’s supported operations.

This is fixed-function acceleration, meaning the hardware is designed for a limited set of repeatable operations. It lacks the programmable shaders and parallel arithmetic resources found in a modern GPU. However, it can perform its assigned image operation efficiently.

That specialization defines the project’s core mechanism. The CPU cores handle game logic and software rasterization, which converts 3D geometry into colored pixels. The PPA handles the predictable job of resizing those pixels for the panel.

The strategy resembles task delegation in many embedded systems. A microcontroller can use dedicated blocks for encryption, image encoding, signal processing, memory transfers, or display composition. Each block prevents the general-purpose CPU from spending cycles on repetitive work.

The ESP32-P4 includes considerably more multimedia support than earlier boards commonly associated with small wireless projects. Espressif’s current chip datasheet specifies two 32-bit high-performance RISC-V cores running at up to 400 MHz. It also lists a lower-power 40 MHz core.

The same document identifies hardware for JPEG processing, H.264 encoding, image signal processing, MIPI CSI camera input, and MIPI DSI display output. It also specifies 768 KiB of high-performance L2 memory and packaged PSRAM options.

Those resources do not turn the ESP32-P4 into a miniature PC. They make it a multimedia-oriented microcontroller with carefully selected accelerators. OpenLara happens to provide an entertaining workload that exercises several of those capabilities together.

The original Tomb Raider is particularly suitable because its engine was designed for machines with tight processing and memory budgets. Its environments use comparatively simple geometry, constrained textures, and rendering assumptions developed for 1990s hardware.

OpenLara further improves portability by providing accessible source code and platform abstractions. A developer can replace display, audio, input, timing, and file-system layers without reverse-engineering a closed executable for every target.

The final image will not match a native 1,024 x 600 render. Scaling cannot invent geometric detail, texture information, or edge precision that the 320 x 240 frame never contained. Depending on the filtering method, enlarged pixels can look crisp, blocky, softened, or uneven.

That visual limitation is acceptable for the intended demonstration. Tomb Raider’s original artistic design already assumes low-resolution presentation, and its large polygons survive enlargement well. A dense modern interface or small-font application would expose scaling artifacts much more clearly.

The port therefore succeeds by matching workload to architecture. It does not ask the microcontroller to behave like a desktop GPU. It identifies the game’s essential demands, reduces avoidable work, and assigns the remaining tasks to appropriate hardware.

Why This Retro Game Puts Bigger Embedded Computers Under Pressure

The ESP32-P4 does not replace a Linux single-board computer, but it challenges the assumption that every rich interface needs one.

Developers often reach for a Linux-capable board when a product needs animation, audio, storage, USB input, or a high-resolution display. That choice provides familiar development tools and broad software compatibility. It also brings an operating system, longer startup paths, more storage demands, and a wider maintenance surface.

A microcontroller follows a different model. Firmware generally controls the hardware directly or through a compact real-time operating system. The device can start quickly, behave predictably, and avoid many background services that consume memory and power.

The ESP32-P4 Tomb Raider port makes that tradeoff visible because games expose weak performance immediately. Delayed input, uneven frame delivery, broken sound, and memory stalls are difficult to hide. Playability therefore communicates system responsiveness more effectively than many synthetic benchmarks.

The most pressured category is not the game console. It is the small application processor used inside displays, kiosks, instruments, and appliances. Some of those systems run Linux mainly because earlier microcontrollers lacked sufficient graphics bandwidth or external memory support.

An ESP32-P4 design can combine application code with display control, USB, audio, storage, networking through a companion radio, and dedicated image functions. That integration can reduce component count for products whose software fits within an embedded framework.

Yet Linux boards retain major advantages. They support mature browsers, large application runtimes, extensive networking software, standard desktop graphics APIs, and processes isolated by virtual memory. A demanding product can also install updates or add services without rebuilding one firmware image.

The microcontroller route asks developers to make stricter decisions. They must budget memory, control task timing, choose compact libraries, and understand transfer paths. The OpenLara port works because its author made those decisions intentionally.

Retro engines are becoming useful stress tests for this class of hardware. They combine real-time interaction, sound, file access, memory management, graphics, and long-running stability. Each subsystem must remain synchronized under a workload that users can judge by feel.

Espressif’s own Quake port provides a nearby comparison. It renders Quake at 512 x 300, scales the image to 1,024 x 600, and reports performance between 20 and 25 frames per second. It also supports audio, USB keyboard input, and network multiplayer.

Quake presents a different rendering load, so its frame rate cannot serve as a direct benchmark against Tomb Raider. Still, both ports use reduced internal resolution and display scaling. That shared method suggests a repeatable design pattern instead of a single lucky result.

The pattern applies beyond games. A factory control panel can render its dynamic layer at a modest resolution while keeping static interface elements separate. A portable instrument can use hardware blending to combine measurements, camera imagery, and status overlays.

A video doorbell might route camera input through dedicated imaging hardware while the CPU handles event logic. A retail terminal can animate a responsive interface without maintaining a full desktop software stack. These products have different requirements, but they benefit from the same workload partitioning.

For buyers, the relevant question is not whether the board can run Tomb Raider. The question is whether its graphics, memory, and peripheral paths remain predictable under a sustained interactive load. The game offers encouraging evidence, but production applications require their own measurements.

For developers, the larger lesson concerns architectural fit. A lower-power processor with well-matched accelerators can outperform expectations. A faster general-purpose processor can still disappoint when data movement, display updates, or memory contention becomes the bottleneck.

That is why this port pressures conventional embedded planning. It asks teams to justify the operating system and processor class they choose. Familiarity remains valuable, but familiarity alone does not make the larger platform necessary.

OpenLara Explains More Than the Clock Speed

The software stack is as important as the two 400 MHz cores, because portable engine code exposes the hardware’s useful paths.

Clock frequency offers an easy headline number, but it does not describe instructions completed per cycle, cache behavior, memory stalls, or accelerator use. Two processors at the same frequency can deliver very different results under identical workloads.

The ESP32-P4 uses the open RISC-V instruction-set architecture. RISC-V defines how software communicates with a processor while allowing implementers to build different cores around that specification. The architecture itself does not guarantee performance.

Espressif’s implementation adds floating-point support, cache, high-speed memory interfaces, and multimedia peripherals. OpenLara then supplies an engine whose platform-specific surfaces can be adapted to those resources.

The standard OpenLara documentation identifies 320 x 240 as the engine core’s base geometry. It also supports configurable frame rates and many higher internal resolutions on systems with sufficient capacity. The ESP32-P4 port selects settings suited to its target.

This is different from taking an unmodified desktop game and hoping a cross-compiler will solve every problem. Embedded ports often need changes to allocation strategy, file handling, synchronization, graphics formats, and input. They may also replace operating-system services with board-specific drivers.

Memory traffic deserves particular attention. Software rendering repeatedly reads geometry, textures, and state before writing a frame buffer. The completed image must then reach the display without blocking the next frame’s preparation.

External PSRAM supplies capacity, but internal memory and direct memory access remain important. Direct memory access, or DMA, lets peripherals transfer blocks without having the CPU copy each byte. Well-planned buffers can keep rendering and display operations from waiting unnecessarily.

RGB565 also lowers traffic. Each pixel consumes two bytes, so reading or writing a frame requires less bandwidth than a four-byte format. The tradeoff is a smaller color palette and reduced precision.

The PPA eliminates another costly pass over the frame. Without hardware scaling, the CPU would need to map the smaller image across the larger buffer. That process could involve millions of additional reads and writes every second.

A fixed-function block can process that stream while the main cores continue preparing game logic or audio. The theoretical advantage becomes meaningful only when the driver, buffer layout, and display controller allow the operations to overlap effectively.

Audio creates another continuous demand. The system must decode or prepare samples, maintain buffers, and feed the codec without interruption. An underrun produces an audible defect even if the game remains visually smooth.

Input creates a latency requirement rather than a large computational load. A USB keyboard sends compact events, but the game must sample and apply them consistently. Frame pacing matters because irregular intervals can make average performance feel worse than its numeric result suggests.

These interacting systems explain why the demonstration has engineering value. The headline focuses on Lara Croft, but the underlying work concerns scheduling and data movement. The game becomes playable only when each subsystem receives resources at the right time.

Open-source code makes those choices inspectable. Other developers can study the build settings, memory decisions, and hardware interfaces. They can also test different optimizations or port the work to another ESP32-P4 board.

That openness does not make replication automatic. Board revisions can change clock behavior, memory interfaces, and display configuration. A project tested on one evaluation board might require driver or timing changes on another.

The useful conclusion is narrower than “clock speed no longer matters.” Processor performance still establishes the available budget. The port shows that software architecture determines how effectively a constrained system spends that budget.

The One-Watt Claim Needs Careful Boundaries

A playable demo is credible evidence of capability, but it is not a standardized performance or energy benchmark.

The roughly one-watt peak figure reported with the project is attention-grabbing. However, power measurements can describe the chip, the processor subsystem, or the entire board. Those scopes produce different results.

A complete setup includes the development board, external memory, voltage conversion, display interface, storage, audio circuitry, input hardware, and the panel itself. Screen brightness alone can materially change system consumption.

Measurement location also matters. A reading at the processor’s supply rail excludes conversion losses and other components. A USB input measurement includes more of the board but can still omit an independently powered display.

The available reporting does not establish a laboratory test protocol covering every subsystem. Readers should therefore treat one watt as an approximate observed peak for the relevant configuration, not a guaranteed total for every reproduction.

The same caution applies to the stated 30 frames per second. A frame counter can report averages, instantaneous values, or a capped target. Different levels can produce different loads because geometry, visibility, effects, enemies, and audio activity vary.

A rigorous performance review would record frame-time distributions across multiple levels. It would identify the slowest scenes, memory stalls, input latency, audio stability, thermal conditions, and clock configuration. A smooth demonstration video cannot answer all those questions.

The output resolution also needs precise language. The panel receives 1,024 x 600 pixels, but the game scene is rendered at 320 x 240. Describing the result simply as native high-resolution Tomb Raider would obscure the mechanism that makes it possible.

There is another limitation in the software scope. OpenLara is a reimplementation designed around classic Tomb Raider content. Its performance says little about modern engines with complex shaders, physically based materials, dense geometry, or large streaming worlds.

The ESP32-P4 also lacks the software environment expected by contemporary PC games. Running one portable open-source engine does not create compatibility with commercial binaries, DirectX, Vulkan desktop stacks, or protected distribution platforms.

Even retro-game support remains selective. Every engine has distinct assumptions about memory, timing, graphics, audio, and file formats. Another title from the same decade might be easier or substantially harder to port.

Hardware availability introduces further uncertainty. The demonstration targets a specific evaluation-board configuration with a particular panel and memory setup. Smaller boards can expose different connectors, omit audio hardware, or provide another PSRAM arrangement.

Production developers face additional requirements that a hobby demonstration need not resolve. They must verify component longevity, electromagnetic compliance, thermal margins, security, update recovery, and reliability over thousands of operating hours.

The ESP32-P4 itself also omits native wireless connectivity, unlike several familiar members of the ESP32 family. Products that need Wi-Fi or Bluetooth typically add a companion device. That adds design complexity and consumes some of the integration advantage.

None of these caveats cancels the result. They define what the project actually establishes. A dual-core embedded processor can run a carefully adapted 3D engine with audio, storage, and input while driving a modern display interface.

That is a substantial result within its boundaries. The weaker claim would be that any application can now move from Linux or a GPU-equipped platform to a microcontroller. Software requirements, development costs, and maintenance needs still determine the correct system.

The most responsible reading combines enthusiasm with measurement discipline. The project demonstrates a compelling possibility. Independent power testing and repeatable frame-time data would show how broadly that possibility applies.

Three Signals Will Show Whether This Becomes a Repeatable Platform

The next phase should test reproducibility, broader engine support, and real product workloads rather than chasing a more surprising headline.

The first signal is independent replication across ESP32-P4 boards and chip revisions. Developers should publish build results, frame-time measurements, power-test boundaries, and display configurations. Consistent results would strengthen the claim that the port reflects the platform rather than one tuned setup.

Replication would also reveal hidden dependencies. A memory mode, compiler release, board-support package, or display timing choice might determine whether performance remains stable. Documenting those factors would make the project more useful to engineers evaluating the chip.

The second signal is sustained work on several interactive engines. Quake already provides a meaningful reference because it uses the same broad strategy with a different rendering workload. Additional ports could show where software rasterization stops scaling effectively.

The strongest comparisons would report internal resolution, output resolution, frame-time variation, audio behavior, and memory consumption. A list of games that merely reach a title screen would provide much weaker evidence.

Watch whether developers create shared display, audio, storage, and input layers across these projects. Reusable infrastructure would lower the cost of the next port. It would also indicate that the community is forming a practical multimedia stack around the processor.

The third signal is adoption in non-gaming interfaces. Games are memorable demonstrations, but human-machine interfaces are closer to the ESP32-P4’s intended role. Real deployments would test animation, touch response, camera input, networking, security, and continuous operation.

A production control panel that maintains responsive graphics for months would strengthen the platform case more than another short demo. Conversely, reports of display tearing, memory instability, or difficult update recovery would weaken it.

Developers should also compare total system energy, not processor estimates alone. That includes the panel, backlight, memory, companion radio, audio components, and power conversion. Only system-level measurement can support purchasing or battery-life decisions.

The ESP32-P4 Tomb Raider port already answers one narrow question. Yes, this microcontroller can support a playable classic 3D game when software and hardware are matched carefully. It also exposes the exact compromises behind that outcome.

The next question is more consequential: can teams reproduce the same efficiency in products where reliability matters more than novelty? Engineers evaluating embedded displays should inspect the code, measure their own workload, and compare it against a Linux alternative.

That comparison should include development time, startup behavior, update strategy, component count, and sustained power. If the microcontroller wins across those dimensions, Lara Croft’s latest expedition will have mapped territory far beyond retro gaming.

Give every agent the context to do better work

Connect your agents to the knowledge, decisions, and history already organized in remio.

remio currently supports Windows 10+ (x64) and Macs with Apple silicon.

Your AI Partner at Work
Get more done with remio

Plan. Create. Deliver.
All in one place.

bottom of page