OpenLara ESP32-P4

Auteur: Alejandro Villegas Alonso

Kenmerken

  • Software RGB565-renderer op 320x240, hardwarematig geschaald naar 1024x600 via de PPA (Pixel Processing Accelerator).
  • 44,1 kHz stereo audio via I2S + ES8311 codec.
  • USB HID-toetsenbordinvoer (boot protocol).
  • GT911 capacitieve touch (I2C).
  • MicroSD-kaart (SDMMC 4-bit) voor gamegegevens.
  • Ondersteuning voor decodering van MP3 (minimp3), OGG (stb_vorbis) en zlib (tinf).
  • FPS-teller op het scherm (aan/uit via F12).
  • Aangepaste health/oxygen HUD-overlay.

Hardwarevereisten

ComponentDetails
BoardESP32-P4-Function-EV-Board
SoCESP32-P4, RISC-V dual-core @ 400 MHz (chip rev < 3.0)
Flash16 MB
PSRAM32 MB (SPIRAM, HEX mode, 200 MHz)
Display1024x600 MIPI DSI LCD (EK79007)
TouchGT911 capacitief (I2C)
AudioES8311 codec via I2S
OpslagMicroSD-kaart (SDMMC 4-bit)
InvoerUSB HID-toetsenbord (vereist)

Builden

Voorwaarden

  • ESP-IDF v5.4+ (getest met v5.4.4 / v5.5.5)
  • riscv32-esp-elf toolchain

Builden & Flashen

# Stel de ESP-IDF omgeving in
. $IDF_PATH/export.sh

# Builden
idf.py build

# Flashen (pas de poort aan indien nodig)
idf.py -p /dev/ttyUSB0 flash monitor

Gamegegevens

U dient zelf de Tomb Raider 1-databestanden (.PHD levels, .PCX afbeeldingen, cutscenes) te verzorgen in een map genaamd data op de MicroSD-kaart. De game zal niet functioneren zonder deze bestanden.

Besturing

Er moet een USB-toetsenbord zijn aangesloten op het board.

ToetsActie
PijltjestoetsenBeweging / Camera
CtrlActie (wapen trekken, pakken, interactie)
ShiftLopen
AltStap / Kijken
SpatieSpringen
F12FPS-teller aan/uit

Technische opmerkingen

  • De software-rendering is gebaseerd op de MS-DOS-variant van OpenLara (niet de GL-renderer), gebruikmakend van de header-only gapi/sw.h engine, gecompileerd als C++11.
  • Er is een near-plane clipping-patch toegepast voor de software-renderer.
  • FreeRTOS dual-core met een 1000 Hz tick; de audio-pump-taak draait op core 0.
  • Al het gamegeheugen wordt toegewezen vanuit PSRAM; intern SRAM is gereserveerd voor DMA en taak-stacks.
  • Saves en cache worden weggeschreven naar de SD-kaart.

Credits & Licentie

  • XProger/OpenLara — de originele open-source Tomb Raider 1-engine.
  • Licentie: OpenLara is gelicenseerd onder de GPL-3.0.