# 10NES

Il 10NES è un sistema di protezione sviluppato da Nintendo per la sua console Nintendo Entertainment System (NES).
Fu progettato per evitare che gli sviluppatori di videogiochi pubblicassero titoli non autorizzati da Nintendo. In seguito, quando la console fu distribuita su più mercati, fu usato anche per evitare che giochi sviluppati per una determinata regione geografica o per una specifica versione della console fossero usati su sistemi diversi da quelli per cui erano stati progettati.

## Storia

La versione della console presentata nel 1983 sul mercato giapponese, denominata Famicom, non presentava nessun sistema di blocco del software. Per questo motivo in commercio esistevano sia giochi prodotti direttamente da Nintendo che titoli pubblicati da produttori terzi, con o senza licenza. Quando Nintendo decise di commercializzare il NES a livello internazionale, partendo dal mercato americano, scelse di adottare un sistema di protezione digitale affinché potesse avere il pieno controllo sul software che poteva essere eseguito sulla console. Nintendo temeva, infatti, che la pubblicazione di giochi di scarsa qualità prodotti da piccoli sviluppatori avrebbe rovinato la reputazione del NES, come era già successo all'Atari 2600, che aveva visto la proliferazione di produttori terzi che pubblicarono titoli di second'ordine senza licenza Atari che compromisero irrimediabilmente la reputazione della console stessa e dei suoi giochi. Come conseguenza di ciò le vendite della console crollarono e l'intero settore arrivò quasi al collasso nella famosa crisi dei videogiochi del 1983.
Fu perciò sviluppato il sistema 10NES quale "blocco" (da cui il nome lockout con cui era conosciuto il chip) per impedire l'utilizzo di cartucce non autorizzate: il sistema era brevettato ed il codice sorgente chiuso, pertanto solo Nintendo poteva produrre tali chip, che dovevano essere inseriti in ogni cartuccia prodotta per il NES, pena il non funzionamento del gioco.
Grazie al 10NES Nintendo poteva effettuare un rigido controllo sui giochi pubblicati: si faceva inviare i giochi da pubblicare, li inseriva nelle cartucce, dotava ognuna di esse di un chip di blocco e poi rivendeva il prodotto finito allo sviluppatore, che solo allora poteva commercializzare il gioco. Nintendo adottava anche una ferrea politica di licenze: ad ogni sviluppatore era concesso di pubblicare non più di 5 titoli l'anno. Inoltre, prima di 2 anni, questi giochi non potevano essere distribuiti per altre piattaforme.
Il NES non fu commercializzato a livello internazionale nello stesso periodo di tempo. Nintendo scelse di introdurlo su differenti mercati in diversi momenti. Iniziò la distribuzione dagli Stati Uniti nel 1985, poi nel 1986/1987 fu la volta del Canada, dell'Australia e Nuova Zelanda e dell'Europa.

## Funzionamento

Nintendo divise gli Stati che adottavano lo standard PAL nei quali erano commercializzate le Game Pak in 2 regioni geografiche, ovvero:
* PAL A: Gran Bretagna, Italia e Australia;
* PAL B: Francia, Spagna, Germania, Svezia e Europa del nord.
A causa di tale differenziazione il chip 10NES impediva non solo ai giochi "NTSC" di poter girare sui sistemi "PAL" ma, curiosamente, anche ai giochi "PAL-A" di poter essere eseguiti sulle console "PAL-B" e viceversa. La console versione "PAL-A" era prodotta e distribuita da Mattel.
Il sistema si compone di 2 microprocessori a 4 bit che lavorano in coppia come master e slave: il primo è saldato sulla scheda madre della console, il secondo direttamente all'interno della cartuccia del gioco. Quando una cartuccia viene inserita all'interno del NES, il 10NES master interroga la controparte slave: i 2 chip si scambiano delle informazioni cifrate utilizzate per l'autenticazione del gioco. Se la cartuccia non fornisce l'autenticazione richiesta (perché il chip slave è assente o perché la cartuccia è destinata ad un mercato differente) il 10NES master inizia a resettare la console 1 volta al secondo (frequenza di 1 Hertz) finché non viene inserito un gioco con la corretta autorizzazione. Il costante reset della console impedisce alla CPU di avviare il gioco contenuto nella cartuccia. Se la comunicazione tra i 2 chip non era perfetta, e ciò poteva accadere ad esempio per dello sporco presente sul connettore della cartuccia, il sistema alle volte attivava il reset anche con l'inserimento di giochi autorizzati per il sistema in uso.
Il 10NES fu registrato con brevetto statunitense n° 4799635 ed il codice sorgente fu messo sotto copyright. In questo modo solo Nintendo poteva produrre i chip di autorizzazione. Il brevetto che copriva il chip 10NES è scaduto il 24 gennaio 2006 ma il copyright sul codice è ancora attivo.
Il 10NES fu usato nel NES originale (modello 100) ma non nella successiva revisione della console denominata NES 2 (modello 101), uscita solo negli Stati Uniti (NTSC-U), in Australia e in Nuova Zelanda (PAL). La versione PAL è rarissima e introvabile. Il chip 10NES fu prodotto in diverse versioni, a seconda del mercato a cui era destinato: la 3193 per gli Stati Uniti ed il Canada, la 3196 per l'Asia, la 3197 per la zona PAL-A (Italia, Gran Bretagna ed Australia) e la 3195 per la zona PAL-B (i restanti Paesi europei).

## Sistemi per superare il blocco

Alcune società produttrici di videogiochi studiarono dei sistemi per aggirare il chip 10NES. Tale scelta era dettata sia dal fatto di non essere in possesso di una licenza ufficiale sia dalla volontà di produrre più giochi di quelli consentiti dalle politiche di Nintendo (non più di 5 l'anno). Alcuni sistemi, come quelli ideati da Color Dreams, prevedevano l'invio di un picco di tensione negativa al chip, che ne provocava il blocco, altri sistemi (come le cartucce giochi di HES, Home Entertainment Suppliers) prevedevano l'utilizzo di un adattatore a cui collegare una cartuccia originale in modo da utilizzare il suo chip 10NES per l'autenticazione di quello senza licenza.
Una delle prime società che affrontò il problema in maniera diretta fu Tengen, una sussidiaria di Atari che produceva giochi per le console domestiche. Essa decise infatti di replicare il chip reingegnerizzando il 10NES partendo dall'analisi dei segnali e dall'osservazione della struttura del core del chip. Contemporaneamente ottenne in modo fraudolento gli schemi del chip dall'Ufficio brevetti americano, sostenendo che essi gli sarebbero serviti per intentare una causa legale contro Nintendo. Secondo alcuni fu grazie a questi schemi che Tengen riuscì a replicare il 10NES, mentre secondo Ed Logg, un programmatore di Atari, gli schemi arrivarono presso l'azienda quando ormai i tecnici avevano già riprodotto il chip per proprio conto. Il chip che replicarono fu chiamato Rabbit: esso generava gli stessi segnali del 10NES, rendendo possibile creare cartucce non autorizzate da Nintendo.
Nintendo denunciò Tengen per violazione di brevetti ed il tribunale che esaminò il caso reputò Tengen non colpevole della violazione dei brevetti riguardanti le porzioni di codice che gestivano il sistema di protezione perché Tengen, secondo il giudice che esaminò il caso, utilizzò un microprocessore ed un linguaggio di programmazione differenti rispetto a quelli utilizzati da Nintendo. Il giudice obbligò però Tengen a non utilizzare il restante codice che riguardava la comunicazione fra il chip e la console, permettendo quindi a Nintendo di poter aggiornare in futuro il sistema e bloccare tentativi di aggiramento del blocco come quelli effettuati dal chip Rabbit.
Una volta scaduto il brevetto sul 10NES, il lavoro fatto da Tengen con il suo chip Rabbit è stato utilizzato da una piccola società chiamata RetroZone, che ha realizzato, reingegnerizzando il Rabbit, un chip chiamato Ciclone che permette di aggirare il blocco regionale dei giochi NES. L'unico limite è che esso opera solo in modalità NTSC.
Recentemente è stato scoperto che tagliando uno dei piedini del chip, il 10NES viene disattivato, permettendo alle cartucce PAL-B di poter essere utilizzate sulle console PAL-A e viceversa. Tale modifica permette anche di poter utilizzare molti dei giochi scritti espressamente per i sistemi NTSC sulle console PAL ma non viceversa, a causa dei differenti periodi degli interrupt Vblank impiegati nei 2 sistemi.