Open-source project
chrissotraidis/kartpad avatar
chrissotraidis/kartpad

KartPad: Mario Kart Wii and Retro Rewind as native apps on Android, iOS, iPadOS, macOS and tvOS

Mario Kart Wii and Retro Rewind, native for iOS, iPadOS, macOS, tvOS, and Android.

606 stars36 forksPythonGPL-3.0

At a glance

What is it?
KartPad wraps the WiiCompiled static recompilation of Mario Kart Wii in native Android and Apple front ends. It ships game logic but never the disc image, and the README is unusually direct about what has and has not been checked on real hardware.
Who is it for?
KartPad is for players who already own a PAL RMCP01 revision 0 Mario Kart Wii disc, are comfortable re-signing Apple builds, and want the game running natively rather than through an emulator. It is not for anyone expecting a self-contained download: the releases carry translated game logic only, with no disc image, assets, Retro Rewind pack or saves, and tvOS is labelled an experimental preview.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 1, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What KartPad actually is, and who it is for

KartPad is not an emulator. It is a native application for Android, iOS, iPadOS, macOS and, as an experimental preview, tvOS, built on top of WiiCompiled, the Mario Kart Wii static recompilation created by patchzyy. The README describes the division of labour plainly: WiiCompiled supplies the translator and runtime, while KartPad maintains the Apple and Android integration, native controls, game chooser, game-data management, packaging and releases. The README also states the two projects are independently maintained, which matters when you are deciding where to file a bug.

The audience is narrow and specific. You need a legally obtained supported PAL RMCP01 revision 0 Mario Kart Wii image. The downloads contain translated game logic but no disc image, extracted assets, Retro Rewind pack or saves. Anyone who wants a single archive that boots into a race is looking at the wrong project. Anyone who owns the disc, has a supported device, and would rather run the game natively than through a general-purpose emulator is exactly who this is built for.

Static recompilation instead of emulation, and what that changes

The mechanism is ahead-of-time static recompilation of PowerPC code, rendered through Vulkan on Android and Metal on Apple platforms. The repository badges list PowerPC static recompilation, an Android ARM64/Vulkan target, a Metal renderer, and macOS 14+ as the development target. The top-level layout reflects that split: separate android/ and apple/ trees, a runtime/ directory, a builder/, a patches/ directory, a dependencies.lock.json, and a vendor/ tree.

The practical consequence is that there is no emulated console underneath. Translated game logic runs as native code, and the graphics go through the platform's own API. That is why the platform requirements look like ordinary app requirements rather than emulator requirements: Android 9+ with Vulkan, iOS and iPadOS 16+, macOS 14+, tvOS 17+.

The cost is that the game data is still the game. KartPad cannot conjure assets it does not ship, which is why the disc requirement is absolute, and why Retro Rewind content installs separately at a pinned version (6.12.8 is what the README names) and the app requires a matching native profile when the mod updates.

Installing KartPad on Android and taking a first race

The README's download table points Android users at the 0.4.24 Android 1 build (code 117) and a setup document, docs/INSTALL_ANDROID.md, for Android 9+ with Vulkan. The release pages are the distribution channel; there is no package manager and no app store listing. What follows is the sequence the README describes, not a verified run.

Download the release package together with the checksums and notices that the README says ship with each package, and check the archive before installing it. The README does not name a checksum command, so use whatever verification tool your platform provides against the published checksum file.

Install the package on the device, then launch it. The first screen is the game chooser, where you pick Mario Kart Wii or Retro Rewind. Retro Rewind 6.12.8 installs separately and needs a matching native profile.

The README is explicit about updating: update in place using the same signing identity, and do not uninstall or clear app data. Private Android previews use a different signer and require a backed-up migration. If you are coming from an older build, note that the downloads include the console-serial correction for issue #94, and the README advises older affected builds to stay offline. Updating preserves identities and saves, but existing server-side identity history or bans need service-admin review.

For controls, the README says touch controls, motion steering and controllers are available on mobile, that Mac also supports keyboard input, and that touch layouts can be moved, resized and hidden. The 0.4.24 release notes mention expanded controller mappings and FPS counter sizing.

The Apple side: re-signing, pausing, and the tvOS preview

Apple builds do not install the way Android builds do. The README states that Apple IPAs require local re-signing, and each platform has its own guide: docs/INSTALL_IPA.md for iOS and iPadOS 16+, docs/INSTALL_MACOS.md for macOS 14+, and docs/INSTALL_TVOS.md for the tvOS 17+ experimental preview. That re-signing step is a real gate. If you are not set up to sign an IPA, the iPhone and iPad build is not usable to you, and the README does not pretend otherwise.

There is a second behavioural quirk worth knowing before you start. On iPhone and iPad, returning to the KartPad menu pauses the current game, and Resume continues it. But switching games or applying license edits requires fully closing and reopening the app. That is a constraint of the integration layer, not a bug report, and it changes how you plan a session.

Version drift across platforms is visible in the download table: Android and iOS are on 0.4.24, macOS is on 0.4.22 build 43, and tvOS is on 0.4.11 build 9. If you run the same game on a phone and a Mac, expect the two builds to differ, and expect the tvOS preview to lag furthest behind.

What the release notes admit has not been checked

The README's honesty is the most useful thing in it. For Android, it states that Original gameplay with a Razer Kishi was accepted on Pixel 9 Pro XL, and that earlier testing confirmed Retro WFC login and worldwide lobby entry on that device. It then lists what remains open: frame drops, stutter, complete results and reconnect. For the iPad release candidate, it records owner-accepted controller gameplay and menu checks, and immediately adds that these results do not establish every device, complete online results or reconnect behavior. Native private-room hosting and Wiimm are cut off mid-sentence in the README text.

The 0.4.22 notes are similarly bounded. Source parity, rollback and build checks passed; the owner accepted loading, running and starting games on iPad and Android; macOS reached a race in the host smoke check. New-license Retro WFC login worked on iPad, but an existing profile's serial mismatch reproduced on both builds and remains unresolved. Completed online races and reconnect, plus broader hardware coverage, are explicitly not new claims.

For 0.4.24 the README says Android performance remains an active area of work and that the release does not establish a general FPS improvement. Treat any expectation of smooth, verified online play as unproven. The project also discloses that it uses substantial AI assistance for code, tests, documentation, debugging and maintenance, and that some support replies and maintenance tasks are automated, with no audited percentage of AI-generated code. Whether that affects your adoption decision is yours to make, but it is stated up front rather than buried.

Where KartPad is the wrong tool, and what sits next to it

If you want to play Mario Kart Wii on a device KartPad does not cover, or you want to run other Wii titles, KartPad is the wrong choice. It is one game, sometimes two with Retro Rewind, on a fixed set of platforms. A general-purpose Wii emulator covers a library rather than a title, runs on more hardware including x86 desktops, and does not ask you to re-sign anything. The difference in approach is fundamental: an emulator interprets or JIT-compiles PowerPC instructions at runtime and can be retargeted to new games, while KartPad recompiles one game's code ahead of time and integrates it with the host platform's input, rendering and packaging. That is why KartPad can offer touch layouts and motion steering as first-class features, and why it cannot offer you a second game.

There is also a version trap. Retro Rewind 6.12.8 content installs separately, and KartPad requires a matching native profile when the mod updates. If you follow Retro Rewind releases closely, you are dependent on KartPad shipping a matching profile, and the README gives no schedule for that.

Finally, if your disc is not a PAL RMCP01 revision 0 image, stop here. The README names that revision specifically and does not document support for other regions or revisions.

Maintenance, licensing and upgrade cost

The repository is not archived, and the last push was on 2026-09-16. Releases have been frequent: 0.4.23 for iOS and Android on 2026-09-15, 0.4.22 for macOS the same day, and 0.4.24 builds referenced in the README's download table. That cadence is real, but it also means the upgrade path matters more than the initial install. The README's instruction to update in place under the same signing identity, never uninstalling or clearing app data, is the single most important operational rule here. Private Android previews use a different signer and need a backed-up migration.

KartPad is GPL-3.0. The repository carries LICENSE, a LICENSES/ directory, RIGHTS_AND_LICENSES.md and THIRD_PARTY_NOTICES.md, and the README points at a source bundle and rebuild instructions under docs/artifacts/. GPL-3.0 is a copyleft licence, so redistribution carries source and licensing obligations; if you plan to ship a modified build, read those files rather than this paragraph. Nothing here is legal advice.

One more cost to budget: the README states that suspected runtime bugs can go directly to WiiCompiled, while KartPad should be used for app and platform problems or when the cause is unclear. Diagnosing which project owns a failure is part of the maintenance burden, and the README asks you to identify your KartPad build when filing upstream.

Editorial conclusion

KartPad is for players who already own a PAL RMCP01 revision 0 Mario Kart Wii disc, are comfortable re-signing Apple builds, and want the game running natively rather than through an emulator. It is not for anyone expecting a self-contained download: the releases carry translated game logic only, with no disc image, assets, Retro Rewind pack or saves, and tvOS is labelled an experimental preview. Before adopting it, verify three things: that your disc matches the required PAL revision, that your Android device is ARM64 with Vulkan support on Android 9 or later, and that you can update in place under the same signing identity rather than uninstalling, because private Android previews use a different signer and need a backed-up migration.

Frequently asked questions

Does KartPad include the Mario Kart Wii game data?

No. The README states that downloads contain translated game logic but no disc image, extracted game assets, Retro Rewind pack or saves, and that KartPad requires a legally obtained supported PAL RMCP01 revision 0 Mario Kart Wii image.

Which devices and OS versions does KartPad support?

The download table lists Android 9+ with Vulkan on ARM64, iOS and iPadOS 16+, macOS 14+, and tvOS 17+ as an experimental preview. Apple IPAs require local re-signing before they will install.

How do I update KartPad without losing my saves?

The README says to update in place using the same signing identity and not to uninstall or clear app data. It also notes that private Android previews use a different signer and need a backed-up migration, and that updating preserves identities and saves.

Official sources

  1. chrissotraidis/kartpad on GitHub
  2. Issues
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/chrissotraidis-kartpad.svg)](https://hysenlabs.com/projects/chrissotraidis-kartpad)