Dotty Veil by Loonies [web]
// "Dotty Veil" by Blueberry / Loonies
// 128 bytes (payload) intro for C64
// For the 128 byte intro compo at Outline Online 2020
//
// Start with SYS 2020
//
// Greetings to all multi-platform sizecoders! :)
.label ValueLow = $FE
.label ValueHigh = $FF
.label ZeroPlace = $20
.label Screen = $3800
.label CharSet = $3000
.label STRIDE = 225
.label STRIDE_DEC = 6
.label BOTTOM_STRIDE = STRIDE - STRIDE_DEC * 24
* = $2020
main:
// X = 0, Y = 0
charset:
txa
asl
asl
asl
beq next
asl
asl
asl
beq char
bcc next
dec ptr
// $A9 is LDA #imm, which eats the first byte of
// "inc ptr". Since ptr is $2035, it is interpreted
// as a harmless AND $20,x.
.byte $A9
next:
inc ptr
char:
lda ptr:CharSetTable-1
dey
sta CharSet,x
sta CharSet+$100,y
inx
bne charset
// Clear Color RAM to black
stx $286
jsr $e544
CopiedToZeroPlace:
.pseudopc ZeroPlace {
FrameLoop:
ldx #STRIDE // Stride
yloop:
txa
axs #STRIDE_DEC
ldy #39
xloop:
txa
adc ValueLow
sta ValueLow
lda ValueHigh
adc #$80
sta ValueHigh
sta screen:Screen,y
sta $D400,y // Make some noise!
dey
bpl xloop
clc
adc modulo:#93
sta ValueHigh
inc modulo
clc
lda #40
adc screen
sta screen
bcc !+
inc screen+1
!:
cpx #BOTTOM_STRIDE
bne yloop
// X = BOTTOM_STRIDE
// Y = -1
copy:
lda CopiedToZeroPlaceEnd-BOTTOM_STRIDE-1,x
sta.z ZeroPlaceEnd-BOTTOM_STRIDE-1,x
cpx #BOTTOM_STRIDE-5
bcc noreg
sta $D012,y
nextreg:
iny
sbc #$20
bcs nextreg
noreg:
dex
bpl copy
jmp FrameLoop
// $D011 = $D7
// $D018 = $EC
// $D020 = 0
// ($D021 = 6)
// $D022 = 2
// $D023 = 14
// $D024 = 10
.byte 10,14,2,$20,$EC,$D7
ZeroPlaceEnd:
}
CopiedToZeroPlaceEnd:
CharSetTable:
.byte $FF,$FF,$FF,$FF,$E7,$C3,$81,$00,$00,$00,$00
.print toHexString(main)
.print toHexString(ptr)
[ back to the prod ]
.jpg)