Mike McBike @ Home / Arcade Reps Teil 4 / Sega System C-2 Conversion


{Sega System C-2 Conversion} Manchmal möchte man Dinge Tun, einfach, weil man sie kann. Wenn das Können dann nicht reicht, muss man warten, bis schlauere Leute einem den Weg bereiten. So geschehen beim berüchtigten Sega C-2-System, welches eine trickreiche Copy-Protection in Form eines programmierbaren Logikbausteines enthält. Man kaufe billiges Tetris-Spiel (Puyo Puyo):

System C-2

Japanbunt und putzig:

System C-2

System C-2

System C-2

{Technisches} Diese PCB aus der Sega System C2 Serie nervt nicht durch irgendwelche Suicide-Attitüden, dafür durch eine fiese Copy Protection, die einen auf der PCB verbauten Baustein vom Typ Altera EPM5032 abfragt. Genau nach dem Prinzip, wie es auch mit Dongles im PC-Software-Bereich geschieht. Hier ist alles drauf:

System C-2

Der EPM5032 - quasi ein registered GAL mit CPLD Anwandlungen...

System C-2

System C-2

System C-2

System C-2

{Conversion}Man kann sich jetzt die Mühe machen, den Baustein zu verstehen oder aber man entfernt alle Abfragen aus dem Programm Code und erzeugt dafür eine gepatchte ROM-Version. Letzteres haben schlaue Leute in den Weiten des Internet gemacht und freundlicherweise veröffentlicht. Man ignoriert also den EPM und tauscht die EPROMs aus. Dabei darf man nicht vergessen auch die Jumper richtig zu setzen, die die entsprechenden unterschiedlichen EPROM-Größen einstellen:

System C-2

Ist ja klar, dass gerade auf meinem Board einer der Jumper total beschädigt war... Pin abgebrochen...

System C-2

Mir doch egal:

System C-2

Statt der 27C1000 stecken nun für den Shooter 27C020 drin. Das Ergebnis:

System C-2

System C-2

Die ROM Images für Puyo Puyo 2 gibt es hier:
http://mikejmoffitt.com/articles/0047-puyopuy2.html

Die ROM Images für Thunder Force AC hier:
http://www.neo-arcadia.com/forum/viewtopic.php?t=58870


{Reverse Engineering} Wer mich kennt, weiss, dass ich mich nicht mit einfachen Nachbauten zufrieden gebe, ich will verstehen, was da gemacht wurde! Also CSI Filderstadt... am Beispiel Thunder Force AC habe ich mal die Copy Protection Umgehung analysiert.

Schritt 1 - Welche ROMs sind unterschiedlich?

Alle ROMs in den ROM-Wizard einlesen und die Prüfsummen vergleichen.
IC4: O.K.
IC31: O.K.
IC32: Differiert.
IC33: O.K.
IC34: O.K.

Schritt 2 - Wofür sind die ROMs da?
MAME Source Code lesen.

System C-2

IC31 und IC32 sind 68000er Programm Code (war ja eh klar...)

Schritt 3 - Unterschied herausfinden, Dafür gibt es für Windoof ein kostenfreies Programm mit dem Namen NWDIFF.EXE... einfach, miese GUI aber sehr hilfreich...

System C-2

System C-2

Fazit: die funktionierende von der nicht funktionierenden Software unterscheidet sich in genau einem (1) Byte...

Schritt 4: Codeanalyse

68000er Progroms in 8-Bit Eproms haben den Nachteil, dass High-Byte und Low-Byte in getrennten Bausteinen und damit in getrennten Dateien aufbewahrt werden. Zum Glück für uns alle gibt es das phantastische ROM-Wizard (t) Programm, mit dem man ganz einfach die beiden Files zu einem linearen Datenfile zusammenbauen (mergen) kann:

System C-2

System C-2

Was jetzt high oder Low und in welcher Reihenfolge sinnvoll ist, probiert man am Besten aus, ich kann mir das auch nie merken... wenn man nachher die Texte lesen kann, war's richtig.

System C-2

Und hier der programmtechnische POI (Point of Interest) --> 0x209F * 2 = 0x413E:

System C-2

Schritt 5: Disassemblierung

Einen kostenlosen 68000er Disassembler findet man unter https://sourceforge.net/projects/decompiler/. Binärfile einlesen lassen und vorher dem Disassembler noch mitteilen, dass er das bitte als 68k Coder verstehen möchte...

System C-2

Da findet sich doch die 0x60 wieder, die früher mal eine 0x67 war... Kann es sein, dass da wer einen unbedingten Sprung (bra - branch always) aus einem bedingten Sprung gemacht hat (beq - branch on equal) - so einfach kann es sein...

Bei Puyo Puyo 2 sind die Verhältnisse ähnlich gelöst: Die Analyse ergibt zwei unterschiedliche ROMs: IC31 und 32.

System C-2

Genau 4 Bytes unterscheiden sich:

System C-2

Sega Mega Drive...

System C-2

Im Original: ein Register Ladebefehl:

System C-2

Ohne Copy Protection: einfach ausge-NOP-t...

System C-2


© 2013 - 2023 · W. Robel e-Mail senden