Someone else said : "My code is very fishy!" :

****************************************************

Here is my warm up routine :

Code: Select all

```
LDX #$04 ; 4 Times vblank period will come and go
warmup_loop: ; Do loop until vblank starts
BIT $2002 ; It is not vblank period / 7th bit of $2002 is 0 / BIT, Clear the negative sign
BPL warmup_loop ; The result is Plus / BPL, Continue the loop!
; Vblank period has just started / 7th bit of $2002 is 1 / BIT, Set the negative sign / The result is Negative / BPL, Don't continue the loop!
vbend_loop: ; Do loop until current vblank ends
BIT $2002 ; It is vblank period / 7th bit of $2002 is 1 / BIT, Set the negative sign
BMI vbend_loop ; The result is Negative / BMI, Continue the loop!
; Vblank period has just ended / 7th bit of $2002 is 0 / BIT, Clear the negative sign / The result is Plus / BMI, Don't continue the loop!
DEX
BNE warmup_loop
```

Here is my vblank wait routine :

Code: Select all

```
vblank_wait: ; Do loop until current vblank ends
BIT $2002 ; It is vblank period by sheer chance! / 7th bit of $2002 is 1 / BIT, Set the negative sign
BMI vblank_wait ; The result is Negative / BMI, Continue the loop!
; Vblank period has just ended / 7th bit of $2002 is 0 / BIT, Clear the negative sign / The result is Plus / BMI, Don't continue the loop!
vbstart_loop: ; Do loop until a new vblank starts
BIT $2002 ; It is not vblank period / 7th bit of $2002 is 0 / BIT, Clear the negative sign
BPL vbstart_loop ; The result is Plus / BPL, Continue the loop!
; Vblank period has just started / 7th bit of $2002 is 1 / BIT, Set the negative sign / The result is Negative / BPL, Don't continue the loop!
RTS ; Now the screen can be updated!
```

So, is it really fishy?! Or will I miss any frame?!