Dziwny problem z odczytem joysticka
: 20 cze 2021, 00:59
Witajcie,
Na początek sorry że znowu zawracam tyłek ale w google nie mogłem znaleźć odp na
mój dosyć dziwny problem.
Piszę ostatnio edytor sprite'ów na C64 i utknąłem na prostej niby rzeczy czyli obsłudze
klawiatury i joysticka tzn. problem jest z obsługą przekątnych joysticka albo fire+kierunek
jednocześnie.
Najpierw kod (fragment tak poglądowo):
I ta procedura jest uruchamiana w głównej pętli programu. Moim okiem powinno działać
wciśnięcie np. fire+prawo ale w rzeczywistości jakby blokuje się na procedurze handlefire.
Z przekątnymi taki sam problem.
Próbowałem dla spr wykomentować to i tamto, czy też podmienić handlefire na inna procedure.
Z moich "eksperymentów" wynika że jak zamienię te funkcje na mniej procesoroczasożerne to
WSZYSTKO DZIAŁA JAK MOIM ZDANIEM POWINNO. Nie wiem na czym problem polega. Spr na
innym emulatorze i to samo.
Jakby ktoś mógł mi wytłumaczyć dlaczego to tak działa albo pokierować co i gdzie powinienem
przeczytać to byłbym wdzięczny. Z góry dziękuję.
Na początek sorry że znowu zawracam tyłek ale w google nie mogłem znaleźć odp na
mój dosyć dziwny problem.
Piszę ostatnio edytor sprite'ów na C64 i utknąłem na prostej niby rzeczy czyli obsłudze
klawiatury i joysticka tzn. problem jest z obsługą przekątnych joysticka albo fire+kierunek
jednocześnie.
Najpierw kod (fragment tak poglądowo):
Kod: Zaznacz cały
readjoy
lda #$00
sta $dc02
lda $dc00
and #$10
bne *+5
jsr handlefire
lda $dc00
and #$01
bne *+5
jsr handleup
lda $dc00
and #$02
bne *+5
jsr handledown
lda $dc00
and #$04
bne *+5
jsr handleleft
lda $dc00
and #$08
bne *+5
jsr handleright
rts
wciśnięcie np. fire+prawo ale w rzeczywistości jakby blokuje się na procedurze handlefire.
Z przekątnymi taki sam problem.
Próbowałem dla spr wykomentować to i tamto, czy też podmienić handlefire na inna procedure.
Z moich "eksperymentów" wynika że jak zamienię te funkcje na mniej procesoroczasożerne to
WSZYSTKO DZIAŁA JAK MOIM ZDANIEM POWINNO. Nie wiem na czym problem polega. Spr na
innym emulatorze i to samo.
Jakby ktoś mógł mi wytłumaczyć dlaczego to tak działa albo pokierować co i gdzie powinienem
przeczytać to byłbym wdzięczny. Z góry dziękuję.