
Untitled
By: a guest on
Jul 10th, 2012 | syntax:
None | size: 1.93 KB | hits: 18 | expires: Never
.segment "INES"
.byte "NES", $1A,1,1,9
.segment "VECTORS"
.word 0, Start, 0
.segment "GFX"
spr_tiles:
.incbin "sprites.spr"
bg_tiles:
.incbin "bakgrunn.chr"
.segment "CODE"
Start:
; ---[ START LAST PALETT]---
lda #$3F
sta $2006 ; PPU output skal
lda #0 ; settes til $3F00
sta $2006
ldx #0
LastPalett:
lda palett, x
sta $2007
inx
cpx #32
bne LastPalett
; ---[ SLUTT LAST PALETT]---
; ---[ START LAST INN EN SPRITE ]---
ldx #0 ; X POS
ldy #50 ; Y POS
lda #4
sta $0001 ; X vektor
lda #3
sta $0002 ; Y vektor
Sprite:
lda $2002
bpl Sprite
; ---[ VELG HVILKEN SPRITE FRA SPR-RAM ]---
lda #0
sta $2003
; ---[ Y-KOORDINAT ]---
tya
sta $2004
; ---[ TILENUMMER FRA CHR-ROM ]---
lda #3
sta $2004
; ---[ ATRIBUTT-BYTE ]---
lda #0; (setter ingen flagg)
sta $2004
; ---[ X-KOORDINAT ]---
txa
sta $2004
; ---[ TEGNER ]---
lda #0
sta $2000 ; kontrollregister 1
lda #%00011110
sta $2001 ; kontrollregister 2
; ---[ OPPDATERER X ]---
txa
clc
adc $0001 ; X vektor
tax
; ---[ OPPDATERER Y ]---
tya
clc
adc $0002 ; Y vektor
tay
; ---[ TRUFFET KANTEN? ]---
cpx #250 ; if (x >= 250)
bcs TurnX ; then TurnX
cpx #0 ; if (x == 0)
beq TurnX ; then TurnX
TestEdgeY:
cpy #232 ; if (y >= 232)
bcs TurnY ; then TurnY
cpy #0 ; if (y == 0)
beq TurnY ; then TurnY
jmp Sprite ; ikke truffet kanten, flytt mer
TurnX: ; SNUR X-VEKTOREN
lda #0
sec
sbc $0001
sta $0001
jmp TestEdgeY
TurnY: ; SNUR Y-VEKTOREN
lda #0
sec
sbc $0002
sta $0002
jmp Sprite
palett:
; Bakgrunnsgrafikk
.byte 0, 0, 0, 0
.byte 0, 0, 0, 0
.byte 0, 0, 0, 0
.byte 0, 0, 0, 0
.byte $11, $2A, $28, $21 ; bakgrunn og sprite 0
.byte 0, 0, 0, 0 ; sprite 1
.byte 0, 0, 0, 0 ; sprite 2
.byte 0, 0, 0, 0 ; sprite 3
.segment "RAM"
.byte "Move along, nothing to see here"