hgr: pattern

This commit is contained in:
Vince Weaver 2021-02-26 08:38:59 -05:00
parent 42402e19c5
commit be5d4e0663
6 changed files with 207 additions and 1 deletions

View File

@ -13,7 +13,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \
RLEASM.BAS HORIZON.BAS FLYER.BAS STAR.BAS HYPER.BAS FASTAR.BAS \
FASTAR2.BAS BIN.BAS FALLING.BAS SNOW.BAS XMAS.BAS AN3.BAS PLASMA.BAS \
C64.BAS SIERPINSKI.BAS FAKES.BAS SIER.BAS DROPS.BAS RR.BAS RR_HGR.BAS \
COMBO.BAS WIRES.BAS
COMBO.BAS WIRES.BAS PATTERN.BAS
cp empty.dsk appleiibot.dsk
$(DOS33) -y appleiibot.dsk BSAVE -a 0x0300 LOAD
$(DOS33) -y appleiibot.dsk SAVE A HELLO
@ -66,6 +66,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \
$(DOS33) -y appleiibot.dsk SAVE A RR_HGR.BAS
$(DOS33) -y appleiibot.dsk SAVE A COMBO.BAS
$(DOS33) -y appleiibot.dsk SAVE A WIRES.BAS
$(DOS33) -y appleiibot.dsk SAVE A PATTERN.BAS
####
@ -386,6 +387,11 @@ COMBO.BAS: combo.bas
WIRES.BAS: wires.bas
$(TOKENIZE) < wires.bas > WIRES.BAS
####
PATTERN.BAS: pattern.bas
$(TOKENIZE) < pattern.bas > PATTERN.BAS
####

View File

@ -0,0 +1,2 @@
1FORI=0TO50:POKE1013+I,4*PEEK(2125+I)-192+(PEEK(2176+I/3)-35)/4^(I-INT(I/3)*3):NEXT
2&"*el,clT;QbNoP.YbVo74mV8BFR9YZ9;NT/gobnYf`_P0Z#NoB01[S<YCY'<JG@MAJ3W'

Binary file not shown.

View File

@ -0,0 +1,2 @@
5 HOME
10 PRINT CHR$(4);"CATALOG"

View File

@ -0,0 +1,57 @@
GBASL = $26
GBASH = $27
HGRPAGE = $E6
XX = $FE
YY = $FF
PAGE0 = $C054
PAGE1 = $C055
HGR = $F3E2
HGR2 = $F3D8
HCLR = $F3F2
HPOSN = $F411 ;; (Y,X) = X, A = Y
;; line addr in GBASL/GBASH
;; with offset in HGR.HORIZ, Y
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
sprite:
jsr HGR ; clear page0
jsr HGR2 ; clear page1
; HGR page now $40
lda #50
sta XX
sta YY
move_sprite:
draw_sprite:
ldy #0
ldx XX
lda YY
jsr HPOSN
; ldy #0
lda (GBASL),Y
eor #$7f
sta (GBASL),Y
iny
lda (GBASL),Y
eor #$7f
sta (GBASL),Y
inc XX
inc YY
lda YY
cmp #190
bcc no_oflo
lda #0
sta YY
no_oflo:
jmp move_sprite

View File

@ -0,0 +1,139 @@
GBASL = $26
GBASH = $27
HGRPAGE = $E6
SPRITE_OFFSET = $F9
XDIR = $FA
YDIR = $FB
YC = $FC
MY = $FD
XX = $FE
YY = $FF
PAGE0 = $C054
PAGE1 = $C055
HGR = $F3E2
HGR2 = $F3D8
HCLR = $F3F2
HPOSN = $F411 ;; (Y,X) = X, A = Y
;; line addr in GBASL/GBASH
;; with offset in HGR.HORIZ, Y
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
sprite:
jsr HGR ; clear page0
jsr HGR2 ; clear page1
; HGR page now $40
lda #50
sta XX
sta MY
lda #$FF
sta YDIR
sta XDIR
move_sprite:
jsr draw_sprite
lda #100
jsr WAIT
jsr draw_sprite
lda XX
clc
adc XDIR
sta XX
beq switch_xdir
cmp #240
bcc noswitch_xdir
switch_xdir:
lda XDIR
eor #$FF
sta XDIR
inc XDIR ; two's complement
noswitch_xdir:
lda MY
clc
adc YDIR
sta MY
beq switch_ydir
cmp #177
bne noswitch_ydir
switch_ydir:
lda YDIR
eor #$FF
sta YDIR
inc YDIR ; two's complement
noswitch_ydir:
jmp move_sprite
draw_sprite:
lda MY
sta YY
lda #14
sta YC
lda #0
sta SPRITE_OFFSET
sprite_loop:
ldy #0
ldx XX
lda YY
jsr HPOSN ;; (Y,X) = X, A = Y
jsr plot_line
jsr plot_line
inc YY
dec YC
bne sprite_loop
rts
plot_line:
ldx SPRITE_OFFSET
lda (GBASL),Y
eor ball,X
inc SPRITE_OFFSET
sta (GBASL),Y
iny
rts
ball:
.byte $7f,$7a
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f
.byte $7f,$7f