aboutsummaryrefslogtreecommitdiff
path: root/space/src/vectors/reset.s
diff options
context:
space:
mode:
Diffstat (limited to 'space/src/vectors/reset.s')
-rw-r--r--space/src/vectors/reset.s47
1 files changed, 10 insertions, 37 deletions
diff --git a/space/src/vectors/reset.s b/space/src/vectors/reset.s
index afc9fa5..1216146 100644
--- a/space/src/vectors/reset.s
+++ b/space/src/vectors/reset.s
@@ -1,39 +1,25 @@
.segment "CODE"
+;; Check `basics/sprite.s` for a deeper look on the logic below. I have only
+;; added code after configuration/reset is done.
reset:
- ;; Ignore IRQs and disable decimal mode.
sei
cld
-
- ;; Disable APU frame IRQ.
ldx #$40
- stx APU::FRAME_COUNTER
+ stx $4017
- ;; Set up the stack register with the proper value.
ldx #$ff
txs
- ;; And now disable, in this order, NMI, rendering and DMC IRQs. Note that
- ;; `x` was set to $ff, so increasing it by one results in a zero, which is
- ;; the value then stored in the aforementioned memory locations.
inx
- stx PPU::CONTROL
- stx PPU::MASK
- stx APU::DMC
-
- ;;;
- ;; NOTE: If you are using a mapper which needs some special configuration,
- ;; now it would be a good time set it up. I am not using a special mapper,
- ;; so there's nothing from me to do here.
- ;;;
+ stx $2000
+ stx $2001
+ stx $4010
- ;; First of the two VBLANK waits.
@vblankwait1:
- bit PPU::STATUS
+ bit $2002
bpl @vblankwait1
- ;; Clear RAM memory. Notice that we are not clearing $200-$2ff, this is done
- ;; later.
ldx #0
lda #0
@ram_reset_loop:
@@ -47,30 +33,17 @@ reset:
inx
bne @ram_reset_loop
- ;; Reset sprites by moving them off-screen.
lda #$ef
@sprite_reset_loop:
sta $200, x
inx
bne @sprite_reset_loop
- ;; Write "sprites" into OAM.
- OAM_WRITE_SPRITES
-
- ;; Last VBLANK wait.
@vblankwait2:
- bit PPU::STATUS
+ bit $2002
bpl @vblankwait2
- ;; Reset palettes.
- PPU_ADDR $3F00
-
- lda #$0F
- ldx #$20
-@palettes_reset_loop:
- sta PPU::DATA
- dex
- bne @palettes_reset_loop
+ ;;;
+ ;; NOTE: configuration/reset is done, the code below is our actual program :D
- ;; Jump into the main subroutine.
jmp main