Mehrere Knöpfe am Joystick

Moderator: Rockford

Antworten
Benutzeravatar
LarsImNetz
Beiträge: 211
Registriert: 24.08.2021 18:27
Has thanked: 195 times
Been thanked: 107 times
Kontaktdaten:

Mehrere Knöpfe am Joystick

Beitrag von LarsImNetz »

Moin,

wollte mal erfragen, wie das funktionieren soll?

Mein nächstes Game braucht bisher keinen Knopf, aber vielleicht stelle ich Twist of Souls nochmal um, damit man zum Screen flippen nicht die Space Taste drücken muss.
Also bitte her mit den Ideen, wie man das programmiert.

Etwas mehr als den Link: https://github.com/ascrnet/Joy2Bplus.git hätte ich schon gerne.

Benutzeravatar
pps
Beiträge: 753
Registriert: 18.06.2021 23:05
Has thanked: 189 times
Been thanked: 359 times
Kontaktdaten:

Re: Mehrere Knöpfe am Joystick

Beitrag von pps »

Man kann das sehr gut mit dem Altirra testen, wenn man selbst keinen umgebauten Joystick für den ATARI hat. Natürlich muss man das extra einstellen, dass der Altirra dann einen solchen Stick für den "ATARI" simuliert...

Im Prinzip ist der zusätzliche Knopf über den Paddle Ausgang angeschlossen. Liegt dort ein bestimmtes Signal an, weiß man, dass ein Joy2B+ angeschlossen ist.
Ich habe das in meinem MyTris eingebaut. Erkennt das Spiel einen solchen Stick, gibt es automatisch andere Optionen.

Ist der Stick angeschlossen, kommt im Paddle0 und/oder im Paddle1 ein $e4 - je nachdem, wie ob es einen oder 2 zusätzliche Knöpfe gibt. Ein Anderer Wert (i.d.R. 0) gibt dann an, dass der Knopf gedrückt wurde. Es wird also geschaut, ob es $e4 in Paddle0 und/oder Paddle 1 gibt.
PP´s of STARSOFTBerlin__________github|meine Webseite|Demozoo

ascrnet
Beiträge: 21
Registriert: 16.11.2024 22:25
Been thanked: 3 times
Kontaktdaten:

Re: Mehrere Knöpfe am Joystick

Beitrag von ascrnet »

LarsImNetz hat geschrieben:
20.03.2025 18:01
wollte mal erfragen, wie das funktionieren soll?
wie der Kollege pps erklärt hat. Wenn Sie es immer noch nicht verstehen, hilft Ihnen vielleicht ein kurzes Beispiel in ATARI BASIC.

Code: Alles auswählen

10 PRINT STICK(0),STRIG(0),PADDLE(0),PADDLE(1):GOTO 10
müssen Sie einen neuen Joystick in Altirra konfigurieren, die Schritte sind im Video zu sehen. ;)
https://www.youtube.com/watch?v=EOBmjwyS6Fs

Erhard
Beiträge: 980
Registriert: 04.11.2021 15:52
Has thanked: 118 times
Been thanked: 299 times
Kontaktdaten:

Mehrere Knöpfe am Joystick

Beitrag von Erhard »

Braucht jemand die Auswertung für den SNACK-Adapter?

Könnte ich in ACTION! anbieten.
Wenn man sein Alter hexadezimal angibt kann man gleich wieder Bäume ausreißen :-)

ascrnet
Beiträge: 21
Registriert: 16.11.2024 22:25
Been thanked: 3 times
Kontaktdaten:

Re: Mehrere Knöpfe am Joystick

Beitrag von ascrnet »

Erhard hat geschrieben:
23.04.2025 15:15
Braucht jemand die Auswertung für den SNACK-Adapter?
Er wird im ATARIAGE-Forum verkauft, ist aber kein Standard wie Joy 2B+. ;)

Benutzeravatar
Mathy
Beiträge: 1723
Registriert: 18.06.2021 11:13
Wohnort: Heerlen, NL
Has thanked: 821 times
Been thanked: 465 times
Kontaktdaten:

Re: Mehrere Knöpfe am Joystick

Beitrag von Mathy »

.
Hallo Erhard, Leute

Erhard hat geschrieben:
23.04.2025 15:15
Braucht jemand die Auswertung für den SNACK-Adapter?

Könnte ich in ACTION! anbieten.
Wieso wird so etwas immer gefragt? Irgendjemand wird irgendwann diese Info haben wollen. Und wieso würde man Information nicht teilen wollen? Also immer her damit. :mrgreen:

Tschüß

Mathy
Schreibe nicht der Absicht zu, was man mit Dummheit oder Ignoranz erklären kann.

Erhard
Beiträge: 980
Registriert: 04.11.2021 15:52
Has thanked: 118 times
Been thanked: 299 times
Kontaktdaten:

Mehrere Knöpfe am Joystick

Beitrag von Erhard »

Also dann hier der Ausschnitt (Hauptprogramm, Variablendefinition usw fehlt alles und vermutlich gibt es Darstellungsprobleme mit ATASCII):

Code: Alles auswählen

 DO
  i=PADDLE(0)
  j=PADDLE(1)

  IF i<5 and j<5 THEN
   simple=1
  ELSE
   simple=0
  FI

  IF i>120 AND i<160 AND j>120 AND j<160 THEN
   enhanced=1
  ELSE
   enhanced=0
  FI
 
  IF simple=0 and enhanced=0 THEN
   POSITION (0,2)
   PRINT ("SNACK: NOT DETECTED ")
   DO
    IF PADDLE(0)=1 AND PADDLE(1)=1 THEN
     simple=1
    FI
   UNTIL simple=1 or CONSOL=6
   OD
  FI

 UNTIL simple=1 or enhanced=1 or CONSOL=6
 OD


 IF simple=1 THEN
  POSITION (0,2)
  PRINT (" SNACK: SIMPLE MODE ")
  DO
   st=STICK(0)
   xu=(st&1)
   xd=(st&2)
   xl=(st&4)
   xr=(st&8)

   POSITION (8,10)
   IF xu=0 THEN
    PUT('?)
   ELSE
    PUT('o)
   FI

   POSITION (8,12)
   IF xd=0 THEN
    PUT('?)
   ELSE
    PUT('o)
   FI

   POSITION (6,11)
   IF xl=0 THEN
    PUT('?)
   ELSE
    PUT('o)
   FI

   POSITION (10,11)
   IF xr=0 THEN
    PUT('?)
   ELSE
    PUT('o)
   FI

   POSITION (6,7)
   IF st=11 or st=3 THEN
    PRINT("(L2)(L1)")
   ELSE
    PRINT("(L2)(L1)")
   FI

   POSITION (26,7)
   IF st=7 or st=3 THEN
    PRINT("(R2)(R1)")
   ELSE
    PRINT("(R2)(R1)")
   FI

   POSITION (29,11)
   IF STRIG(0)=0 THEN
    PRINT("Y   A")
   ELSE
    PRINT("Y   A")
   FI

   POSITION (11,13)
   IF st=10 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (12,13)
   IF st=14 THEN
    PUT(252)
   ELSE
    PUT('|)
   FI

   POSITION (13,13)
   IF st=6 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (11,14)
   IF st=11 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (13,14)
   IF st=7 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (11,15)
   IF st=9 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (12,15)
   IF st=13 THEN
    PUT(252)
   ELSE
    PUT('|)
   FI

   POSITION (13,15)
   IF st=5 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (31,10)
   IF PADDLE(1)>200 THEN
    PUT('X)
   ELSE
    PUT('X)
   FI

   POSITION (31,12)
   IF PADDLE(0)>200 THEN
    PUT('B)
   ELSE
    PUT('B)
   FI

  UNTIL CONSOL=6
  OD
 FI


 IF enhanced=1 THEN
  POSITION (0,2)
  PRINT ("SNACK: ENHANCED MODE")
  DO
   st1=STICK(0)
   i=paddle(0)
   j=paddle(1)

   st=15
   IF j<10 THEN
    st=st&$0E
   FI

   IF j>200 THEN
    st=st&$0D
   FI

   IF i<10 THEN
    st=st&$0B
   FI

   IF i>200 THEN
    st=st&$07
   FI

   xu=(st&1)
   xd=(st&2)
   xl=(st&4)
   xr=(st&8)

   POSITION (8,10)
   IF xu=0 THEN
    PUT('?)
   ELSE
    PUT('o)
   FI

   POSITION (8,12)
   IF xd=0 THEN
    PUT('?)
   ELSE
    PUT('o)
   FI

   POSITION (6,11)
   IF xl=0 THEN
    PUT('?)
   ELSE
    PUT('o)
   FI

   POSITION (10,11)
   IF xr=0 THEN
    PUT('?)
   ELSE
    PUT('o)
   FI

   POSITION (11,13)
   IF st=10 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (12,13)
   IF st=14 THEN
    PUT(252)
   ELSE
    PUT('|)
   FI

   POSITION (13,13)
   IF st=6 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (11,14)
   IF st=11 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (13,14)
   IF st=7 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (11,15)
   IF st=9 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (12,15)
   IF st=13 THEN
    PUT(252)
   ELSE
    PUT('|)
   FI

   POSITION (13,15)
   IF st=5 THEN
    PUT('?)
   ELSE
    PUT('?)
   FI

   POSITION (33,11)
   IF st1=1 THEN
    PUT('A)
   ELSE
    PUT('A)
   FI

   POSITION (31,12)
   IF st1=2 THEN
    PUT('B)
   ELSE
    PUT('B)
   FI

   POSITION (31,10)
   IF st1=4 THEN
    PUT('X)
   ELSE
    PUT('X)
   FI

   POSITION (29,11)
   IF st1=5 THEN
    PUT('Y)
   ELSE
    PUT('Y)
   FI

   POSITION (15,11)
   IF st1=6 THEN
    PRINT("sel")
   ELSE
    PRINT("sel")
   FI

   POSITION (19,11)
   IF st1=7 THEN
    PRINT("start")
   ELSE
    PRINT("start")
   FI

   POSITION (26,7)
   IF st1=8 THEN
    PRINT("(R2)(R1)")
   ELSE
    PRINT("(R2)(R1)")
   FI

   POSITION (6,7)
   IF STRIG(0) THEN
    PRINT("(L2)(L1)")
   ELSE
    PRINT("(L2)(L1)")
   FI

  UNTIL CONSOL=6
  OD

Dateianhänge
HWSNACK.TXT
(5.19 KiB) 3-mal heruntergeladen
Wenn man sein Alter hexadezimal angibt kann man gleich wieder Bäume ausreißen :-)

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast