mirror of
https://github.com/deater/dos33fsprogs.git
synced 2025-01-09 10:30:21 +00:00
oval: add bot version
This commit is contained in:
parent
b5d890f467
commit
ca018ebd00
174
graphics/gr/plasma/oval_bot.s
Normal file
174
graphics/gr/plasma/oval_bot.s
Normal file
@ -0,0 +1,174 @@
|
||||
; Ovals
|
||||
|
||||
; zero page
|
||||
GBASL = $26
|
||||
GBASH = $27
|
||||
MASK = $2E
|
||||
COLOR = $30
|
||||
;CTEMP = $68
|
||||
YY = $69
|
||||
|
||||
FRAME = $FC
|
||||
SUM = $FD
|
||||
SAVEX = $FE
|
||||
SAVEY = $FF
|
||||
|
||||
; soft-switches
|
||||
FULLGR = $C052
|
||||
PAGE1 = $C054
|
||||
|
||||
; ROM routines
|
||||
PLOT = $F800 ;; PLOT AT Y,A
|
||||
PLOT1 = $F80E ;; PLOT at (GBASL),Y (need MASK to be $0f or $f0)
|
||||
GBASCALC= $F847 ;; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear)
|
||||
SETCOL = $F864 ;; COLOR=A*17
|
||||
SETGR = $FB40
|
||||
|
||||
|
||||
|
||||
;================================
|
||||
; Clear screen and setup graphics
|
||||
;================================
|
||||
oval:
|
||||
|
||||
jsr SETGR ; set lo-res 40x40 mode
|
||||
bit FULLGR ; make it 40x48
|
||||
|
||||
draw_oval:
|
||||
inc FRAME
|
||||
|
||||
ldx #47 ; YY
|
||||
create_yloop:
|
||||
|
||||
ldy #39
|
||||
txa
|
||||
jsr PLOT ; (Y,A) sets GBASL/GBASH, Y
|
||||
|
||||
create_xloop:
|
||||
|
||||
; lda #128
|
||||
lda FRAME
|
||||
sta SUM
|
||||
|
||||
tya ; XX
|
||||
jsr calcsine_div2
|
||||
|
||||
txa ; YY
|
||||
jsr calcsine
|
||||
|
||||
; X (YY) is in SAVEX
|
||||
|
||||
clc
|
||||
; sty SAVEY ; XX
|
||||
tya
|
||||
adc SAVEX ; XX + YY
|
||||
jsr calcsine_div2
|
||||
|
||||
; clc
|
||||
; adc FRAME
|
||||
|
||||
lsr ; double colors
|
||||
and #$7 ; mask
|
||||
tax
|
||||
lda colorlookup,X
|
||||
|
||||
jsr SETCOL
|
||||
|
||||
jsr PLOT1 ; PLOT (GBASL),Y
|
||||
|
||||
ldx SAVEX
|
||||
|
||||
dey
|
||||
bpl create_xloop
|
||||
|
||||
dex
|
||||
bpl create_yloop
|
||||
|
||||
; X and Y both $FF
|
||||
|
||||
bmi draw_oval
|
||||
|
||||
|
||||
|
||||
calcsine_div2:
|
||||
lsr
|
||||
calcsine:
|
||||
stx SAVEX
|
||||
|
||||
and #$3f
|
||||
|
||||
tax
|
||||
rol
|
||||
rol
|
||||
rol
|
||||
bcc sinadd
|
||||
|
||||
sinsub:
|
||||
lda #0
|
||||
lda SUM
|
||||
; sec
|
||||
sbc sinetable-32,X
|
||||
jmp sindone
|
||||
|
||||
sinadd:
|
||||
lda SUM
|
||||
; clc
|
||||
adc sinetable,X
|
||||
|
||||
sindone:
|
||||
sta SUM
|
||||
|
||||
ldx SAVEX
|
||||
rts
|
||||
|
||||
|
||||
colorlookup:
|
||||
|
||||
; blue
|
||||
;.byte $55,$77,$ff,$77,$66,$22,$55 ; use 00 from sinetable
|
||||
;.byte $00
|
||||
|
||||
; pink
|
||||
.byte $55,$11,$33,$bb,$ff,$bb,$55
|
||||
;.byte $00
|
||||
|
||||
; green
|
||||
;.byte $55,$44,$cc,$ff,$cc,$44,$55 ; use 00 from sinetable
|
||||
;.byte $00
|
||||
|
||||
; orange
|
||||
;.byte $99,$88,$ff,$44,$cc,$ff,$55 ; use 00 from sinetable
|
||||
;.byte $00
|
||||
|
||||
;.byte $00,$00,$55,$55,$77,$77,$ff,$ff
|
||||
;.byte $77,$77,$66,$66,$22,$22,$55,$55
|
||||
|
||||
|
||||
sinetable:
|
||||
; this is actually (32*sin(x))
|
||||
|
||||
.byte $00,$03,$06,$09,$0C,$0F,$11,$14
|
||||
.byte $16,$18,$1A,$1C,$1D,$1E,$1F,$1F
|
||||
.byte $20,$1F,$1F,$1E,$1D,$1C,$1A,$18
|
||||
.byte $16,$14,$11,$0F,$0C,$09,$06,$03
|
||||
;.byte $00,$FD,$FA,$F7,$F4,$F1,$EF,$EC
|
||||
;.byte $EA,$E8,$E6,$E4,$E3,$E2,$E1,$E1
|
||||
;.byte $E0,$E1,$E1,$E2,$E3,$E4,$E6,$E8
|
||||
;.byte $EA,$EC,$EF,$F1,$F4,$F7,$FA,$FD
|
||||
|
||||
|
||||
;.byte $00,$06,$0C,$11,$16,$1A,$1D,$1F
|
||||
;.byte $20,$1F,$1D,$1A,$16,$11,$0C,$06
|
||||
;.byte $00,$FA,$F4,$EF,$EA,$E6,$E3,$E1
|
||||
;.byte $E0,$E1,$E3,$E6,$EA,$EF,$F4,$FA
|
||||
|
||||
;.byte $00,$0C,$16,$1D
|
||||
;.byte $20,$1D,$16,$0C
|
||||
;.byte $00,$F4,$EA,$E3
|
||||
;.byte $E0,$E3,$EA,$F4
|
||||
|
||||
jmp oval
|
||||
|
||||
|
||||
; 131 bytes
|
||||
; 3f5 - 128 = 375
|
Loading…
Reference in New Issue
Block a user