Chybn⑦ programov⑦ ② zen MultiJoye¢Raster/c.p.u. 2006¢---------------------------------------¢¢Moən⇧ n❎kte② pamatujete, jak loni na Atari⇧d❎ 2005 prob❎hlo kl⇧n ve h②e ⑥ervi2. Cht❎li jsme tam poprv⑦ v historii vyuə t pln⑨ch moənost interface Multijoy - tedy 16 sou⇨asn❎ hraj c ch hr⇧⇨
. Protoəe v AKPV m⇧me jen Multijoy8, poə⇧dali jsme -XI-ho, aby na akci p②ivezl jejich dva kusy stohovateln⑦ verze MultiJoy16/2. P②i zprovozov⇧n sice nastaly podivn⑦ probl⑦my jejichə p② ⇨inu jsme nech⇧pali, ale nakonec to n❎jak za⇨alo fungovat a mohlo se hr⇧t. Kdyə jsme si tut⑦ə hru ⑥ervi2 cht❎li zahr⇧t na akci Unconventional v N❎mecku s na③ m MultiJoyem8, ⇨erv ci op❎t zlobili a v
bec neposlouchali. S Robertem Petruəelou jsme to pak za⇨ali po②⇧dn❎ zkoumat a s p②ekvapen m odhalili d
vod pot ə .¢¢Od po⇨⇧tku v⑨roby na③eho prvn ho MultiJoye8 v roce 1998 uplynulo sice mnoho let, ale popis programov⑦ho zp
sobu ② zen tohoto interface je pops⇧n v na③ dokumentaci nevhodn❎. Po zvolen poəadovan⑦ho joysticku z⇧pisem na adresu $D300 (PORTA) mus b⑨t totiə p②ed n⇧sledn⑨m ⇨ten m jeho stavu z adresy $D300 mnohem v❎t③ ⇨asov⇧ prodleva, neə jsme p
vodn❎ p②edpokl⇧dali. ¢¢V dokumentaci jsme doporu⇨ovali 3x instrukci NOP - tedy prodlevu 6 strojov⑨ch takt
. S⑦ri praktick⑨ch pokus
s r
zn⑨mi modely po⇨ ta⇨
Atari (800XE, 130XE, Atari s roz③ ②enou pam❎t ) a s na③imi MultiJoy4 a MultiJoy8 jsme v③ak zjistili, əe odezva hardware je daleko pomalej③ a prodleva pro z sk⇧n spr⇧vn⑨ch hodnot by m❎la b⑨t minim⇧ln❎ 22 strojov⑨ch takt
. Zkou③el jsem pak je③t❎ v na③em MultiJoyi vym❎nit pouəit⑨ ⇨ip MH3205 za modern❎j③ 74LS138, ale nijak v⑨znamn❎ se to neprojevilo.¢¢Rozhodli jsme se proto nov❎ v dokumentaci zve②ejn❎n⑦ na webu doporu⇨ovat prodlevu minim⇧ln❎ 30 takt
. Ov③em pravd❎podobn❎ to z⇧vis tak⑦ na zp
sobu technick⑦ho ②e③en MultiJoye. Konkr⑦tn❎ na③e ②e③en s jedn m integrovan⑨m obvodem demultiplexerem a diodami se p②i velk⑦m po⇨tu hr⇧⇨
(nap②. p②i propojen s druh⑨m MultiJoyem s dal③ mi 8 hr⇧⇨i) ob⇨as chov⇧ "nejist❎".¢¢Zvaəujeme navrhnout a sestrojit nov⑨ MultiJoy se zcela jin⑨m zapojen m, z②ejm❎ podobn⑨m jako m⇧ ten od -XI-ho. (Pozn⇧mka: Cht❎li jsme to jejich sch⑦ma prozkoumat uə d⇧vno, ale bohuəel ho z -XI-ho marn❎ dolujeme uə n❎kolik let. ;-)) Nezb⑨v⇧ neə doufat, əe pak jiə budou v③echny tyto probl⑦my definitivn❎ pry⇨.¢¢Prozat m tedy doporu⇨en zn : Prodlevu mezi z⇧pisem do registru PORTA a jeho n⇧sledn⑨m ⇨ten m d❎lejte rozhodn❎ minim⇧ln❎ t❎ch 30 takt
, l⑦pe v③ak v r⇧mci moənost je③t❎ v ce (zejm⑦na pokud m⇧ hra podporovat maxim⇧ln ch 16 hr⇧⇨
). Ide⇧ln je, pokud se v⇧m poda② m sto pr⇧zdn⑦ ⇨ekac smy⇨ky tento ⇨as vyuə t n❎⇨ m produktivn m, nap② klad vypisov⇧n m skre p② slu③n⑦ho hr⇧⇨e nebo jin⑨mi operacemi, kter⑨mi m
əete ⇨ten registru PORTA odd⇧lit co nejv c (v tom p② pad❎ je samoz②ejm❎ nutn⑦ si spo⇨ tat takty t❎chto operac ).¢¢Kompletn programov⑦ ② zen MultiJoye s 30-ti taktovou prodlevou vypad⇧ tedy takto:¢¢;Inicializace¢ LDA #0¢ STA $D302 ;PACTL¢ LDA #$F0 ;4HORNI=OUT,4DOLNI=IN¢ STA $D300 ;PORTA¢ LDA #60¢ STA $D302 ;PACTL¢¢;⑥ten poəadovan⑦ho joysticku¢ LDA #N ;N=⇨ slo joye 0 aə 7¢ ;(resp.0 aə 15 pro MJ16)¢ ASL A ;posun o 4 bity¢ ASL A¢ ASL A¢ ASL A¢ STA $D300 ;PORTA¢ LDX #$06 ;prodleva 30 takt
p②ed¢WAI DEX ;⇨ten m PORTA kv
li¢ BNE WAI ;zpoəd❎n hardware¢ LDA $D300 ;PORTA¢ AND #$0F¢;Te⇦ je v A stav p⇧ky¢ LDA $D010 ;TRIG0¢;Te⇦ je v A stav tla⇨ tka¢¢Pokud v⇧m vrt⇧ hlavou, jakto əe jsme tuto z⇧sadn v❎c neodhalili jiə p②ed lety p②i hran prvn prototypov⑦ hry ⑥ervi nebo u druh⑦ hry Multris, vysv❎tlen je jednoduch⑦. Hra ⑥ervi i Multris totiə prov⇧d❎ly po z⇧pisu do $D300 pr⇧v❎ je③t❎ jin⑦ akce a ⇨ten stavu n⇧sledovalo aə daleko pozd❎ji, takəe u nich byla tehdy nevhodn❎ doporu⇨en⇧ prodleva p②ekro⇨ena mnohon⇧sobn❎ a k ə⇧dn⑨m pot ə m proto u nich nedoch⇧z . Aə ve h②e ⑥ervi2 jsem prvn❎ pouəil opravdu jen ty 3 NOPy (6 takt