Windows-Mausezeiger als Input für Atari-Emulator nutzen?


Windows-Mausezeiger als Input für Atari-Emulator nutzen?

von Soeren » Do 27. Dez 2018, 22:22
Hallo zusammen. Zu Weihnachten habe ich meinem Vater ein selbstgeschriebenes Turbo Basic-Programm geschenkt. Das läuft bei ihm auf dem Windows-Laptop. Es ist ein Programm, welches nacheinander gespeicherte Schachaufgaben stellt und je nach Antwortzug entsprechend reagieren kann. Meinem Vater gefällt es wirklich. Mir ist allerdings aufgefallen, dass er intuitiv nach der Maus (genauer gesagt Mausfeld am Laptop) greifen will und erst nach einigen Sekunden merkt, dass sich nichts tut, sondern mit den Cursortasten auf dem Schachfeld die Figuren bewegen kann.

Nun habe ich mir überlegt, dass es eigentlich ganz schön wäre, wenn man die Windows-Maus zum ansteuern der Schachfelder direkt nutzen könnte. Aber wie? Gibt es bekannte Methoden mittels Emulator (z.B.Altirra) diese Idee umzusetzen? Ich habe da bisher nur gesehen, dass man mit der Maus ein(!) Paddle simulieren kann. Aber um ein beliebiges Pixel anzuklicken, reicht das nicht aus.

Bin für jede Idee dankbar.

Re: Windows-Mausezeiger als Input für Atari-Emulator nutzen?

von HiassofT » Do 27. Dez 2018, 22:42
Das sollte mit Altirra gehen, das kann einen Light Pen / Light Gun emulieren. Siehe zB diesen Thread hier:
http://atariage.com/forums/topic/194771 ... try3417965

so long,

Hias

Re: Windows-Mausezeiger als Input für Atari-Emulator nutzen?

von Soeren » Fr 28. Dez 2018, 01:11
Hi Hias, danke für die schnelle Antwort. Das Input Mapping auf Altirra hat mich weitergebracht. Habe auch rausgefunden, dass in den Speicherzellen 564 und 565 die Positionsdaten der Light Pen/Gun vorhanden sind (plus Schattenregister 54284 und 54285). Aber auf die Schnelle habe ich nicht das Register gefunden, dass den Zustand des Gun Triggers anzeigt. :?

Alternativ könnte ich die linke Maustaste auf einen Feuerknopf legen. Was ich parallel getestet habe, man kann auch die Mausposition auf Paddle A und B legen und erhält mit der Basic-Funktion PADDLE und PTRIG von 0 bis 228 die relative Position im Emulator-Fenster.

Re: Windows-Mausezeiger als Input für Atari-Emulator nutzen?

von HiassofT » Fr 28. Dez 2018, 01:53
Laut der Atari 8bit FAQ http://www.atari800xl.eu/faq/atari-8bit-faq.html sollte der Light Gun Trigger mit PIA Port A Bit 0 verbunden sein - bei gedrücktem Trigger sollte STICK(0) in BASIC also 14 statt 15 liefern.

Selber getestet hab' ich das aber nicht, hab' keine Lightgun.

Die Variante mit den 2 Paddles ist aber auch gut. Und ich glaube in Basic gibt's auch PTRIG() um die Paddle Trigger abzufragen - Paddles hab' ich auch keine, also ebenfalls ungetestet :-)

so long,

Hias

Re: Windows-Mausezeiger als Input für Atari-Emulator nutzen?

von atarixle » Fr 28. Dez 2018, 09:42
... wenn mir jemand einen Lightpen-Treiber für BOSS-X schreibt ...

Re: Windows-Mausezeiger als Input für Atari-Emulator nutzen?

von Soeren » Mo 31. Dez 2018, 02:14
Okay, einen Gerätetreiber habe ich nicht geschrieben :wink:, aber zumindest wie man das beim Altirra umsetzen könnte.

Erstmal die LightPen/Gun-Variante. Im Mapping:
Axis 1 -> Mouse Pos X (light pen)
Axis 2 -> Mouse Pos Y (light pen)
Gun trigger/inverted pen switch -> Mouse LMB
On-Screen -> None (Inverted)

Code: Alles auswählen
10 GRAPHICS 6+16
20 REPEAT :UNTIL STICK(0)=14
30 DO
40   IF STICK(0)=15
50     X=PEEK(564):Y=PEEK(565)
60     X=(X+140) MOD 228:Y=Y-17
70     LOCATE X,Y,A:COLOR 1-A:PLOT X,Y
80     PAUSE 10
90   ENDIF
100 LOOP


Hier ist mir aufgefallen, dass beim LightPen der Wert von STICK(0) zuerst auf 15 steht und erst nach dem ersten Mouseklick die Grundeinstellung 14 ist und bei jedem Linksklick auf 15 ändert.

Paddle-Variante:
Paddle A(port 1)
Paddle knob (linear) -> Mouse Pos X (light pen)
Button 1 -> Mouse LMB
Paddle B(port 1)
Paddle knob (linear) -> Mouse Pos Y (light pen)

Code: Alles auswählen
10 GRAPHICS 6+16
30 DO
40   IF NOT (PTRIG(0))
50     X=PADDLE(0):Y=PADDLE(1)
60     X=159*(211-X)/194+1:Y=95*(171-Y)/116+1
70     LOCATE X,Y,A:COLOR 1-A:PLOT X,Y
80     PAUSE 10
90   ENDIF
100 LOOP


Wichtig ist, dass bei Mouse Pos "light pen" und nicht "paddle" benutzt wird, weil das sonst je nach Fensterauflösung anders skaliert wird.

Re: Windows-Mausezeiger als Input für Atari-Emulator nutzen?

von atarixle » Mo 31. Dez 2018, 11:31
Die Treiber bei BOSS-X sind in Assembler geschrieben und werden dann als austauschbare Maschinenroutine eingebunden. Ich müsste mich vielleicht selbst mal daran machen, einen zu schreiben.