diff options
author | Bryan Bishop <kanzure@gmail.com> | 2013-09-09 15:56:49 -0500 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2013-09-09 15:56:49 -0500 |
commit | 37e1aa4e8ec2400ba97db4c767bd3a9fcd43a1ac (patch) | |
tree | 68cb6273ed885d69512c4ba099298aad1534c6e4 /common/lcd.asm | |
parent | 35324ae43f845f4ce8346ef05fdf1bed8bed1e28 (diff) | |
parent | 705e6824687ed247a28cfbaedd47bf33bd1da32a (diff) |
Merge branch 'yenatch/split-predefs-specials-stds' into fix-split-predefs-specials-stds
https://github.com/kanzure/pokecrystal/pull/198
Diffstat (limited to 'common/lcd.asm')
-rw-r--r-- | common/lcd.asm | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/common/lcd.asm b/common/lcd.asm new file mode 100644 index 000000000..9c86eaa5c --- /dev/null +++ b/common/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 + |