Metal Gear Solid ESP32 ganhou uma demonstração pública de port nativo para o microcontrolador ESP32-S3 em 28 de setembro de 2026. O projeto de David Montero Crespo parte do código C reconstruído pela decompilação mgs_reversing e o compila diretamente para Xtensa, sem executar o jogo dentro de um emulador de PlayStation. O resultado já roda em hardware real, embora ainda tenha limitações importantes e desempenho de aproximadamente 8 a 15 FPS conforme a cena.
A proposta chama atenção pelo hardware. O ESP32-S3 usado no projeto tem dois núcleos Xtensa LX7 a 240 MHz e apenas 512 KB de SRAM interna. As placas testadas acrescentam 8 MB de PSRAM, enquanto os dados do jogo ficam em um cartão microSD.
Metal Gear Solid ESP32 usa código decompilado
O port não recompila diretamente o executável MIPS original do PlayStation. Em vez disso, ele usa o código C reconstruído pelo projeto FoxdieTeam/mgs_reversing. Esse código é compilado com GCC 14.2 para a arquitetura Xtensa do ESP32-S3.
Portanto, a classificação técnica mais precisa é a de um port nativo baseado em decompilação. O trabalho também depende do psyz, uma reimplementação em C de partes do SDK do PlayStation. Além disso, o projeto substitui em software componentes que o console original fornecia por hardware ou pelo sistema.
Entre eles estão GPU, coprocessador geométrico GTE, unidade de CD, interrupção vertical, entrada de controles e partes do ambiente de execução. O desenvolvedor afirma que precisou adicionar 41 macros GTE que ainda faltavam no psyz.
Port substitui o hardware do PlayStation
A arquitetura tem três camadas principais. O código decompilado de Metal Gear Solid forma a primeira. A segunda usa o psyz para reproduzir o SDK e o GTE em C, além de rasterizar os gráficos por software. Por fim, uma camada sobre FreeRTOS implementa o escalonador, o VBlank, o CD virtual, a tela e os controles.
Essa adaptação exigiu mudanças porque o jogo original pressupõe comportamentos específicos do MIPS e do PlayStation. Um exemplo envolve o escalonador cooperativo da Konami. No port, as tarefas do jogo ficam no núcleo 0, enquanto a atualização do LCD usa o núcleo 1.
O armazenamento também precisou de uma solução própria. O sistema cria um CD virtual sobre FAT e lê os dados do jogo pelo microSD. O arquivo STAGE.DIR completo tem cerca de 71,9 MB e permanece no cartão para não consumir a limitada PSRAM.
Desempenho chega a cerca de 15 FPS nas cenas pesadas
Os testes publicados pelo próprio desenvolvedor mostram que o gargalo muda conforme a cena. Em uma sala pequena, a rasterização caiu de 7,69 para 6,18 ms por quadro após três otimizações. Já a área do cais é bem mais pesada.
Nessa cena, o perfil registrou 40,9 ms apenas para rasterização, além de aproximadamente 25 ms de lógica e cálculos do GTE. Na prática, isso resulta em cerca de 15 FPS. O documento de status aponta uma faixa aproximada de 8 a 15 FPS conforme a cena, contra a meta de 30 FPS.
Além disso, o carregamento ainda é lento. O desenvolvedor mediu aproximadamente 11,5 segundos para ler 1,1 MB do cartão, equivalente a cerca de 95 KB/s. A tela trabalha em 320 × 240 pixels, resolução nativa do painel ILI9341 usado no portátil artesanal.
Metal Gear Solid ESP32 ainda não roda o jogo completo
Apesar da demonstração funcional, o projeto ainda não representa uma versão completa de Metal Gear Solid. Chamadas de Codec não funcionam corretamente. A introdução, as cenas com streaming, vozes, vídeos FMV, áudio e saves em cartão de memória também permanecem pendentes.
Há outra limitação estrutural: 28 fases ainda possuem código de atores em assembly MIPS. Segundo a documentação, 65 dos 93 arquivos de fase já têm tabelas de atores totalmente simbólicas, mas essas partes restantes ainda impedem uma conversão completa.
Por isso, o feito atual deve ser interpretado como uma prova técnica avançada, e não como um lançamento pronto para jogar do início ao fim. O próprio roteiro de desenvolvimento inclui corrigir o Codec, implementar streaming, adicionar áudio por uma SPU em software e melhorar o uso da memória.
Port também virou um portátil artesanal
Para demonstrar o projeto, Crespo montou um portátil com um Seeed Studio XIAO ESP32S3 Sense, tela ILI9341 de 320 × 240, analógico reaproveitado de um controle de drone e oito botões. O microSD da placa armazena os dados necessários.
O código do projeto não inclui os arquivos comerciais de Metal Gear Solid. Quem reproduzir o experimento precisa usar a própria cópia legalmente adquirida do jogo para extrair os dados necessários.
A demonstração amplia o alcance das iniciativas de preservação baseadas em engenharia reversa. Neste caso, porém, o objetivo não é apenas levar um clássico a PCs modernos: o Metal Gear Solid ESP32 mostra que o código reconstruído do jogo também pode ser adaptado a um microcontrolador muito mais limitado que o hardware normalmente associado a ports de jogos 3D.
Fontes: documentação técnica de David Montero Crespo/Velxio, página oficial do projeto no Hackaday.io e Hackaday.