u/nnicultra

ESP32-P4 Runs GBA at Full Speed (59.7 FPS) with No Frameskip (gpSP RISC-V JIT)

ESP32-P4 Runs GBA at Full Speed (59.7 FPS) with No Frameskip (gpSP RISC-V JIT)

I ported gpSP to the ESP32-P4 and wrote a RISC-V JIT for it. The first-party Nintendo games I've tried so far run at full speed (59.7fps) with no frameskip. Even the heavy scenes in Metroid Fusion take about 14ms per frame, so there's still some headroom.

Board is a Waveshare ESP32-P4-NANO-WIFI6-DB (P4 rev 3.x, 400MHz). Controller is an 8BitDo over its 2.4G USB dongle.

I tried the Zcmt instructions that came with rev 3.x but they didn't help much, and they're a bit buggy too (from the chip itself). Haven't used SIMD yet because the renderer does a lot of scattered palette lookups. Still thinking about how to make that work.

Games that generate code in RAM and keep modifying it, like Doom, are still really slow. Planning to fix that over the holiday and put the code up on GitHub right after.

Also curious about the new S31, but it has less RAM, no L2 cache and a lower clock (320MHz), so not sure it can hit full speed. Probably need to move rendering to the other core for that one.

youtube.com
u/nnicultra — 11 days ago
▲ 3 r/SBCs

Cubie A7A + 6540B, how did you place the thermal pads?

https://preview.redd.it/9bbkg7g35brh1.jpg?width=3024&format=pjpg&auto=webp&s=b2d74bcc912a2117554f91c013603e41181b240d

Just installed the 6540B on my Cubie A7A and I wasn’t really sure how the thermal pads were supposed to be placed. I couldn’t find any clear instructions for the A7A specifically.

I first tried putting one layer on the CPU and RAM, but both ended up sitting slightly lower than the Wi-Fi module shield. It looked like the heatsink might touch the Wi-Fi shield first and not put much pressure on the CPU/RAM pads.

So I ended up stacking two layers on both the CPU and RAM, and left the Wi-Fi shield with no pad.

So far it seems to be working fine. I ran:

stress-ng --cpu 8 --cpu-method matrixprod --timeout 10m --metrics-brief

for 10 minutes. Both CPU clusters stayed at their max clocks, around 1.8 GHz and 2.0 GHz.

With the fan set to PWM 64, CPU temps were around 60–63°C under full load. At PWM 128 it was closer to 58–60°C.

So the cooling seems fine, but I’m still not sure if stacking two pads is actually what Radxa intended.

Anyone else using the 6540B on an A7A? How did you arrange the pads?

reddit.com
u/nnicultra — 22 days ago