Moin Community,
angefangen hat es am 08.12.2013 im Circuit-Board als mi213 bei dem Design für ein Controllerreset brauchte. Verwirklichen wollte er das ganze auf dem Attiny85. micro hatte ihm stark unter die Arme gegriffen und recht schnell war dann auch n passende Version fertig ;). Parallel dazu wollte ich dann noch den Controllerreset für den PIC 12F629 fertig machen. mein PICKit 3 braucht halt auch seine Daseinsberechtigung :D.
Hier kann man nochmal einiges Nachlesen: http://circuit-board.de/forum/viewtopic.php?f=19&t=12108
Nach dem Umbau kann die Konsole per A+B+Start+Select resettet werden! Der Nachbau dauert keine Stunde
Und nun zum eigentlichen Tutorial
Hinweis:
Das Tutorial ist hauptsächlich für das europäische NES geschrieben, welches auch in den Bildern gezeigt wird. Es kann jedoch beliebig adaptiert werden.
0. Benötigte Werkzeuge und Materialien
Prinzipiell ist die Liste der Werkzeuge und Materialien doch recht übersichtlich
- PIC 12F629
- 100nF Kerko
- Lötausrüstung
- Schraubendreher (Kreuz)
- Optional: Sockel für den PIC
Natürlich sollte man den PIC auch beschreiben können!
1. PIC beschreiben und vorbereiten
Zunächst muss der PIC natürlich beschrieben werden! Das Hex-File habe ich in meiner Dropbox zur Verfügung gestellt und kann hier downgeloaded werden: https://dl.dropboxusercontent.…_IGR_Tutorial/nes_igr.zip
Benötigt wird nur das Hex-File, wer am Assemblercode herum schreiben möchte, kann dies gerne tuen
Hinweis:
Der PIC läuft mit seinem internen Takt von 4Mhz! Dieser wird über das sogenannte OSCCAL-Register kalibriert. Da dieser am Anfang des Programms abgefragt wird, ist es essenziell wichtig, dass dieses Register NICHT überschrieben wird bei der Programmierung des PICs! Gerade wer Programmiergeräte verwendet, die nicht von Microchip sind, sollte tunlichst darauf achten!!!
Zur Vorbereitung des PICs ist nicht viel zu sagen - es kann in zwei Schritte geteilt werden:
- Kerko von 100nF zwischen Pin 1 (Vcc) und Pin 8 (GND) löten, damit der interne Oszillator auch mit 4MHz arbeitet
- Pin 4 muss entsprechend des Resettyps auf GND oder Vcc gelegt werden.
Konkret heißt das:- Konsole hat "/Reset" (Famicom): Pin 4 auf GND legen, d.h. mit Pin 8 verbinden
- konsole hat "Reset" (NES): Pin 4 auf Vcc legen, d.h. mit Pin 1 verbinden
2. Vorbereiten der Konsole
Wie man die Konsole aufschraubt, muss ich sicherlich nicht ausdrücklich beschreiben. Ich habe auch keine Fotos. einfach solange Kreuzschrauben lösen (das sind ein Paar), bis man das Mainboard in der Hand hat
Hinweis:
Es gibt zwei längere Schrauben an der Modulmechanik. Diese müssen natürlich anschließend zwingend auch wieder an Ort und Stelle platziert werden! Generell gilt jedoch, dass alle Schrauben wieder dort hin sollten, wo sie waren, weil die Gewinde im NES aus Plastik sind - am Besten entsprechend der Position im NES auf einem separatem Tisch hinlegen...
Auf der Rückseite sind dann ein Paar ICs, an die wir gemütlich einige Litzen vorbereiten können. Die Litzen erst mal nicht zu kurz wählen. Hier einmal in der Übersicht:
Wir müssen an folgende ICs ran:
- CPU
- CIC (hier habe ich beispielhaft die Litzen für Vcc und GND angebracht)
- 74HC368 (U7)
Los gehts
2.1. Vorbereitung an der CPU
Hier eine Litze an Pin 39 und eine Litze an Pin 36 anlöten. damit alles super sitzt, sollte natürlich Pin und Litze verzinnt sein.
2.2. Vorbereitung am CIC
Hier kommen insgesamt drei Litzen ran - eine für Vcc, eine für GND und eine für den Reset.
- Vcc liegt an Pin 16 an
- GND liegt an den Pins 12 - 15 an (ich habe Pin 12 gewählt)
- Resetsignal kommt beim CIC an Pin 7 an
An den drei Stellen bereiten wir Litzen vor.
Pin 7 sieht so komisch aus, weil ich den Pin vom Mainbpard getrennt hatte, um den Switchless-Mod für die RGB-Platine zu testen. Pin 7 habe ich mit einem kleinen Draht jetzt aber wieder mit der Durchkontaktierung verbunden, weil ich den Pin nicht zurück biegen wollte.
Anmerkung:
Vcc und GND können natürlich noch an vielen Stellen im NES entnommen werden!
Wer in seinem NES noch nicht den Lockout-Chip deaktiviert hat, kann dies gleich mitmachen: einfach Pin 4 des CIC vom Mainboard trennen. Wer es ganz sauber haben will, verbindet den Pin 4 noch mit GND (ich habe dazu Pin 14 gewählt). Dann kann man auch PAL-A und US-Spiele an seiner PAL-B NES zocken
2.3. Vorbereitung am 74HC368 (U7)
Oben rechts am Mainboard befinden sich zwei 74HC368 - einer für Player 1 (U7) und einer für Player 2 (U8). Da der Controllereset für Player 1 sein soll, machen wir uns an U7 zu schaffen und löten eine Litze an Pin 2.
3. PIC 12F629 einbauen
Nachdem wir nun die Litzen vorbereitet haben, suchen wir uns ein gemütliches Plätzchen für den PIC aus. Ich habe den Bereich zwischen CPU und und PPU aus. Ich habe den PIC mit Heißkleber fixiert. Im Überblick schaut das ganze jetzt so aus.
Damit man nicht jede Litze einzeln nachverfolgen muss, hier nochmal in Detail
Im asm-File ist das ganze wie folgt dokumentiert:
; pin configuration: (controller port pin) [Mainboard pin]
; ,------_-----.
; +5V (7) [CIC Pin 16] |1 8| GND (1) [CIC Pin 15]
; Reset in/out (-) [CIC Pin 7] |2 GP5 GP0 7| serial data in (4) [U7 74HC368 Pin 2]
; not connected out |3 GP4 GP1 6| latch in (3)[CPU Pin 39]
; Reset type in |4 GP3 GP2 5| clk in (2) [CPU Pin 36]
; `------------'
4. Abschließende Schritte
nun ist der Mod fertig Vor dem Zusammenschrauben des NES am Besten noch einmal testen. Der Reset wird mit der Tastenkombination
A+B+Start+Select
ausgelöst. Beim Reset geht die Power-LED kurz aus, was aber normal ist. Das ist mir auch vorher noch nie aufgefallen ;).
Wenn alles funktioniert, kann der NES wieder zu gemacht werden!
Viel Erfolg beim Nachbauen
An dieser Stelle nochmal vielen Dank an mi213 für die Idee und an micro für die Oszi-Bilder