[NES] MultiCIC AVRCICzz V3 in Cartridge einbauen

  • In diesem Tutorial werde ich euch erklären, wie ihr den AVRCICzz V3 (MulitCIC) in eine NES Cartridge einbaut.
    Der MultiCIC stammt ursprünglich von Krikzz (Urvater und Obergott der Everdrives!) und ist ein Teil des Everdrive N8 für den Famicom bzw. das NES.
    Er hat die Aufgabe dafür zu Sorgen, dass das N8 auch wirklich auf allen Konsolen lauffähig ist, selbst wenn diese keinen deaktivierten Lockout haben 8)
    Diesen Code wollen wir uns zu nutze machen, um einfache NES Spiele multiregional zu machen ;)
    Welchen Sinn das hat?
    Naja, ihr könnt bspw. jemandem, der seine Konsole nicht modden will oder kann, eine Freude mit einem Spiel machen, welches ursprünglich nicht auf seiner Konsole laufen würde.


    ______________________________________________________________________________________________________


    Die Gliederung des Tutorials

    1. Benötigte Teile / Benötigtes Werkzeug


    2. Entfernen des CIC


    3. Programmieren des neuen CIC


    4. Anbringen der Litzen


    5. Verlöten

    ______________________________________________________________________________________________________


    Disclaimer:


    Ich stelle hier selbstverständlich nur das Tutorial bereit und bin nicht haftbar für Schäden, welche durch die Befolgung dessen entstehen!


    ______________________________________________________________________________________________________



    1. Benötigte Teile / Benötigtes Werkzeug


    Was brauchen wir denn zuerst alles um diesen Mod umsetzen zu können?


    Benötigte Teile:


    • 1 x ATMEL ATTiny13 oder ATTiny13A (z.B. bei eBAy - Klick mich )
    • Code von Krikzz (Download )
    • Programmer für ATTiny13(A)


    Benötigte Werkzeuge/Hilfsmittel:


    • Lötkolben
    • Lötzinn
    • Entlötlitze / Entlötpumpe
    • Litzen
    • GameBit zum öffnen und schließen des Moduls



    2. Entfernen des CIC


    Zuerst müsst ihr natürlich die Cartridge mit Hilfe eines GameBits öffnen.
    Habt ihr dies getan, so holt ihr die Platine heraus und legt diese vor euch auf den Tisch.
    Meist befindet sich der CIC am linken Rand der Paltine und trägt die Bezeichnung "3195A".



    Dieser muss nun weichen, um seinem Nachfolger Platz zu schaffen :)
    Am einfachsten könnt ihr solche Chips auslöten, indem ihr die Pins mit dem Lötkolben von der Vorderseite erhitzt und das flüssige Lötzinn dann mit einer Entlötpumpe von der Rückseite absaugt.



    Habt ihr alle Pins durch, solltet ihr den CIC einfach herausziehen können.


    Eine andere Methode ist auch, die Pins oberhalb des Chips abzuknipsen, diese dann einzeln mit dem Lötkolben erhitzen und mit einer Pinzette herausziehen.


    Egal wie immer ihr auch vorgeht, sollte das Resultat folgendermaßen aussehen:





    3. Programmieren des neuen CIC


    Entpackt zuerst das heruntergeladenen Archiv in einen Ordner.
    Betrachtet ihr den Inhalt, so findet ihr folgende Dateien:


    • avrciczz.asm - Dies ist der Sourcecode des AVRCICzz V3 und uninteressant für euch (es sei denn, ihr wollt ihn weiterentwickeln oder modifizieren)
    • avrciczz.elf - Interessant für manche Programmer, da hier bereits gleich die korrekten Fuse-Einstellungen geladen werden
    • avrciczz.hex - Der kompilierte Sourcecode im Hex-Format (Dies ist die interessante Datei)
    • fuse.png - Fuse-Einstellungen für manuellen Gebrauch
    • readme.txt - Ein paar wichtige Infos von Krikzz


    Je nachdem was ihr für einen Programmer habt, ist entweder avrciczz.hex oder avrciczz.elf für euch interessant.
    Da mein Programmer nicht mit der .elf-Datei anfangen kann, werde ich die .hex-Datei nehmen und die Fuse-Einstellungen selbst vornehmen.


    Startet also euer Chip-Brennprogramm, wählt den ATTiny13(A) aus und ladet die avrciczz.hex-Datei als INTEL-HEX in den Code-Memory.
    Der Data-Memory Bereich bleibt hierbei leer.
    Als nächtes kommt der etwas kompliziertere Teil, die Fuse-Einstellungen (Config).
    Hier müsst ihr tierisch aufpassen was ihr macht!
    Einmal den falschen Wert eingetragen, kann dies u.U. den ATTiny13(A) unbrauchbar machen.


    Konfiguriert das Fuse Low Byte folgendermaßen:


    • SPIEN=0
    • SUT1=0
    • SUT0=0
    • CKSEL1=0
    • CKSEL0=0


    Je nach Programmer könnt ihr auch einfach folgendes Einstellen: "Ext. Clock: Start-up time: 14 CK + 0 ms: [CKSEL=00 SUT=00]" und zusätzlich SPIEN=0 aktivieren.


    Und das Fuse High Byte so:


    • BODLEVEL1=0


    Das ganze sieht bei meinem TL866A dann folgendermaßen aus:



    Jetzt nur noch ab auf den Chip damit!




    4. Anbringen der Litzen


    Da der ATTiny13(A) leider nicht Pin-Kompatibel mit dem originalen CIC ist, müssen wir an dieser Stelle nun ein Rewiring vornehmen.
    Hierzu müssen wir an den entsprechenden Lötstellen auf der Platine je ca. 5cm lange Litzen anbringen.
    Das Pinout des originalen CIC sieht folgendermaßen aus:



    (Quelle: NESDev)


    Von diesem benötigt der AVRCICzz V3 die Pins 1, 2, 5, 6, 7, 8 und 16.



    Richtig verlötet sollte das ganze dann in etwa so bei euch aussehen:



    Beachtet hier bitte, dass der original CIC kopfüber zu euch steht, wenn die Pins der Platine zu euch zeigen.




    5. Verlöten


    Zusammenfassend solltet ihr nun folgende Punkte erledigt haben:


    • Originalen CIC aus Modul entfernen
    • Den neuen MultiCIC (AVRCICzz V3) auf einen ATTiny13(A) geschrieben
    • Litzen an die benötigten Lötstellen, an der sicher originale CIC vorher befand, angebracht


    Der letzte Schritt ist somit, den neuen MultiCIC passend über die Litzen mit der Platine zu verlöten.
    Hierfür braucht ihr erstmal das Pinout des beschriebenen ATTiny13(A)s.



    Dieses findet ihr aber auch in der avrciczz.asm Datei als Kommentar.


    Pin 3 (led) muss nicht unbedingt belegt werden.
    Hierbei bleibt es euch überlassen, ob ihr eine zusätzliche LED als Statusanzeige anbringen wollt.
    Diese leuchtet dann, sobald der MultiCIC die Region switched.
    Ich persönlich lasse die LED grundsätzlich weg, da es aus meiner Sicht keinen Sinn macht dies anzuzeigen, zumal sich das Modul sowieso in der Konsole befindet.


    Wichtig sind also nur die Pins 1, 2, 4, 5, 6, 7 und 8.



    Für das Verlöten habe ich hier schonmal die Beinchen gekürzt und mit Lötzinn überzogen.


    Verlötet also mittels der angebrachten Litzen nach folgendem Schema die Platine mit dem ATTiny13(A):


    Pin original CIC -> Pin ATTiny13(A)


    5 -> 1
    6 -> 2
    8 -> 4
    1 -> 5
    2 -> 6
    7 -> 7
    16 -> 8


    Das wars dann auch schon!



    Jetzt müsst ihr nur noch das Modul wieder zuschrauben und los geht der Spaß!


    Anbei noch ein Video, in welchem Krikzz demonstriert, wie der MultiCIC konfiguriert wird:


    [video]

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]


    Blinkt die Konsole, müsst ihr einfach so oft Reset drücken, bis die LED der Konsole wieder konstant leuchtet.


    P.S.: Einmal eingestellt behält das Modul den Regionscode bei, bis dieser wieder durch wiederholtes mehrmaliges Drücken der Reset-Taste geändert wird.


    P.P.S.: Der MultiCIC fängt erst ab dem 3. Reset an den Code zu switchen.

  • :) Mache ich doch gerne! Auch wenn mein Wissen und Können noch stark begrenzt ist, möchte ich dieser Community gerne etwas zurück geben.
    Ich designe gern solche Sachen nur an Ideen fehlt es mir meistens. :) Und in diesem Fall war es ja wirklich nur ein "Rewire".