http://www.tienza.es/crux/src/www.jwz.org/xscreensaver/xscreensaver-5.05.tar.gz
[xscreensaver] / hacks / images / m6502 / spacer.asm
diff --git a/hacks/images/m6502/spacer.asm b/hacks/images/m6502/spacer.asm
new file mode 100644 (file)
index 0000000..bdecbb5
--- /dev/null
@@ -0,0 +1,235 @@
+; "spacer", move a space ship through an\r
+; endless tunnel.  You die once you hit\r
+; the walls.\r
+;\r
+; Controls:\r
+;\r
+;   W - move up\r
+;   X - move down\r
+;   Any other key will stop the ship\r
+;\r
+; Ps: this game runs awfully slow =)\r
+;\r
+\r
+start:\r
+  jsr init\r
+\r
+loop:\r
+       ;;   jsr drawShip                       \r
+  jsr drawMap\r
+  jsr genMap\r
+  jsr readKeys\r
+  jmp loop\r
+\r
+;--\r
+\r
+drawShip:\r
+  lda $82                      ; mychange\r
+;  asl                         \r
+  tay\r
+\r
+  lda ypos,y\r
+  sta $00\r
+  iny\r
+  lda ypos,y\r
+  sta $01\r
+\r
+  ldx #42\r
+  lda ($00,x)\r
+  cmp #0\r
+  beq noCrash\r
+  cmp #5\r
+;  bne crashed \r
+;my changes\r
+noCrash:\r
+  lda #5\r
+  sta ($00,x)\r
+\r
+  lda $60\r
+  cmp $61\r
+  beq ret\r
+\r
+  lda $61\r
+  asl\r
+  tay\r
+  lda ypos,y\r
+  sta $00\r
+  iny\r
+  lda ypos,y\r
+  sta $01\r
+  lda #0\r
+  ldx #42\r
+  sta ($00,x)\r
+\r
+  lda $60\r
+  sta $61\r
+ret:\r
+  rts\r
+\r
+;--\r
+\r
+crashed:\r
+  lda $fe\r
+  sta ($00,x)\r
+  jmp crashed\r
+\r
+;--\r
+\r
+readKeys:\r
+  lda $ff\r
+  cmp #119\r
+  bne notUp\r
+  dec $60\r
+  rts\r
+notUp:\r
+  cmp #120\r
+  bne noMove\r
+  inc $60\r
+noMove:\r
+  rts\r
+\r
+;--\r
+\r
+init:\r
+  ldx #0\r
+drawLogo:\r
+  lda bottomLogo,x\r
+  sta $500,x\r
+  inx\r
+  cpx #0\r
+  bne drawLogo\r
+\r
+  lda #10\r
+  sta $60\r
+  sta $61\r
+\r
+  ldx #0\r
+  lda #$c\r
+c:sta $200,x\r
+  sta $400,x\r
+  dex\r
+  cpx #0\r
+  bne c\r
+\r
+  lda #16\r
+  sta $80  ; origin\r
+  ldx #15\r
+set:\r
+  sta $81,x  ; target\r
+  dex\r
+  bpl set\r
+  rts\r
+\r
+;--\r
+\r
+drawMap:\r
+  lda #0\r
+  sta $78\r
+  lda #32\r
+  sta $79\r
+  lda #192\r
+  sta $7a\r
+  lda #224\r
+  sta $7b\r
+\r
+  ldx #15\r
+drawLoop:\r
+  lda $81,x\r
+  sta $82,x\r
+  tay\r
+  lda ypos,y\r
+  sta $00\r
+  iny\r
+  lda ypos,y\r
+  sta $01\r
+\r
+  lda #$c\r
+  ldy $78\r
+  sta ($00),y\r
+  iny\r
+  sta ($00),y\r
+\r
+  ldy $7b\r
+  sta ($00),y\r
+  iny\r
+  sta ($00),y\r
+\r
+  ldy $79\r
+  lda #0\r
+  sta ($00),y\r
+  iny\r
+  sta ($00),y\r
+\r
+  ldy $7a\r
+  sta ($00),y\r
+  iny\r
+  sta ($00),y\r
+\r
+  inc $78\r
+  inc $79\r
+  inc $7a\r
+  inc $7b\r
+  inc $78\r
+  inc $79\r
+  inc $7a\r
+  inc $7b\r
+  dex\r
+  bpl drawLoop\r
+  rts\r
+\r
+;---\r
+\r
+genMap:\r
+  lda $80\r
+  cmp $81\r
+  beq done\r
+  lda $80\r
+  clc\r
+  sbc $81\r
+  bpl plus\r
+  bmi minus\r
+done:\r
+  lda $fe\r
+  and #$f\r
+  asl\r
+  sta $80\r
+  rts\r
+minus:\r
+  dec $81\r
+  dec $81\r
+  rts\r
+plus:\r
+  inc $81\r
+  inc $81\r
+  rts\r
+\r
+ypos:\r
+  dcb $00,$02,$20,$02,$40,$02,$60,$02\r
+  dcb $80,$02,$a0,$02,$c0,$02,$e0,$02\r
+  dcb $00,$03,$20,$03,$40,$03,$60,$03\r
+  dcb $80,$03,$a0,$03,$c0,$03,$e0,$03\r
+  dcb $00,$04,$20,$04,$40,$04,$60,$04\r
+  dcb $80,$04,$a0,$04,$c0,$04,$e0,$04\r
+  dcb $00,$05,$20,$05,$40,$05,$60,$05\r
+  dcb $80,$05,$a0,$05,$c0,$05,$e0,$05\r
+\r
+bottomLogo:\r
+  dcb $0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0\r
+  dcb $0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0,$0\r
+  dcb $0,$0,$0,$0,$0,$0,$1,$1,$1,$6,$1,$1,$1,$0\r
+  dcb $0,$6,$1,$1,$6,$0,$0,$1,$1,$1,$6,$0,$1,$1\r
+  dcb $1,$0,$1,$1,$1,$6,$0,$0,$6,$1,$6,$0,$6,$0\r
+  dcb $1,$0,$6,$1,$6,$1,$6,$0,$1,$0,$1,$0,$6,$0\r
+  dcb $6,$1,$6,$0,$6,$0,$1,$0,$6,$1,$6,$0,$0,$6\r
+  dcb $1,$1,$6,$6,$1,$1,$1,$0,$6,$1,$0,$0,$1,$0\r
+  dcb $1,$6,$0,$6,$6,$1,$1,$1,$0,$6,$1,$0,$6,$1\r
+  dcb $0,$6,$6,$6,$6,$6,$1,$6,$1,$1,$6,$6,$6,$1\r
+  dcb $1,$1,$1,$6,$1,$6,$6,$6,$6,$1,$6,$6,$6,$6\r
+  dcb $1,$1,$1,$6,$6,$6,$6,$1,$1,$1,$1,$e,$1,$1\r
+  dcb $e,$6,$6,$1,$1,$6,$1,$6,$1,$1,$1,$1,$e,$1\r
+  dcb $1,$1,$1,$6,$1,$1,$6,$1,$6,$6,$6,$1,$1,$1\r
+  dcb $6,$e,$1,$1,$6,$e,$6,$1,$1,$e,$1,$e,$6,$1\r
+  dcb $1,$1,$6,$e,$1,$1,$1,$e,$1,$1,$6,$1,$6,$e\r
+  dcb $e,$e,$6,$e,$e,$6,$e,$e,$6,$e,$e,$6,$e,$e\r
+  dcb $6,$e,$e,$6,$e,$e,$6,$e,$e,$6,$e,$e,$6,$e\r
+  dcb $e,$6,$e,$e\r