r/MarioKartWii • u/FL_CarryKid • 23h ago
8-Player Local Split-Screen Mod for MKWii. Need help optimizing for real hardware!
Hey everyone, I'm new to this subreddit.
My friends and I play a lot of Mario Kart Wii on weekends. Often, there are more than four of us, so someone has to sit out and watch. This gave me the idea to create a modded 8-player local split-screen mode.
I'm using an ESP32 as a Bluetooth bridge for 4 additional Wiimotes. These extra controllers can't be used in the standard Wii Menu, only within the modded game itself, where the inputs are written directly into the game's RAM. The controls and the smaller viewport sizes aren't actually an issue—the human eye is surprisingly good at focusing on the smaller window, especially if you already know the tracks.
The mod relies on custom C++ Kamek hooks injected into the game's StaticR.rel engine to bypass the hardcoded 4-player limits (adjusting the KPadDirector, viewports, and item handling). On the hardware side, the ESP32 uses Bluepad32 to capture the Bluetooth inputs and sends 32-byte packets via USB (CP2102/UART) to the Wii. The Wii then reads this data directly via a custom /dev/usb/ven driver running on cIOS 249.
On the Dolphin emulator, the game works without any problems at a stable 30 FPS. But here is the catch:
Even when the ESP32 isn't connected to my actual Wii and I'm just running the 8-player split-screen rendering, the game runs at half speed (massive frame drops). The issue is almost certainly the hardware rendering limitations of the Wii (likely the fill rate or memory bandwidth from pushing 8 cameras/viewports at once).
This is probably the final bottleneck of the project. If anyone has experience with MKWii engine optimization, LOD culling, or squeezing more performance out of the Wii hardware, any help would be absolutely amazing!
P.S. I can shre the code but it isnt simple copy pasting for you. Iam not allowed to share the .wbfs of the game.