MultiJoy

R. Štěrba, RASTER

MultiJoy je nový (1998) interface pro Atari XE/XL, který se připojuje na oba joystickové porty a umožňuje současné použití až 16 křížových ovladačů.

Základ této myšlenky je starý spoustu let. Tehdy jsem hledal způsob, jakým připojit k Atárku hudební klaviaturu a zjišťovat stav jednotlivých kláves. Napadlo mě, že by bylo možné přepnout 4 bity (JOY 2) na výstup a přes ně adresovat 16 částí mechanické klávesnice. Tím by se vždy stanovilo, která čtveřice kláves se právě sleduje. Stav takto vybraných čtyř kláves by se pak vždy přečetl přes 4 vstupní bity (JOY 1). Celkem by se takto dalo sledovat zcela nezávislých 64 kláves. (S využitím tlačítek FIRE1 a FIRE2 dokonce až 96!)

Když jsem s tímhle přišel za Jirkou Svobodou, jen se potutelně usmál a vytáhl ze šuplíku všechny potřebné elektronické součástky. Prý přesně nad tímhle taky kdysi přemýšlel, ale nikdy se do toho nepustil. Předal mi je jako štafetu. Ovšem já, protože nejsem zdatný elektrotechnik, jsem vlastní konstrukci též stále oddaloval. Pak se objevil MIDI interface, přes který jsem bez problémů připojil své MIDI klávesy, a tak už nemělo smysl s původním nápadem dál experimentovat.

Až nyní po letech jsme se k tomu vrátili v Atariklubu Prostějov a sestrojili MultiJoy. Technické konstrukční detaily vynechám, protože ty vám osvětlí Zdeněk, a vysvětlím jen programátorské hledisko.

Jak sledovat 16 joysticků připojených přes MultiJoy?

Nejprve je nutné inicializovat porty tak, aby bity JOY2 fungovaly jako výstupní a bity JOY1 jako vstupní. K tomu stačí:

 LDA #0
 STA PACTL  ;54018 ($D302)
 LDA #$F0   ;4HORNI=OUT,4DOLNI=IN
 STA PORTA  ;54016 ($D300)
 LDA #60
 STA PACTL  ;54018 ($D302)

V průběhu programu se pak čtení požadovaného joysticku provádí takto:

 LDA #0     ;číslo joysticku (0 až 15)
 ASL A
 ASL A
 ASL A
 ASL A      ;A=A*16
 STA PORTA  ;54016 ($D300)
 LDA PORTA  ;54016 ($D300)
 AND #$0F

A nyní jsou v Akumulátoru 4 dolní bity naplněny dle stavu vybraného křížového ovladače.

Příslušné FIRE-tlačítko čteme standardně přes:

 LDA TRIG0  ;53264 ($D010)

To je všechno. Teď již můžete začít vesele programovat hry pro současně "pařících" 16 lidí.

Zatím existuje jen jedna prototypová hra Červi, která byla představena na jaře na Atariádě 98 v Prostějově a objevila se i na CODECOPY 98 v Prievidze.

Atariklub Prostějov má 2 exempláře interface MultiJoy. Jednak verzi pro 8 a dále verzi pro 4 joysticky. Zjistilo se totiž, že málokdy se někde sejde více než 8 hráčů s 8-mi použitelnými funkčními ovladači, tudíž případný MultiJoy16 by byl prakticky nevyužitelný.