Projects

The Mario Kart game that stuck around for ten years

  • Python
  • Next.js
  • MongoDB
  • Dolphin

An open Mario Kart Wii championship for everyone who drops by Dotslash Utrecht. A game controller, a QR code at the finish line and a leaderboard that is shown on all screens. How an old game brings connection to the workplace with modern technology.

Iemand speelt Mario Kart Wii in de lobby van Dotslash Utrecht
Made for
Dotslash Utrecht, Peper in je Pand
Year
2026

From student house to starting gun

Some projects start with a briefing. This one started on a toilet.

  1. 2016

    The student house

    A toilet break is exactly long enough for one game of Mario Kart. The idea: save the times and turn it into a competition. Technically too complex, so it was shelved. But it never left.

    The living room of the student house where the idea was born
    The living room where it started. Without a leaderboard.
  2. 2021 - 2024

    The detours

    Over the years a few attempts. Letting a camera watch the screen. Trying to extract files from the Wii. Nothing that stayed up long enough, and all too much work for something that was purely meant to be fun.

  3. Early 2026

    Proof of concept

    Using the Dolphin emulator, it works to run the game on a MacBook and read the times from working memory. It works, but not perfectly: the game stutters on Apple Silicon. But we have proven it is possible.

  4. March 2026

    The pitch

    During a network lunch at Dotslash we pitch the idea to Peper in je Pand, the building manager. The response is enthusiastic and a spot is found for us.

  5. April 2026

    Things got out of hand

    The plan was a leaderboard. It became live race overlays, a registration flow with QR codes, screens in the hallway and a dedicated website with a behind-the-scenes page. Way too much, but really fun. With AI, everything is possible.

  6. May 15, 2026

    Soft launch

    The setup is ready and operational. In the lobby of building ./400 we test several games ourselves to make sure everything works, and cautiously invite a few acquaintances. Racing is now always possible.

    Someone playing Mario Kart Wii in the lobby of Dotslash Utrecht
    The setup in building ./400. Laptop, controller, screen. That is all there is.
  7. June 1, 2026

    Starting gun

    Dotslash fires the starting gun and the competition kicks off! The current standings can be followed live on all screens in the buildings. On the first day the game is already played 33 times.

    Three visitors playing Mario Kart Wii in the lobby of Dotslash Utrecht
    Peak concentration: a good time is set during the Friday afternoon drinks.
Finish

Under the hood

Mario Kart Wii has no API. It does have 24MB of working memory where the entire game lives: position, lap, times, finish. A Python parser taps straight into that memory through the Dolphin Memory Engine, follows pointer chains to the race struct and reads the standings every second.

The times go over HTTP to a Next.js app on Vercel, with MongoDB underneath. At the finish line a QR code appears that links your name and company to your time. Exactly the part we got stuck on ten years ago, Claude sorted out for us this time.

race_reader.py
$ python race_reader.py
attach dolphin-memory-engine ok
struct MEM1 0x809B8F70 → RaceInfo
read completion +0x0C = 4.02 # ≥ 4.0 = finish
read finish_time +0x40 = 2:09.600
post /api/races 201 Created
$
  1. 1

    Dolphin runs

    A MacBook emulates Mario Kart Wii, with an Xbox controller attached.

  2. 2

    Python reads along

    The Dolphin Memory Engine reads position, lap and times live from MEM1.

  3. 3

    Server receives

    Updates go over HTTP to Next.js, an overlay shows the race in real time.

  4. 4

    QR at the finish

    Scan, enter your name and company, and you are on the leaderboard.

At the finish line

After three laps this screen appears on the TV: your time, statistics and a QR code. Scan it, enter your name and company, and you are on the leaderboard. New number 1? Then your name is shown on all screens from that moment on.

The finish screen with lap time and QR code on the TV at Dotslash Utrecht

The standings

The clock does not lie: three laps with three mushrooms. These are the fastest times at the moment.

  1. 1

    Maarten

    Peper in je Pand

    2:09.600
  2. 2

    Nathan

    Beschikbaarheidswijzer

    2:12.318
  3. 3

    Merijn

    IPV Data

    2:16.417

Straight from the leaderboard, refreshed every few minutes.

10
years from idea to starting gun
23
companies on the grid
110+
races driven
2:09.600
fastest time so far

Other projects

Three experienced developers and tech consultants together form Popup. Since 2014 we have been collaborating with great pleasure on projects that make an impact.

The app for people with a story

Stamps

User-friendly application manager for offshore systems

Helin

What will you do at DPG Media?

Dawn + DPG Media

Fugro

TouchTribe

Gereedschapscentrum

Fixami

Coffee in the cloud

Waaqa

NDFR, tax knowledge platform

Sdu

Business speed dating, Coffee Tour

IAA + AdBusiness

Music tour Botanical Gardens

Dekoor