Abfrage Start/Select/Option

Moderator: Rockford

Antworten
Online
Benutzeravatar
Olix
Beiträge: 1095
Registriert: 17.08.2021 07:06
Has thanked: 132 times
Been thanked: 476 times
Kontaktdaten:

Abfrage Start/Select/Option

Beitrag von Olix »

Ich hatte vor kurzem in meinem Haunted-House Port Projekt das Problem, dass auf Originalhardware die Auswahl der Spielstufe mit der Select Taste nicht sauber funktioniert hat. Es wurden immer gleich mehrere Spielstufen übersprungen, obwohl ich die Abfrage so programmiert habe, dass der Zähler erst nach dem wieder Loslassen der Taste inkrementiert wird. Im Emulator trat der Effekt nicht auf, hier wurde immer sauber pro Tastendruck um 1 erhöht. Ich konnte das Problem umgehen, indem ich nach der CONSOL Abfrage noch eine kleine Warteschleife von zwei V-Blanks (40 ms) eingefügt habe - wobei schon eine gereicht hätte)

Mir hat das aber keine Ruhe gelassen und ich bin dem Problem jetzt mal genauer auf die Spur gegangen.
Ich habe mal ein Miniprogramm geschrieben, das nur die Abfrage der SELECT Taste nachstellt. Und wie im eigentlichen Programm, das gleiche Problem: Altirra-Hui / Atari-Pfui
Hier mal im Videovergleich:
Hardware.mp4
echte Hardware
(15.97 MiB) 32-mal heruntergeladen
Emulator.mp4
Altirra Emulator
(33.91 MiB) 28-mal heruntergeladen
Meine Vermutung war ja, dass die Taster der Originalhardware einfach nachfedern/prellen. Und das ist auch so und ich konnte das so nachweisen:

Wieder ein Miniprogramm geschrieben:

Code: Alles auswählen

           ORG $A000
  ; 
 TIMER:    EQU $14
 START:    EQU $A000
 PUFFER:   EQU $0600
 CONSOL:   EQU $D01F
 VCOUNT:   EQU $D40B
  ; 
           LDA #8
           STA CONSOL      ; Nur zur Sicherheit die Eingänge Freischalten
           LDX #0          
 LOOP1:    LDA CONSOL      ; Tasten abfragen
           AND #%00000010  ; auf SLECT prüfen
           BNE LOOP1       ; falls nicht gedrückt, weiter warten
 LOOP2:    LDA CONSOL      ; falls gedrückt
           STA PUFFER,X    ; den Status der Funktionstasten 255 mal abspeichern
           INX 
           BNE LOOP2
           BRK 
Das Programm wartet auf das Drücken der Funktionstaste und speichert dann im Abstand von 15 Takzyklen die nächsten 255 Werte (Aufzeichnungszeit 2,165 ms)
Und so sah das Ergebnis aus:
SELECT.jpg
05 = SELECT gedrückt
07 = keine Taste gedrückt

Wie man schön sehen kann, folgt auf den ersten Tstendruck 7*15 Takte eine Leerphase, dann noch zwei kleine Nachschwinger, bevor sich der Tastendruck stabil verhält.
In den meisten Programmen wird sich das nicht auswirken, denn das sind gerade mal 180 Taktzyklen oder nicht einmal ganz zwei Scan-Lines. Frägt man die Tasten also im VBI ab, gar kein Problem.
Hat man ein längeres Programm, auch kein Problem. Je nachdem wie energisch man die Taste drückt, treten auch mal mehr, mal weniger Nachschwinger auf.

Bei mir wurde es nur blöde, da fast mein komplettes Programm in einem DLI und dem VBI abläuft. Meine Hauptschleife ist nur sehr klein und besteht eigentlich nur aus der Überwachung der Funktionstasten.
Dadurch hat sich dann eben das Nachschwingen der Taste bemerkbar gemacht. Der Emulator hat dagegen ein sauberes Schaltverhalten und es treten auch bei meiner kurzen Hauptschleife keine Probleme auf.

Also: Problem erkannt - Problem gebannt.

Vielleicht hilft das ja mal noch jemand ....

Erhard
Beiträge: 603
Registriert: 04.11.2021 15:52
Has thanked: 53 times
Been thanked: 122 times
Kontaktdaten:

Abfrage Start/Select/Option

Beitrag von Erhard »

Das erinnert mich (erst jetzt) an einige Spiele, wo man mit den Konsolentasten sowas wie Spieleranzahl oder Schwierigkeitsgrad nicht sauber durchschalten kann ...

Online
Benutzeravatar
Olix
Beiträge: 1095
Registriert: 17.08.2021 07:06
Has thanked: 132 times
Been thanked: 476 times
Kontaktdaten:

Re: Abfrage Start/Select/Option

Beitrag von Olix »

Der Vollständigkeit sei noch erwähnt, dass die Rechner mit denen ich getestet habe, beide eine Alps Tastatur, also mit mech. Schaltern haben. Ich schau mir das morgen mal noch mit Folien-Tastatur an ...

Benutzeravatar
Mathy
Beiträge: 1170
Registriert: 18.06.2021 11:13
Wohnort: Heerlen, NL
Has thanked: 478 times
Been thanked: 261 times
Kontaktdaten:

Re: Abfrage Start/Select/Option

Beitrag von Mathy »

.
Hallo Oliver, Leute

Ich meine, für dieses Nachschwingen der Tasten gibt es sogar ein englisches Wort. Damals hat man einiges darüber lesen können. Es müsste auch irgend eine Adresse geben, wo man einstellen kann wie schnell das gleiche Zeichen nochmal auf dem Bildschirm erscheinen soll, wenn der Atari meint eine Taste wird gedrückt. Um eben dieses Nachschwingen der Taste nicht als "nochmal gedrückt" zu erkennen.

Tschüß

Mathy
Wer oder was hat denn da geblitzt?

Erhard
Beiträge: 603
Registriert: 04.11.2021 15:52
Has thanked: 53 times
Been thanked: 122 times
Kontaktdaten:

Abfrage Start/Select/Option

Beitrag von Erhard »

Hallo Mathy,

das gilt nur, wenn man die Tasten nicht selber über die Hardwareregister abfragt und die von Dir genannten Speicherstellen betreffen nicht die Konsolentasten.

CU, Erhard

Online
Benutzeravatar
Olix
Beiträge: 1095
Registriert: 17.08.2021 07:06
Has thanked: 132 times
Been thanked: 476 times
Kontaktdaten:

Re: Abfrage Start/Select/Option

Beitrag von Olix »

Ja, ihr habt beide Recht.

Das von Mathy beschriebene Verhalten gilt für die normalen Tasten, der Grund dass das aber so realisiert wurde ist genau um zu Verhindern, das ein Tastendruck mehrfach gewertet wird. Der technische Ausdruck hierfür ist auch tatsächlich das "Prellen" von Tasten: https://de.wikipedia.org/wiki/Prellen

Eine Entprellung kann per Software vorgenommen werden. wie bei den normalen Tasten beim Atari im OS. Oder auch per Hardwareschaltung z.B. mit einem RC Glied in Verbindung mit einem Schmitt-Trigger. Oder eben gar nicht, wie hier in meinem Fall bei den Funktionstasten, dann muss man eben selbst für eine Software-Entprellung sorgen.

Benutzeravatar
atarixle
Beiträge: 276
Registriert: 18.06.2021 21:19
Has thanked: 31 times
Been thanked: 52 times
Kontaktdaten:

Re: Abfrage Start/Select/Option

Beitrag von atarixle »

Genau.
Die Konsolentasten sind nicht entprellt. Diesen Effekt kann ich sogar in BASIC beobachten.
Die meisten Arcade-like-Emulatoren bilden das prellen nicht nach (wäre was für die Altirra-TODO-Liste).

Erhard
Beiträge: 603
Registriert: 04.11.2021 15:52
Has thanked: 53 times
Been thanked: 122 times
Kontaktdaten:

Abfrage Start/Select/Option

Beitrag von Erhard »

atarixle hat geschrieben:
05.05.2023 13:47
bilden das prellen nicht nach (wäre was für die Altirra-TODO-Liste).
dann brauchen wir demnächst aber 40 GHz Rechner statt 4 GHz ...

slx
Beiträge: 136
Registriert: 18.06.2021 23:16
Has thanked: 94 times
Been thanked: 12 times
Kontaktdaten:

Re: Abfrage Start/Select/Option

Beitrag von slx »

Der englische Begriff ist "bounce" (also "Hüpfen/Abprallen") bzw. "debouncing" fürs Entprellen. Das Problem hatte ich bei Shamus+ auch, da reagiert meine Option-Routine auch anders als die Select-Routine von William/Cathryn Mataga.

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast