Увидел картинку на facebook и решил нарисовать на Спектруме. Ясно, что понадобятся данные картинки 16х16 точек - всего лишь 32 байта. Первый код дал 70 байт:
device zxspectrum128
ORG #6000
begin
ld hl,pp
ld bc,$5808
; ld a,16
p1: exa
push bc
ld d,(hl):inc hl
ld e,(hl):inc hl
ex de,hl
p2:
add hl,hl
; jr nc,p3
; ld a,6*9
sbc a,a
and 6*9
ld (bc),a
p3:
inc bc
ld a,h
or l
jr nz,p2
ex de,hl
pop bc
ld a,c
add a,32
ld c,a
jr nc,p4
inc b
p4:
; exa
; dec a
; ld a,b
; cp $5A
bit 3,b
jr nz,p1
jr $
pp:incbin "pac2.bin"
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
ld hl,pp
ld bc,$5808
; ld a,16
p1: exa
push bc
ld d,(hl):inc hl
ld e,(hl):inc hl
ex de,hl
p2:
add hl,hl
; jr nc,p3
; ld a,6*9
sbc a,a
and 6*9
ld (bc),a
p3:
inc bc
ld a,h
or l
jr nz,p2
ex de,hl
pop bc
ld a,c
add a,32
ld c,a
jr nc,p4
inc b
p4:
; exa
; dec a
; ld a,b
; cp $5A
bit 3,b
jr nz,p1
jr $
pp:incbin "pac2.bin"
end
display /d,end-begin
savesna "!void.sna",begin
Вернее, код был и побольше размером, но на этапе 70 байт придумалось решение:
device zxspectrum128
ORG #8008
begin
pp:incbin "pac22.bin"
runi:
; jr $
ld sp,$8000
ld bc,$5808
p1:
pop hl
; push bc
p2:
add hl,hl
; jr nc,p3
; ld a,6*9
sbc a,a
and 6*9
ld (bc),a
p3:
inc bc
ld a,h
or l
jr nz,p2
; pop bc
ld a,c
and $E0
add a,32+8
ld c,a
jr nc,p4
inc b
p4:
; exa
; dec a
; ld a,b
; cp $5A
bit 1,b ;bit 3,b
jr z,p1 ;nz
;ret
jr $
end
display /d,end-begin
savesna "!void.sna",runi
savebin "pacman.code",begin,end-begin
ORG #8008
begin
pp:incbin "pac22.bin"
runi:
; jr $
ld sp,$8000
ld bc,$5808
p1:
pop hl
; push bc
p2:
add hl,hl
; jr nc,p3
; ld a,6*9
sbc a,a
and 6*9
ld (bc),a
p3:
inc bc
ld a,h
or l
jr nz,p2
; pop bc
ld a,c
and $E0
add a,32+8
ld c,a
jr nc,p4
inc b
p4:
; exa
; dec a
; ld a,b
; cp $5A
bit 1,b ;bit 3,b
jr z,p1 ;nz
;ret
jr $
end
display /d,end-begin
savesna "!void.sna",runi
savebin "pacman.code",begin,end-begin
Файлы тут. Казалось бы, все красиво, но один приятель спросил :"А он двигается?". Занавес.
Комментарии
Отправить комментарий