Hallo Besucher, der Thread wurde 1,5k mal aufgerufen und enthält 7 Antworten

letzter Beitrag von Squidward am

Joystick entprellen?

  • Für meine C64 portierung von 2048 (erster Versuch eines C64-Spiels) brauche ich Eingaben als einzelne "Impulse", also dachte ich mir ich baue die Joystick-Abfrage ähnlich wie einen Tastatur-Treiber, mit einer Queue, die nur befüllt wird, wenn sich etwas ändert. "Release" events werden nicht benötigt, allerdings filtere ich im Moment nur den Idle Zustand heraus -- das wäre eventuell noch verbesserungswürdig, ist hier aber erst mal egal. Die erste Version sah so aus:


    Das funktionierte schon einwandfrei im vice. Jetzt frage ich mich, ob für diesen Anwendungszweck prellende Taster im echten Joystick ein Problem sind -- testen kann ich das leider gerade nicht, Brotkasten ist außer Gefecht...


    Ich hatte folgende Idee zum Entprellen:

    Die Fragen dazu:

    • Ist das überhaupt nötig?
    • Wenn ja, tut dieser einfache Code seinen Job?
    • (Wie) kann ich das ohne reale Hardware testen? Gibt es einen Emu, der prellende Taster simuliert?
  • Einmal bin ich voll auf das Prellproblem gelaufen, da hatte ich den Port zu oft abgefragt (weil ich auch so ein Nur-gedrückt-wenn-vorher-losgelassen-Event haben wollte).
    Es scheint aber durchgehend zu reichen, nur einmal pro Frame den Port abzufragen. Das Entprellen geschieht dann mehr oder weniger "automatisch".


    Das sind jetzt nur meine persönlichen Erfahrungen, ich teste meine Spiele aber auch nur sporadisch auf echter Hardware.


    ACE wird dir gleich was vom TC64 erzählen ;)

  • Es scheint aber durchgehend zu reichen, nur einmal pro Frame den Port abzufragen. Das Entprellen geschieht dann mehr oder weniger "automatisch".

    Das ist ja schon mal ne interessante Info, dankesehr! Dann überlege ich mir jetzt, ob ich den Entprellcode direkt wieder rausschmeiße oder ob es eventuell von Vorteil ist, ihn drin zu lassen, die check-routine aber 2x aufzurufen.


    Letzteres hab ich jetzt mal testweise implementiert ... werde eventuell sowieso 2x für die (noch zu erstellende) Musik brauchen ;) Arbeitet sehr sauber im vice, aber der prellt ja auch nicht ... hmm.

  • Ich denke mal, dass es vom Spiel/der Anwendung abhängig ist, wie oft der abgefragt wird.


    Z.B. 50 Abfragen in der Sekunde und jeweils einem Pixel Bewegung eines Mauszeigers (nicht Proportionalabfrage) ist gerade okay. Wenn der Port nur alle 2 bis 3 (oder mehr) Frames abgefragt würde, wäre das quälend langsam (oder man müsste das Objekt um mehr als 1 Pixel verschieben.


    Für dein Spiel reicht es aber voraussichtlich, die Abfrage nicht jeden Frame durchzuführen.