Hello, Guest the thread was called303 times and contains 3 replays

last post from pettersson at the

stabile Tastatur- / Joystickabfrage

  • Hi,


    bei meinem aktuellen Projekt verwende ich den Joystick (Port-1 und Port-2) und die F-Tasten 1, 3 und 5. Ich hatte schon gelesen, dass sich Joysticks und Tastatur gerne mal ins Gehege kommen. Und in der Tat passiert das auch bei meinem Spiel. Gibt es eine stabile Routine um zwischen Joystick und Tastatur Eingaben zu unterscheiden? Mir geht es nur um die F-Tasten, ich habe bisher nur komplette Eingaberoutinen gefunden. Aktuellen State lese ich mit $cb aus.


    Vielen Dank für Tipps

    pettersson

  • '95 oder '96 hatte ich da mal im CF experimentiert, erinnere mich aber nicht mehr an die Details.

    Ich hatte die 64 Tasten als Matrix auf dem Schirm dargestellt und verschiedene Abfragen laufen lassen, die erkannte Tasten in verschiedenen Bits dargestellt hatten. D.H. 32= Space = keine Taste, 33 = ! = Taste von Routine 1, 34 = " = Taste von Routine 2, 35 = # = Beide Routinen usw...


    Primitives Testprogramm halt, das aber unerwartet brauchbare Ergebnisse geliefert hat, weil die Tastatur sich doch ein bisschen analog verhält.

    Ich GLAUBE, eine Joystick-Richtung + 1 Taste (z.B. Feuer oder Space) war doch zu unterscheiden, oder beliebige Kombinationen aus 2 Tasten, die bei der normalen Abfrage "Geister-Kombinationen" liefern.


    Normal wird mit $dc00 mit einem Nul-Bit "Strom" auf eine Spalte gegeben und mit $dc01 geprüft, wo der "Strom" ankommt.

    Aber es gibt ja auch noch die Richtungs-Register $dc02 und $dc03.

    Ziemlich sicher hatte ich mal zusätzlich die Richtungen ausgetauscht .

    Nicht mehr sicher bin ich, ob ich auch speziell einzelne Tasten abgefragt und alle anderen 14 Bits auf Ausgang 1 hatte...


    Ich glaube aber nicht, dass Du mit 2 Joysticks und einer beliebigen Taste Erfolg haben wirst.

    Da sind aber auf der Tastaturmatrix 9 Tasten, die nicht von einem Joystick beeinflusst werden, in dem Bild die 9 unten links. Wenn Du 3 Tasten in gleicher Zeile oder Spalte wählst, dann kannst Du sicher beliebige Kombinationen daraus erkennen.

    Tastaturmatrix.gif

  • Gibt es eine stabile Routine um zwischen Joystick und Tastatur Eingaben zu unterscheiden?

    Kommt drauf an (tm).


    Wenn man beide Portregister auf Ausgang stellt und $ff ausgibt, dann können gelesene Nullbits nur von den Joysticks herrühren. Man kann also die Joysticks abfragen, ohne dass eine gedrückte Taste dabei stört. Sollte der Benutzer allerdings mindestens zwei Tasten gleichzeitig gedrückt halten und die "richtigen" erwischen, so könnte er zwei Joystick-Leitungen miteinander verbinden und so die Unterscheidung dieser beiden Richtungen unmöglich machen.


    Umgekehrt legt eine gedrückte Joystickrichtung eine ganze Zeile bzw. Spalte der Tastaturmatrix auf Ground, was eine Abfrage dieser Tastatur-Zeile/Spalte dann völlig unmöglich macht. Wirklich sicher abfragen lassen sich nur neun Tasten, siehe Hoogos Tabelle.


    Nur: Ob diese Einschränkungen wirklich problematisch sind, hängt direkt davon ab, wofür man die gleichzeitige Abfrage von Joystick und Tastatur braucht.

    - Sollen drei Spieler gleichzeitig steuern können (also zwei mit Joysticks und einer an der Tastatur), so geht das nur über die "neun sicheren Tasten".

    - Will man aber - zusätzlich zur Steuerung über die zwei Joysticks - nur ein paar Tasten abfragen für irgendwelche Sonderfunktionen wie z.B. eine Pausetaste o.ä., so kann man sich in vielen Fällen so behelfen:

    1. Joysticks abfragen

    2. Tastatur abfragen

    3. Joysticks abfragen

    Lag weder vor noch nach der Tastaturabfrage eine Joystickbetätigung vor, so wertet man die Ergebnisse der Tastaturabfrage aus.

    Lag aber mindestens eine Joystickbetätigung vor, so ignoriert man das Ergebnis der Tastaturabfrage.

    Die Tasten funktionieren dann eben nur, wenn in diesem Augenblick die Joysticks nicht betätigt werden. Für sowas wie eine Pausetaste reicht das...