Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;HEADER, VARIABLE, AND CONSTANTS HERE
- ;-----------------------------------------------------------
- ;; DECLARE CONSTANTS
- ;-----------------------------------------------------------
- STATETITLE = $00 ; displaying title screen
- STATEPLAYING = $01 ; begin game
- STATEGAMEOVER = $02 ; displaying game over screen
- STATEPAUSE = $03 ; display pause screen
- ;MORE CONSTANTS
- ;RESET, CLRMEM, AND VLANKS
- ;-----------------------------------------------------------
- ;---------------Load Some Initial Values--------------------
- ;-----------------------------------------------------------
- JSR ResetValues
- ;LOAD PALETTES
- ;-----------------------------------------------------------
- ;---------------------LOAD BACKGROUND-----------------------
- ;-----------------------------------------------------------
- LDA #STATETITLE
- STA gamestate
- JSR LoadBackground
- ;LOAD ATTRIBUTES (THIS WILL BE MOVING ONCE I GET EVERYTHING WORKING)
- LDA #%10010000 ; enable NMI, sprites from Pattern Table 0, background from Pattern Table 1
- STA $2000
- JSR EnablePPU
- ;-----------------------------------------------------------
- ;-----------------------NMI ROUTINE-------------------------
- ;-----------------------------------------------------------
- NMI:
- LDA #$00
- STA $2003 ; set the low byte (00) of the RAM address
- LDA #$02
- STA $4014 ; set the high byte (02) of the RAM address, start the transfer
- ;SOME NMI CODE
- JSR UpdateColor ;;Update the Sprite Palette Color for new beer color
- ;SOME NMI CODE
- LDA #$00 ;;tell the ppu there is no background scrolling
- STA $2005
- STA $2005
- ;;;;;;;;;;;;;;;;;;GAME ENGINE;;;;;;;;;;;;;;;;;;;;;;;;;
- GameEngine:
- LDA gamestate
- CMP #STATETITLE
- BEQ EngineTitle ;;game is displaying title screen
- LDA gamestate
- CMP #STATEGAMEOVER
- BEQ EngineGameOver ;;game is displaying ending screen
- LDA gamestate
- CMP #STATEPLAYING
- BEQ EnginePlaying ;;game is playing
- LDA gamestate
- CMP #STATEPAUSE
- BEQ EnginePause ;;game is paused
- GameEngineDone:
- RTI
- EngineTitle:
- LDA #$01
- STA ChangeColor
- LDA #$29
- STA attribute_RAM
- LDA buttons1_pressed ; player 1 - start
- AND #%00010000 ; only look at bit 5
- BEQ GameEngineDone
- JSR StartEnginePlaying
- ;SOME CODE TO RESET VARIABLES
- JMP GameEngineDone
- ;;;;;;;;;
- EngineGameOver:
- LDA buttons1_pressed ; player 1 - start
- AND #%00010000 ; only look at bit 5
- BEQ GameEngineDone
- JSR StartTitle
- JMP GameEngineDone
- ;;;;;;;;;;;
- EnginePlaying:
- ;SOME GAME PLAY CODE
- JSR handle_input
- JSR CheckGameOver ;Go to Game Over Subroutine to see if the clock is 00, if yes, then display game over screen and disable sprites
- EnginePlayingDone:
- JMP GameEngineDone
- ;;;;;;;;;;;;;
- EnginePause:
- LDA buttons1_pressed ; player 1 - start
- AND #%00010000 ; only look at bit 5
- BEQ GameEngineDone
- LDA #STATEPLAYING
- STA gamestate
- JMP GameEngineDone
- ;-----------------------------------------------------------
- ;------------------START ENGINE PLAYING---------------------
- ;-----------------------------------------------------------
- StartEnginePlaying:
- LDA #STATEPLAYING
- STA gamestate
- JSR DisablePPU
- JSR LoadBackground
- JSR EnablePPU
- StartEnginePlayingDone:
- RTS
- ;-----------------------------------------------------------
- ;-----------------------START TITLE-------------------------
- ;-----------------------------------------------------------
- StartTitle:
- LDA #STATETITLE
- STA gamestate
- JSR DisablePPU
- JSR LoadBackground
- JSR EnablePPU
- StartTitleDone:
- RTS
- ;-----------------------------------------------------------
- ;----------------------GAME OVER----------------------------
- ;-----------------------------------------------------------
- CheckGameOver:
- LDA time1
- BNE CheckGameOverDone
- LDA time10
- BNE CheckGameOverDone
- LDA #STATEGAMEOVER
- STA gamestate
- JSR DisablePPU
- JSR LoadBackground
- JSR EnablePPU_nosprites
- CheckGameOverDone:
- RTS
- ;-----------------------------------------------------------
- ;----------------------UPDATE COLOR-------------------------
- ;-----------------------------------------------------------
- UpdateColor:
- LDA ChangeColor ;make a variable in zero page and set it to #$01 whenever you want this color to change.
- CMP #$01 ;if it's not #$01, ignore this subroutine and go to End.
- BNE .End
- LDA $2002 ;changing the palette (and background tiles)
- LDA #$3F
- STA $2006
- LDA #$11 ;address of specific color you want to change
- STA $2006
- LDA attribute_RAM ;value of new color you want to change it to.
- STA $2007
- LDA #$00
- STA ChangeColor
- .End:
- RTS
- ;-----------------------------------------------------------
- ;---------------------LOAD BACKGROUND-----------------------
- ;-----------------------------------------------------------
- LoadBackground:
- LDA $2002
- LDA #$20
- STA $2006 ; write the high byte of $2000 address
- LDA #$00
- STA $2006 ; write the low byte of $2000 address
- ;;;;;;
- LDA gamestate
- CMP #$02
- BEQ LoadGameOverBackground
- LDA gamestate
- CMP #$01
- BEQ LoadMainBackground
- LDA gamestate
- CMP #$00
- BEQ LoadTitleBackground
- JMP LoadBackGroundDone
- LoadGameOverBackground:
- LDA #LOW(GameOverScreen)
- STA AddrLow
- LDA #HIGH(GameOverScreen)
- STA AddrHigh
- JMP StartBGLoading
- LoadMainBackground:
- LDA #LOW(MainScreen)
- STA AddrLow
- LDA #HIGH(MainScreen)
- STA AddrHigh
- JMP StartBGLoading
- LoadTitleBackground:
- LDA #LOW(TitleScreen)
- STA AddrLow
- LDA #HIGH(TitleScreen)
- STA AddrHigh
- JMP StartBGLoading
- StartBGLoading:
- LDX #$04 ; Loop X 4 times
- LDY #$00 ; Loop Y 256 times
- LoadBackgroundsLoop:
- LDA [AddrLow],y
- STA $2007
- INY
- BNE LoadBackgroundsLoop
- ; Outer loop
- INC AddrHigh ; increment high byte of address backg to next 256 byte chunk
- DEX ; one chunk done so X = X - 1.
- BNE LoadBackgroundsLoop ; if X isn't zero, do again
- LoadBackGroundDone:
- RTS
- ;-----------------------------------------------------------
- ;----------------------RESET VALUES---------------------------
- ;-----------------------------------------------------------
- ResetValues:
- LDA #$29
- STA attribute_RAM
- LDA #$00
- STA ChangeColor
- ;OTHER VARIABLES
- RTS
- ;-----------------------------------------------------------
- ;----------------------PPU----------------------------------
- ;-----------------------------------------------------------
- EnablePPU:
- LDA #%00011110 ; enable sprites, enable background, no clipping on left side
- STA $2001
- RTS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- EnablePPU_nosprites:
- LDA #%00001110 ; Disable sprites, enable background, no clipping on left side
- STA $2001
- RTS
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- DisablePPU:
- LDA #$00
- STA $2001
- RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement