Projecten

Het potje Mario Kart dat tien jaar bleef hangen

  • Python
  • Next.js
  • MongoDB
  • Dolphin

Een open Mario Kart Wii kampioenschap voor iedereen die in Dotslash Utrecht langskomt. Een game controller, een QR-code aan de finish en een leaderboard dat op alle schermen wordt getoond. Hoe een oude game met moderne techniek verbinding brengt op de werkvloer.

Iemand speelt Mario Kart Wii in de lobby van Dotslash Utrecht
Gemaakt voor
Dotslash Utrecht, Peper in je Pand
Jaar
2026

Van studentenhuis tot startschot

Sommige projecten beginnen met een briefing. Dit project begon op een wc.

  1. 2016

    Het studentenhuis

    Een toiletpauze is precies lang genoeg voor een potje Mario Kart. Het idee: tijden opslaan en er een competitie van maken. Technisch te complex, dus het bleef liggen. Maar het bleef wel hangen.

    De huiskamer van het studentenhuis waar het idee ontstond
    De huiskamer waar het begon. Zonder leaderboard.
  2. 2021 - 2024

    De omwegen

    Door de jaren heen een paar pogingen. Een camera op het scherm laten meekijken. Bestanden uit de Wii proberen te plukken. Niks dat lang genoeg overeind bleef, en allemaal te veel werk voor iets dat puur voor de lol moest zijn.

  3. Begin 2026

    Proof of concept

    Door middel van de Dolphin emulator lukt het om het spel op een MacBook te draaien en de tijden uit het werkgeheugen te lezen. Het werkt, maar niet perfect: het spel hapert op Apple Silicon. Maar we hebben aangetoond dat het mogelijk is.

  4. Maart 2026

    De pitch

    Tijdens een netwerklunch bij Dotslash pitchen we het idee bij Peper in je Pand, de beheerder van het gebouw. Er wordt enthausiast gereageerd en er wordt een plek voor ons gezocht.

  5. April 2026

    Uit de hand gelopen

    Het plan was een leaderboard. Het werden live race-overlays, een registratieflow met QR-codes, schermen in de gang en een eigen website met een achter-de-schermen pagina. Veel te veel, maar wel heel leuk. Met AI is alles mogelijk.

  6. 15 mei 2026

    Soft launch

    De opstelling is gereed en operationeel. In de lobby van gebouw ./400 testen we zelf meerdere potjes om te zorgen dat alles werkt, en nodigen we voorzichtig een aantal kennissen uit.Racen kan vanaf nu altijd.

    Iemand speelt Mario Kart Wii in de lobby van Dotslash Utrecht
    De opstelling in gebouw ./400. Laptop, controller, scherm. Meer is het niet.
  7. 1 juni 2026

    Startschot

    Dotslash geeft het startsein en de competitie barst los! Op alle schermen in de gebouwen is de tussenstand live te volgen. Op de eerste dag wordt het spel al 33 keer gespeeld.

    Drie bezoekers spelen Mario Kart Wii in de lobby van Dotslash Utrecht
    Opperste concentratie: tijdens de vrijdagmiddagborrel wordt een goede tijd neergezet.
Finish

Onder de motorkap

Mario Kart Wii heeft geen API. Wel 24MB werkgeheugen waarin het hele spel leeft: positie, ronde, tijden, finish. Een Python-parser prikt via de Dolphin Memory Engine rechtstreeks in dat geheugen, volgt pointer chains naar de race-struct en leest elke seconde de stand uit.

De tijden gaan via HTTP naar een Next.js-app op Vercel, met MongoDB eronder. Aan de finish verschijnt een QR-code waarmee je je naam en bedrijf aan je tijd koppelt. Precies het stuk waar we tien jaar geleden op vastliepen, regelde Claude nu voor ons.

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 draait

    Een MacBook emuleert Mario Kart Wii, met een Xbox-controller eraan.

  2. 2

    Python leest mee

    De Dolphin Memory Engine leest live positie, ronde en tijden uit MEM1.

  3. 3

    Server ontvangt

    Updates gaan via HTTP naar Next.js, een overlay toont de race real-time.

  4. 4

    QR aan de finish

    Scannen, naam en bedrijf invullen, en je staat op het leaderboard.

Aan de finish

Na drie rondes verschijnt dit scherm op de TV: je tijd, statistieken en een QR-code. Even scannen, je naam en bedrijf invullen, en je staat op het leaderboard. Nieuwe nummer 1? Dan wordt je naam vanaf dat moment op alle schermen getoond.

Het finish-scherm met rondetijd en QR-code op de TV in Dotslash Utrecht

De stand

De klok liegt niet: drie rondes met drie paddenstoelen. Dit zijn de snelste tijden van het 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

Rechtstreeks van het leaderboard, ververst elke paar minuten.

10
jaar van idee tot startschot
23
bedrijven aan de start
110+
races gereden
2:09.600
snelste tijd tot nu toe

Andere projecten

Drie ervaren programmeurs en tech consultants vormen samen Popup. Al sinds 2014 werken wij met alle plezier samen aan projecten die impact hebben.

De app voor mensen met een verhaal

Stamps

Gebruiksvriendelijke applicatiemanager voor offshore systemen

Helin

Wat ga jij doen bij DPG Media?

Dawn + DPG Media

Fugro

TouchTribe

Gereedschapscentrum

Fixami

Coffee in the cloud

Waaqa

NDFR, fiscaal kennisplatform

Sdu

Zakelijk speeddaten, Koffietoer

IAA + AdBusiness

Muziektour Botanische Tuinen

Dekoor