I'm writing a code that "slide In" the screen from left to right column by column as you can see in this gif:
That's works ok when I try to draw until the 16th row, but if I try to draw all 30 rows I got this:
Probably because my code is too slow... I'm updating a column every tot seconds until the 32.
Code: Select all
FadeInBackground:
lda #$01
cmp FADE_STATE
beq .CanFade
jmp .Exit
.CanFade:
MACRO_INC TIMER_FADE_TICKS, #$01
lda TIMER_FADE_TICKS
cmp #$02
beq .FadeTile
jmp .Exit
.FadeTile:
lda #$20
sta ADDR_HIGH_2
lda FADE_TILE_COUNT_LEFT
sta ADDR_LOW_2
lda #HIGH( TileTitleScreen )
sta ADDR_HIGH
lda #LOW( TileTitleScreen )
sta ADDR_LOW
MACRO_INC ADDR_LOW, FADE_TILE_COUNT_LEFT
.highloop:
ldy #$00 ;FADE_TILE_COUNT_LEFT
lda #$00
sta COUNT
.loop:
lda $2002
lda ADDR_HIGH_2
sta $2006
lda ADDR_LOW_2
sta $2006
lda [ ADDR_LOW ], y
sta $2007
;sta TILE
;MACRO_BackgroundTile ADDR_HIGH_2, ADDR_LOW_2, TILE
MACRO_INC ADDR_LOW_2, #$20
MACRO_INC COUNT, #$20 ;usare un dey
ldy COUNT
cpy #$00
bne .loop
MACRO_INC ADDR_HIGH_2, #$01
MACRO_INC ADDR_HIGH, #$01
lda ADDR_HIGH_2
cmp #$24
bne .highloop
lda #$00
sta TIMER_FADE_TICKS
MACRO_INC FADE_TILE_COUNT_LEFT, #$01
lda FADE_TILE_COUNT_LEFT
cmp #$20
bne .Exit
lda #$02
sta FADE_STATE
.Exit:
rts
Code: Select all
lda $2002
lda ADDR_HIGH_2
sta $2006
lda ADDR_LOW_2
sta $2006
lda [ ADDR_LOW ], y
sta $2007
Thanks a lot!