PC Engine InGame Reset

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • PC Engine InGame Reset

      Falls Du keine Lust hast, den ganzen Thread zu lesen:
      Ein InGameReset für die PC Engine in Verbindung mit einem Turbo Everdrive ist nicht zu bwerkstelligen durch bloße Verbindung der /RESET Leitung mit GND, weil nur die CPU der Konsole resettet wird, aber der TurboED NICHT ins Menu zurückgeht.
      Der aktuelle Versuch basiert auf einem Spannungspuffer und einem Schaltbaren Regulator - die Idee: Der IGR kappt die Spannung der Konsole für 2 Sekunden und bleibt durch den Puffer für die Zeit vom Reset funktionstüchtig, um die Konsole wieder einzuschalten.
      Projekt auf GitHub:
      github.com/ArcadeTV/HuEverReset

      -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.

      @NeoRame hatte die Idee für einen InGameReset für die PC Engine.
      Zwar gibt es einen Soft-Reset, der (falls im Spiel vorhanden) mit RUN+SELECT getriggert werden kann, führt aber nicht zurück zum Menu, falls man einen Turbo Everdrive nutzt.

      Anbei meine Vorstellung, wie das gehen könnte.

      Die Konsole besitzt eine Active-Low /Reset Leitung, die z.B. am Cartslot (Pin 36) oder am Extension Port (B22) anliegt.
      Um den Reset auszulösen, sollte also nichts weiter nötig sein, als die Leitung kurz mit GND zu verbinden.

      Um nun den Controller hierfür nutzen zu können, muss man zunächst verstehen, wie er gepollt wird.



      Genau wie das Mega Drive Joypad besitzt der Controller einen 74LS157, der den Status der Inputs A oder B weitergibt, je nachdem ob das SELECT Signal HIGH oder LOW ist.
      Die Leitungen der Buttons I, II, RUN und SELECT werden durchgereicht, wenn dieses Signal LOW ist, andernfalls die 4 Leitungen vom Steuerkreuz.
      Die Outputs vom IC gehen direkt zum Mainboard, wo sie entsprechend verarbeitet werden.

      Möchte man nun die Tastenkombo I+II+RUN+SELECT nutzen, müsste abgefragt werden, ob die Pins 2, 3, 4, 5 und 6 vom Joypad-Connector am Mainboard alle LOW sind.
      Ist das der Fall, kann der Reset ausgelöst werden.
      (Pin7/Enable habe ich mit aufgenommen, weil der evtl. noch bei 6-Button-Pads eine Rolle spielen könnte.)

      Für die Abfrage per Microcontroller habe ich einen ATtiny84 vorgesehen. Dieser läßt auf der hierfür gestalteten Platine zusätzlich eine LED kurz aufleuchten, wenn die Tastenkombo erkannt und der Reset ausgelöst wird. Der Quarz onboard sorgt für 16MHz schnellen Takt.

      Wir halten Euch auf dem Laufenden, momentan stehen wir noch in den Startlöchern.

      PCB


      Schaltplan

      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ArcadeTV ()

    • und evtl noch eine kleine zeitverzögerung (1-2 sek) einbauen,
      damit der reset nicht versehenlich ausgelöst wird......

      und den quarz würde ich weglassen,
      der attiny ist schnell genug für sowas simples.... ;)

      des weiteren besser den reset ausgang mit einem widerstand (10KΩ )"pull up" ziehen.........

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Astrocade ()

    • Danke fürs Feedback @Astrocade!

      Ok, Quartz kommt weg und der interne 8MHz Taktgeber wird verwendet. ✔️
      Zeitverzögerung wird bedacht. ✔️

      Im Active-Low-Reset-Schaltkreis hängt konsolenseitig ein 33K Pull-Up,
      brauche ich den 10K zwischen der MCU und dem Reset-Signal trotzdem?


      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von ArcadeTV ()

    • hmmm,
      fehlt in dem kontroller schaltbild nicht die schaltung für das autofeuer der buttons I+II ?

      das muss dann natürlich programmtechnisch beachtet werden.
      anderenfalls wird es nie zu einem reset bei autofeuer kommen....


      welche entwicklungsumgebeung benutzt ihr?
      kriegt ihr das hin?

      wenns probleme gibt, helfe ich gerne..........
    • Ich gehe davon aus, dass man bei aktivem Autofeuer auch daddeln, statt resetten will.
      Ich hätte kein Problem damit, den User zu zwingen, Dauerfeuer zu deaktivieren, damit man ins Menu kommt,
      ansonsten könnte Dauerfeuer dort auch für ungewollte Eingaben sorgen ;)

      Astrocade schrieb:

      welche entwicklungsumgebeung benutzt ihr?
      kriegt ihr das hin?

      wenns probleme gibt, helfe ich gerne..........
      Das ist sehr nett, vielen Dank!
      Ich hab neulich schonmal rumgespielt, mit einem Code, den ich in der Arduino IDE für den ATtiny84 erstellt hatte und der mir damals dazu diente, ein SNES Mask Rom zu bankswitchen und danach die Konsole zu resetten. Den hatte ich dann kürzlich für meinen Button Layout Toggler umgeschrieben.
      Den Code kann man hier sehen: github.com/ArcadeTV/BLT
      Das wäre meine Basis für den IGR-Code.
      Ich probier's einfach mal, aber melde mich sofort, wenn ich nicht weiterkommen, Danke Dir!

      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ArcadeTV ()

    • Komisches Phänomen hier gerade...
      Ich messe Durchgang zwischen Pins 1 und 8 am Controller Port CN105.
      Trotz der Gewissheit, dass es in der Konsole einen GND für Analog und einen für Digital gibt, hab ich keine Erklärung dafür.
      Ist aber auch ein Junk Mainboard, was ich hier auf dem Tisch zum Messen habe.

      Kann sich das zufällig jemand erklären?



      edit: Entwarnung. Habe es an einer "guten" Konsole nachgemessen und da gibt's keinen Durchgang, also hatte das Junk-Board einen Kurzen.

      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ArcadeTV ()

    • Nach ein wenig Teste teste und messe Messe hab ich so viel für ArcadeTV rausbekommen können

      ein Reset triggern über den extension Port hinten ist möglich, B22 auf ground ( und dabei ist es egal ob man denn digitalen oder analogen ground nutzt) jetzt kommt das große aber es gibt nur einen einfachen reset so als wenn ich eben select und run drücken würde…. Und geht nicht in Everdrive Menü zurück.

      also nächster Schritt mein Everdrive 1.2 checken. Der reset Button auf dem Everdrive geht said den chip (fpga? Ich hab kein Plan LOL) und cartslot pin 36 (ist wohl der reset pin, sonst hätte arcade nicht danach gefragt) geht auf den selben Chip nur eben woanders hin. Anbei mal ein paar Bilder dass ihr euch ein Bild machen könnt. Evtl hilft das irgendwie und oder jemand hat ne Idee :thumbsup:



    • Ich vermute, dass der Turbo Everdrive den Reset an Pin 36 vom Cartslot nur als OUTPUT kennt und nicht auf einen Hard-Reset reagiert, weil der nie ein INPUT wird um den Zustand des Pins abzufragen und ins Menü zu springen wenn die Leitung jemals LOW wird - schließlich gab es nie einen Reset Knopf an der Konsole und auch keinen gängigen Mod dafür...

      Außerdem hat @NeoRame einen TED v1.

      Es wäre auf jeden Fall klasse, falls jemand mit einem TED v2 einmal testen könnte, ob das Menü erscheint, wenn die beiden Pins am Extension Port, die ich im Bild markiert habe (B22:Reset und C20:GNDd) kurz Kontakt hatten.
      Zur Sicherheit mit einem 1K Widerstand dazwischen, falls man doch den falschen Pin erwischt hat. (Danke für den Hinweis, @Astrocade)

      Vielen Dank schonmal!




      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ArcadeTV ()

    • bei solchen experiementen IMMER mit einen schutzwiderstand in serie arbeiten,
      falls mal versehentlich ein möglicherweise spannungsführender pin berührt wird.
      dann wird nicht gleich die konsole geschrottet.

      --------

      der "echte" reset kann nur vom /auf dem everdrive erfolgen.
      anderenfalls liefert das everdrive immer das geladene rom an den port.......

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Astrocade ()

    • da kein wiederstand hier hab und ich auch auf nummer sicher gehen wollte hab ich mir zwei dupont stecker mit kabel genommen und dann eben die enden berührt so das ich nicht aus versehen ein anderen pin berühren kann

    • nur mal für den worst case... das der reset am ED tatsächlich nur den FPGA triggert und den dann eifach "neu startet"...:

      ok ich weiss, es wäre keine schöne lösung aber eine "alternative" .... dann müsste/könnte man doch 'nen kabel (am besten dann mit steckverbindung) an den reset knopp vom everdrive flanschen und das andere ende an die IGR Platine und würde dann dennoch funzen. wie gesagt wäre das keine ganz hübsche lösung aber eine lösung :saint: :evil: :thumbup: :hippie

    • NeoRame schrieb:

      keine ganz hübsche lösung
      Ehrlich gesagt wäre das ne echte Insellösung, weil ich nicht verantworten könnte einen Mod zu erstellen, bei dem ein Kabel fest mit einem eingesteckten Modul verbunden ist :vauxhall

      aber soweit sind wir ja noch nicht. Ich habe die Frage an krikzz gerichtet, ob der TurboED überhaupt dazu zu bewegen ist, auf ein Hard-Reset zu reagieren.
      Alternativ gäbe es ja auch eine bessere Lösung in Form eines alternativen OS - vielleicht geht's damit.

      Wenn alle Stricke reißen kommt auf die Wunschliste für den TurboED v3, dass das Teil Hard-Resets erkennen und beantworten soll :)
      Der wird bestimmt nicht mehr lange auf sich warten lassen und sogar CD-Images abspielen können (wenn auch nur in Mono-Sound, aber das ist dann ein anderer Mod).

      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ArcadeTV ()

    • Hier die letzte Inkarnation der Platine.
      Ich habe die LED verworfen, weil die auf der Unterseite vom Mobo ja gar keinen Sinn macht.

      Sollte sich das mit dem nicht-ins-Menü-zurückkehrendem TurboED beantworten, fange ich den Code an,
      vorher macht das wohl kaum Sinn.



      Ich greife die Leitungen ab, nachdem sie durch die EMI Filter gegangen sind.
      So könnte dann der Einbau aussehen:


      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


    • Schlechte Neuigkeiten:

      Weder krikzz noch teos überwachen den Status von Pin 36 um darauf zu reagieren.
      Wenn ein Spiel geladen ist und das /RESET Signal die CPU triggert, wird automatisch der Einstiegsvektor vom Stack genommen, der wiederum dazu führt, das lediglich das geladene Spiel einen Reset vollzieht, aber nicht die Firmware.

      Ich frage nun bei beiden dieses Feature an, habe aber wenig Hoffnung, dass es umgesetzt wird.

      Blöd gelaufen.

      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


    • Ich greife noch mal die Flanschlösung auf :hippie

      Kein Internen Mod,sondern ein Zwischenstecker zwischen Controller und Controller Port der die Eingabe abgreift und nen Kabel mit Klemme oder Ähnlichen dran den man dann einfach an den Reset Knopf am Everdrive klemmen kann oder so. Das wäre dann so eine Art add on für den Everdrive. So wie damals bei den psx lightguns :s000: :s000: :s000: :s000:

    • Sooooooo, Erfolg bzw Teilerfolg!

      wenn ich sie beiden vias dauerhaft verbinde…… bleibt das Bild weiß. Hatte gehofft da kommt nur Signal wenn getriggert wird Controller.


      wenn ich aber anstatt dauerhaft das zu verbinde, das nur verbinde wenn ich resetten will, dann klappt der reset ins Menü

    • Astrocade schrieb:

      könnte daran liegen das beim erverdrive reset aktiv highv" ist?
      Bei meinem TurboED 2.5 ist eine Seite vom Button direkt mit GND verbunden, ganz sicher.
      Die andere Seite hat möglicherweise irgendeinen PullUp, aber hat direkten Durchgang zu einem Pin am fpga.
      Ich tendiere zu Active-Low.


      NeoRame schrieb:

      wenn ich aber anstatt dauerhaft das zu verbinde, das nur verbinde wenn ich resetten will, dann klappt der reset ins Menü
      Musst mir nochmal erklären, was Du da gemacht hast. Wenn ich's richtig verstanden habe, hast Du Dich in 2 Vias (warum nur?) eingeklinkt und GND zum fpga an dessen Pin gesendet, also das exakt gleiche, was auch der Button am TurboED tun würde.

      Ich bin echt kein Freund von der Lösung, aber wenn's so pressiert, dass Du's *unbedingt* willst, dann kommt das Reset-Out-Kabel von der IGR-Platine an den Button am Ted, und zwar nicht die GND-Seite, sondern die, die zum fpga geht.

      edit:
      @NeoRame hat mir gerade am Telefon erklärt, was er gemacht hat und das kann keine Lösung gewesen sein ;)
      Aber ich hätte eine Idee!
      Statt ein blödes Kabel in den Cartslot zu bauen, könnte man den TurboED entsprechend modden, sodass Pin 36 vom Cartslot mit dem Button verbunden wird und wenn das Signal LOW wegen eines Hard-Resets wird, wird die Firmware darauf genau so reagieren, als hätte man den Button gedrückt. Das wäre die sauberste Lösung.
      Ich arbeite das mal aus...

      誰一人 知らない明日

      follow me: https://twitter.com/arcadetv


      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von ArcadeTV ()