Odpovídáte na názor k článku Ovládání hráčů ve hře klávesnicí nebo joystickem na ZX Spectru. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.
A dalsi iterace je o bajt kratsi a jeste rychleji...:
att_adr: ;vypocet adresy atributu 32*D+E
ld a,d ;Y
add a,a ;Y*2 0..+2..46
add a,a ;Y*4 0..+4..92
add a,a ;Y*8 0..+8..184
ld h,0x58>>2 ;
ld l,a ;
add hl,hl ;ATTRIBUTE_ADR/2+Y*16
add hl,hl ;ATTRIBUTE_ADR+Y*32
ld a,l ;hl=8*Y
add a,e ;lo(Y*32+E)
ld l,a ;
adc a,h ;1:4
sub l ;1:4
ld h,a ;1:4
ret
...a jeste rychleji...:
att_adr: ;vypocet adresy atributu 32*D+E
ld a,d ;Y
add a,a ;Y*2 0..+2..46
add a,a ;Y*4 0..+4..92
add a,a ;Y*8 0..+8..184
ld h,0x58>>2 ;
ld l,a ;
add hl,hl ;ATTRIBUTE_ADR/2+Y*16
add hl,hl ;ATTRIBUTE_ADR+Y*32
ld a,l ;hl=8*Y
add a,e ;lo(Y*32+E)
ld l,a ;
jr nc,$+3 ;2:7/12
inc h ;1:4
ret
a nakonec jeste rychleji protoze je to ve funkci a s mene bajty:
...a jeste rychleji...:
att_adr: ;vypocet adresy atributu 32*D+E
ld a,d ;Y
add a,a ;Y*2 0..+2..46
add a,a ;Y*4 0..+4..92
add a,a ;Y*8 0..+8..184
ld h,0x58>>2 ;
ld l,a ;
add hl,hl ;ATTRIBUTE_ADR/2+Y*16
add hl,hl ;ATTRIBUTE_ADR+Y*32
ld a,l ;hl=8*Y
add a,e ;lo(Y*32+E)
ld l,a ;
ret nc ;1:5/11
inc h ;1:4
ret26. 5. 2023, 22:58 editováno autorem komentáře