This commit is contained in:
Vince Weaver 2022-10-24 01:20:19 -04:00
parent cce5b35c61
commit 00659143de
6 changed files with 553 additions and 1 deletions

View File

@ -28,7 +28,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \
BOXES.BAS SOLARIS.BAS SOLARIS2.BAS ASPLODE.BAS SOLARIS3.BAS \
TARGET.BAS ELITE.BAS MYSTERY.BAS OFFICE.BAS GR_XOR.BAS \
LARGE_XOR.BAS PAR_XOR.BAS PAR_HGR.BAS SIER_XOR.BAS PATTERN_LOGO.BAS \
GEARS.BAS DSR_LORES.BAS A2_LORES.BAS
GEARS.BAS DSR_LORES.BAS A2_LORES.BAS MAGIC_CUBE.BAS MOON.BAS
cp $(EMPTY_DISK)/empty_lots_of_dirents.dsk appleiibot.dsk
# cp empty.dsk appleiibot.dsk
# $(DOS33) -y appleiibot.dsk BSAVE -a 0x0300 LOAD
@ -151,6 +151,8 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \
$(DOS33) -y appleiibot.dsk SAVE A GEARS.BAS
$(DOS33) -y appleiibot.dsk SAVE A DSR_LORES.BAS
$(DOS33) -y appleiibot.dsk SAVE A A2_LORES.BAS
$(DOS33) -y appleiibot.dsk SAVE A MAGIC_BOX.BAS
$(DOS33) -y appleiibot.dsk SAVE A MOON.BAS
####
@ -843,6 +845,16 @@ DSR_LORES.BAS: dsr_lores.bas
A2_LORES.BAS: a2_lores.bas
$(TOKENIZE) < a2_lores.bas > A2_LORES.BAS
####
MOON.BAS: moon.bas
$(TOKENIZE) < moon.bas > MOON.BAS
####
MAGIC_BOX.BAS: magic_box.bas
$(TOKENIZE) < magic_box.bas > MAGIC_BOX.BAS

View File

@ -0,0 +1,45 @@
5 HGR:HGR2
6 C=0
40 FOR W=3 TO 64 STEP 0.5
50 A=4/W+T/4
60 K=145/W
70 X=64+COS(A)*K
80 Y=64+SIN(A)*K
100 HCOLOR=C
110 HPLOT X-W,Y-W TO X+W,Y-W TO X+W,Y+W TO X-W,Y+W TO X-W,Y-W
115 C=C+1:IF C>7 THEN C=0
120 NEXT
130 T=T+1:POKE230,32+32*P:P=NOTP:POKE49236+P,0:GOTO 6
'5 GR
'40 FOR W=3 TO 68 STEP 0.1
'50 A=4/W+T/4
'60 K=60/W
'70 X=20+COS(A)*K
'80 Y=20+SIN(A)*K
'90 I=35/W+2+T*3
'100 COLOR=C/4
'110 HLIN X-W,X+W AT Y-W
'111 HLIN X-W,X+W AT Y+W
'112 VLIN Y-W,Y+W AT X-W
'113 VLIN Y-W,Y+W AT X+W
'115 C=C+1
'120 NEXT
'c={0,1,2,8,14,15,7}
'fillp(0xa5a5)
'function _draw()
'for w=3,68,.1 do
' a=4/w+t()/4
' k=145/w
' x=64+cos(a)*k
' y=64+sin(a)*k
' i=35/w+2+t()*3
' rect(x-w,y-w,x+w,y+w,f(i)*16+f(i+.5))
'end
'end
'function f(i)
'return c[flr(1.5+abs(6-i%12))]
'end

44
graphics/gr/moon/Makefile Normal file
View File

@ -0,0 +1,44 @@
include ../../../Makefile.inc
LINKER_DIR = ../../../linker_scripts/
EMPTY_DISK = ../../../empty_disk/empty.dsk
DOS33 = ../../../utils/dos33fs-utils/dos33
TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
all: moon.dsk
moon.dsk: HELLO MOON MOON2
cp $(EMPTY_DISK) moon.dsk
$(DOS33) -y moon.dsk SAVE A HELLO
$(DOS33) -y moon.dsk BSAVE -a 0xc00 MOON
$(DOS33) -y moon.dsk BSAVE -a 0xc00 MOON2
###
MOON: moon.o
ld65 -o MOON moon.o -C $(LINKER_DIR)/apple2_c00.inc
moon.o: moon.s
ca65 -o moon.o moon.s -l moon.lst
###
MOON2: moon2.o
ld65 -o MOON2 moon2.o -C $(LINKER_DIR)/apple2_c00.inc
moon2.o: moon2.s
ca65 -o moon2.o moon2.s -l moon2.lst
###
HELLO: hello.bas
$(TOKENIZE) < hello.bas > HELLO
####
clean:
rm -f *~ *.o *.lst HELLO MOON MOON2

View File

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

183
graphics/gr/moon/moon.s Normal file
View File

@ -0,0 +1,183 @@
; Moon
; by deater (Vince Weaver) <vince@deater.net>
; Zero Page
GBASL = $26
GBASH = $27
COLOR = $30
SEEDL = $43
SEEDH = $44
FRAME = $EA
FRAME2 = $EB
FRAME4 = $EC
TEMP = $FC
PAGE = $FD
COUNT = $FE
WHICH = $FF
; Soft Switches
SET_GR = $C050 ; Enable graphics
FULLGR = $C052 ; Full screen, no text
PAGE1 = $C054 ; Page1
PAGE2 = $C055 ; Page2
LORES = $C056 ; Enable LORES graphics
; ROM routines
GBASCALC= $F847 ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
SETGR = $FB40
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
PLOT = $F800 ;; PLOT AT Y,A
SETCOL = $F864 ;; COLOR=A
moon:
;===================
; init screen
jsr SETGR ; lores graphics
bit FULLGR ; full screen
lda #$0 ; start on page1
sta PAGE
;parallax_forever:
; inc FRAME ; increment frame
;
; lda FRAME ; also have frame/2 and frame/4
; lsr
; sta FRAME2
; lsr
; sta FRAME4
;==========================
; flip page
; lda PAGE ; get current page
; pha ; save for later
; lsr ; switch visible page
; lsr
; tay
; lda PAGE1,Y
; pla ; save old draw page
; eor #$4 ; toggle to other draw page
; sta PAGE
big_loop:
lda #$66
sta COLOR
ldx #24
stx COUNT
water:
ldx COUNT
jsr get_z
sta TEMP
asl
asl
asl
tax
water_line:
jsr random
; adc FRAME
adc COUNT
and #$1F
tay
lda COUNT
clc
adc #23
jsr PLOT ; plot at Y,A
skip:
dex
bne water_line
dec COUNT
bne water
over:
lda #1
sta SEEDL
lda #1
sta SEEDH
inc FRAME
lda #100
jsr WAIT
jsr clear_bottom
jmp big_loop
; from batari basic (?)
random:
lda SEEDH
lsr
rol SEEDL
bcc noeor
eor #$B4
noeor:
sta SEEDH
eor SEEDL
rts
get_z:
lda #1
cpx #10
bcs done_z
lda Z_lookup,X
done_z:
rts
HLIN = $F819 ; HLINE Y,$2C at A
clear_bottom:
lda #0
sta COLOR
lda #24
sta WHICH
clear_bottom_loop:
ldy #0
lda #39
sta $2C
lda WHICH
cmp #48
beq done_clear
jsr HLIN
inc WHICH
bne clear_bottom_loop
done_clear:
rts
Z_lookup:
.byte 24, 12, 8, 6, 5, 4, 3, 3
.byte 2, 2
;20 FOR Y=0 TO 24
;30 Z=24/(Y+1)
;40 FOR I=0 TO Z*4
;50 X=INT(RND(1)*39)+T*150/Z
;'60 W=COS(RND(1)+T)*12/Z
;65 C=SCRN(X,20-Y/2):IF C=0 THEN C=6
;70 COLOR=C:PLOT X,Y+20
;80 NEXT:NEXT:GOTO 20

266
graphics/gr/moon/moon2.s Normal file
View File

@ -0,0 +1,266 @@
; Moon2
; by deater (Vince Weaver) <vince@deater.net>
; Zero Page
GBASL = $26
GBASH = $27
COLOR = $30
SEEDL = $43
SEEDH = $44
OFFSETS = $D0
FRAME = $EA
FRAME2 = $EB
FRAME4 = $EC
LINE2 = $FB
TEMP = $FC
PAGE = $FD
COUNT = $FE
WHICH = $FF
; Soft Switches
SET_GR = $C050 ; Enable graphics
FULLGR = $C052 ; Full screen, no text
PAGE1 = $C054 ; Page1
PAGE2 = $C055 ; Page2
LORES = $C056 ; Enable LORES graphics
; ROM routines
GBASCALC= $F847 ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
SETGR = $FB40
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
PLOT = $F800 ;; PLOT AT Y,A
SETCOL = $F864 ;; COLOR=A
moon:
;===================
; init screen
jsr SETGR ; lores graphics
bit FULLGR ; full screen
; lda #$0 ; start on page1
; sta PAGE
ldx #12
lda #0
clear_offsets:
sta OFFSETS,X
dex
bpl clear_offsets
setup_outer:
ldx #0
setup_loop:
txa
and #$8
beq setup_zero
lda #$66
bne setup_save ; bra
setup_zero:
lda #$00
setup_save:
setup_save_smc:
sta $2000,X
dex
bne setup_loop
inc setup_save_smc+2
lda setup_save_smc+2
cmp #$2C
bne setup_outer
outer_outer:
lda #$20
sta out_smc+2
lda #12
sta LINE2
outer_display_loop:
lda LINE2
jsr GBASCALC
ldy #39
lda LINE2
tax
lda OFFSETS-12,X
clc
adc adds-12,X
sta OFFSETS-12,X
tax
display_loop:
out_smc:
lda $2000,X
sta (GBASL),Y
inx
dey
bpl display_loop
inc out_smc+2
inc LINE2
lda LINE2
cmp #24
bne outer_display_loop
lda #100
jsr WAIT
jmp outer_outer
;parallax_forever:
; inc FRAME ; increment frame
;
; lda FRAME ; also have frame/2 and frame/4
; lsr
; sta FRAME2
; lsr
; sta FRAME4
;==========================
; flip page
; lda PAGE ; get current page
; pha ; save for later
; lsr ; switch visible page
; lsr
; tay
; lda PAGE1,Y
; pla ; save old draw page
; eor #$4 ; toggle to other draw page
; sta PAGE
big_loop:
lda #$66
sta COLOR
ldx #24
stx COUNT
water:
ldx COUNT
jsr get_z
sta TEMP
asl
asl
asl
tax
water_line:
jsr random
; adc FRAME
adc COUNT
and #$1F
tay
lda COUNT
clc
adc #23
jsr PLOT ; plot at Y,A
skip:
dex
bne water_line
dec COUNT
bne water
over:
lda #1
sta SEEDL
lda #1
sta SEEDH
inc FRAME
lda #100
jsr WAIT
jsr clear_bottom
jmp big_loop
; from batari basic (?)
random:
lda SEEDH
lsr
rol SEEDL
bcc noeor
eor #$B4
noeor:
sta SEEDH
eor SEEDL
rts
get_z:
lda #1
cpx #10
bcs done_z
lda Z_lookup,X
done_z:
rts
HLIN = $F819 ; HLINE Y,$2C at A
clear_bottom:
lda #0
sta COLOR
lda #24
sta WHICH
clear_bottom_loop:
ldy #0
lda #39
sta $2C
lda WHICH
cmp #48
beq done_clear
jsr HLIN
inc WHICH
bne clear_bottom_loop
done_clear:
rts
adds:
.byte 1,1,2,2,3,3,4,5,6,8,12,24
Z_lookup:
.byte 24, 12, 8, 6, 5, 4, 3, 3
.byte 2, 2
;20 FOR Y=0 TO 24
;30 Z=24/(Y+1)
;40 FOR I=0 TO Z*4
;50 X=INT(RND(1)*39)+T*150/Z
;'60 W=COS(RND(1)+T)*12/Z
;65 C=SCRN(X,20-Y/2):IF C=0 THEN C=6
;70 COLOR=C:PLOT X,Y+20
;80 NEXT:NEXT:GOTO 20