lcd_busy: push af inc hl dec hl pop af ret set_mode7: push af ld a,7 call lcd_busy out ($10),a pop af ret check_vertSplit: ;17D9 bit vertSplit,(iy+flags) ret check_split: ;16f0 bit grfSpliltOverride,(iy+sGrFlags) jr z,_ cp a ret bit grfSplit,(iy+sGrFlags) ret grbufcpy: ld hl,$9340 set plotDisp,(iy+plotFlags) ld b,$20 call check_split jr nz,_ ld a,(winBtm) ;ld a,(a7a6) add a,a add a,a add a,a ld b,a _ bit 0,(iy+plotFlags) jr z,done bit 3,(iy+plotFlags) jr z,done ld a,b sub 7 bit vertSplit,(iy+sGrFlags) jr z,done-1 sub 7 ld b,a done: call do_lcd_copy res 6,(iy+29) ei call check_vertSplit jr z,_ push de call 31e6 ld b,$2f set plotLoc,(iy+plotFlags) call $401b res plotLoc,(iy+plotFlags) call 31ec pop de ret _ call check_split ret z push de ld bc,0 ld de,$5e00 call $4025 pop de ret do_lcd_copy: di ld a,7 call lcd_busy out ($10),a ld a,$7f row_loop: push bc inc a ld (curxRow),a call set_mode7 call lcd_busy out ($10),a ld a,$20 call lcd_busy out ($10),a ld b,12 call check_vertSplit jr z,col_loop ld b,5 col_loop: ld a,(hl) inc hl call lcd_busy out ($11),a djnz col_loop call check_vertSplit jr z,_ ld a,(hl) or 1 call lcd_busy out ($11),a ld bc,7 add hl,bc _ pop bc ld a,(curXRow) djnz row_loop ld a,5 call lcd_busy out ($10),a ret