;; Common `reset` procedure for NROM "games". Check `basics/sprite.s` on ;; @mssola/NES for a proper explanation on the code (will be open soon, ;; promise!). reset: sei cld ldx #$40 stx $4017 ldx #$ff txs inx stx $2000 stx $2001 stx $4010 @vblankwait1: bit $2002 bpl @vblankwait1 ldx #0 lda #0 @ram_reset_loop: sta $000, x sta $100, x sta $300, x sta $400, x sta $500, x sta $600, x sta $700, x inx bne @ram_reset_loop lda #$ef @sprite_reset_loop: sta $200, x inx bne @sprite_reset_loop lda #$00 sta $2003 lda #$02 sta $4014 @vblankwait2: bit $2002 bpl @vblankwait2 lda #$3F sta $2006 lda #$00 sta $2006 lda #$0F ldx #$20 @palettes_reset_loop: sta $2007 dex bne @palettes_reset_loop jmp main