nes-password-rom/view.asm

115 lines
2.1 KiB
NASM

MAC MOVE_TO_NEXT_CHUNK
lda #1
bit CurrentPasswordChunk
bne .NextLine
lda #0
sta PPU_DATA
beq .NextChunk
.NextLine:
txa
pha
lda #0
ldx #19
.NextLineLoop:
sta PPU_DATA
dex
cpx #0
bne .NextLineLoop
pla
tax
.NextChunk:
inc CurrentPasswordChunk
ENDM
WritePassword: subroutine
lda #0
sta CurrentPasswordChunk
jsr GetCurrentLetterPosition
tax
ldy #0
.WriteLetterInChunk:
tya
pha
lda Passwords,x
sta PPU_DATA
pla
tay
cpy #5
beq .ChunkDone
inx
iny
bne .WriteLetterInChunk
.ChunkDone:
MOVE_TO_NEXT_CHUNK
lda #4
ldy #0
inx
cmp CurrentPasswordChunk
bne .WriteLetterInChunk
rts
WriteAlternateDecodedPassword: subroutine
lda #0
sta CurrentPasswordChunk
ldx #0
ldy #0
.WriteLetterInChunk
tya
pha
lda AlternatePassword,x
tay
lda Letters,y
sta PPU_DATA
pla
tay
cpy #5
beq .ChunkDone
inx
iny
bne .WriteLetterInChunk
.ChunkDone
MOVE_TO_NEXT_CHUNK
lda #4
ldy #0
inx
cmp CurrentPasswordChunk
bne .WriteLetterInChunk
rts
DrawBamboo: subroutine
lda #$80
sta BambooRenderPos
.WriteColumn:
lda BambooRenderPos
sta PPU_DATA
inc BambooRenderPos
lda #%00000111
and BambooRenderPos
bne .WriteColumn
.MaybeNextRow
lda #%11111110
and BambooRenderPos
beq .Done
ldy #8
lda #0
.ToNextRow
sta PPU_DATA
dey
cpy #0
bne .ToNextRow
bcs .WriteColumn
.Done
rts
; set palette colors
SetPalette: subroutine
; set PPU address to palette start
PPU_SETADDR $3f00
ldy #0
.loop:
lda Palette,y ; lookup byte in ROM
sta PPU_DATA ; store byte to PPU data
iny ; Y = Y + 1
cpy #32 ; is Y equal to 32?
bne .loop ; not yet, loop
rts ; return to caller