Super Mario 64 Ported Natively to Microsoft Zune HD
A clever fan-made project brings Nintendo's classic platformer to Microsoft's forgotten 2009 media player, complete with touchscreen controls and game saves.

Bringing a Nintendo Classic to Microsoft Hardware
Retro gaming enthusiasts and programmers continue to push vintage hardware to unexpected limits. In a recent homebrew feat, a programmer has successfully ported Nintendo's iconic Super Mario 64 to Microsoft's 2009 Zune HD media player. According to reports covered by outlets like <a href="https://www.tomshardware.com/video-games/retro-gaming/programmer-ports-super-mario-64-to-microsofts-zune-hd-media-player-the-2009-ipod-rival-runs-the-game-natively-on-its-nvidia-tegra-chip-with-touchscreen-controls-and-saves">Tom's Hardware</a>, the game runs natively on the device's hardware using the unofficial OpenZDK kit, allowing fans to experience the title with functional touchscreen controls and save support.
The Zune HD was originally released as a direct rival to Apple's popular iPod lineup. Marketed at the time for its sleek 3.3-inch glass OLED touchscreen and powered by multimedia-focused Nvidia Tegra hardware, the device ultimately had a short-lived commercial run before production was halted by <a href="https://www.tomshardware.com/tag/microsoft">Microsoft</a> in 2011. Despite its discontinuation, exploits and homebrew kits like OpenZDK have opened the door for modern developer experimentation on the legacy platform.
Under the Hood: Technical Workarounds and Limitations
Running a Nintendo 64 title on a portable media player from 2009 required several clever technical adaptations. The project is built upon sm64ex, which is a fork of the unofficial decompiled Super Mario 64 PC port. Because the Zune HD's graphics driver cannot compile standard OpenGL Shading Language shaders, the developer utilized Nvidia's cgc and shaderfix tools to derive an OpenGL ES 2 renderer from Fast3D. Furthermore, blending operations had to be compiled directly into fragment shaders due to the GPU lacking fixed-function blending hardware.
The game logic ticks at 30 frames per second, though minor lag can occur when the device struggles to keep pace. To ensure the experience remains playable, audio synthesis operates on its own dedicated thread with a higher priority than the core game loop, meaning sound output stays smooth even if the frame rate dips. The finished build renders at 480x272 pixels in landscape orientation, matching the physical layout of the Zune HD when rotated.
Touchscreen Controls and ROM Requirements
Because the Zune HD features a compact physical button layout, the port implements a customizable touchscreen control overlay. This overlay provides a virtual analog stick alongside touchscreen buttons corresponding to the original Nintendo 64 controller inputs, including A, B, Z, R, the four C-buttons, and the Start button. Users can easily customize both the opacity and the overall style of these on-screen control elements.
As with most decompilation-based projects, the repository does not include any copyrighted game assets or ROM files. Players must legally dump a ROM from their own physical Nintendo 64 cartridge. During the build process, which runs via Docker on Linux, the ROM is read on a PC before the final compiled package is transferred over to the Zune HD via USB.
Growing Legacy of Unofficial Ports
The successful Zune HD port joins a long and diverse list of unofficial platform ports for Super Mario 64. Following the completion of fan-led decompilation efforts, enthusiasts have ported the game to numerous platforms over the years, ranging from handhelds like the Nintendo 3DS, DS, DSi, and PlayStation Vita to home consoles such as the Wii U, PlayStation 2, and Dreamcast, as well as web browsers. This latest achievement on a discontinued media player highlights how resourceful developers continue to breathe new life into vintage consumer electronics.
Sources
- Tom's HardwareProgrammer ports Super Mario 64 to Microsoft’s Zune HD media player
Continue chronologically





