First public commit.
This commit is contained in:
parent
2a48f52979
commit
4bac9d83ed
288 changed files with 18417 additions and 1076 deletions
77
lenser/nes/viewer.s
Normal file
77
lenser/nes/viewer.s
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
; NES background image viewer (6502 / 2C02 PPU). NROM, 16K PRG at $C000.
|
||||
; Waits for PPU warm-up, loads the palette ($3F00, 32 bytes), nametable +
|
||||
; attribute table ($2000, 1024 bytes), enables background, then idles. The
|
||||
; image-specific data lives at fixed PRG addresses written by the builder-
|
||||
; $F000 32-byte palette $F020 1024-byte nametable + attributes
|
||||
; Tiles come from CHR-ROM pattern table 0.
|
||||
|
||||
* = $C000
|
||||
|
||||
PPUCTRL = $2000
|
||||
PPUMASK = $2001
|
||||
PPUSTATUS = $2002
|
||||
PPUSCROLL = $2005
|
||||
PPUADDR = $2006
|
||||
PPUDATA = $2007
|
||||
|
||||
start:
|
||||
sei
|
||||
cld
|
||||
ldx #$ff
|
||||
txs
|
||||
lda #$00
|
||||
sta PPUCTRL ; NMI off
|
||||
sta PPUMASK ; rendering off during setup
|
||||
|
||||
bit PPUSTATUS ; clear latch
|
||||
w1: bit PPUSTATUS
|
||||
bpl w1 ; wait for first vblank
|
||||
w2: bit PPUSTATUS
|
||||
bpl w2 ; wait for second vblank (PPU warmed up)
|
||||
|
||||
; ---- palette- $3F00..$3F1F from $F000 ----
|
||||
lda #$3f
|
||||
sta PPUADDR
|
||||
lda #$00
|
||||
sta PPUADDR
|
||||
ldx #$00
|
||||
pal: lda $f000,x
|
||||
sta PPUDATA
|
||||
inx
|
||||
cpx #$20
|
||||
bne pal
|
||||
|
||||
; ---- nametable + attributes- $2000..$23FF (1024) from $F020 ----
|
||||
lda #$20
|
||||
sta PPUADDR
|
||||
lda #$00
|
||||
sta PPUADDR
|
||||
ldx #$00
|
||||
nt0: lda $f020,x
|
||||
sta PPUDATA
|
||||
inx
|
||||
bne nt0
|
||||
nt1: lda $f120,x
|
||||
sta PPUDATA
|
||||
inx
|
||||
bne nt1
|
||||
nt2: lda $f220,x
|
||||
sta PPUDATA
|
||||
inx
|
||||
bne nt2
|
||||
nt3: lda $f320,x
|
||||
sta PPUDATA
|
||||
inx
|
||||
bne nt3
|
||||
|
||||
; ---- enable background ----
|
||||
lda #$00
|
||||
sta PPUSCROLL
|
||||
sta PPUSCROLL
|
||||
lda #$00
|
||||
sta PPUCTRL ; nametable $2000, bg pattern table $0000, NMI off
|
||||
lda #$0a
|
||||
sta PPUMASK ; show background, no left-column clip
|
||||
loop:
|
||||
jmp loop
|
||||
; the builder writes the $FFFA-$FFFF vectors (all -> start = $C000)
|
||||
Loading…
Add table
Add a link
Reference in a new issue