lovebyte: more prep

This commit is contained in:
Vince Weaver 2023-01-28 23:24:49 -05:00
parent a3a5c7610c
commit 1647653f8e
11 changed files with 514 additions and 10 deletions

View File

@ -0,0 +1,46 @@
include ../../../Makefile.inc
DOS33 = ../../../utils/dos33fs-utils/dos33
TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
EMPTYDISK = ../../../empty_disk/empty.dsk
all: parallax128.dsk
parallax128.dsk: HELLO PAR_TINY
cp $(EMPTYDISK) parallax128.dsk
$(DOS33) -y parallax128.dsk SAVE A HELLO
$(DOS33) -y parallax128.dsk BSAVE -a 0x80 PAR_TINY
###
submit: parallax128.zip
parallax128.zip: PAR_TINY par_tiny.s file_id.diz parallax128.dsk
mkdir -p lovebyte2023_parallax
cp PAR_TINY ./lovebyte2023_parallax
cp par_tiny.s ./lovebyte2023_parallax
cp file_id.diz ./lovebyte2023_parallax
cp parallax128.dsk ./lovebyte2023_parallax
cp parallax_720p.mp4 ./lovebyte2023_parallax
zip -r parallax128.zip lovebyte2023_parallax
####
####
HELLO: hello.bas
$(TOKENIZE) < hello.bas > HELLO
###
PAR_TINY: par_tiny.o
ld65 -o PAR_TINY par_tiny.o -C ./apple2_80_zp.inc
par_tiny.o: par_tiny.s
ca65 -o par_tiny.o par_tiny.s -l par_tiny.lst
####
clean:
rm -f *~ *.o *.lst HELLO PAR_TINY *.zip

View File

@ -0,0 +1,12 @@
MEMORY {
ZP: start = $50, size = $80, type = rw;
RAM: start = $50, size = $8E00, file = %O;
}
SEGMENTS {
#CODE: load = RAM, type = ro;
#RODATA: load = RAM, type = ro;
#DATA: load = RAM, type = rw;
#BSS: load = RAM, type = bss, define = yes;
ZEROPAGE: load = ZP, type = ro;
}

View File

@ -0,0 +1,11 @@
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Gears 128
-------------------------------------
Hi-res gear animation with clicking
by Deater / dSr
124-byte Intro for Apple II
(With 4-byte header)
Lovebyte 2023

View File

@ -0,0 +1,208 @@
; Rotating Gears (Fancy)
; 128 bytes (124 bytes + 4 byte header)
; by Vince `deater` Weaver / dsr
; Lovebyte 2023
; 95 bytes -- previous code
; 99 bytes -- add clicking
; 124 bytes -- add escapement (was originally trying for logo, but oh well)
; zero page locations
HGR_SHAPE = $1A
HGR_SHAPE2 = $1B
HGR_BITS = $1C
GBASL = $26
GBASH = $27
A5H = $45
XREG = $46
YREG = $47
; C0-CF should be clear
; D0-DF?? D0-D5 = HGR scratch?
HGR_DX = $D0 ; HGLIN
HGR_DX2 = $D1 ; HGLIN
HGR_DY = $D2 ; HGLIN
HGR_QUADRANT = $D3
HGR_E = $D4
HGR_E2 = $D5
HGR_X = $E0
HGR_X2 = $E1
HGR_Y = $E2
HGR_COLOR = $E4
HGR_HORIZ = $E5
HGR_SCALE = $E7
HGR_SHAPE_TABLE = $E8
HGR_SHAPE_TABLE2= $E9
HGR_COLLISIONS = $EA
ROTATION = $FA
;SMALLER = $FB
CURRENT_ROT = $FF
; Soft Switches
PAGE1 = $C054 ; Page1
PAGE2 = $C055 ; Page2
; ROM calls
HGR2 = $F3D8
HGR = $F3E2
HPOSN = $F411
DRAW0 = $F601
XDRAW0 = $F65D
XDRAW1 = $F661
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
RESTORE = $FF3F
.zeropage
.globalzp rot_smc
.globalzp smaller_smc
.globalzp which_smc
.globalzp dsr_rot_smc
gears_tiny:
;============================
; scene 1
;============================
jsr HGR ; Hi-res, full screen ; 3
; Y=0, A=0 after this call
lda #8
sta HGR_SCALE
jsr draw_scene
;===================
; scene2
;===================
jsr HGR2 ; set to hires PAGE2, full screen
; Y=0, A=0 after
lda #<gear2_table ; draw alternate gear
sta which_smc+1
sta dsr_rot_smc+1
jsr draw_scene
;===================
; rotate forever
;===================
; just page flipping with a delay
rotate_it:
ldx #0
jsr flip_and_wait
inx
jsr flip_and_wait
beq rotate_it ; bra
;=========================
; flip and wait
;=========================
flip_and_wait:
lda PAGE1,X ; flip page
bit $C030 ; make click
lda #255 ; wait a bit
jmp WAIT
;=========================
; draw scene
;=========================
; Y must be 0 at entry
draw_scene:
ldx #180
lda #10
jsr HPOSN
dsr_rot_smc:
lda #0
ldx #<shape_dsr
ldy #>shape_dsr
jsr XDRAW0
; Y is zero from HGR/HGR2
ldy #0
ldx #110
lda #10
jsr HPOSN ; set screen position to X= (y,x) Y=(a)
; saves X,Y,A to zero page
; after Y= orig X/7
; A and X are ??
ldy #32 ; Y = steps to draw
lda #2 ; A = rotation increment
jsr draw_gear
; A and X zero on return
tay ; set Y to 0
ldx #235
lda #100
jsr HPOSN ; set screen position to X= (y,x) Y=(a)
; saves X,Y,A to zero page
; after Y= orig X/7
; A and X are ??
ldy #16 ; only 16 repeats
lda #4 ; A = rotation increment
; fall through
;===============================
;===============================
;===============================
;===============================
draw_gear:
sty ROTATION ; set number of rotations
sta smaller_smc+1 ; set rotation increment
gear1_loop:
clc
lda rot_smc+1
smaller_smc:
adc #2
sta rot_smc+1
not_smaller:
which_smc:
ldx #<gear1_table ; point to bottom byte of shape address
ldy #>gear1_table ; point to top byte of shape address
; this is always 0 if in zero page
rot_smc:
lda #1 ; ROT=1 at first
jsr XDRAW0 ; XDRAW 1 AT X,Y
; Both A and X are 0 at exit
; Z flag set on exit
; Y varies
dec ROTATION
bne gear1_loop
rts
gear1_table:
.byte $25,$35,$00 ; 37,53,0
gear2_table:
.byte $2c,$2e,$00 ; 44,46,0
shape_dsr:
.byte $2d,$36,$ff,$3f
;.byte $24,$ad,$22,$24,$94,$21,$2c,$4d
;.byte $91,$3f,$36
.byte $00

View File

@ -0,0 +1,9 @@
5 HOME
10 PRINT " GEARS -- A 124 BYTE APPLE II INTRO"
12 PRINT " FOR LOVEBYTE 2023"
15 PRINT " BY DEATER / DSR"
20 PRINT CHR$(4)"CATALOG"
25 PRINT:PRINT "PRESS ANY KEY TO 'BRUN GEARS_FANCY'"
30 GET A$
35 PRINT
40 PRINT CHR$(4)"BRUN GEARS_FANCY"

View File

@ -2,7 +2,9 @@
LEMM256
-------------------------------------
Animated Hi-res Lemming Walking Demo
251 byte BASIC program for Apple II
Lovebyte 2023
by Deater / dSr
251 byte BASIC program for Apple II
Lovebyte 2023

View File

@ -2,10 +2,7 @@
Ooze32
---------------------------------------
Hi-res oozing waterfall
by Deater / dSr
31-byte Intro for Apple II
Lovebyte 2023
by Deater / dSr

View File

@ -1,5 +1,5 @@
5 HOME
10 PRINT " OOZE32 -- A 31 BYTE APPLE II INTRO"
10 PRINT " OOZE32 -- A 31 BYTE APPLE II INTRO"
12 PRINT " FOR LOVEBYTE 2023"
15 PRINT " BY DEATER / DSR"
20 PRINT CHR$(4)"CATALOG"

View File

@ -1,5 +1,5 @@
5 HOME
10 PRINT " PIED57 -- A 57 BYTE APPLE II INTRO"
10 PRINT " PIED57 -- A 57 BYTE APPLE II INTRO"
12 PRINT " FOR LOVEBYTE 2023"
15 PRINT " BY DEATER / DSR"
20 PRINT CHR$(4)"CATALOG"

View File

@ -11,13 +11,14 @@ shape_table.dsk: HELLO APPLE.BAS GEARS.BAS \
APPLE2 GEARS LINE32 PATTERN PATTERN_LOGO SQUARE_WAVE \
AGONY17 HERRING16 STRIPE17 COOL_WAVE TEETH32 TICK_TOCK \
GEARS_TINY WEAVE15 COLUMNS16 CATS16 TEST EGGS16 WAVY16 \
MIRROR15 FIELD15
MIRROR15 FIELD15 GEARS_FANCY
cp $(EMPTYDISK) shape_table.dsk
$(DOS33) -y shape_table.dsk SAVE A HELLO
$(DOS33) -y shape_table.dsk SAVE A GEARS.BAS
$(DOS33) -y shape_table.dsk SAVE A APPLE.BAS
$(DOS33) -y shape_table.dsk BSAVE -a 0x3f5 GEARS
$(DOS33) -y shape_table.dsk BSAVE -a 0x60 GEARS_TINY
$(DOS33) -y shape_table.dsk BSAVE -a 0x50 GEARS_FANCY
$(DOS33) -y shape_table.dsk BSAVE -a 0xc00 APPLE2
$(DOS33) -y shape_table.dsk BSAVE -a 0xc00 LINE32
$(DOS33) -y shape_table.dsk BSAVE -a 0xe7 AGONY17
@ -70,6 +71,15 @@ GEARS_TINY: gears_tiny.o
gears_tiny.o: gears_tiny.s
ca65 -o gears_tiny.o gears_tiny.s -l gears_tiny.lst
###
GEARS_FANCY: gears_fancy.o
ld65 -o GEARS_FANCY gears_fancy.o -C $(LINKERSCRIPTS)/apple2_50_zp.inc
gears_fancy.o: gears_fancy.s
ca65 -o gears_fancy.o gears_fancy.s -l gears_fancy.lst
###
@ -244,5 +254,6 @@ clean:
rm -f *~ *.o *.lst HELLO GEAR.BAS GEARS PATTERN APPLE.BAS \
PATTERN_LOGO COOL_WAVE SQUARE_WAVE TEETH32 TICK_TOCK \
HERRING16 STRIPE17 AGONY17 LINE32 APPLE2 GEARS_TINY WEAVE15 \
COLUMNS16 CATS16 TEST EGGS16 WAVY16 MIRROR15 FIELD15
COLUMNS16 CATS16 TEST EGGS16 WAVY16 MIRROR15 FIELD15 \
GEARS_FANCY

View File

@ -0,0 +1,208 @@
; Rotating Gears (Fancy)
; 128 bytes (124 bytes + 4 byte header)
; by Vince `deater` Weaver / dsr
; Lovebyte 2023
; 95 bytes -- previous code
; 99 bytes -- add clicking
; 124 bytes -- add escapement (was originally trying for logo, but oh well)
; zero page locations
HGR_SHAPE = $1A
HGR_SHAPE2 = $1B
HGR_BITS = $1C
GBASL = $26
GBASH = $27
A5H = $45
XREG = $46
YREG = $47
; C0-CF should be clear
; D0-DF?? D0-D5 = HGR scratch?
HGR_DX = $D0 ; HGLIN
HGR_DX2 = $D1 ; HGLIN
HGR_DY = $D2 ; HGLIN
HGR_QUADRANT = $D3
HGR_E = $D4
HGR_E2 = $D5
HGR_X = $E0
HGR_X2 = $E1
HGR_Y = $E2
HGR_COLOR = $E4
HGR_HORIZ = $E5
HGR_SCALE = $E7
HGR_SHAPE_TABLE = $E8
HGR_SHAPE_TABLE2= $E9
HGR_COLLISIONS = $EA
ROTATION = $FA
;SMALLER = $FB
CURRENT_ROT = $FF
; Soft Switches
PAGE1 = $C054 ; Page1
PAGE2 = $C055 ; Page2
; ROM calls
HGR2 = $F3D8
HGR = $F3E2
HPOSN = $F411
DRAW0 = $F601
XDRAW0 = $F65D
XDRAW1 = $F661
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
RESTORE = $FF3F
.zeropage
.globalzp rot_smc
.globalzp smaller_smc
.globalzp which_smc
.globalzp dsr_rot_smc
gears_tiny:
;============================
; scene 1
;============================
jsr HGR ; Hi-res, full screen ; 3
; Y=0, A=0 after this call
lda #8
sta HGR_SCALE
jsr draw_scene
;===================
; scene2
;===================
jsr HGR2 ; set to hires PAGE2, full screen
; Y=0, A=0 after
lda #<gear2_table ; draw alternate gear
sta which_smc+1
sta dsr_rot_smc+1
jsr draw_scene
;===================
; rotate forever
;===================
; just page flipping with a delay
rotate_it:
ldx #0
jsr flip_and_wait
inx
jsr flip_and_wait
beq rotate_it ; bra
;=========================
; flip and wait
;=========================
flip_and_wait:
lda PAGE1,X ; flip page
bit $C030 ; make click
lda #255 ; wait a bit
jmp WAIT
;=========================
; draw scene
;=========================
; Y must be 0 at entry
draw_scene:
ldx #180
lda #10
jsr HPOSN
dsr_rot_smc:
lda #0
ldx #<shape_dsr
ldy #>shape_dsr
jsr XDRAW0
; Y is zero from HGR/HGR2
ldy #0
ldx #110
lda #10
jsr HPOSN ; set screen position to X= (y,x) Y=(a)
; saves X,Y,A to zero page
; after Y= orig X/7
; A and X are ??
ldy #32 ; Y = steps to draw
lda #2 ; A = rotation increment
jsr draw_gear
; A and X zero on return
tay ; set Y to 0
ldx #235
lda #100
jsr HPOSN ; set screen position to X= (y,x) Y=(a)
; saves X,Y,A to zero page
; after Y= orig X/7
; A and X are ??
ldy #16 ; only 16 repeats
lda #4 ; A = rotation increment
; fall through
;===============================
;===============================
;===============================
;===============================
draw_gear:
sty ROTATION ; set number of rotations
sta smaller_smc+1 ; set rotation increment
gear1_loop:
clc
lda rot_smc+1
smaller_smc:
adc #2
sta rot_smc+1
not_smaller:
which_smc:
ldx #<gear1_table ; point to bottom byte of shape address
ldy #>gear1_table ; point to top byte of shape address
; this is always 0 if in zero page
rot_smc:
lda #1 ; ROT=1 at first
jsr XDRAW0 ; XDRAW 1 AT X,Y
; Both A and X are 0 at exit
; Z flag set on exit
; Y varies
dec ROTATION
bne gear1_loop
rts
gear1_table:
.byte $25,$35,$00 ; 37,53,0
gear2_table:
.byte $2c,$2e,$00 ; 44,46,0
shape_dsr:
.byte $2d,$36,$ff,$3f
;.byte $24,$ad,$22,$24,$94,$21,$2c,$4d
;.byte $91,$3f,$36
.byte $00