Newsgroup: it.comp.retrocomputing
Titolo: [PROGRAMMAZIONE C64] gestione joystick

 Ciao ragazzi, spero sia il posto giusto per ottenere un aiuto::
avrei bisogno di utilizzare il joystick per far compiere alcune azioni ad un
programmino scritto in basic su C64:
In particolare, ad un certo punto del programma metto una riga di attesa del
tipo:
100 geta$:ifa$="" then 100
ora però vorrei che il programma effettuasse operazioni diverse in base
all'azione effettuata col joystick in porta 2; per semplificare al massimo:
110 if (direzione su) then print "SU"
120 if (direzione giu) then print "GIU"
130 if (direzione destra) the print "DESTRA"
140 if (direzione sinistra) then print "SINISTRA"
150 if (rilascio pulsante) then print "PULSANTE"
cosa ci va nelle parentesi? o magari il tutto va programmato in altro modo?
Grazie 1000

Michele ha scritto:

Con delle Peek() in date posizioni di memoria . Dovresti trovare 
istruzioni specifiche ne programmers reference . Vedi :
http://www.devili.iki.fi/Computers/Commodore/C64/Programmers_Reference/Chapter_6/page_343.html

> Grazie 1000
Vado a memoria e non vorrei dire delle fregnacce (sono piů di 20 anni fa.... 
:), ma il joystick in porta 1 sul C64 non simula la pressione di alcuni 
tasti sulla tastiera?
Hai provato ad inserire:
105 print a$
e vedere se muovendo il joystick (collegato alla porta 1) scrive qualcosa?
......
Mi rispondo da solo: ho provato con Winvice e si, il joystick in porta 1 
simula la tastiera.
Aggiungi la riga
105 print asc(a$)
e puoi vedere il codice ascii da testare nelle if successive.
Ciao.
Roberto

 e puoi vedere il codice ascii da testare nelle if successive.
Oooohhh... scusa.... non avevo notato che ti serve il joystick in porta 2.
In questo caso devi usare la peek().
Ciao.
Roberto 

Come ti è già stato scritto, qui
http://www.devili.iki.fi/Computers/Commodore/C64/Programmers_Reference/Chapter_6/page_344.html
trovi un esempio di come leggere i joystick. 

grazie a tutti, avete praticamente programmato al mio posto!
ciao

 
http://www.devili.iki.fi/Computers/Commodore/C64/Programmers_Reference/Chapter_6/page_343.html
 
Mamma mia quanti ricordi. Però sul C16 e il C128 me la passavo meglio, 
avevo il comando joy(n)
IF JOY(n) = valore TEN do_something
con 1, 3, 5, e 7 le direzioni alto, destra, basso e sinistra, e 2, 4, 6, 
8 le direzioni diagonali composte. Con i peek se non ricordo male 
occorreva controllare i valori di un paio di bit di due locazioni di 
memoria. Quasi quasi me lo vado a rileggere...
p.bes

 IF JOY(n) = valore TEN do_something
'azz, la H.
p.bes

 alcuni tasti sulla tastiera?
Vado un po' a memoria anche io... si, è corretto, il joystick della porta 1 
è mappato come i tasti in alto a sinistra della tastiera: la freccetta 
sinistra "<-", 1, 2 e control.  Lo sparo è invece mappato sulla barra 
spazio.
Il metodo da te suggerito non va bene perchè la sola pressione del tasto 
"control" non riproduce niente a video, tranne che quando è abbinato a 
qualcos'altro...
Vado sempre a memoria ma ricordo che facendo la diagonale corrispondente ai 
tasti control ed 1, cambia colore il cursore
La PEEK è il solo metodo affidabile.
Per Paolo Besser: gran cosa il comando JOY, anche se fondamentalmente altro 
non è che una subroutine ASM che combina la PEEK sulla locazione 
incriminata, una OR logica ed un confronto sul valore... certamente dal lato 
BASIC è meglio la JOY (che almeno è ottimizzata in ASM) piuttosto che la 
stessa routine BASIC, usando PEEK, dichiarazione con OR, e IF-THEN. :-)
Il comando JOY c'è anche sul creatiVision ma fortunatamente non richiede le 
dichiarazioni con le OR, in quanto i comandi IF PEEK(129)=32+X e IF JOY(1)=X 
(vado a memoria sulle locazioni e sui valori) sono assolutamente identici 
:-)
MADrigal
-- 
---------------------------------------------------------------------
- Dr. Eng. Luca Antignano, Sassari, Italy
- freeware handheld simulators at          
www.madrigaldesign.it/sim/
- CreatiVision emulation central at 
www.madrigaldesign.it/creativemu/
- Game & Watch shrine at               
www.madrigaldesign.it/gwmania/
- Zzap!Raine web-magazine at               
www.rainemu.com/zzapraine/
---------------------------------------------------------------------

 'azz, la H.
Eh... i typo.... In genere il mio codare consiste in 15 minuti per 
typare il codice seguito da 1 ora a capire dove sta il bug, che 
invariabilmente risulta essere un typo, e questo con qualsiasi 
linguaggio....
Saluti,
Dott. Piergiorgio.