mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-31 10:13:35 +00:00
midline: working?
This commit is contained in:
parent
80af2dd610
commit
9a9cb955d2
@ -7,10 +7,11 @@ EMPTYDISK = ../../empty_disk/empty.dsk
|
|||||||
|
|
||||||
all: demo.dsk
|
all: demo.dsk
|
||||||
|
|
||||||
demo.dsk: HELLO MIDLINE
|
demo.dsk: HELLO MIDLINE GOOD
|
||||||
cp $(EMPTYDISK) demo.dsk
|
cp $(EMPTYDISK) demo.dsk
|
||||||
$(DOS33) -y demo.dsk SAVE A HELLO
|
$(DOS33) -y demo.dsk SAVE A HELLO
|
||||||
$(DOS33) -y demo.dsk BSAVE -a 0x6000 MIDLINE
|
$(DOS33) -y demo.dsk BSAVE -a 0x6000 MIDLINE
|
||||||
|
$(DOS33) -y demo.dsk BSAVE -a 0x6000 GOOD
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
@ -23,10 +24,20 @@ MIDLINE: midline.o
|
|||||||
ld65 -o MIDLINE midline.o -C $(LINKERSCRIPTS)/apple2_6000.inc
|
ld65 -o MIDLINE midline.o -C $(LINKERSCRIPTS)/apple2_6000.inc
|
||||||
|
|
||||||
midline.o: midline.s \
|
midline.o: midline.s \
|
||||||
zp.inc hardware.inc
|
zp.inc hardware.inc sinetable.s
|
||||||
ca65 -o midline.o midline.s -l midline.lst
|
ca65 -o midline.o midline.s -l midline.lst
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
|
GOOD: good.o
|
||||||
|
ld65 -o GOOD good.o -C $(LINKERSCRIPTS)/apple2_6000.inc
|
||||||
|
|
||||||
|
good.o: good.s \
|
||||||
|
zp.inc hardware.inc sinetable.s
|
||||||
|
ca65 -o good.o good.s -l good.lst
|
||||||
|
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *~ *.o *.lst HELLO MIDLINE
|
rm -f *~ *.o *.lst HELLO MIDLINE GOOD
|
||||||
|
271
vaporlock/demo/good.s
Normal file
271
vaporlock/demo/good.s
Normal file
@ -0,0 +1,271 @@
|
|||||||
|
; a 256-byte midline demo for Outline 2023
|
||||||
|
|
||||||
|
; by Vince `deater` Weaver / dSr
|
||||||
|
|
||||||
|
; requires an Apple IIe
|
||||||
|
|
||||||
|
.include "zp.inc"
|
||||||
|
.include "hardware.inc"
|
||||||
|
|
||||||
|
; 198 bytes -- proof of concept
|
||||||
|
; 76 bytes -- optimize Apple II Forever printing code
|
||||||
|
; 183 bytes -- stable window
|
||||||
|
; 248 bytes -- sine code added
|
||||||
|
; 274 bytes -- after much frustration, things sorta working
|
||||||
|
; 261 bytes -- use zp for sine generation
|
||||||
|
; 257 bytes -- inline sine generation
|
||||||
|
; 259 bytes -- fix sine generation initialization, shave some message print
|
||||||
|
; 247 bytes -- start replacing sather delays with something more compact
|
||||||
|
; 229 bytes -- finish replacing sather delays
|
||||||
|
; 228 bytes -- optimize and center the middle area
|
||||||
|
; 226 bytes -- init some of zero page to zero
|
||||||
|
; 244 bytes -- switch to hires too
|
||||||
|
; 247 bytes -- clear HGR
|
||||||
|
|
||||||
|
sine = $c00 ; location of sine table
|
||||||
|
|
||||||
|
|
||||||
|
midline:
|
||||||
|
|
||||||
|
;================================
|
||||||
|
; Clear screen and setup graphics
|
||||||
|
;================================
|
||||||
|
|
||||||
|
; init $F1-$FF to zero
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
ldx #15
|
||||||
|
init_loop:
|
||||||
|
sta $F0,X
|
||||||
|
dex
|
||||||
|
bne init_loop
|
||||||
|
|
||||||
|
; setup graphics
|
||||||
|
|
||||||
|
sta SETMOUSETEXT ; enable mouse text for Apple char
|
||||||
|
|
||||||
|
.include "sinetable.s" ; Y is FF after this
|
||||||
|
; A = 1, X = $40
|
||||||
|
|
||||||
|
;====================================================
|
||||||
|
; setup text page1 screen of "Apple II Forever" text
|
||||||
|
;====================================================
|
||||||
|
|
||||||
|
; X is $40 which is probably OK
|
||||||
|
; ldx #0
|
||||||
|
restart:
|
||||||
|
tay ; reset Y to 0 (or 1 first time through)
|
||||||
|
inx
|
||||||
|
beq print_done
|
||||||
|
print_loop:
|
||||||
|
lda a2_string,Y
|
||||||
|
beq restart
|
||||||
|
jsr COUT ; output char in A to stdout
|
||||||
|
iny
|
||||||
|
bne print_loop
|
||||||
|
print_done:
|
||||||
|
|
||||||
|
|
||||||
|
jsr HGR ; A and Y=0 now
|
||||||
|
sta FULLGR
|
||||||
|
|
||||||
|
|
||||||
|
;==================================
|
||||||
|
; get exact vblank region
|
||||||
|
;==================================
|
||||||
|
; code by Sather
|
||||||
|
; "Understanding the Apple IIe"
|
||||||
|
|
||||||
|
poll1:
|
||||||
|
lda VBLANK ; Find end of VBL
|
||||||
|
bmi poll1 ; Fall through at VBL
|
||||||
|
poll2:
|
||||||
|
lda VBLANK
|
||||||
|
bpl poll2 ; Fall through at VBL' ; 2
|
||||||
|
|
||||||
|
lda $00 ;nop3 ; Now slew back in 17029 cycle loops ; 3
|
||||||
|
lp17029:
|
||||||
|
; delay 17020
|
||||||
|
|
||||||
|
lda #7 ; 2
|
||||||
|
ldy #96 ; 2
|
||||||
|
jsr size_delay ; 17012
|
||||||
|
nop ; 2
|
||||||
|
nop ; 2
|
||||||
|
|
||||||
|
lda VBLANK ; Back to VBL yet? ; 4
|
||||||
|
nop ; ; 2
|
||||||
|
bmi lp17029 ; no, slew back ; 2/3
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;==============================
|
||||||
|
; do the cycle counting
|
||||||
|
;==============================
|
||||||
|
|
||||||
|
cycle_start:
|
||||||
|
|
||||||
|
;==============================
|
||||||
|
; top
|
||||||
|
|
||||||
|
; 2
|
||||||
|
|
||||||
|
top_smc:
|
||||||
|
ldx #66 ; 2
|
||||||
|
bne top7 ; bra ; 3/2
|
||||||
|
|
||||||
|
top_loop:
|
||||||
|
pha ; 3
|
||||||
|
pla ; 4
|
||||||
|
top7:
|
||||||
|
; 7
|
||||||
|
lda #0 ; 2
|
||||||
|
ldy #3 ; 2
|
||||||
|
; 11
|
||||||
|
; want to delay 49
|
||||||
|
|
||||||
|
jsr size_delay ; 47
|
||||||
|
; 58
|
||||||
|
nop ; 2
|
||||||
|
; 60
|
||||||
|
dex ; 2
|
||||||
|
bne top_loop ; 3/2
|
||||||
|
|
||||||
|
;===================================
|
||||||
|
|
||||||
|
; middle
|
||||||
|
; -1
|
||||||
|
ldx #56 ; 2
|
||||||
|
bne middle_4 ; bra ; 3
|
||||||
|
|
||||||
|
|
||||||
|
middle_loop:
|
||||||
|
nop ; 2
|
||||||
|
nop ; 2
|
||||||
|
middle_4:
|
||||||
|
; 4
|
||||||
|
nop ; 2
|
||||||
|
lda $0 ; nop3 ; 3
|
||||||
|
; 9
|
||||||
|
jsr delay_16_setgr ; 16
|
||||||
|
; 25
|
||||||
|
jsr delay_16_settext ; 16
|
||||||
|
; 41
|
||||||
|
jsr delay_16_setgr ; 16
|
||||||
|
; 57
|
||||||
|
lda $0 ; nop3 ; 3
|
||||||
|
; 60
|
||||||
|
dex ; 2
|
||||||
|
bne middle_loop ; 3/2
|
||||||
|
|
||||||
|
; -1
|
||||||
|
bottom_smc:
|
||||||
|
ldx #118 ; 2
|
||||||
|
bne bottom_4 ; bra ; 3
|
||||||
|
|
||||||
|
bottom_loop:
|
||||||
|
|
||||||
|
nop ; 2
|
||||||
|
nop ; 2
|
||||||
|
; 4
|
||||||
|
bottom_4:
|
||||||
|
; 4
|
||||||
|
lda #0 ; 2
|
||||||
|
ldy #3 ; 2
|
||||||
|
; 8
|
||||||
|
; want to delay 50
|
||||||
|
|
||||||
|
jsr size_delay ; 47
|
||||||
|
; 55
|
||||||
|
lda $0 ; nop3 ; 3
|
||||||
|
; 58
|
||||||
|
inx ; 2
|
||||||
|
cpx #192 ; 2
|
||||||
|
bcc bottom_loop ; 3/2
|
||||||
|
|
||||||
|
; -1
|
||||||
|
|
||||||
|
;======================================
|
||||||
|
; wait 4550 for VBLANK
|
||||||
|
;======================================
|
||||||
|
; -1 from before
|
||||||
|
vblank_start:
|
||||||
|
|
||||||
|
; move window
|
||||||
|
|
||||||
|
; -1
|
||||||
|
clc ; 2
|
||||||
|
lda FRAME ; 3
|
||||||
|
adc #1 ; 2
|
||||||
|
sta FRAME ; 3
|
||||||
|
tay ; save for later ; 2
|
||||||
|
; 11
|
||||||
|
lda #0 ; 2
|
||||||
|
rol ; get carry bit in A ; 2
|
||||||
|
eor screen_smc+1 ; 4
|
||||||
|
sta screen_smc+1 ; 4
|
||||||
|
; 23
|
||||||
|
|
||||||
|
screen_smc:
|
||||||
|
bit LORES ; LORES=C056 HIRES=C057 ; 4
|
||||||
|
; 27
|
||||||
|
|
||||||
|
|
||||||
|
; FRAME should be in Y
|
||||||
|
lda sine,Y ; 4 (aligned)
|
||||||
|
; 31
|
||||||
|
clc ; 2
|
||||||
|
adc #2 ; 2
|
||||||
|
sta top_smc+1 ; 4
|
||||||
|
adc #56 ; 2
|
||||||
|
sta bottom_smc+1 ; 4
|
||||||
|
; 45
|
||||||
|
|
||||||
|
; finish delay
|
||||||
|
|
||||||
|
; 45
|
||||||
|
lda #1 ; 2
|
||||||
|
ldy #241 ; 2
|
||||||
|
; 49
|
||||||
|
jsr size_delay ; 4493
|
||||||
|
; 4542
|
||||||
|
|
||||||
|
pha ; 3
|
||||||
|
pla ; 4
|
||||||
|
; 4549
|
||||||
|
jmp cycle_start ; 3
|
||||||
|
; 4552
|
||||||
|
|
||||||
|
|
||||||
|
; want 4552 here
|
||||||
|
|
||||||
|
delay_16_setgr:
|
||||||
|
bit SET_GR
|
||||||
|
rts
|
||||||
|
|
||||||
|
delay_16_settext:
|
||||||
|
bit SET_TEXT
|
||||||
|
rts
|
||||||
|
|
||||||
|
;=====================================
|
||||||
|
; short delay by Bruce Clark
|
||||||
|
; any delay between 8 to 589832 with res of 9
|
||||||
|
;=====================================
|
||||||
|
; 9*(256*A+Y)+8 + 12 for jsr/rts
|
||||||
|
size_delay:
|
||||||
|
|
||||||
|
delay_loop:
|
||||||
|
cpy #1
|
||||||
|
dey
|
||||||
|
sbc #0
|
||||||
|
bcs delay_loop
|
||||||
|
delay_12:
|
||||||
|
rts
|
||||||
|
|
||||||
|
a2_string:
|
||||||
|
; 012345678901234567 8 9
|
||||||
|
; .byte "Apple II Forever!! ",'@'+$80," ",0
|
||||||
|
.byte 'A'+$80,'p'+$80,'p'+$80,'l'+$80,'e'+$80,' '+$80
|
||||||
|
.byte 'I'+$80,'I'+$80,' '+$80,'F'+$80,'o'+$80,'r'+$80
|
||||||
|
.byte 'e'+$80,'v'+$80,'e'+$80,'r'+$80,'!'+$80,'!'+$80
|
||||||
|
.byte ' '+$80,'@'+$00,' '+$80,0
|
@ -46,8 +46,10 @@ HGR = $F3E2
|
|||||||
HPOSN = $F411
|
HPOSN = $F411
|
||||||
HPLOT0 = $F457 ; plot at (Y,X), (A)
|
HPLOT0 = $F457 ; plot at (Y,X), (A)
|
||||||
HGLIN = $F53A ; line to (X,A),(Y)
|
HGLIN = $F53A ; line to (X,A),(Y)
|
||||||
|
XDRAW0 = $F65D
|
||||||
|
|
||||||
ROM_TEXT2COPY = $F962 ; iigs
|
ROM_TEXT2COPY = $F962 ; iigs
|
||||||
ROM_MACHINEID = $FBB3 ; iigs
|
ROM_MACHINEID = $FBB3 ; iigs
|
||||||
|
|
||||||
COUT = $FDED
|
COUT = $FDED
|
||||||
|
|
||||||
|
@ -18,6 +18,16 @@
|
|||||||
; 247 bytes -- start replacing sather delays with something more compact
|
; 247 bytes -- start replacing sather delays with something more compact
|
||||||
; 229 bytes -- finish replacing sather delays
|
; 229 bytes -- finish replacing sather delays
|
||||||
; 228 bytes -- optimize and center the middle area
|
; 228 bytes -- optimize and center the middle area
|
||||||
|
; 226 bytes -- init some of zero page to zero
|
||||||
|
; 244 bytes -- switch to hires too
|
||||||
|
; 247 bytes -- clear HGR
|
||||||
|
; 264 bytes -- add HGR
|
||||||
|
; 263 bytes -- better nop
|
||||||
|
; 263 bytes -- don't init zero page anymore
|
||||||
|
; 259 bytes -- combine delay_49 routines
|
||||||
|
; 258 bytes -- init discrete
|
||||||
|
|
||||||
|
; GOAL = 256 (Outline 2023 says header doesn't count, is usually 4 on Apple II)
|
||||||
|
|
||||||
sine = $c00 ; location of sine table
|
sine = $c00 ; location of sine table
|
||||||
|
|
||||||
@ -28,13 +38,20 @@ midline:
|
|||||||
; Clear screen and setup graphics
|
; Clear screen and setup graphics
|
||||||
;================================
|
;================================
|
||||||
|
|
||||||
sta FULLGR
|
ldx #0
|
||||||
|
stx DELTA
|
||||||
|
stx DELTAH
|
||||||
|
|
||||||
|
; setup graphics
|
||||||
|
|
||||||
sta SETMOUSETEXT ; enable mouse text for Apple char
|
sta SETMOUSETEXT ; enable mouse text for Apple char
|
||||||
|
|
||||||
|
;==============================
|
||||||
|
; set up sine table
|
||||||
|
|
||||||
|
; X must be 0 when calling
|
||||||
.include "sinetable.s" ; Y is FF after this
|
.include "sinetable.s" ; Y is FF after this
|
||||||
; A = 1, X = $40
|
; A = 1, X = $40
|
||||||
iny ; needed?
|
|
||||||
sty FRAME
|
|
||||||
|
|
||||||
;====================================================
|
;====================================================
|
||||||
; setup text page1 screen of "Apple II Forever" text
|
; setup text page1 screen of "Apple II Forever" text
|
||||||
@ -54,6 +71,33 @@ print_loop:
|
|||||||
bne print_loop
|
bne print_loop
|
||||||
print_done:
|
print_done:
|
||||||
|
|
||||||
|
;===================
|
||||||
|
; do graphics
|
||||||
|
|
||||||
|
|
||||||
|
jsr HGR ; A and Y=0 now
|
||||||
|
sta FULLGR
|
||||||
|
|
||||||
|
|
||||||
|
jsr HPLOT0 ; 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 ??
|
||||||
|
tiny_loop:
|
||||||
|
|
||||||
|
lda #$F6 ; ROT=$F6
|
||||||
|
tay
|
||||||
|
tax
|
||||||
|
dex
|
||||||
|
|
||||||
|
jsr XDRAW0 ; XDRAW 1 AT X,Y
|
||||||
|
; Both A and X are 0 at exit
|
||||||
|
; Z flag set on exit
|
||||||
|
; Y varies
|
||||||
|
|
||||||
|
dec $0a ; is $4c due to basic
|
||||||
|
bne tiny_loop ;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;==================================
|
;==================================
|
||||||
@ -105,12 +149,13 @@ top_loop:
|
|||||||
pla ; 4
|
pla ; 4
|
||||||
top7:
|
top7:
|
||||||
; 7
|
; 7
|
||||||
lda #0 ; 2
|
; lda #0 ; 2
|
||||||
ldy #3 ; 2
|
; ldy #3 ; 2
|
||||||
; 11
|
; 11
|
||||||
; want to delay 49
|
; want to delay 49
|
||||||
|
jsr delay_49
|
||||||
|
|
||||||
jsr size_delay ; 47
|
; jsr size_delay ; 47
|
||||||
; 58
|
; 58
|
||||||
nop ; 2
|
nop ; 2
|
||||||
; 60
|
; 60
|
||||||
@ -129,26 +174,20 @@ middle_loop:
|
|||||||
nop ; 2
|
nop ; 2
|
||||||
nop ; 2
|
nop ; 2
|
||||||
middle_4:
|
middle_4:
|
||||||
nop ; 2
|
; 4
|
||||||
; nop ; 2
|
inc $0 ; nop5 ; 5
|
||||||
lda $0
|
; 9
|
||||||
; 8
|
|
||||||
jsr delay_16_setgr ; 16
|
jsr delay_16_setgr ; 16
|
||||||
; 24
|
; 25
|
||||||
jsr delay_16_settext ; 16
|
jsr delay_16_settext ; 16
|
||||||
; 40
|
; 41
|
||||||
jsr delay_16_setgr ; 16
|
jsr delay_16_setgr ; 16
|
||||||
; 56
|
; 57
|
||||||
lda $0
|
lda $0 ; nop3 ; 3
|
||||||
; nop ; 2
|
|
||||||
; nop ; 2
|
|
||||||
; 60
|
; 60
|
||||||
dex ; 2
|
dex ; 2
|
||||||
bne middle_loop ; 3/2
|
bne middle_loop ; 3/2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; -1
|
; -1
|
||||||
bottom_smc:
|
bottom_smc:
|
||||||
ldx #118 ; 2
|
ldx #118 ; 2
|
||||||
@ -161,12 +200,12 @@ bottom_loop:
|
|||||||
; 4
|
; 4
|
||||||
bottom_4:
|
bottom_4:
|
||||||
; 4
|
; 4
|
||||||
lda #0 ; 2
|
; lda #0 ; 2
|
||||||
ldy #3 ; 2
|
; ldy #3 ; 2
|
||||||
; 8
|
; 8
|
||||||
; want to delay 50
|
; want to delay 50
|
||||||
|
jsr delay_49
|
||||||
jsr size_delay ; 47
|
; jsr size_delay ; 47
|
||||||
; 55
|
; 55
|
||||||
lda $0 ; nop3 ; 3
|
lda $0 ; nop3 ; 3
|
||||||
; 58
|
; 58
|
||||||
@ -184,44 +223,73 @@ vblank_start:
|
|||||||
|
|
||||||
; move window
|
; move window
|
||||||
|
|
||||||
; -1
|
; -1
|
||||||
inc FRAME ; 5
|
clc ; 2
|
||||||
; 4
|
lda FRAME ; 3
|
||||||
ldy FRAME ; 3
|
adc #1 ; 2
|
||||||
lda sine,Y ; 4 (aligned)
|
sta FRAME ; 3
|
||||||
|
tay ; save for later ; 2
|
||||||
; 11
|
; 11
|
||||||
|
lda #0 ; 2
|
||||||
|
rol ; get carry bit in A ; 2
|
||||||
|
eor screen_smc+1 ; 4
|
||||||
|
sta screen_smc+1 ; 4
|
||||||
|
; 23
|
||||||
|
|
||||||
|
screen_smc:
|
||||||
|
bit LORES ; LORES=C056 HIRES=C057 ; 4
|
||||||
|
; 27
|
||||||
|
|
||||||
|
|
||||||
|
; FRAME should be in Y
|
||||||
|
lda sine,Y ; 4 (aligned)
|
||||||
|
; 31
|
||||||
clc ; 2
|
clc ; 2
|
||||||
adc #2 ; 2
|
adc #2 ; 2
|
||||||
sta top_smc+1 ; 4
|
sta top_smc+1 ; 4
|
||||||
adc #56 ; 2
|
adc #56 ; 2
|
||||||
sta bottom_smc+1 ; 4
|
sta bottom_smc+1 ; 4
|
||||||
|
; 45
|
||||||
|
|
||||||
; finish delay
|
; finish delay
|
||||||
|
|
||||||
; 25
|
; 45
|
||||||
lda #1 ; 2
|
lda #1 ; 2
|
||||||
ldy #244 ; 2
|
ldy #241 ; 2
|
||||||
; 29
|
; 49
|
||||||
jsr size_delay ; 4520
|
jsr size_delay ; 4493
|
||||||
|
; 4542
|
||||||
|
|
||||||
|
pha ; 3
|
||||||
|
pla ; 4
|
||||||
; 4549
|
; 4549
|
||||||
|
jmp cycle_start ; 3
|
||||||
|
; 4552
|
||||||
|
|
||||||
jmp cycle_start
|
|
||||||
; +2
|
|
||||||
|
|
||||||
|
; want 4552 here
|
||||||
|
|
||||||
|
|
||||||
|
delay_16_settext:
|
||||||
|
bit SET_TEXT
|
||||||
|
rts
|
||||||
|
|
||||||
delay_16_setgr:
|
delay_16_setgr:
|
||||||
bit SET_GR
|
bit SET_GR
|
||||||
rts
|
rts
|
||||||
|
|
||||||
delay_16_settext:
|
|
||||||
bit SET_TEXT
|
delay_49:
|
||||||
rts
|
lda #0 ; 2
|
||||||
|
ldy #3 ; 2
|
||||||
|
|
||||||
;=====================================
|
;=====================================
|
||||||
; short delay by Bruce Clark
|
; short delay by Bruce Clark
|
||||||
; any delay between 8 to 589832 with res of 9
|
; any delay between 8 to 589832 with res of 9
|
||||||
;=====================================
|
;=====================================
|
||||||
; 9*(256*A+Y)+8 + 12 for jsr/rts
|
; 9*(256*A+Y)+8 + 12 for jsr/rts
|
||||||
|
; A and Y both $FF at the end
|
||||||
|
|
||||||
size_delay:
|
size_delay:
|
||||||
|
|
||||||
delay_loop:
|
delay_loop:
|
||||||
|
@ -1,30 +1,38 @@
|
|||||||
;=================================
|
;=================================
|
||||||
; fakes sines based on parabolas
|
; fakes sines based on parabolas
|
||||||
; based on code by White Flame from codebase64
|
; based on code by White Flame via Cruzer/Camelot
|
||||||
|
; from codebase64
|
||||||
;=================================
|
;=================================
|
||||||
; makes 256 entries, min 0 max 127
|
; makes 256 entries, min 0 max 127
|
||||||
|
; call with X=0!
|
||||||
|
|
||||||
|
;DELTA = $2000
|
||||||
|
;VALUE = $2002
|
||||||
|
|
||||||
initSineTable:
|
initSineTable:
|
||||||
|
|
||||||
ldy #$3f
|
ldy #$3f
|
||||||
ldx #$00
|
; ldx #$00
|
||||||
|
|
||||||
; Accumulate the delta (16-bit addition)
|
; Accumulate the delta (16-bit addition)
|
||||||
init_sine_loop:
|
init_sine_loop:
|
||||||
lda VALUE
|
|
||||||
|
value_l_smc:
|
||||||
|
lda #0
|
||||||
clc
|
clc
|
||||||
adc DELTA
|
adc DELTA
|
||||||
sta VALUE
|
sta value_l_smc+1
|
||||||
lda VALUE+1
|
value_h_smc:
|
||||||
|
lda #0
|
||||||
adc DELTA+1
|
adc DELTA+1
|
||||||
sta VALUE+1
|
sta value_h_smc+1
|
||||||
|
|
||||||
; Reflect the value around for a sine wave
|
; Reflect the value around for a sine wave
|
||||||
sta sine+$c0,x
|
sta sine+$c0,X
|
||||||
sta sine+$80,y
|
sta sine+$80,Y
|
||||||
eor #$7f
|
eor #$7f
|
||||||
sta sine+$40,x
|
sta sine+$40,X
|
||||||
sta sine+$00,y
|
sta sine+$00,Y
|
||||||
|
|
||||||
; Increase the delta, which creates the
|
; Increase the delta, which creates the
|
||||||
; "acceleration" for a parabola
|
; "acceleration" for a parabola
|
||||||
@ -41,6 +49,6 @@ init_sine_noflo:
|
|||||||
dey
|
dey
|
||||||
bpl init_sine_loop
|
bpl init_sine_loop
|
||||||
|
|
||||||
rts
|
; rts
|
||||||
|
|
||||||
|
|
||||||
|
@ -67,7 +67,7 @@ SOUND_STATUS = $DE
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
HGR_COLLISIONS = $EA
|
||||||
HGRPAGE = $E6
|
HGRPAGE = $E6
|
||||||
|
|
||||||
|
|
||||||
@ -77,6 +77,11 @@ XX = $F1
|
|||||||
FRAME = $F2
|
FRAME = $F2
|
||||||
FRAMEH = $F3
|
FRAMEH = $F3
|
||||||
|
|
||||||
|
;VALUE = $F4
|
||||||
|
;VALUEH = $F5
|
||||||
|
DELTA = $F6
|
||||||
|
DELTAH = $F7
|
||||||
|
|
||||||
YPOS = $FA
|
YPOS = $FA
|
||||||
TCOLOR = $FB
|
TCOLOR = $FB
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user