gr: moon
This commit is contained in:
parent
cce5b35c61
commit
00659143de
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -0,0 +1,2 @@
|
|||
5 HOME
|
||||
40 PRINT CHR$(4)"CATALOG"
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
Loading…
Reference in New Issue