Need for Speed: Porsche Unleashed in the browser
I used AI and ported Need for Speed: Porsche Unleashed to the browser. The work builds upon the great work by Sergei Biriukov with the nfspu-recomp project. I used Codex with GPT 6.1 Sol to do it.

Show figure 1 detailsClose figure 1 details
Garage view of 935/78 “Moby Dick”

Show figure 2 detailsClose figure 2 details
Race in the Alps

Show figure 3 detailsClose figure 3 details
Porsche 356 in Côte d’Azur
As a kid, I always loved this game so it’s really nice to get a good dose of nostalgia playing this. Compared to the original game, my port has a few improvements and tweaks:
- Full resolution WebGPU rendering both in garage and in race. Previous work by Verok added an OpenGL renderer for race, allowing for arbitrary resolutions and aspect ratios, but the garage was still limited to 640x480. Verok’s patch also adds the highest level of detail models, previously reserved only for the garage view, to the race view. However, I kept the menus/garage at 4:3 aspect ratio, or else the cars and videos may become stretched.
- Rear spoiler fix for Verok’s patch by Zolee. Verok’s patch adds high quality models from the garage view but these have a geometry bug for the automatic retractable spoilers on some Porsche models.
- Optional: New atmospheric skyboxes by AndrewD. These add a cool skybox for faraway scenery. Enable via hamburger menu, then info, then restart the game.
- Super long draw distances.
- Mobile controls, either analog joystick or arrow keys (left right by left hand, throttle/brake by right hand).
- Local IndexedDB storage of save games.
Fixed some funny bugs:
- Original game hardcoded a “rotating sunstars effect” where the rays coming out of the sun and point light sources would rotate slightly based on camera angle. But they did the calculation in raw pixels, so they would rotate super fast at high resolutions.
- One pixel map seam: The rotating display in the “race info” menu was made of sixteen separate textured strips that animate to rotate through different pictures of the map. Those can be misaligned by a fraction of a pixel and end up exposing a black row.

Show figure 4 detailsClose figure 4 details
One pixel map seam