X-Git-Url: http://git.joshuawise.com/fpgaboy.git/blobdiff_plain/4d90f272baf43caf90927ca7e893518d526649e5..80ecd2fe23cfab4f410f8f760dea4b44d72a82c9:/diag.asm diff --git a/diag.asm b/diag.asm index bc164a0..50cefe7 100644 --- a/diag.asm +++ b/diag.asm @@ -52,10 +52,7 @@ signon: putscreen: ; Wait for vblank -;.stat: ld a, [$FF41] ; STAT -; and $03 ; mode -; cp $01 ; VBLANK -;' jp nz, .stat + call .vblwait ld hl, $8000 ; Copy two tiles. ld a, $AA @@ -101,13 +98,30 @@ putscreen: ld [hli], a ld hl, $9800 +.vloop: call .vblwait + ld c, $40 .loop: ld a, $01 ld [hli], a xor a ld [hli], a ld a, h cp $9C - jp nz,.loop + ret z + dec c + xor a + cp c + jr nz,.loop + jr .vloop + +.vblwait: +.stat1: ld a, [$FF41] ; STAT + and $03 + cp $00 + jp nz, .stat1 +.stat2: ld a, [$FF41] + and $03 + cp $01 + jr nz, .stat2 ret vbl: @@ -119,16 +133,34 @@ vbl: xor a ld [$FF0F], a - ld c, $42 ; SCY - ld a, [c] - inc a - ld [c], a + ld a, [$FF51] + ld b, a + and $80 + cp $80 + jr nz, .nothing + ld c, $0 + + ld a, b + and $1 + cp c + call nz, .scyup - ld c, $43 ; SCX - ld a, [c] - inc a - ld [c], a + ld a, b + and $2 + cp c + call nz, .scydown + + ld a, b + and $4 + cp c + call nz, .scxup + + ld a, b + and $8 + cp c + call nz, .scxdown +.nothing: POP HL POP DE POP BC @@ -136,6 +168,23 @@ vbl: RETI +.scyup: ld hl, $FF42 + inc [hl] + ret + +.scydown: ld hl, $FF42 + dec [hl] + ret + +.scxup: ld hl, $FF43 + inc [hl] + ret + +.scxdown: ld hl, $FF43 + dec [hl] + ret + + lcdc: PUSH AF PUSH BC