1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-11-26 10:49:17 +00:00

nes: update presets

This commit is contained in:
Steven Hugg 2019-07-29 16:52:44 -04:00
parent a050588422
commit b4872d0bec

View File

@ -26,6 +26,8 @@ ZOfs .byte ; counter to draw striped center line
Weather .byte ; bitmask for weather Weather .byte ; bitmask for weather
Heading .word ; sky scroll pos. Heading .word ; sky scroll pos.
NMITmp .byte
NumRoadScanlines = 112 NumRoadScanlines = 112
NumRoadSegments = 56 NumRoadSegments = 56
; Preprocessing result: X positions for all track segments ; Preprocessing result: X positions for all track segments
@ -285,7 +287,7 @@ SetSprite0: subroutine
sta $201 sta $201
lda #$20 ;flags lda #$20 ;flags
sta $202 sta $202
lda #$fe ;xpos lda #$f0 ;xpos
sta $203 sta $203
rts rts
@ -346,11 +348,18 @@ NMIHandler: subroutine
bvs .wait0 ; until bit 6 set bvs .wait0 ; until bit 6 set
.wait1 bit PPU_STATUS .wait1 bit PPU_STATUS
bvc .wait1 ; until bit 6 clear bvc .wait1 ; until bit 6 clear
; alter horiz. scroll position for each scanline ; start scanline loop
ldy #0 ldy #0 ; scanline counter
lda #3
sta NMITmp ; count every 3 lines
.loop .loop
; pad out rest of scanline ; take back 1 cycle every 3rd line
SLEEP 80 dec NMITmp ; decrement 3-line counter
beq .resetx ; has it been 3 lines?
; pad out rest of the scanline
SLEEP 10
.skipcyc
SLEEP 70
; change scroll register ; change scroll register
tya ; Y -> A tya ; Y -> A
lsr ; A / 2 lsr ; A / 2
@ -359,18 +368,20 @@ NMIHandler: subroutine
eor #$80 ; + 128 eor #$80 ; + 128
sta PPU_SCROLL ; horiz byte sta PPU_SCROLL ; horiz byte
sta PPU_SCROLL ; vert byte (ignored) sta PPU_SCROLL ; vert byte (ignored)
; take back 1 cycle every 4th line
tya ; Y -> A
and #3 ; mask first 2 bits
bne .skipcyc ; -1 cycle every 4 lines
.skipcyc
; next loop iteration ; next loop iteration
iny iny
cpy #NumRoadScanlines cpy #NumRoadScanlines
bne .loop ; do next scanline bcc .loop ; do next scanline
; restore registers and return from interrupt ; restore registers and return from interrupt
RESTORE_REGS RESTORE_REGS
rti rti
; this resets the 3-line counter
; and returns to a different loop entry point
; since we wasted 8 cycles doing this
.resetx
lda #3
sta NMITmp ; reset 3-line counter
bne .skipcyc ; go back to loop
;;;;; CONSTANT DATA ;;;;; CONSTANT DATA