Генерация чанок
- Code: Select all
;69 bytes -2
device zxspectrum128
ORG #6000
begin
matrix:
db 0*8,8*8,2*8,10*8
db 12*8,4*8,14*8,6*8
db 3*8,11*8,1*8,9*8
db 15*8,7*8,13*8,5*8
gench:
; For y=0 To 128;;;;;+8
; For x=0 To 7
; i=x&3
; j=y&3
; II=y>>3
; If II <= D(i,j)
; Plot(x,y,0)
; Else
; Plot(y,x,RGB(255,255,255))
; EndIf
; Next x
; Next y
ld hl,$4000
ld b,$80;bit weight
ld e,0;y
for_y:
ld d,0;x
push hl
for_x:
push hl
; i=x&3
; j=y&3
ld a,e;y
and 3
ld c,a
add a,a
add a,a;c
ld c,a
ld a,d;x
and 3
add a,c
ld l,a
ld h,matrix/256
ld a,e;II=y>>3
; and %11111000
; rra:rra:rra
cp (hl); If II <= D(i,j)
pop hl
;; jr z,plot
jr c,noplot
plot:
ld a,b:or (hl):ld (hl),a
noplot:
inc h
inc d
bit 3,d:jr z,for_x
pop hl
or a:rrc b:jr nc,nonextp
inc l
nonextp:
inc e:bit 7,e:jr z,for_y
jr $
end
display /d,end-begin
savesna "!gc.sna",gench;;begin
---
Генерация лабиринта
- Code: Select all
device zxspectrum128
ORG #6000
begin
; jr domaze
a_array: db 0-1,0-32,1,32
domaze:
; 30 INPUT "Select level(1 to 6)\ ";ta
; 40 LET ta=1100-100*ta
; 50 BORDER 1: PAPER 1: INK 0: CLS : INK 7
; 60 LET s=0: LET lives=3
; 70 PRINT BRIGHT 1; PAPER 6; INK 2;"\ SCORE\ \ \ \ \ \ \ HIGH SCORE\ \ \ \ \ \ \ \ "
; 80 FOR n=22561 TO 22589: POKE n,16: POKE n+640,16: NEXT n ;28 times
ld hl,#5800
ld de,$5801
ld (hl),1*8
ld bc,768
ldir
ld hl,#5800
ld de,#5800+32*22
ld b,32
ld a,8+2
drl3:ld (hl),a
ld (de),a
inc l,e:djnz drl3
ld hl,22561
ld de,22561+640
ld b,28+1
drl: ld a,16
ld (de),a
ld (hl),a
inc hl,de
djnz drl
; 90 FOR n=1 TO 21: POKE 22528+n*32,16: POKE 22558+n*32,16: POKE 22559+n*32,9: NEXT n
ld b,1
ld ix,22528;22559-22528=31
ld de,32
drl2:
add ix,de
ld (ix),$10
ld (ix+30),$10
ld (ix+31),9
inc b
ld a,b:cp 22:jp nz,drl2
; 100 LET b=22593: LET a=b
ld hl,22593;a::22593-22528=65(32*2+1)
;;? ld de,22593;b::
; 110 DIM a(4): LET a(1)=-1: LET a(2)=-32: LET a(3)=1: LET a(4)=32
; 120 POKE a,56
ld (hl),56;7*8
; 130 LET j=INT (RND*4)+1: LET g=j
L130: call random
and 3
;;add a,2
ld ixl,a;g
ld ixh,a;j
; 140 LET b=a+a(j)*2: IF PEEK b=8 THEN POKE b,j: POKE a+a(j),56: LET a=b: GO TO 130
L140:
;ei:halt
ld c,ixh;;ld a,ixh
ld b,high a_array
;; add a,low a_array
;; jr nc,noinc
;; inc b
;;noinc: ld c,a
ld a,(bc);;;9 bytes *2 instead of call NNN:ret 9-4=5bytes
ld e,a
add a,a
sbc a,a
ld d,a
push hl
push de
add hl,de
add hl,de;a(j)*2
ld de,hl;b=a+a(j)*2
ld a,(de)
pop bc
pop hl
cp 8:jr nz,L150
ld a,ixh
ld (de),a
push hl
add hl,bc
ld (hl),56
pop hl
push de:pop hl
jr L130
L150:
; 150 LET j=j+1: IF j=5 THEN LET j=1
ld a,ixh
inc a
and 3
ld ixh,a
; 160 IF j<>g THEN GO TO 140
cp ixl;g
jr nz,L140
; 170 LET j=PEEK a: POKE a,56: IF j<5 THEN LET a=a-a(j)*2: GO TO 130
ld a,(hl)
ld ixh,a
ld (hl),56
cp 5
jr nc,noif
ld c,ixh
ld b,high a_array
ld a,(bc)
ld e,a
add a,a
sbc a,a
ld d,a
or a:sbc hl,de
or a:sbc hl,de
jr L130
noif:
jr $
random: PUSH BC
R1: LD C,#15
; LD C,A
R2: LD A,#70
ADD A,C
LD C,A
LD (R1+1),A
R3:LD A,#FD
SUB C
LD C,A
LD (R2+1),A
RRCA
LD (R3+1),A
LD A,C
POP BC
RET
end
display /d,end-begin
savesna "!maze.sna",domaze;;begin
---
Генерация фона, выдрано из какой-то крэктры
- Code: Select all
device zxspectrum128
ORG #6000
begin
sub_68F9:
sub_6917:
ld hl, 0BC00h
ld de, $4000
ld b, 0C0h
loc_691F:
ld (hl), e
inc h
ld (hl), d
dec h
inc l
call sub_6847
djnz loc_691F
ld hl, 0BE00h
ld c, 0
loc_6932:
ld b, 8
loc_6934:
ld (hl), c
inc l
djnz loc_6934
inc c
ld a, 20h
cp c
jr nz, loc_6932
ld hl, 0BF00h
ld b, 0
ld a, 80h
loc_6945:
ld (hl), a
inc l
rrca
djnz loc_6945
loc_694B:
;xor a
;ld (loc_6972+1), a
; ld a, 0C0h ; 'А'
; ld (loc_698C+1), a
ld bc, 20C0h
ld de, 0
loc_695A:
dec c
loc_695B:
ld a, b
add a, c
ld b, a
inc c
inc c
add a, e
jp c, loc_697A
push de
ld h, 0BCh ; 'ј'
rr d
ld l, d
ld a, (hl)
inc h
ld d, (hl)
inc h
ld l, e
add a, (hl)
ld e, a
inc h
loc_6972:
ld a, 0
add a, d
ld d, a
ld a, (de)
or (hl)
ld (de), a
pop de
loc_697A:
inc e
jp nz, loc_695B
inc d
inc d
ld a, d
or a
jr nz, loc_698C
ld a, (loc_6972+1)
xor 10h
ld (loc_6972+1), a
loc_698C:
ld a, $C0
dec a
ld (loc_698C+1), a
jp nz, loc_695A
jr $
sub_6847:
inc d
ld a, d
and 7
ret nz
ld a, e
add a, 20h ; ' '
ld e, a
ret c
ld a, d
sub 8
ld d, a
ret
end
display /d,end-begin
savesna "!void.sna",begin