[SNES] [TUT] Mega Man X2X3 Multi Cartridge

  • Hallo snes-projects.de-Community,


    da ich mir vor längerer Zeit ein Mega Man X2+X3 gebaut habe und ich währenddessen auf einige Schwierigkeiten gestoßen bin, dachte ich, dass ich dieses Wissen in Form eines ausgearbeiteten Tutorials weitergeben könnte. Naja, hier nun ein Tutorial zum Thema, wie man die Multicartridge Mega Man X2+X3 baut. Ich muss aber noch anmerken, dass dieses Tutorial im Nachhinein entstanden ist. Somit kann ich euch keine WorkInProgress Bilder bieten.


    Benötigte Materialien:
    - Mega Man X2 Modul (*)
    - 29F032 auf Adapterboard Typ 3 (Type III) (**)
    - Clean Headerless ROMs von X2 und X3 (ich nehme US ROMs wegen 60Hz) oder bereits vorbereitete ROM-Datei im Anhang
    - An-An Schalter


    (*) Für diesen CartMod habe ich ein Rock Man X2 Modul (also jap. Version von Mega Man X2) benutzt. Es ist darauf zu achten, dass man ein Modul passend zu seiner Konsole (PAL zu PAL, NTSC zu NTSC) oder einfach den SuperCIC benutzt.
    (**) Es können auch zwei 29F016 benutzt werden. Dann werden natürlich auch zwei Adapterboards benötigt. Weitere Unterschiede, die sich hieraus ergeben, werde ich am Ende des Tutorials noch einmal benennen.


    Benötigtes Werkzeug:
    - Lötkolben
    - Lötzinn
    - Gamebit Schraubendreher für das Modulgehäuse
    - Heißkleber



    1. Vorbereitung


    1.1 Modulplatine vorbereiten


    Als aller erstes muss natürlich das Modul aufgeschraubt werden. Danach muss man beide Maskroms vom Board entfernen. Am leichtesten geht das, wenn man einen dünne Kupferlackdraht zwischen den Pins des Chips und dem Board hindurchfädelt. Dann muss man lediglich einen Pin nach dem anderen mit dem Lötkolben erhitzen und dabei an dem Kupferlackdraht ziehen. (s. Bild)




    1.2 Modulgehäuse vorbereiten


    Außerdem muss man natürlich noch ein Loch für den Schalter in das Modulgehäuse fräsen. Danach kann man den Schalter in das Gehäuse kleben. Ich habe mich, wie auf dem Bild zu sehen ist, dafür entschieden den Schalter unten rechts in der Rückseite des Gehäuses zu befestigen.




    1.3 ROM vorbereiten


    Hinweis: Im Dateianhang gibt es eine bereits vorbereitete ROM-Datei. Vollständigkeitshalber beschreibe ich dennoch die ROM Vorbereitung.



    1.3.1 X2 ROM mit FF auffüllen


    Bevor man weitermacht, muss man das X2 ROM noch mit "FF"-Blöcken bis 16Mbit auffüllen (bei X3 ist das nicht nötig, da X3 bereits genau 16Mbit hat). Ich benutze dazu den Hex-Editor "HxD". Mit diesem Editor öffnet man das ROM, geht mit Strg+Ende (Ctrl+End) ans Ende der Datei, geht dann auf Bearbeiten->Bytes einfügen..., stellt auf dezimal, gibt 524288 Bytes an, gibt bei Füllmuster FF an und klickt auf OK. Dann muss man die Datei nur noch abspeichern.




    1.3.2 ROMs mergen


    Um die beiden ROMs auf einen 32Mbit EEPROM zu kriegen, muss man die ROMs "mergen".
    Dazu braucht glücklicherweise nicht einmal ein Tool herunterzuladen, sondern der copy-Befehl in der Kommandozeile kann das bereits.


    Man muss nur den Befehl "copy /b X2_filled.sfc+X3.sfc X2undX3.bin" in der Kommandezeile aufrufen.




    2. EEPROM(s) beschreiben


    Hinweis: Dieser Schritt muss nur durchgeführt werden, wenn man den EEPROM selbst beschreiben will. Wenn man sich den EEPROM vom Händler mit dem vorbereiteten ROM beschreiben lässt, kann man diesen Schritt natürlich überspringen.


    Nun kommen wir zum Beschreiben des EEPROMs.
    Bevor man mit dem Beschreiben startet, empfehle ich, den EEPROM vorher zu löschen. Danach müsste der gesamte Chip mit "FF"-Blöcken versehen sein. Nun man muss lediglich den EEPROM mit der zuvor präparierten ROM Datei beschreiben.



    3. EEPROM auf die Platine löten


    Bevor man den 29F032 mit Adapterboard auf die Platine löten kann, muss man die Pins vom Adapterboard wieder entfernen, da nicht genug Platz im Gehäuse ist.
    Danach kann man den 29F032 mit Adapterboard einfach beim ersten, mit U1 gekennzeichneten Maskrom anlöten. Wie bei den anderen Modulen hat hat Nintendo mal wieder nicht das original Pinout verwendet. Man kann sich glücklicherweise, bis auf ein paar Ausnahmen, einfach an das 8bit 32-pin Maskrom Layout vom ROM Laboratory halten (http://nintendoallstars.w.interia.pl/romlab/snesroms.htm). Hier muss lediglich beachtet werden, dass Pin 1, 2, 35 und 36 vom Adapterboard nicht auf der Modulplatine vorhanden sind. Diese muss man sich einfach wegdenken. Das heißt, Pin 3 des Adapterboards an Pin 1 der Modulplatine, Pin 4 an Pin 2, ..., Pin 33 an Pin 31 und Pin 34 an Pin 32. Ich hoffe, dass man's so versteht.


    Was gibt es zu beachten:
    - Pin 24 des Adapterboards (/CE) wird mit Pin 18 (GND) verbunden
    - Pin 22 der Modulplatine (/CE) wird mit Pin 1 des Adapterboards (A20) verbunden
    - Pin 36 des Adapterboards (+5V) wird mit Pin 34 des Adapterboards (+5V) verbunden
    - Pin 2 des Adapterboards (A21) wird mit Pin 2 (mittlerer Pin) des Schalters verbunden
    - Die äußeren beiden Pins des Schalters müssen einmal mit +5V und einmal mit GND verbunden werden.




    4. Testen


    Hier der schönste bzw. manchmal auch der schlimmste Teil des Tutorials. Jetzt sollte man die Cartridge, bevor man sie wieder ins Gehäuse schraubt, einmal testen. Einfach vorsichtig die Platine in den Modulschacht stecken (Darauf achten, dass die Seite mit dem EEPROM und Cx4 nach hinten schaut!!).
    Nun nur noch den SNES einschalten und beten, dass es funktioniert!
    Am besten auch beide ROMs testen. Ich empfehle das ROM niemals während des Betriebs zu wechseln!



    5. Zusammenschrauben


    So...am Ende muss man das Modul natürlich nur noch zusammenbauen und verschrauben. Eventuell noch ein Label für die Vorder- und Rückseite drucken und aufkleben.





    A. Unterschiede bei der Verwendung von X3 als Donorcart oder bei der Verwendung von 2x 29F016


    A.1 Mega Man X3 als Donorcart


    Der Unterschied, wenn man X3 als Donorcart benutzen will, ist, dass X3 nur ein Maskrom hat. Das heißt, dass Pin 24 (/CE) mit Pin 24 (/CE) und Pin 1 (A20) mit Pin 1 (A20) werden können. Der Rest bleibt gleich.



    A.2 2x 29F016 anstatt 29F032


    Wenn man zwei 29F016 EEPROMs verwenden will, muss man die ROMs auf jeweils einen der beiden EEPROMs schreiben. Dann, anstatt mit dem Schalter den A21 Pin zu steuern, steuert man die /CE Pins der beiden EEPROMs (d.h. entweder EEPROM 1 /CE auf GND oder EEPROM 2 /CE auf GND). Damit das so funktioniert, muss auch noch jeweils ein 1k (oder 10k) Widerstand zwischen +5V und /CE auf den Adapterboards verbaut sein. Das /CE der Modulplatine bleibt dabei, wie zuvor, an A20 der Adapterboards.




    Hier dann noch Bilder von meiner fertigen Cartridge:




    Falls es noch Fragen geben sollte, stellt sie ruhig. Da dies mein erstes Tutorial hier war, würde ich mich auch über konstruktive Kritik freuen.


    Gruß
    Milka

    • Offizieller Beitrag

    Moin,


    so hatte nun mal Zeit das Tut zu sichten. Ist ja an sich ganz Easy. Da wir im geschlossenen Bereich sind, wäre die ROM auch noch Interessant.


    Kannst du mir die mal schicken. Dann stelle ich noch ein paar Infos bereit. Des Weiteren werde ich dann mal meinen pic code anpassen um die beiden tsops zu schalten.


    Gruß


    red

  • Moinsen,


    habe mir heute mal ein MMX2/MMX3 Modul gebastelt. Dafür habe ich als Donorcart ein Rockman X3 genommen. Als Flashrom habe ich einen 29F033 auf entsprechenden Adapterboard verwendet.
    Eine Frage und eine Anmerkung habe ich zum Tutorial noch...


    Frage:
    Es ist meine erste Repro. Was ich nicht verstanden habe, ist, warum man haederless ROMS verwendet? Gibt es einen Grund dafür?
    (ich habe spontan ROMs mit Haeder verwendet, da ich für das U16-Menü n vernünftige Anzeige haben möchte, welches Spiel gerade ausgewählt ist.)


    Anmerkung:
    Auf dem Rockman X3 ist ein 40Pin Maskrom. Pin 3 bis Pin 38 entsprechen dabei einer 36Pin Maskrom. Diese habe ich (fast) 1:1 mit dem Adapter Board verlötet. Einzig Pin2 (A20) des Boards habe ich verwendet, um zw. MMX2 und MMX3 zu wechseln. Eine weitere Besonderheit befindet sich bei Pin33 (/OE). Dies ist normalerweise mit Pin 27 vom Cx4 (/RCE1) verbunden. Wenn man dies so verlötet, läuft MMX2 nicht, da das Spiel ja eigentlich zwei Maskroms hat und der Cx4 zwischen /RCE1 und /RCE2 (auf der MMX3 Donorcart nicht verbunden) umschaltet. So belibt das Spiel nach dem "Capcom" Logo einfach schwarz.
    Also muss man entweder:
    - Pin33 mit GND verbinden, oder
    - /RCE1 udn /RCE2 mit einem AND-Gatter verknüpfen und dessen Ausgang an das Adapterboard Pin33 löten (optimale Lösung, mit einem 74HCT1G08 gut zu machen), oder
    - Pin33 vom Adapterboard mit Pin24 vom Adapterboard verbinden (habe ich so gemacht, da gerade kein 74HCT1G08 zur Verfügung hatte)


    (Ich weiß, ein wenig verwirrende Bezeichnungen. Ich halte mich hierbei an folgenden Pinoutbezeichungen: Maskrom, Cx4). Demnach ist tatsächlich /OE mit /RCE1 verbunden und /CS mit /ROE, obwohl man es anders herum erwarten würde.)


    Anyway, jetzt läuft es erst mal. Noch ist ein einfacher Steck-Jumper zur Auswahl angelötet. Der wird aber ersetzt, wenn ich demnächst noch n Flashrom für MM7 und MMX einlöte und das ganze per MC umgeschaltet wird :)

    • Offizieller Beitrag

    Grüß dich meiner,


    das Problem bei X3 hatte ich am Anfang auch. Hatt mir dafür extra nen schönes Diagramm gemacht! :D Hast du wie es schaut due nötige HW ja schon besorgt zum bauen.


    Thema Header: Das was du denkst hat nix mit dem ROM namen selbst zu tun.


    Der interne Header bei MMX3 geht ja bei 0x7FB0 los. / Bei 7FC0 kommt dann MEGAMAN X3 - Wenn du das raus genommen hättest, hätte die ROM glaub ich nicht so richtig funktioniert! :D


    Der "Header" von dem immer alle reden, sind 200byte gemeint die am Anfang der ROM stehen.


    Der geht dann von 0 bis 1FF. Die ist aus Zeiten der "Kopiergeräte" aller Wildcard. Diese nutzten die 200 bytes für Informationen des einzelnen Kopiergeräte. Heute wird das nicht mehr gebraucht, in Zeiten von Retrode usw.


    gruß


    red

  • Danke für die Erläuterung zum Thema Header. Ja, da habe ich zu sehr an den ROM Haeder gedacht, wo Name, Speichergeschw., Region, etc. pp. drinnen steht :wacko:


    Ja, für den restlichen Umbau habe ich bereits die nötige Hardware ;) Habe mir da was feines ausgedacht, wie ich den Cx4 'deaktiviere' (Er wird nicht direkt deaktiviert, da (vermutlich) kein passender Pin dafür da ist. (es könnte ein GND Pin dafür zuständig sein)). :D Wie genau, das kommt später ;) Ich warte nur noch auf eine Lieferung von OSH Park...


    Später dann mehr :bye:


    PS: derzeitiger Stand



    Der Speicher für MM7/X kommt dann 'vor' den Cx4 ;) das dann aber in einen separatem Thread.

    • Offizieller Beitrag

    Grüße,



    ich weiss nicht ob du das kennst, aber ich glaube via Pin 26/27 wäre ein versuch wert.


    Anmerkung auch mal von mir. Die ROM von oben hat bei MMX2 kein Regioncheckfix drin.


    Ich wollte an sich mal sowas nachbauen, aber keine Zeit. Hast du das jetzt etwa schon gemacht?!



    Gruß


    red

  • Der MMX-Adapter ist ja schniecke ;) Hatte sowas auch im Sinn, aber nicht da :P Und ändern werde ich es jetzt nicht mehr :D


    Regionencheckfix??? Meinst du $213f-Abfrage??? Du weißt doch: bei mir gibt es nur Konsolen mit Regionenpatch :P Und ich lasse extra den CIC drinnen, damit der SuperCIC-lock auch immer schön NTSC erkennt, wenn ich mal nicht das U16 nutze. (Ich nutze US-ROMs, habe alles selber gemacht und nicht das vorgefertigte von oben.)



    Grüße,



    ich weiss nicht ob du das kennst, aber ich glaube via Pin 26/27 wäre ein versuch wert.


    Ist identisch zu:


    - /RCE1 udn /RCE2 mit einem AND-Gatter verknüpfen und dessen Ausgang an das Adapterboard Pin33 löten (optimale Lösung, mit einem 74HCT1G08 gut zu machen),


    Habe mir n Paar Samples bei TI geordert. ;) Dann kommt das UND Gatter an die gehobenen Cx4 Pins 26 und 27 und der Ausgang ans Pad von 27.
    Brauche die 74HCT1G08 eh noch für meine kleine PCB von OSHPark, da ich per Reset oder Taster umschalten möchte und dort Resetsignal vom SNES und vom Taster per UND-Gatter verknüpfen werde :)


    VG

  • Ui, nimmt das Ganze wirklich Formen an. Respekt! :thumbup:
    Hab hier auch noch irgendwo ein X³ PCB rumfliegen... :D


    Hab unser von unserem speziellem Progrämmchen ;) jetzt auch noch eine Version gemacht mit dem man quasi per Taster das Spiel für den nächsten
    Start vorwält. Ein Kumpel meinte bei seinem SNES wird mit RESET jedesmal zwischen 50/60Hz umgeschaltet und er hatte keine große Freude als ich ihm mein Zelda geliehen habe. ^^


    Danke nochmal für die freundliche Hilfe von Dir!

  • Ist identisch zu:


    einmal der Vollständigkeit halber die Methode mit dem AND-Gate ;)


    Ich habe Pin 26 und 27 angehoben, darunter das AND-Gate (auf dem Kopf gedreht) geklemmt und angelötet. Den Ausgang habe ich mit dem Pad von Pin 27 verbunden. Das ganze sieht dann so aus.



    Der Flashspeicher ist jetzt wieder 1:1 angelötet (bis auf das MSB vom Adressbus zur Spieleauswahl).


    PS: die Flussmittelreste sind nicht von mir, sondern waren im Lötzinn, mit dem der Cx4 angelötet ist. Die werde ich am Ende meines Kleinprojektes entfernen.