ref: 11dc805de0118e8276936ad12a0222e88adbe336
dir: /home/lcd.asm/
; LCD handling Function547:: ; unreferenced ldh a, [hLCDCPointer] cp LOW(rSCX) ret nz ld c, a ld a, [wLYOverrides] ldh [c], a ret LCD:: push af ldh a, [hLCDCPointer] and a jr z, .done ; At this point it's assumed we're in BANK(wLYOverrides)! push bc ldh a, [rLY] ld c, a ld b, HIGH(wLYOverrides) ld a, [bc] ld b, a ldh a, [hLCDCPointer] ld c, a ld a, b ldh [c], a pop bc .done pop af reti DisableLCD:: ; Turn the LCD off ; Don't need to do anything if the LCD is already off ldh a, [rLCDC] bit rLCDC_ENABLE, a ret z xor a ldh [rIF], a ldh a, [rIE] ld b, a ; Disable VBlank res VBLANK, a ldh [rIE], a .wait ; Wait until VBlank would normally happen ldh a, [rLY] cp LY_VBLANK + 1 jr nz, .wait ldh a, [rLCDC] and $ff ^ (1 << rLCDC_ENABLE) ldh [rLCDC], a xor a ldh [rIF], a ld a, b ldh [rIE], a ret EnableLCD:: ldh a, [rLCDC] set rLCDC_ENABLE, a ldh [rLCDC], a ret