Je fakt, že pro zobrazení "hráče" je třeba nějaké to nastavení předem, ale pak už stačí jen zápis do jednoho registru a máme horizontální pohyb. Pro vertikální pohyb je třeba posunout data "hráče" v lineární paměti. A pro detekci kolize stačí vyčíst jeden registr. Za mě ta složitější inicializace stojí za to, protože v runtime to šetři spoustu výkonu CPU a tím i času. Viz seriál o Atari. Ono to není zas tak složité.
Mno, pro jeden sprajt asi jo. Ale když chci opravdu hodně sprajtů, tak asi budu muset napsat nějaký multiplexer. Na spectru umím tohle a je to trivka, stačí mít sprajty setříděné podle osy y, což udělám jednoduchou variací na insert sort.
https://drive.google.com/file/d/1Ez21Plh3ixntP6ByLRhN3YyRF4mfFoD_/view?usp=drive_link
Atari hardwarově podporuje 4-5 spritů. (Pátý může vzniknout kombinací "střel" do jednoho "hráče".) To je ale to, co podporují podpůrné čipy. (Různými fintami se dá docílit většího počtu, ale to je už opravdu hardcore.)
Stále je možno sprity řešit tak, jako na ZX Spectru, tj. zobrazením přímo ve videoRAM bez podpory HW. Pak ale, stejně jako na Spectru, musím řešit vykreslování, clipping na hranicích obrazovky a kolize. Třeba jako zde: http://atari.vjetnam.cz/index.php?frame=sres&sfield=atari_invaders&page=0
Jsou to dva různé přístupy, oba jsou možné.
Jasně, chápu. Já sem právě nedávno koukal na Segu Master System a dostalo mne že když portovali Lemmingy, tak to museli řešit softwarovými sprajty protože VDP prostě nedá víc než osm sprajtů na mikrořádku a lemmingů je řádově víc. To musela být otročina ten kód odladit.
Ono se s tím clippováním na spectru dost podvádí, buď se to maskuje attributama nebo se kresli do bufru bez ořezů a na obrazovku se kopíruje už ořez.
Můj oblibenej trik pro vertikální clipping je použití tabulky mikrořádků pro výpočet vertikální polohy a přechod na každý další druhý mikrořádek. A když už to člověk má, tak prvních a posledních 16 logických mikrořádku nereferuje adresy ve video paměti ale prostor v ROM, takže sprajtovací rutina to nemusí řešit.
Kolize se počítá ručně, ale zas si člověk může hrát s velikostí kolizních boxů, docela to pomáhá s hratelností.
Ve výsledku si nad těmahle problémama člověk láme hlavu, když to píše poprvé, podruhé, pak už to je buď copy paste nebo má v hlavě dobrou představu jak to napsat.