Autor Thema: Probleme mit Joystick-Abfrage  (Gelesen 6186 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Probleme mit Joystick-Abfrage
« am: 17. Februar 2015, 15:10:19 »
Ich frage meinen Joystick ab:

call &bb24
di
push af
call &bb00
pop af
ei

cp 8 ; für rechts
jr rechts

usw.

Die Abfrage funktioniert soweit. Das Problem dabei ist, das sie viel zu schnell kommen die weiteren Impulse. Einmal nur kurz den Joystick angetippt und die Figur rast schon über den halben Bildschirm.
Dabei macht JOY(0) in BASiC auch nix anderes als &bb24 abzufragen. Und da funktioniert es.

Ich steh vor einem Rätsel.  :(
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Probleme mit Joystick-Abfrage
« Antwort #1 am: 17. Februar 2015, 15:27:43 »
Mit einer normalen Rechtsbewegung am Joystick bekomme ich immer 3x A ausgegeben.

org &4000

.start

di
call &bb24

push af
call &bd19

pop af
ei

cp 8
jr nz,start
         ld a,65
         call &bb5a
         call&bb00
jr start

Ich will aber nur einmal A bei normalen Handbewegungen am Bildschirm sehen.
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Probleme mit Joystick-Abfrage
« Antwort #2 am: 17. Februar 2015, 18:49:11 »
Vielleicht fehlt ja ein CP 0 ?
So dass es sperrt, wenn der Joystick ruhig ist?

Oder ein Stop-Befehl?
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Probleme mit Joystick-Abfrage
« Antwort #3 am: 17. Februar 2015, 19:14:54 »
Ich versuche gerade eine Counter mit einzubauen, damit die Ereignisse nicht zu schnell kommen. Klappt aber noch nicht. :(
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Probleme mit Joystick-Abfrage
« Antwort #4 am: 17. Februar 2015, 20:02:23 »
Bislang fragst du ja auch nur ab, was passieren soll, wenn Joystick gedrückt wird.
Aber wie setzt du die Bewegung zurück?
Das sollte erfolgen, wenn der Joystick <> 8 ist.

8 steht natürlich repräsentativ für die Bewegungsrichtung, die du abfragst...


Stell dir vor: Du drückst eine Taste, dann muss etwas erfolgen. Wenn Du diese Taste aber wiederum loslässt, muss auch etwas erfolgen.... Sonst bleibt intern die Taste gedrückt...
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Probleme mit Joystick-Abfrage
« Antwort #5 am: 17. Februar 2015, 20:22:55 »
Das war nur ein schneller Experimentiercode.

Mir geht es folgenden BASIC-Code (siehe Bild)

Da klappt das vorzüglich mit dem Joystick. Will ich das aber in Assembler nachbilden, dann rennt die Figur nicht um eine Position, sondern immer um mehrere.
Ich könnt noch verrückt werden.  :motz:
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Probleme mit Joystick-Abfrage
« Antwort #6 am: 17. Februar 2015, 20:24:14 »
Achso sorry, dann hatte ich dich falsch verstanden...
Vermutlich macht deine Figur nun zu schnelle Schritte?
Was, wenn Du zwischen den Schritten ganz einfach einen CALL &BD19 dort einfügst?

Edit: Könnte allerdings das gesamte Spiel verlangsamen... CALL &BD19 ist ja der Frameflyback Wait CALL...

Edit 2: Timer könnte aber klappen! Oder aber die Tastatursteuerung über Interrupt abfragen, wobei die Abfrage alle x Millisekunden erfolgt, und halt auch dann nur den Einzelschritt ausführt?
« Letzte Änderung: 17. Februar 2015, 20:27:29 von Devilmarkus »
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Probleme mit Joystick-Abfrage
« Antwort #7 am: 17. Februar 2015, 20:35:49 »
Ich hab noch einen Gedanken im Kopf. Den mach ich aber erst nach dem TV schauen. Birne raucht.

Interrupt, ja gerne. Ist aber ein weiteres Problem was ich noch nicht gelöst habe.  ;)
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Offline Devilmarkus

  • Administrator
  • CPC 464+
  • *****
  • Beiträge: 1113
  • Liked: 367
  • Karma: +39/-0
Re: Probleme mit Joystick-Abfrage
« Antwort #8 am: 17. Februar 2015, 20:41:51 »
So in etwa?

InterruptInit:
ld a,(ix+0)
or a
jr z,InterruptDone
LD HL,BlocEvent
LD DE,InterruptHandle
LD BC,#8100
JP #BCD7

InterruptDone:
LD HL,BlocEvent
JP #BCDD
InterruptHandle:
DI
;; was soll ich hier machen?
ei
ret

BlocEvent:
DS 16


Edit: GGF. die Abfrage am Anfang entfernen! Dies hier basiert auf einem RSX-Befehl, welches den Interrupt ein - bzw. aus schaltet.
« Letzte Änderung: 17. Februar 2015, 20:54:04 von Devilmarkus »
http://cpcwiki.de
Dein Deutsches CPCWiki!

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Probleme mit Joystick-Abfrage
« Antwort #9 am: 18. Februar 2015, 12:20:41 »
So, wie es ausschaut habe ich das Problem gelöst.  :D
Assembler führt mich manchmal auf den falschen Weg und später seh ich den Baum vor lauter Bäumen nicht.

Einfach nur &BB18 aufrufen und entsprechend auswerten. Hab mich im WinCPC durch die umdefinierte Tastatur auf den falschen Weg begeben.
Jetzt klappt das mit der mit der Zehnertastatur und gleichzeitig auch übern Joystick.

Ich denk noch immer zu sehr in BASIC-Dimensionen und überseh dann die Lösungen.  :motz:

Naja, hauptsache läuft.  :00008351:

Danke nochmal an Devilmarkus der mich mit Sourcen versorgt hat, wodurch ich wieder auf den richtigen Weg gebracht wurde.  :knuddel:
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Online TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3288
  • Liked: 780
  • Karma: +39/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: Probleme mit Joystick-Abfrage
« Antwort #10 am: 18. Februar 2015, 18:31:02 »
Ja, Assembler ist einfach viel schneller als BASIC. Da muss schon mal eine Warteschleife rein ;-)
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 29.12.2020)
http://futureos.cpcwiki.de/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 21.01.2021)

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Probleme mit Joystick-Abfrage
« Antwort #11 am: 18. Februar 2015, 22:37:22 »
Plöde Geschwindigkeit. Wahnsinnig macht einen dieses Assembler.  :banghead:
Hat man ein Problem gelöst, stolpert man über zwei neue.  :gruebel:
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Online TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3288
  • Liked: 780
  • Karma: +39/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: Probleme mit Joystick-Abfrage
« Antwort #12 am: 19. Februar 2015, 18:04:07 »
Ja, aber wenn's läuft, dann läufts ... und zwar für immer. Nur nicht aufgeben, am Ende ist es das alles wert.
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 29.12.2020)
http://futureos.cpcwiki.de/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 21.01.2021)

Offline oobdoo

  • CPC 6128
  • ****
  • Beiträge: 468
  • Liked: 123
  • Karma: +17/-0
  • Geschlecht: Männlich
  • :P
Re: Probleme mit Joystick-Abfrage
« Antwort #13 am: 19. Februar 2015, 20:04:11 »
Ach Z80 is kagge. Ich meißt den Scheiß ausm Fensta.  :motz:

Jetzt schreib ich die Routine fürs Monster extra neu und der Bug taucht immer noch auf.  :gruebel:
CPC 464/6128, 464/6128+, GX4000 | Atari 2600, 600XL, 800XL/XE, Portfolio | C64/II/G/R/SX, VC20, TC64 | LC 80, MPF-I | ZX81, AX81, ZX Spectrum 48k, ZX Spectrum+2 | Amiga 500/600/2000, A2630, A2088

Online TFM

  • Administrator
  • CPC 6128+
  • *****
  • Beiträge: 3288
  • Liked: 780
  • Karma: +39/-0
  • Geschlecht: Männlich
  • FutureSoft und CPC - Ein starkes Team!
    • FutureOS
Re: Probleme mit Joystick-Abfrage
« Antwort #14 am: 19. Februar 2015, 20:39:28 »
Mach mal Pause und schlaf eine Nacht darüber.  :)
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 29.12.2020)
http://futureos.cpcwiki.de/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 21.01.2021)