SuperCIC Lock: Bus-Patching mit dem D4-Ausgang (Pin 3)
Verfasst: 10. April 2012, 14:11
Der D4-Ausgang (Pin 3) wird vom SuperCIC auf die tatsächliche Region des erkannten Modul-CIC gesetzt, unabhängig von der Einstellung des Videomodus.
Der Wert des D4-Ausgangs muss immer dann, wenn die CPU Register $213f abfragt, auf Bit 4 des CPU-Datenbus gelegt werden. D.h. wenn PA[7:0]=00111111 und /PARD=0, dann D4 auf den Bus durchschalten.
Das lässt sich durchaus mit diskreter Logik (also 74er-Bausteine) aufbauen. Man braucht 3 Inverter, ein 9-fach-NAND und einen Tristate-Puffer.
Als Inverter kann man z.B. einen 74LS04 oder so nehmen.
9-Fach-NAND gibt es anscheinend so nicht von der Stange, also nimmt man ein 13-fach (74LS133) und legt die unbenutzten Eingänge auf 5V.
Die Typen (LS/HC/HCT/F) sind für Inverter und NAND egal.
Als Buffer z.B. ein 74HC/HCT125. Ein LS hier eher nicht, da sind die Ausgänge evtl. zu schwach, um den PPU-Ausgang "überzubügeln".
Wer noch einen 244 oder 245 hat, kann auch den nehmen.
PA7-0 und /PARD kann man sich von der S-CPU oder vom Modulport holen. Liegt an den Extensionpins an.
Man legt dann PA7, PA6 und /PARD invertiert auf das NAND, und PA5-0 direkt.
Der NAND-Ausgang schaltet dann einen Buffer, der SuperCIC-D4 am Eingang und SNES-D4 am Ausgang hat.
Schaltplan folgt heute abend.
Mit dem U16 sollte sich das bedingt vertragen. Genau so lange halt, wie CIC-Region und Region des Spiel-ROMs übereinstimmen. Ein Repro mit NTSC-ROM und PAL-CIC würde einen Konflikt bewirken und die Aushebelung funktioniert dann ggf. nicht mehr.
Beim sd2snes sieht es ähnlich aus. Da kann der SuperCIC die Region nicht mehr wirklich erkennen (der Key besitzt halt immer gerade die Region der zuletzt verwendeten ungemoddeten Konsole), zudem hat die CIC-Region dann ebenfalls nichts mehr mit der Region des letztendlich geladenen Spiels zu tun. Darüber hinaus patcht das sd2snes auch noch das 213f-Register (mit dem zum ROM passenden Wert). Stimmt die aktuelle SuperCIC-Key-Region nicht zufällig mit der des geladenen Spiels überein, gibt es dann wieder Kuddelmuddel.
Bei der Kombination SuperCIC+sd2snes ist allerdings noch ein Modus vorgesehen, bei dem das sd2snes den SuperCIC steuert (sowohl 50/60 als auch D4), womit sich das Problem dann wieder erledigt (sofern der User diesen Modus aktiviert). Mit der aktuellen Firmware geht das aber noch nicht.
Mit sd2snes _UND_ U16 sollte sich die Situation nicht verschlimmern, da sich die beiden bezüglich der Spielregion eigentlich immer einig sein müssten.
Der Wert des D4-Ausgangs muss immer dann, wenn die CPU Register $213f abfragt, auf Bit 4 des CPU-Datenbus gelegt werden. D.h. wenn PA[7:0]=00111111 und /PARD=0, dann D4 auf den Bus durchschalten.
Das lässt sich durchaus mit diskreter Logik (also 74er-Bausteine) aufbauen. Man braucht 3 Inverter, ein 9-fach-NAND und einen Tristate-Puffer.
Als Inverter kann man z.B. einen 74LS04 oder so nehmen.
9-Fach-NAND gibt es anscheinend so nicht von der Stange, also nimmt man ein 13-fach (74LS133) und legt die unbenutzten Eingänge auf 5V.
Die Typen (LS/HC/HCT/F) sind für Inverter und NAND egal.
Als Buffer z.B. ein 74HC/HCT125. Ein LS hier eher nicht, da sind die Ausgänge evtl. zu schwach, um den PPU-Ausgang "überzubügeln".
Wer noch einen 244 oder 245 hat, kann auch den nehmen.
PA7-0 und /PARD kann man sich von der S-CPU oder vom Modulport holen. Liegt an den Extensionpins an.
Man legt dann PA7, PA6 und /PARD invertiert auf das NAND, und PA5-0 direkt.
Der NAND-Ausgang schaltet dann einen Buffer, der SuperCIC-D4 am Eingang und SNES-D4 am Ausgang hat.
Schaltplan folgt heute abend.
Mit dem U16 sollte sich das bedingt vertragen. Genau so lange halt, wie CIC-Region und Region des Spiel-ROMs übereinstimmen. Ein Repro mit NTSC-ROM und PAL-CIC würde einen Konflikt bewirken und die Aushebelung funktioniert dann ggf. nicht mehr.
Beim sd2snes sieht es ähnlich aus. Da kann der SuperCIC die Region nicht mehr wirklich erkennen (der Key besitzt halt immer gerade die Region der zuletzt verwendeten ungemoddeten Konsole), zudem hat die CIC-Region dann ebenfalls nichts mehr mit der Region des letztendlich geladenen Spiels zu tun. Darüber hinaus patcht das sd2snes auch noch das 213f-Register (mit dem zum ROM passenden Wert). Stimmt die aktuelle SuperCIC-Key-Region nicht zufällig mit der des geladenen Spiels überein, gibt es dann wieder Kuddelmuddel.
Bei der Kombination SuperCIC+sd2snes ist allerdings noch ein Modus vorgesehen, bei dem das sd2snes den SuperCIC steuert (sowohl 50/60 als auch D4), womit sich das Problem dann wieder erledigt (sofern der User diesen Modus aktiviert). Mit der aktuellen Firmware geht das aber noch nicht.
Mit sd2snes _UND_ U16 sollte sich die Situation nicht verschlimmern, da sich die beiden bezüglich der Spielregion eigentlich immer einig sein müssten.