pouët.net

Go to bottom

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)
Go to top