NES Radar: Vluchttracking in 8-bit

Beschrijving

Door de vierletterige ICAO-code van een willekeurige luchthaven in te voeren via een NES-controller en op Start te drukken, verschijnen de vliegtuigen die op dat moment in de buurt van die luchthaven vliegen als bewegende stippen op een CRT-televisie. Het systeem werkt wereldwijd; je kunt het richten op een lokale landingsstrip of KLAX (Los Angeles) instellen om te zien hoe druk het daar is.

Dit project is een proof-of-concept voor bidirectionele communicatie van 9600 baud via de controllerpoort. Aangezien de NES geen eigen internetverbinding heeft, haalt een kleine server op een nabijgelegen computer live ADS-B-verkeer op van adsb.fi en stuurt dit via de controllerkabel naar de console. De NES plot de gegevens en stuurt de gekozen luchthavencode via dezelfde kabel terug naar de computer.

Details

NES Radar maakt van een echte Nintendo Entertainment System een live luchtverkeersscope. Het project is gebaseerd op c64u-radar, een soortgelijk programma voor de Commodore 64.

Voor de nieuwste software (het Python-script en het NES-ROM-bestand) kan het GitHub-repository worden geraadpleegd.

Benodigdheden

Dit is een hardwareproject en geen ROM die je simpelweg kunt downloaden en spelen. De volgende zaken zijn vereist:

  • Een echte NES en een flash-cartridge om de ROM te laden.
  • Een 5V FTDI USB-seriële kabel, aangesloten op controllerpoort 2.
  • Twee 1 kΩ weerstanden.
  • Een computer om de server te draaien:
  • Op macOS is dit een zelfstandig binair bestand.
  • Op Windows en Linux wordt dit uitgevoerd vanuit de Python-broncode.
  • Een internetverbinding.
  • Een FT232R-compatibele adapter (hiermee is het project getest). De server geeft alle gevonden seriële apparaten weer en laat je er een kiezen, maar andere adapters kunnen elektrisch of qua timing anders reageren.

De ROM, het macOS Universal binary en het Python-broncode-archief zijn beschikbaar op de GitHub Releases-pagina.

Waarschuwing

Het verbinden van een vintage NES met een moderne computer gebeurt op eigen risico. De auteurs zijn niet verantwoordelijk voor schade veroorzaakt door dit experimentele project.

De juiste TTL-kabel kiezen

Gebruik een 5V USB-naar-TTL-seriële kabel. Het aanbevolen onderdeel is de originele FTDI TTL-232R-5V-WE. Er is getest met FT232R-compatibele adapters op 5V; andere adapters kunnen mogelijk werken, maar dit is op eigen risico.

Gebruik geen 3,3V-adapter. De 3,3V TX-uitgang garandeert niet altijd een betrouwbaar 'logic high'-signaal voor elke 5V NES-ingangsbuffer. Een originele FTDI TTL-232R-3V3 heeft wel 5V-tolerante ingangen, maar kan de NES mogelijk niet betrouwbaar aansturen. Let op dat de USB ID 0403:6001 de FT232R-familie identificeert, maar niet aangeeft of de kabel 3,3V of 5V is.

Voor de verbinding kan een oude controllerkabel worden gebruikt, of een nieuwe vervangende controllerkabel/extensie die op maat wordt gesneden.

Aansluitingen

Schakel de NES uit en koppel de USB-kabel los voordat je de verbindingen maakt met controllerpoort 2:

FTDI pinNES controllerpoort 2Verbinding
GNDpin 1 — GNDdirect
RXDpin 3 — OUT0/LATCHvia een eigen 1 kΩ serieweerstand
TXDpin 4 — D0via een aparte 1 kΩ serieweerstand
VCC +5Vniet verbinden; isoleren
CTS#niet verbinden; isoleren
RTS#niet verbinden; isoleren

Belangrijke opmerkingen

  • Er moeten twee aparte 1 kΩ weerstanden worden gebruikt, één voor elke signaalrichting.
  • Verbind RXD en TXD niet met elkaar en verbind OUT0 niet met CTS.
  • Isoleer de ongebruikte VCC-, CTS- en RTS-leidingen individueel.
  • Sluit een normale controller aan op poort 1; deze wordt gebruikt om de luchthavencode in te voeren.

Pinout van de poort

Gezien vanaf de voorkant van de console (in de aansluiting kijkend):

  • Pin 1: GND
  • Pin 2: CLK
  • Pin 3: OUT0
  • Pin 4: D0
  • Pin 5: +5V
  • Pin 6: D3
  • Pin 7: D4

Controleer de oriëntatie zorgvuldig voordat je gaat solderen. De voorkant van de stekker en de soldeerzijde zijn gespiegeld. Bevestig dat je de pinnen telt in de bovenstaande volgorde en niet vanaf de achterkant van de connector. Raadpleeg bij twijfel de NESdev controller port pinout.

Controleer altijd de continuïteit van de pinnen. Vertrouw niet alleen op de draadkleur, aangezien NES-controllerkabels verschillende kleuren gebruiken. Identificeer de draden aan de NES-zijde via continuïteitsmeting en pinnummer, nooit enkel op basis van kleur. Een correct gebouwde kabel meet ongeveer 1 kΩ per signaal.