User Tools

Site Tools


base:8x8-plasma-basic

8x8 Plasma / Basic Speedcode Generator

//--------------------------------------------------------------------------------------------------
// 8x8 Plasma Crap w/ Basic Generated Speedcode
// For Codebase64
// By Cruzer/CML 2009
// Asm: KickAss 3.1
//--------------------------------------------------------------------------------------------------
// memory...
.var plasmaCnt =	$02
.var add =		$04
.var codePnt =		$05
.var xPos =		$07
.var yPos =		$08
.var screen =		$0400
.var basic =		$0800
.var sine64 =		$1000
.var sine128 =		$1200
.var colorTable =	$1400
.var bitmap =		$2000
.var code =		$4000
.var codeSrc =		$5000
.var plasmer =		$6000
//--------------------------------------------------------------------------------------------------
.pc = sine64 "sine64"
.for (var i=0; i<$200; i++)
	.by 32 + 32 * sin(i/[$100/2/PI])
.pc = sine128 "sine128"
.for (var i=0; i<$200; i++)
	.by 64 + 64 * sin(i/[$100/2/PI])
//--------------------------------------------------------------------------------------------------
.pc = basic "basic"
// dump of the following basic program, which generates the plasmer speedcode based on the two
// chunks of code from codeSrc...
/*
10 IL = 12
20 PL = 12
40 IS = 5*16*256
45 PS = IS + IL
50 TA = 6*16*256
100 FOR Y=0 TO 24
200 REM -- LINE INIT --
202 POKE IS+6,Y*4
204 POKE IS+9,Y*7
210 FOR I=0 TO IL-1
220 POKE TA+I, PEEK(IS+I) :NEXT I
240 TA=TA+IL
300 REM -- PLASMER --
330 FOR X=0 TO 39
331 CC=CC+1: PRINT CC"/ 1000"
342 POKE PS+1, (X*3 + Y*1)AND 255
344 POKE PS+7, (X*1 + Y*2)AND 255
346 SA=1024+X+Y*40
347 POKE PS+10, SA AND 255
348 POKE PS+11, SA / 256
350 FOR I=0 TO PL-1
360 POKE TA+I, PEEK(PS+I) :NEXT I
370 TA=TA+PL
390 NEXT X
400 NEXT Y
500 POKE TA,96
1000 SYS16384
*/
  	.by $00,$0d,$08,$0a,$00,$49,$4c,$20,$b2,$20,$31,$32,$00,$19,$08,$14
  	.by $00,$50,$4c,$20,$b2,$20,$31,$32,$00,$2b,$08,$28,$00,$49,$53,$20
  	.by $b2,$20,$35,$ac,$31,$36,$ac,$32,$35,$36,$00,$3c,$08,$2d,$00,$50
  	.by $53,$20,$b2,$20,$49,$53,$20,$aa,$20,$49,$4c,$00,$4e,$08,$32,$00
  	.by $54,$41,$20,$b2,$20,$36,$ac,$31,$36,$ac,$32,$35,$36,$00,$5d,$08
  	.by $64,$00,$81,$20,$59,$b2,$30,$20,$a4,$20,$32,$34,$00,$73,$08,$c8
  	.by $00,$8f,$20,$2d,$2d,$20,$4c,$49,$4e,$45,$20,$49,$4e,$49,$54,$20
  	.by $2d,$2d,$00,$82,$08,$ca,$00,$97,$20,$49,$53,$aa,$36,$2c,$59,$ac
  	.by $34,$00,$91,$08,$cc,$00,$97,$20,$49,$53,$aa,$39,$2c,$59,$ac,$37
  	.by $00,$a2,$08,$d2,$00,$81,$20,$49,$b2,$30,$20,$a4,$20,$49,$4c,$ab
  	.by $31,$00,$bb,$08,$dc,$00,$97,$20,$54,$41,$aa,$49,$2c,$20,$c2,$28
  	.by $49,$53,$aa,$49,$29,$20,$3a,$82,$20,$49,$00,$c8,$08,$f0,$00,$54
  	.by $41,$b2,$54,$41,$aa,$49,$4c,$00,$dc,$08,$2c,$01,$8f,$20,$2d,$2d
  	.by $20,$50,$4c,$41,$53,$4d,$45,$52,$20,$2d,$2d,$00,$eb,$08,$4a,$01
  	.by $81,$20,$58,$b2,$30,$20,$a4,$20,$33,$39,$00,$05,$09,$4b,$01,$43
  	.by $43,$b2,$43,$43,$aa,$31,$3a,$20,$99,$20,$43,$43,$22,$2f,$20,$31
  	.by $30,$30,$30,$22,$00,$22,$09,$56,$01,$97,$20,$50,$53,$aa,$31,$2c
  	.by $20,$28,$58,$ac,$33,$20,$aa,$20,$59,$ac,$31,$29,$af,$20,$32,$35
  	.by $35,$00,$3f,$09,$58,$01,$97,$20,$50,$53,$aa,$37,$2c,$20,$28,$58
  	.by $ac,$31,$20,$aa,$20,$59,$ac,$32,$29,$af,$20,$32,$35,$35,$00,$52
  	.by $09,$5a,$01,$53,$41,$b2,$31,$30,$32,$34,$aa,$58,$aa,$59,$ac,$34
  	.by $30,$00,$68,$09,$5b,$01,$97,$20,$50,$53,$aa,$31,$30,$2c,$20,$53
  	.by $41,$20,$af,$20,$32,$35,$35,$00,$7e,$09,$5c,$01,$97,$20,$50,$53
  	.by $aa,$31,$31,$2c,$20,$53,$41,$20,$ad,$20,$32,$35,$36,$00,$8f,$09
  	.by $5e,$01,$81,$20,$49,$b2,$30,$20,$a4,$20,$50,$4c,$ab,$31,$00,$a8
  	.by $09,$68,$01,$97,$20,$54,$41,$aa,$49,$2c,$20,$c2,$28,$50,$53,$aa
  	.by $49,$29,$20,$3a,$82,$20,$49,$00,$b5,$09,$72,$01,$54,$41,$b2,$54
  	.by $41,$aa,$50,$4c,$00,$bd,$09,$86,$01,$82,$20,$58,$00,$c5,$09,$90
  	.by $01,$82,$20,$59,$00,$d1,$09,$f4,$01,$97,$20,$54,$41,$2c,$39,$36
  	.by $00,$dc,$09,$e8,$03,$9e,$31,$36,$33,$38,$34,$00,$00,$00,$49,$4c
  	.by $84,$40,$00,$00,$00,$50,$4c,$84,$40,$00,$00,$00,$49,$53,$8f,$20
  	.by $00,$00,$00,$50,$53,$8f,$20,$18,$00,$00,$54,$41,$8f,$4d,$20,$00
  	.by $00,$59,$00,$82,$40,$00,$00,$00,$49,$00,$84,$10,$00,$00,$00,$58
  	.by $00,$85,$00,$00,$00,$00,$43,$43,$88,$09,$00,$00,$00,$53,$41,$8b
  	.by $11,$00,$00,$00,$38,$34,$00,$00,$00,$82,$20,$59,$00,$39,$0a,$f4
  	.by $01,$97,$20,$54,$41,$2c,$39,$36,$00,$44,$0a,$e8,$03,$9e,$31,$36
  	.by $33,$38,$34,$00,$00,$00,$82,$20,$59,$00,$56,$0a,$f4,$01,$97,$20
  	.by $54,$41,$2c,$39,$36,$00,$61,$0a,$e8,$03,$9e,$31,$36,$33,$38,$34
  	.by $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
//--------------------------------------------------------------------------------------------------
.pc = code "code"
	jmp start
//--------------------------------------------------------------------------------------------------
// plasma params...
.var width = 40
.var height = 25
.var sineSpreadX = 	$03
.var sineSpreadY =	$01
.var colorSpreadX = 	$01
.var colorSpreadY = 	$02
.var realtimeSpread0 =	$04
.var realtimeSpread1 =	$07
sineSpeeds:	.byte $03,$fe
addSpeed:	.byte $ff
colors:		.byte $a7,$aa,$8a,$2a,$b8,$95,$b5,$c5,$55,$5f,$cd,$5d,$37,$dd,$d1,$11
//--------------------------------------------------------------------------------------------------
start:
	sei
	
// fill bitmap...
	ldx #0
	ldy #$1f
	lda #%01010101
!:	sta bitmap,x
	eor #%11111111
	inx
	bne !-
	inc !- +2
	dey
	bpl !-

// generate color table...
	ldx #0

!loop:
	txa
	asl
	asl
	asl
	bcc !+
	eor #$ff
!:	lsr
	lsr
	lsr
	lsr
	tay
	lda colors,y
	sta colorTable,x
	sta colorTable+$100,x
	inx
	bne !loop-

// init vic...
	lda #$3b
	sta $d011
	lda #$18
	sta $d018

//--------------------------------------------------------------------------------------------------
mainLoop:
	lda #$00
	sta $d020
	lda #$44
!:	cmp $d012
	bne !-
	sta $d020

	lda plasmaCnt+0
	clc
	adc sineSpeeds+0
	sta plasmaCnt+0
	lda plasmaCnt+1
	clc
	adc sineSpeeds+1
	sta plasmaCnt+1
	lda add
	clc
	adc addSpeed
	anc #$3f
	sta add

	jsr plasmer
	jmp mainLoop
//--------------------------------------------------------------------------------------------------
.pc = codeSrc "codeSrc"
lineInitSrc:
	ldx plasmaCnt+0
	ldy plasmaCnt+1
	clc
	lda sine128,x
	adc sine64,y
	tax

plasmerSrc:
	lda sine64,x
	adc add
	tay
	lda colorTable,y
	sta screen
base/8x8-plasma-basic.txt · Last modified: 2015-04-17 04:30 (external edit)