HRA

?ke [Preview]
Herní styl Platformer (Multi Screen)
Multiplayer Bez multiplayeru
Rok vydání 1995
Programátor Johan Bengtsson
Grafik (Unknown)

INTRO

Assembler 12 - Joystick a (sprit)

V minulém díle jsme si všeobecně vysvětlili práci se sprity. Jak se zapíná, jak se pozicuje, priority a další věci, bez kterých to prostě nejde. Dnes si ukážeme , jak pracovat se spritem a jak ho ovládat joystickem.

Joystick

Joy porty máme v počítači dva, Joy port 1 a Joy port 2. ( zajímavé). Stav JOY1 čteme na adrese $DC01 a JOY2 na $DC00. (nepléct si...) Jednoduchým prográmkem v basicu si můžete otestovat porty jednotlivých joysticků.

Tento prográmek bude vypisovat na obrazovku aktuální stav Joysticku v portu 2. Jakmile pohnete zJOYem na jakoukoliv stranu, vrátí se hodnota pohybu. A to nejen pohybu, ale i zmáčknutého fire nebo fire+pohybu. Tabulka pohybů joysticku je následující.

pohyb --- +fire
nahoru #126 #110
dolů #125 #109
doleva #123 #107
doprava #119 #103
vlevo nahoru #122 #106
vlevo dolu #121 #105
vpravo nahoru #118 #102
vpravo dolu #117 #103
fire #111 ----
default #127 #111

Budeme li chtít testovat zmáčknutí Fire tlačítka na Joyi ?? Jednoduché.

LDA $DC00 ; načte z adresy JOY2 stav
CMP #$6F ; jestlize je zmačknutý fire, pokracuje dále
BNE * - 5 ; jinak skočí na začátek programu.
RTS

V příloze je soubor, který pracuje celý v přerušení. Nachází se od afresy $1000 a spouší se příkazem SYS 4096. Jeho pomocí můžete ovládat kurzor (šipku) po obrazovce. Program JOY stahujte ZDE . Prográmek není naprogramovaný v prerušení. Záleží jen na Vás, k čemu tento prográmek využijete. Je to napsané pro co nejjednodušší orientaci. Samozřejmě, že by program bylo možné ještě optimalizovat, ale určitě by to nevedlo k jednoduššímu pochopení.

V další verzi prográmku jsem přichystal ukázku kolize SPRIT / SPRIT a SPRIT / ZNAK. Jak už jsem v minulém díle psal. Kolizí sprit / sprit lze zjistit, které dva sprity mají kolizi, ale u kolize sprit / znak nelze nikde přečíst, který znam koliduje ! JOY s kontrolou kolize stahujte ZDE . U tohoto prográmku zjistíme jednu podstatnou věc. A to, že kolize sprit sprit funguje na mikrobod (nově pixel) !!

Zpomalování programu

Možná si někteří bystřejší všimnou, že assembler je tak ďábelsky rychlý, že je potřeba snímání pohybu zpomalit. V IRQ ( a nejen v něm) je totiž najednou rychlých věcí opravdu hodně, tudíž se určitě dostanete do situace, kdy je potřeba zpomalovat. Uvedu jeden příklad, který je velmi jednoduchý a docela lehce změnitelný.

zpomal lda #200  
  dec zpomal+1  
  lda zpomal +1  
  beq dale ; jestlize je Z=1 , (lda =0) skoc na program
  rts ; tady program skonci
dale lda #200 ; zde se nastavi znova hodnota pro odpocet
  sta zpomal+1 ; na adresu zpomal+1
  .... ; pokracuje program , ktery je zpomalen 200x

Tímto bych asi završil část seriálu věnovanou spritům a jeysticku. Budete-li chtít pochopit práci se sprity a joystickem, zkuste si projít oba přiložené příklady. V dalších dílech se dozvíme něco více o zobrazování textu přes rutiny Basicu BSOUT a BASIN a podíváme se na zoubek nějakému tomu efektu běžícím v IRQ ...

Nový příspěvek k článku

podpis :
První znak podpisu musí být vykřičník, jinak se příspěvek neodešle (ochrana proti spamu)

Advert

Hardcode and datamining by PCH of UNREAL, Hardware guru by RAY of UNREAL, Bugs report by SILLICON of UNREAL
UNREAL 2014-2021 Czech republic