Advertisement
truffly

reset.asm

Jul 18th, 2018
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. reset:  ; the reset subroutine
  2.  
  3. RESET:
  4.   SEI           ;disable IRQ
  5.   CLD           ;disable decimal mode
  6.   LDX #$40
  7.   STX $4017 ;disable APU frame IRQ
  8.   LDX #$FF
  9.   TXS           ;set up the stack
  10.   INX           ;now x = 0 (wrapped back around) so we don't need to STX for clrmem
  11.   STX $2000 ;disable NMI
  12.   STX $2001 ;disable rendering
  13.   STX $4010 ;disable DMC IRQs
  14.  
  15.   JSR vblankwait
  16.  
  17. clrmem:
  18.   LDA #$00
  19.   STA $0000, x
  20.   STA $0100, x
  21.   STA $0300, x
  22.   STA $0400, x
  23.   STA $0500, x
  24.   STA $0600, x
  25.   STA $0700, x
  26.   LDA #$FE
  27.   STA $0200, x
  28.   INX
  29.   BNE clrmem
  30.  
  31.   JSR vblankwait
  32.  
  33. LoadPalettes:
  34.   LDA $2002
  35.   LDA #$3F
  36.   STA $2006
  37.   LDA #$00
  38.   STA $2006
  39.   LDX #$00
  40.  
  41. LoadPalettesLoop:
  42.   LDA palette, X
  43.   STA $2007
  44.   INX
  45.   CPX #$20
  46.   BNE LoadPalettesLoop
  47.  
  48. LoadSprites:
  49.   LDX #$00
  50.  
  51. LoadSpritesLoop:
  52.   LDA sprites, X
  53.   STA $0200, X
  54.   INX
  55.   CPX #$10
  56.   BNE LoadSpritesLoop
  57.  
  58. LoadBackground:
  59.   LDA $2002
  60.   LDA #$20
  61.   STA $2006
  62.   LDA #$00
  63.   STA $2006
  64.   LDX #$00
  65.   LDY #$00
  66.  
  67. LoadBackgroundLoop:
  68.   LDA background, x
  69.   STA $2007
  70.   INX
  71.   CPX #$80
  72.   BNE LoadBackgroundLoop
  73.   INY
  74.   LDX #$00
  75.   CPY #$08
  76.   BNE LoadBackgroundLoop
  77.  
  78. LoadAttribute:
  79.   LDA $2002
  80.   LDA #$23
  81.   STA $2006
  82.   LDA #$C0
  83.   STA $2006
  84.   LDX #$80
  85.   LDA #$00
  86.  
  87. LoadAttributeLoop:
  88.   STA $2007
  89.   DEX
  90.   BNE LoadAttributeLoop
  91.  
  92. PlayerVariablesInit:
  93.   ;; Let's set some initial stats here
  94.   ;object speed
  95.   LDA #$01
  96.  
  97.   STA speedx
  98.  
  99.   ;player speed
  100.   LDA #$02
  101.   STA speedy
  102.  
  103.   ; initial score
  104.  
  105.   LDA #$00
  106.   STA score
  107.  
  108.   ; set collide flag to off
  109.   STA collide_flag
  110.  
  111.   ; player position
  112.   LDA #$80
  113.   STA player
  114.  
  115.   LDA #$10
  116.   STA player ; static
  117.  
  118.   ;; Set starting game state
  119.  
  120.   LDA #STATEPLAYING
  121.   STA gamestate
  122.  
  123.   LDA #$00
  124.   STA scroll
  125.   sta nametable
  126.  
  127.   sta sleep_flag
  128.   sta draw_flag
  129.   jsr sound_engine_init ; initialize the sound engine
  130.  
  131. PPU_Init:
  132.  
  133.   ;; Finish up our initialization -- begin rendering graphics and enable sound
  134.  
  135.   LDA #%10010000   ; enable NMI, sprites from Pattern Table 1
  136.   STA $2000
  137.   LDA #%00010000
  138.   STA $2001
  139.  
  140.   rts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement