Написан со скуки, но при начале кода и скука исчезла:
device zxspectrum48
ORG #6000
begin
; ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
ld hl,$598c-32-1
ld bc,7+2
ld a,2
aflp2:
push hl,bc,af
ei:halt
; push af
; ld a,7:out ($FE),a
; pop af
aflp1:
ld de,hl
inc de
ld (hl),0
push hl
push bc
ldir
; jr $
pop bc
pop hl
ld de,32
add hl,de
dec a
jr nz,aflp1
; ld a,0:out ($FE),a
pop af,bc,hl
ld de,33
or a
sbc hl,de
inc bc,bc
add a,2
cp 26
jr nz,aflp2
jr $
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
; ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
ld hl,$598c-32-1
ld bc,7+2
ld a,2
aflp2:
push hl,bc,af
ei:halt
; push af
; ld a,7:out ($FE),a
; pop af
aflp1:
ld de,hl
inc de
ld (hl),0
push hl
push bc
ldir
; jr $
pop bc
pop hl
ld de,32
add hl,de
dec a
jr nz,aflp1
; ld a,0:out ($FE),a
pop af,bc,hl
ld de,33
or a
sbc hl,de
inc bc,bc
add a,2
cp 26
jr nz,aflp2
jr $
end
display /d,end-begin
savesna "!void.sna",begin
Дополнение. Как и ожидалось, пришла идея еще одного эффекта - нарисовал карту, заодно нашел ошибку в редакторе шрифтов:
device zxspectrum48
ORG #6000
begin
ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
ld c,0 ;abs value
rolp:
ei:halt
ld d,0;y
ylp:
ld e,0;x
xlp:
ld a,e
sub 15
jp p,nonegx
neg
nonegx:
ld b,a
ld a,d
sub 11
jp p,nonegy
neg
nonegy:
add a,b
cp c
jr nz,noput
ld l,d
add hl,hl
add hl,hl
add hl,hl
ld h,22
add hl,hl
add hl,hl
ld a,l
or e
ld l,a
ld (hl),7
noput
inc e
bit 5,e
jp z,xlp
inc d
ld a,d
cp 24
jp nz,ylp
inc c
ld a,c
cp $1E
jp nz,rolp
jr $
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
ld c,0 ;abs value
rolp:
ei:halt
ld d,0;y
ylp:
ld e,0;x
xlp:
ld a,e
sub 15
jp p,nonegx
neg
nonegx:
ld b,a
ld a,d
sub 11
jp p,nonegy
neg
nonegy:
add a,b
cp c
jr nz,noput
ld l,d
add hl,hl
add hl,hl
add hl,hl
ld h,22
add hl,hl
add hl,hl
ld a,l
or e
ld l,a
ld (hl),7
noput
inc e
bit 5,e
jp z,xlp
inc d
ld a,d
cp 24
jp nz,ylp
inc c
ld a,c
cp $1E
jp nz,rolp
jr $
end
display /d,end-begin
savesna "!void.sna",begin
Этот код можно оптимизнуть:
device zxspectrum48
ORG #6000
begin
ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
ld c,0 ;abs value
rolp:
ld hl,$5800
ei:halt
ld d,0;y
ylp:
ld e,0;x
xlp:
ld a,e
sub 15
jp p,nonegx
neg
nonegx:
ld b,a
ld a,d
sub 11
jp p,nonegy
neg
nonegy:
add a,b
cp c
jr nz,noput
ld (hl),7
noput
inc hl
inc e
bit 5,e
jp z,xlp
inc d
ld a,d
cp 24
jp nz,ylp
inc c
ld a,c
cp $1E
jp nz,rolp
jr $
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
ld c,0 ;abs value
rolp:
ld hl,$5800
ei:halt
ld d,0;y
ylp:
ld e,0;x
xlp:
ld a,e
sub 15
jp p,nonegx
neg
nonegx:
ld b,a
ld a,d
sub 11
jp p,nonegy
neg
nonegy:
add a,b
cp c
jr nz,noput
ld (hl),7
noput
inc hl
inc e
bit 5,e
jp z,xlp
inc d
ld a,d
cp 24
jp nz,ylp
inc c
ld a,c
cp $1E
jp nz,rolp
jr $
end
display /d,end-begin
savesna "!void.sna",begin
Позже увидел еще оптимизацию:
device zxspectrum48
ORG #6000
begin
ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
ld c,0 ;abs value
rolp:
ld hl,$5800
ei:halt
ld d,0;y
ylp:
ld e,0;x
ld a,d
sub 11
jp p,nonegy
neg
nonegy:
ld b,a
xlp:
ld a,e
sub 15
jp p,nonegx
neg
nonegx:
add a,b
cp c
jr nz,noput
ld (hl),7
noput
inc hl
inc e
bit 5,e
jp z,xlp
inc d
ld a,d
cp 24
jp nz,ylp
inc c
ld a,c
cp $1E
jp nz,rolp
jr $
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
ld hl,$5800,de,$5803,bc,765:set 6,(hl):ldir
ld c,0 ;abs value
rolp:
ld hl,$5800
ei:halt
ld d,0;y
ylp:
ld e,0;x
ld a,d
sub 11
jp p,nonegy
neg
nonegy:
ld b,a
xlp:
ld a,e
sub 15
jp p,nonegx
neg
nonegx:
add a,b
cp c
jr nz,noput
ld (hl),7
noput
inc hl
inc e
bit 5,e
jp z,xlp
inc d
ld a,d
cp 24
jp nz,ylp
inc c
ld a,c
cp $1E
jp nz,rolp
jr $
end
display /d,end-begin
savesna "!void.sna",begin
Странно, но записанная GIF-ка выглядит хуже.
Комментарии
Отправить комментарий