Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PROGRAMMAZIONE C64] gestione joystick

96 views
Skip to first unread message

Michele

unread,
Mar 28, 2008, 7:33:11 AM3/28/08
to
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


Giorgio Silvio

unread,
Mar 28, 2008, 9:31:35 AM3/28/08
to
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

Roberto Bazzano

unread,
Mar 28, 2008, 9:58:51 AM3/28/08
to
>> 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

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


Roberto Bazzano

unread,
Mar 28, 2008, 10:00:12 AM3/28/08
to
> 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.

Oooohhh... scusa.... non avevo notato che ti serve il joystick in porta 2.
In questo caso devi usare la peek().

Ciao.
Roberto


Philsan

unread,
Mar 28, 2008, 10:45:31 AM3/28/08
to
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.


Michele

unread,
Mar 28, 2008, 12:04:47 PM3/28/08
to
grazie a tutti, avete praticamente programmato al mio posto!

ciao

paolo besser

unread,
Mar 29, 2008, 4:51:34 AM3/29/08
to
Giorgio Silvio 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

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

paolo besser

unread,
Mar 29, 2008, 4:53:59 AM3/29/08
to
paolo besser ha scritto:

> IF JOY(n) = valore TEN do_something

'azz, la H.

p.bes

Luca Antignano

unread,
Mar 29, 2008, 6:17:03 AM3/29/08
to

"Roberto Bazzano" <r.ba...@ulm.nospam.it> ha scritto nel messaggio
news:fsitio$ko6$1...@aioe.org...

> 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?

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/
---------------------------------------------------------------------


dott.Piergiorgio

unread,
Mar 29, 2008, 12:14:32 PM3/29/08
to
paolo besser ha scritto:

> paolo besser ha scritto:
>
>> IF JOY(n) = valore TEN do_something
>
> '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.

0 new messages