Krásně ukázáno. Tohle mě vždycky bavilo, to použití de facto spec. HW na daný úkol. Ten přerod z reálného HW do SW světa. Podobně to pak bylo na Arduinu: rozmyslet jaký senzor, kouknout do jeho datasheetu a podle toho už byl de facto daný základ ovládacího SW. Jen na tom Atari se programovalo přímo a ne cross-compilerem z "většího brášky". Asi to byl holt silnější stroj, no... :D :D
A k tomu náznaku/povzdechu, že i tak je program "dlouhý": neřekl bych, a navíc je samozřejmě delší tím, jak se ukázkově snaží být ukázkový :) V praxi by se zapracoval asi jako součást rutiny ve VBI na místě, kde nevadí přijít o registry, a tím by odpadly všechny TYA+PHA, wait_sync apod. Ale to už by bylo bez okolního kontextu celé hry de facto nečitelné, takže jedině dobře, že tady jste to ukázal takhle pěkně.
Mimochodem, viděl jsem několik her, které celou tuto logiku (i pro víc hráčů najednou) měly pro běžné hry arkádového typu kompletně ve VBI (přerušení v čase mezi koncem vykreslování obrazu na TV a začátkem dalšího snímku) a v hlavním kódu řešily jen když bylo třeba něco většího, např. nový level. Jinak to byla de facto prázdná smyčka.
P.S.: Vím, že vždy záleží (tady doslova) na úhlu pohledu, ale nebylo by lepší mít v titulku slovo "vertikální"? ;)
VBI a DLI - nakoukl jsem, zkoušel a považuju to za vrchol mého "hackingu". Už si nepamatuju, co jsem v těch VBI/DLI řešil, kromě přepínání barev :-), ale bylo to úžasné. A byl to procesorový čas "zadarmo", navíc. A u DLI toho strojového času bylo málo, proti VBI, kde bylo moře času. Podle Gemini AI DLI 70-90 taktů, VBI 3800, resp. 30000 taktů.
Ale byly to věci HW specifické, nepřenositelné na jiný HW.
A v tomhle díle se dozvídám, jak jem měl detekovat kolize hráč/střela. Jen pár desítek let později :-(
Perfektně popsané, moc díky.