ААА подобрал туеву хучу cracktro к выдиранию в отдельные файлы. Я уже использовал в загрузчике показ надписи ripped by g0blinish, и мне захотелось обновить заставку. Вопрос в использовании шрифта, который основан на стандартном. Я написал процедуру, спросил в Телеграм-канале какие смотрятся лучше? Мнения разделились и выбрали второй вариант, который я накодил в начале 90х. Вот код
device zxspectrum128
ORG #6000
begin
ld hl,$3d00
ld de,$4000
folp:
push de
chlp:
ld a,l
and 7
cp 4
ld b,$AA
jr z,band
cp 5
ld b,$55
jr z,band
ld b,$FF
band:
ld a,(hl)
add a,a
or (hl)
and b
ld (de),a
inc hl
inc d
ld a,d
and 7
jr nz,chlp
pop de
inc e
ld a,e
cp 97
jr nz,folp
;font1
ld hl,$3d00
ld de,$4080
folp2:
push de
chlp2:
ld a,l
and 7
cp 1:jr z,shft
cp 6:jr z,shft
ld a,(hl):jr put
shft:
ld a,(hl)
rra
or (hl)
; ld c,a
; add a,a
; or c
put:
ld (de),a
inc hl
inc d
ld a,d
and 7
jr nz,chlp2
pop de
inc e
ld a,e
cp $E0
jr nz,folp2
; jr $
;font2
ld hl,$3d00
ld de,$4800
folp1:
push de
chlp1:
ld a,l
and 7
cp 4
ld a,(hl)
jr c,sh1
rlca
jr putv
sh1:
rrca
putv:
ld (de),a
inc hl
inc d
ld a,d
and 7
jr nz,chlp1
pop de
inc e
ld a,e
cp 97
jr nz,folp1
jr $
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
ld hl,$3d00
ld de,$4000
folp:
push de
chlp:
ld a,l
and 7
cp 4
ld b,$AA
jr z,band
cp 5
ld b,$55
jr z,band
ld b,$FF
band:
ld a,(hl)
add a,a
or (hl)
and b
ld (de),a
inc hl
inc d
ld a,d
and 7
jr nz,chlp
pop de
inc e
ld a,e
cp 97
jr nz,folp
;font1
ld hl,$3d00
ld de,$4080
folp2:
push de
chlp2:
ld a,l
and 7
cp 1:jr z,shft
cp 6:jr z,shft
ld a,(hl):jr put
shft:
ld a,(hl)
rra
or (hl)
; ld c,a
; add a,a
; or c
put:
ld (de),a
inc hl
inc d
ld a,d
and 7
jr nz,chlp2
pop de
inc e
ld a,e
cp $E0
jr nz,folp2
; jr $
;font2
ld hl,$3d00
ld de,$4800
folp1:
push de
chlp1:
ld a,l
and 7
cp 4
ld a,(hl)
jr c,sh1
rlca
jr putv
sh1:
rrca
putv:
ld (de),a
inc hl
inc d
ld a,d
and 7
jr nz,chlp1
pop de
inc e
ld a,e
cp 97
jr nz,folp1
jr $
end
display /d,end-begin
savesna "!void.sna",begin
Теперь заставка. Эффект был написан ранее, осталось только добавить генерацию букв на лету. Я добавил "вспыхивание" текста.
device zxspectrum128
ORG #6000
begin
ld hl,$5AFF,de,$5AFe,bc,$1B00-1,(hl),0:lddr
ld de,$57E0+6
prlp:
ld ix,mess
push de
tlp:
ld a,(ix+0):inc ix
ld h,0,l,a
add hl,hl
ld h,15
add hl,hl
add hl,hl
push de
chlp:
; ld a,(hl)
; ld (de),a
ld a,l
and 7
cp 1:jr z,shft
cp 6:jr z,shft
ld a,(hl):jr put
shft:
ld a,(hl)
rra
or (hl)
; ld c,a
; add a,a
; or c
put:
ld (de),a
inc hl
inc d
ld a,d
and 7
jr nz,chlp
pop de
inc e
xor a
cp (ix+0)
jr nz,tlp
; jr $
ei:halt
ld hl,$5Ae0
alp:
ld a,(hl)
cp 7
adc a,0
ld (hl),a
inc l
jr nz,alp
ei:halt
; jr $
pop de
dec d
; ld a,d
; and 7
; cp 7
; jr nz,prlp
bit 3,d
jr z,prlp
wsp:
ld a,$7F:in a,($FE)
rra
jr c,wsp
jp begin
mess: db "ripped by g0blinish",0
end
display /d,end-begin
savesna "!void.sna",begin
ORG #6000
begin
ld hl,$5AFF,de,$5AFe,bc,$1B00-1,(hl),0:lddr
ld de,$57E0+6
prlp:
ld ix,mess
push de
tlp:
ld a,(ix+0):inc ix
ld h,0,l,a
add hl,hl
ld h,15
add hl,hl
add hl,hl
push de
chlp:
; ld a,(hl)
; ld (de),a
ld a,l
and 7
cp 1:jr z,shft
cp 6:jr z,shft
ld a,(hl):jr put
shft:
ld a,(hl)
rra
or (hl)
; ld c,a
; add a,a
; or c
put:
ld (de),a
inc hl
inc d
ld a,d
and 7
jr nz,chlp
pop de
inc e
xor a
cp (ix+0)
jr nz,tlp
; jr $
ei:halt
ld hl,$5Ae0
alp:
ld a,(hl)
cp 7
adc a,0
ld (hl),a
inc l
jr nz,alp
ei:halt
; jr $
pop de
dec d
; ld a,d
; and 7
; cp 7
; jr nz,prlp
bit 3,d
jr z,prlp
wsp:
ld a,$7F:in a,($FE)
rra
jr c,wsp
jp begin
mess: db "ripped by g0blinish",0
end
display /d,end-begin
savesna "!void.sna",begin
К коду добавлен опрос нажатия пробела для повтора. Эффект выглядит симпатично, мне нравится. Время вернуться к потрошению релизов.
Комментарии
Отправить комментарий