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 ]