|
Subject: Re: [stella] Color test From: "Philipp Graf" <ut3h@xxxxxxxxxxxxxxxxxxx> Date: Sun, 7 May 2000 23:40:42 +0200 |
So now here is the source for this demo. There is nothing very special to it
except maybe for the fact that the scanline loop is unrolled for 4 lines to
allow display of playfield graphics - the PFx registers are written
alternatively.
Bye, Philipp.
----------------------------------------------------------------------------
------
;---------------------------
;-- color bars --
;---------------------------
;- (C) Philipp "Spin" Graf -
;- created 1. May 2000 -
;---------------------------
;- compilable with as65 -
;---------------------------
include "vcs.h"
;---- variable region
bss
org $80
Offset ds 1
;---- code at $f000 instead of $1000 !?
code
org $f000
Start
;---- global system initialization
sei ;set irq disable
cld ;clear decimal mode
ldx #$ff ; Set stack to $ff
txs
lda #0
.loop
sta 0,x
dex
bne .loop
ldx #0 ;set all ports to input
stx SWACNT
stx SWBCNT
;---------------------------
Main
;-- reserved for init stuff
lda #1
sta CTRLPF ;reflected playfield
lda #0
sta COLUPF ;black playfield
MainLoop
;- Enter VSYNC
lda #2
sta WSYNC
sta VSYNC
sta WSYNC
sta WSYNC
;-- prepare VBLANK
lda #44
sta TIM64T
lda #0
;-- leave VSYNC
sta WSYNC ; Third line of VSYNC.
sta VSYNC ; (0)
;-- 'game logic' here in vblank
ldy #192/4 ;line counter
inc Offset ;do 'scrolling'
lda Offset
and #$1f
sta Offset
tax
.vblwait
lda INTIM ;Wait for end of VBlank
bne .vblwait
sta WSYNC
sta VBLANK ;End VBLANK
.mainloop
;-- LINE 1
inx ;increment scroll value
lda Box1,y
sta PF0
lda Table,x ;get color
sta COLUBK ;and write them...
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$20
sta COLUBK
adc #$10
sta COLUBK
adc #$50
sta COLUBK
sty WSYNC ;wait for next hsync
;-- LINE 2
inx ;increment scroll value
lda Box1+4,y
sta PF1
sta PF1
nop
lda Table,x ;get color
sta COLUBK ;and write them...
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$20
sta COLUBK
adc #$10
sta COLUBK
adc #$50
sta COLUBK
sty WSYNC ;wait for next hsync
;-- LINE 3
inx ;increment scroll value
lda Box1+8,y
sta PF2
sta PF2
nop
lda Table,x ;get color
sta COLUBK ;and write them...
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$20
sta COLUBK
adc #$10
sta COLUBK
adc #$50
sta COLUBK
sty WSYNC ;wait for next hsync
;-- LINE 4
inx ;increment scroll value
txa
and #$f
tax
nop
nop
nop
lda Table,x ;get color
sta COLUBK ;and write them...
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$10
sta COLUBK
adc #$20
sta COLUBK
adc #$10
sta COLUBK
adc #$50
sta COLUBK
dey
sty WSYNC ;wait for next hsync
beq .out
jmp .mainloop
.out
;enter overscan
lda #2
sta VBLANK
ldx #30
.oloop
sta WSYNC
dex
bne .oloop
jmp MainLoop
;-- color table
align 256
Table
db $0,$2,$4,$6,$8,$A,$C,$E,$E,$C,$A,$8,$6,$4,$2,$0
db $0,$2,$4,$6,$8,$A,$C,$E,$E,$C,$A,$8,$6,$4,$2,$0
Box1
db %00011000
db %00011000
db %01111110
db %01111110
db %01000010
db %01000010
db %01000010
db %00000000
db %00000000
db %01000010
db %01000010
db %01000010
db %01111110
db %01111110
db %00011000
db %00011000
db %00011000
db %00011000
db %00000000
db %00000000
db %00111100
db %00111100
db %00100100
db %00000000
db %00000000
db %00100100
db %00111100
db %00111100
db %00000000
db %00000000
db %00011000
db %00011000
db %00011000
db %00011000
db %01111110
db %01111110
db %01000010
db %01000010
db %01000010
db %00000000
db %00000000
db %01000010
db %01000010
db %01000010
db %01111110
db %01111110
db %00011000
db %00011000
db %00011000
db %00011000
db %00000000
db %00000000
db %00111100
db %00111100
db %00100100
db %00000000
db %00000000
db %00100100
db %00111100
db %00111100
db %00000000
db %00000000
db %00011000
db %00011000
;** OUT OF CYCLES
; end of rom: pointers to start. seems to be the reset vector and some
interrupt vector???
org $fffc
dw Start
dw Start
--
Archives (includes files) at http://www.biglist.com/lists/stella/archives/
Unsub & more at http://www.biglist.com/lists/stella/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [stella] Color test, Philipp Graf | Thread | Re: [stella] Color test, Eckhard Stolberg |
| Re: [stella] Cyberpunks Entertainme, Glenn Saunders | Date | Re: [stella] Dead Links, Matthew W. Miller |
| Month |