Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .segment "INES"
- .byte "NES", $1A,1,1,9
- .segment "VECTORS"
- .word NMI
- .word Start
- .word IRQ
- .segment "GFX"
- spr_tiles:
- .incbin "sprites.spr"
- bg_tiles:
- .incbin "bakgrunn.chr"
- .segment "CODE"
- Start:
- ; ---[ VENTER 2 FRAMES TIL PPU KOMMER SEG ]---
- LDA $2002
- BPL Start
- : LDA $2002
- BPL :-
- ; ---[ 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]---
- ; ---[ SETTER OPP PPU ]---
- LDA #%10010000
- STA $2000 ; kontrollregister 1
- LDA #%00011110
- STA $2001 ; kontrollregister 2
- ; ---[ SETTER OPP STACKEN ]---
- LDX #$FF
- TXS
- LDA #0
- STA right_racket_pos
- ; ---[ SETT POSISJON TIL SPRITES ]---
- ; ---[ POSISJONER OG VEKTORER TIL BALLEN]---
- LDA #0
- STA x_pos
- LDA #50
- STA y_pos
- LDA #3
- STA x_vector
- LDA #1
- STA y_vector
- Sprite:
- LDA $2002
- BPL Sprite
- ; ---[ BALL ]---
- ; ---[ Y-KOORDINAT ]---
- LDA y_pos
- STA $0200
- ; ---[ TILENUMMER FRA CHR-ROM ]---
- LDA #3
- STA $0201
- ; ---[ ATRIBUTT-BYTE ]---
- LDA #0; (setter ingen flagg)
- STA $0202
- ; ---[ X-KOORDINAT ]---
- LDA x_pos
- STA $0203
- ; ---[ RIGHT RACKET ]---
- ;LDA #4
- ;STA $2003
- ; ---[ Y-KOORDINAT ]---
- LDA right_racket_pos
- STA $0204
- ; ---[ TILENUMMER FRA CHR-ROM ]---
- LDA #5
- STA $0205
- ; ---[ ATRIBUTT-BYTE ]---
- LDA #0; (setter ingen flagg)
- STA $0206
- ; ---[ X-KOORDINAT ]---
- LDA #250
- STA $0207
- ; ---[RIGHT RACKET POSITION ]---
- ;A, B, Select, Start, Up, Down, Left, Right
- LDA #1
- STA $4016
- LDA #0
- STA $4016
- LDA $4016 ; A
- LDA $4016 ; B
- LDA $4016 ; Select
- LDA $4016 ; Start
- LDA $4016 ; Up
- CMP #$41
- BNE NotUp
- LDA right_racket_pos
- SEC
- SBC #2
- STA right_racket_pos
- JMP NoMove
- NotUp:
- LDA $4016 ; Down
- CMP #$41
- BNE NoMove
- LDA right_racket_pos
- CLC
- ADC #2
- STA right_racket_pos
- NoMove:
- ; ---[ OPPDATERER X ]---
- LDA x_pos
- CLC
- ADC x_vector
- TAX
- STA x_pos
- ; ---[ OPPDATERER Y ]---
- LDA y_pos
- CLC
- ADC y_vector
- TAY
- STA y_pos
- ; ---[ TRUFFET KANTEN? ]---
- ;TestEdgeX
- 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 x_vector
- STA x_vector
- JMP TestEdgeY
- TurnY: ; SNUR Y-VEKTOREN
- LDA #0
- SEC
- SBC y_vector
- STA y_vector
- JMP Sprite
- palett:
- ; Bakgrunnsgrafikk
- .byte 0, $2E, $2D, $04
- .byte 0, $2E, $2D, $04
- .byte 0, $2E, $2D, $04
- .byte 0, $2E, $2D, $04
- .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
- NMI: ; ---[ V-BLANK INTERRUPT ]---
- STA a_tmp
- ;STX x_tmp
- ;STY y_tmp
- LDA #$00
- STA $2003
- LDA #$02
- STA $4014
- LDA a_tmp
- ;LDX x_tmp
- ;LDY y_tmp
- RTI ; ReTurn from Interrupt
- IRQ:
- jmp IRQ
- .segment "RAM"
- ; Midlertidige minneposisjoner for interrupt handling
- a_tmp: .byte 0
- x_tmp: .byte 0
- y_tmp: .byte 0
- ; Ballen
- x_pos: .byte 0
- y_pos: .byte 0
- x_vector: .byte 0
- y_vector: .byte 0
- ; Racketen
- right_racket_pos: .byte 0
Add Comment
Please, Sign In to add comment