diff options
author | Bryan Bishop <kanzure@gmail.com> | 2013-08-30 13:06:57 -0700 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2013-08-30 13:06:57 -0700 |
commit | 9152664ca51e2c870ed89ba3c81473847c1705db (patch) | |
tree | 243498feeaaa2a3726e8de489d4da0b8202ae95e /engine/lcd.asm | |
parent | 3e5b09b9416c0f734298e156bc4afb8db1d2140b (diff) | |
parent | b86d0da040448f286aa65ff5b2bacb05fff200a8 (diff) |
Merge pull request #177 from yenatch/split-main
split out a bunch of bank 0 from main.asm
Diffstat (limited to 'engine/lcd.asm')
-rw-r--r-- | engine/lcd.asm | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/engine/lcd.asm b/engine/lcd.asm new file mode 100644 index 000000000..9c86eaa5c --- /dev/null +++ b/engine/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 + |