I have just registered to this bbs, but I've been tracing topics here for a very long time. I decided to register, because of a little problem with writing data to PPU. I need to write them during VBlank and all would seem ok, if there isn't stupid behaviour of PPU or rather my "unknowledge".
Code: Select all
;-- CODE START --;
.inesmir 0 ;- don't care about mirroring
.inesmap 0 ;- Mapper 2!!!
.inesprg 1 ;- This might be 2 (I think NESASM.EXE goes by 8kb PRGs, so therefore the 4)
.ineschr 1
.bank 1 ; should be the last bank
.org $FFFA
.dw NMI
.dw $8000
.dw 0
.bank 0 ; first bank loaded at $8000
.org $8000
SEI ; disable IRQs
CLD ; disable decimal mode
LDX #$40
STX $4017 ; disable APU frame IRQ
LDX #$FF
TXS ; Set up stack
INX ; now X = 0
STX $2000 ; disable NMI
STX $2001 ; disable rendering
STX $4010 ; disable DMC IRQs
vblankwait1: ; First wait for vblank to make sure PPU is ready
BIT $2002
BPL vblankwait1
clrmem:
LDA #$00
STA $0000, x
STA $0100, x
STA $0200, x
STA $0400, x
STA $0500, x
STA $0600, x
STA $0700, x
LDA #$FE
STA $0300, x
INX
BNE clrmem
ldx #00
vblankwait2: ; Second wait for vblank, PPU is ready after this
BIT $2002
BPL vblankwait2
lda #%10001000
sta $2000
lda #%00011000
sta $2001
lda #$3F
sta $11
lda #$00
sta $12
lda #$41
sta $13
lda #1
sta $14
czekajtu:
lda $14
cmp #00
bne czekajtu
jsr lwait
jsr lwait
jsr lwait
jsr lwait
jsr lwait
jsr lwait
jsr lwait
;pauza: jmp pauza
lda #$3F
sta $11
lda #0
sta $12
lda #$0D
sta $13
lda #1
sta $14
czekajtu2:
lda $14
cmp #00
bne czekajtu2
LDX #$00
STX $0003
LoadBackground:
lda #$20
sta $11
ldx $03
stx $12
lda #$1
sta $13
lda #1
sta $14
czekajtu3:
lda $14
cmp #00
bne czekajtu3
ldx $03
inx
stx $03
cpx #$FF
bne LoadBackground
label:
jmp label
NMI:
pha
txa
pha
tya
pha
lda $2002
lda #0
sta $2000
lda #%10000000
sta $2000
lda $14
cmp #00
beq brakgfx
lda $11
sta $2006
lda $12
sta $2006
lda $13
sta $2007
lda #0
sta $14
brakgfx:
pla
tay
pla
tax
pla
rti
longwait:
ldy #$FF
lwait:
jsr pleasewait
dey
cpy #00
bne lwait
rts
pleasewait:
ldx #$FF
wait:
dex
cpx #00
bne wait
rts
.bank 2
.org $0000
.incbin "our.spr"
;-- CODE END --;
Thank you