diff options
author | yenatch <yenatch@gmail.com> | 2013-09-09 22:44:48 -0400 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2013-09-09 22:44:48 -0400 |
commit | 84a9b3907b9db08ee38e873554d8a6b4ac1b72b4 (patch) | |
tree | e804b9ed15832481d632904f42355743d9232515 /home/lcd.asm | |
parent | 6439706943b53ad756d481dea683fa8ee97f4981 (diff) |
rename common/ to home/
Diffstat (limited to 'home/lcd.asm')
-rw-r--r-- | home/lcd.asm | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/home/lcd.asm b/home/lcd.asm new file mode 100644 index 000000000..9c86eaa5c --- /dev/null +++ b/home/lcd.asm @@ -0,0 +1,81 @@ +; LCD handling + + +Function547: ; 547 + ld a, [hLCDStatCustom] + cp rSCX & $ff + ret nz + ld c, a + ld a, [LYOverrides] + ld [$ff00+c], a + ret +; 552 + + +LCD: ; 552 + push af + ld a, [hLCDStatCustom] + and a + jr z, .done + +; At this point it's assumed we're in WRAM bank 5! + push bc + ld a, [rLY] + ld c, a + ld b, LYOverrides >> 8 + ld a, [bc] + ld b, a + ld a, [hLCDStatCustom] + ld c, a + ld a, b + ld [$ff00+c], a + pop bc + +.done + pop af + reti +; 568 + + +DisableLCD: ; 568 +; Turn the LCD off + +; Don't need to do anything if the LCD is already off + ld a, [rLCDC] + bit 7, a ; lcd enable + ret z + + xor a + ld [rIF], a + ld a, [rIE] + ld b, a + +; Disable VBlank + res 0, a ; vblank + ld [rIE], a + +.wait +; Wait until VBlank would normally happen + ld a, [rLY] + cp 145 + jr nz, .wait + + ld a, [rLCDC] + and %01111111 ; lcd enable off + ld [rLCDC], a + + xor a + ld [rIF], a + ld a, b + ld [rIE], a + ret +; 58a + + +EnableLCD: ; 58a + ld a, [rLCDC] + set 7, a ; lcd enable + ld [rLCDC], a + ret +; 591 + |