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 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:
- 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
- ;-----------------------------------------------------------
- ;---------------------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
- ;-----------------------------------------------------------
- ;----------------------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