Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .inesprg $01
- .ineschr $01
- .inesmap $00
- .inesmir $01
- ; variables
- .rsset $0000
- gameState .rs 2
- controller1 .rs 1
- controller2 .rs 1
- pLo .rs 1
- pHi .rs 1
- updatingBG .rs 1
- ballXPos .rs 1
- ballYPos .rs 1
- ballXVel .rs 1
- ballYVel .rs 1
- paddle1Y .rs 1
- paddle2Y .rs 1
- ; end variables
- ; constants
- GSTITLE = $01
- GSPLAYING = $02
- GSGAMEOVER = $03
- LEFTWALL = $20
- RIGHTWALL = $DA
- ROOF = $20
- FLOOR = $C0
- PADDLE1X = $2A
- PADDLE2X = $D0
- ; end constants
- .bank $00
- .org $C000
- ; subroutines
- VBlankWait:
- BIT $2002
- BPL VBlankWait
- RTS
- SetBGPointer:
- TXA
- STA pLo
- TYA
- STA pHi
- RTS
- LoadBG:
- LDA $2002
- LDA #$20
- STA $2006
- LDA #$00
- STA $2006
- LDX #$00
- LDY #$00
- LoadBGLoop:
- LDA [pLo], Y
- STA $2007
- INY
- BNE LoadBGLoop
- INC pHi
- INX
- CPX #$04
- BNE LoadBGLoop
- RTS
- ReadController1:
- LDA #$01
- STA $4016
- LDA #$00
- STA $4016
- LDX #$08
- Controller1Loop:
- LDA $4016
- LSR A
- ROL controller1
- DEX
- BNE Controller1Loop
- RTS
- ReadController2:
- LDA #$01
- STA $4016
- LDA #$00
- STA $4016
- LDX #$08
- Controller2Loop:
- LDA $4017
- LSR A
- ROL controller2
- DEX
- BNE Controller2Loop
- RTS
- ; end subroutines
- Reset:
- SEI
- CLD
- LDX #$40
- STX $4017
- LDX #$FF
- TXS
- INX
- STX $2000
- STX $2001
- STX $4010
- BIT $2002
- JSR VBlankWait
- ClrMem:
- LDA #$00
- STA $0000, X
- STA $0100, X
- STA $0300, X
- STA $0400, X
- STA $0500, X
- STA $0600, X
- STA $0700, X
- LDA #$FE
- STA $0200, X
- INX
- BNE ClrMem
- JSR VBlankWait
- LDA $2002
- LDA #$3F
- STA $2006
- LDA #$00
- STA $2006
- LoadPalettes:
- LDA Palettes, X
- STA $2007
- INX
- CPX #$20
- BNE LoadPalettes
- ; define some staring values
- LDA #GSTITLE
- STA gameState
- LDA #$00
- STA $2003
- LDA #%10010000
- STA $2000
- Forever:
- LDA gameState
- CMP gameState+1
- BEQ GameStatesDone
- JSR ReadController1
- JSR ReadController2
- GameStates:
- LDA gameState
- CMP #GSTITLE
- BEQ TitleScreen
- LDA gameState
- CMP #GSPLAYING
- BEQ PlayScreen
- LDA gameState
- CMP #GSGAMEOVER
- BEQ GameOverScreen
- GameStatesDone:
- JMP Forever
- Nmi:
- PHA
- TXA
- PHA
- TYA
- PHA
- LDA #$02
- STA $4014
- LDA updatingBG
- BNE DoNotDraw
- LDA #%00011110
- STA $2001
- DoNotDraw:
- LDA #$00
- STA $2005
- STA $2005
- PLA
- TAY
- PLA
- TAX
- PLA
- RTI
- TitleScreen:
- LDA #$00
- STA $2001
- LDA #$01
- STA updatingBG
- LDA gameState
- STA gameState+1
- LDX #LOW(TitleBG)
- LDY #HIGH(TitleBG)
- JSR SetBGPointer
- JSR LoadBG
- LDA #$00
- STA updatingBG
- LDA controller1
- AND #%00010000
- BEQ GameStatesDone
- LDA #GSPLAYING
- STA gameState
- JMP GameStatesDone
- PlayScreen:
- LDA #$00
- STA $2000
- STA $2001
- JMP GameStatesDone
- GameOverScreen:
- JMP GameStatesDone
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement