Odpovídáte na názor k článku Vývoj pro ZX Spectrum: vlastní vykreslovací subrutiny potřetí. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.
Imho je tohle spis ukazka jak lze obtizne psat na Z80.
Ale ta grafika je podle me teda peklo taky. Zjednodusenim v jednom smeru, to ve vsech ostatnich udelali slozitejsi...
Preferoval bych, kdyby to slo pekne za sebou:
+256 o 8 pixelu dolu a nebo -256 o 8 pixelu nahoru.
+32 o pixel dolu a nebo -32 (+FFE0) o pixel nahoru.
Nemusi se resit zadne up/down rutiny, kdyz pisete uz sam o sobe nejaky komplikovany algoritmus na kruznici/usecku.
Znaky se komplikuji na to, ze problem prechodu tretin se meni na problem prechodu radku.
Na radku je to stale jen +-1 pro spodni bajt. Jakmile to preleze pres 5 bitu tak se meni +-horni bajt.
Neco jako pro znak "vpravo/nasledujici znak/+1":
L = X
L |= 0xC0
H = Y
HL++
L &= 0x1F
A pro znak "vlevo/predchozi/-1":
L = X
H = Y
HL--
L &= 0x1F
Timhle se da vlastne resit prechod pro tretiny i ted. U H |=3 a H &=F8.
TAB x, ktere nastavi kurzor na x znak na radku (pouhe prirazeni) a nebo pokud je to posun doleva tak snizi radek (+256) by byl o dost snazsi.
YX ve znacich na adresu v HL:
H = Y
L = X
add HL, HL
add HL, HL
add HL, HL
YX v pixelech na adresu v HL?
H = Y
L = X
a ted potrebujeme HL >>= 3
takze asi neco jako
A = L
xor H
and 0xF8
xor H
rrca
rrca
rrca
L = A
A = H
rrca
rrca
rrca
H = A
Hmm to je 12+2 bajtu (12*4+7 = 55 taktu)
Takze na 12 bajtu (3*16 = 48 taktu) to jde udelat primo pres shift H a L.
PS: Mit to linearne by pro me asi nejvic zmenilo ten pocit z pomaleho nacitani obrazovky her. Pokud by to neemulovala primo ta nacitaci rutina.