Knutselaar laat NES twitteren via expansiepoort

0
198

Door de expansiepoort aan de onderzijde van een Nintendo Entertainment System te gebruiken, lukte het twee broers om via de console een tweet te versturen. Daarvoor was wel het nodige handwerk nodig.

Dat schrijft Trapper, een van de twee broers, op zijn blog. Als kind vond hij zijn NES helemaal geweldig. Vooral de bijzonder interessant uitziende expansiepoort aan de onderzijde van het apparaat intrigeerde hem. Hij vroeg zich af welke extra toepassingen Nintendo in gedachte kon hebben voor zijn geliefde spelmachine. Maar met de uitbreidingspoort werd nooit officieel wat gedaan. Anno 2015 wilde Trapper de functionaliteit van de console alsnog uitbreiden. Hij besloot de poort te gebruiken om de NES te laten twitteren.

De uitbreidingspoort communiceert direct met de databus van de NES, enkele pins die voor cartridges bedoeld waren en een enkele A15-address-line. In Trapper’s opzet communiceert de NES via de poort met een stukje sram en een microcontroller. Nadat de NES een byte heeft geschreven naar het sram, stuurt de console een signaal naar de microcontroller, waarna de microcontroller de byte uitleest. Indien nodig kan de microcontroller ook weer een byte terugschrijven in het sram, zodat de console deze weer kan uitlezen.

Het sram kan in lees- of schrijfmodus staan. Trapper moest dus een manier vinden om de juiste modus te triggeren, afhankelijk van of de NES moest lezen of schrijven. Op het sram zit een write-enable-pin, die de knutselaar kon aansturen via pin 45 van de uitbreidingspoort op de NES. Die pin wordt aangestuurd via een address-line waarmee normaal de joypad wordt bediend, maar tijdens het lezen en schrijven van data naar het sram wordt deze niet gebruikt. Door ook een pin van de microcontroller te verbinden met pin 45, kan de controller ook zien wanneer de NES nieuwe data naar het sram heeft geschreven of data uit het sram heeft gelezen.

Trapper moest ook een manier vinden om het sram alleen in te schakelen wanneer de NES ermee in verbinding moet staan. Wanneer het sram continu aanstaat, zou dat data op de NES kunnen beïnvloeden. In Trapper’s addon signaleert de NES dat het sram moet worden ingeschakeld door naar een stukje geheugen met adres $6000 te schrijven. Daarvoor moesten address-lines A13, A14 en A15 worden gemonitord. A15 was direct beschikbaar via een pin op de uitbreidingspoort. A13 en A14 konden worden bereikt via het cartridgeslot van de controller, en met wat soldeerwerk worden doorverbonden naar andere pinnen op de uitbreidingspoort.

Wanneer de NES data gaat versturen, leest de microcontroller byte voor byte de data uit het sram. Die wordt door de controller via een tcp/ip-chip doorgegeven aan een speciale server. Die gebruikt een programma, geschreven door Trapper’s broer Jered McFerron, om de boodschap te tweeten.