aFadeOut PROC
;==============================================================================
	push bp
	mov bp, sp
	push es
	push di
	push ds
	push si
	
	mov di, [bp + 08]		;Parameter: Video offset
	mov es, [bp + 06]		;Parameter: Video segment
	mov ds, [bp + 06]
	mov si, di
	
	mov	bx, offset lupFadeOutLo
	mov dx, offset lupFadeOutHi
	mov cx, 3840
fadeOutLoop:
	lodsb					;Load byte from video memory
	inc si
	mov ah, al				
	and al, 00Fh			;Mask AL for lookup value 0-15	
	xlat
	xchg bx, dx
	xchg ah, al				;Shift hi-nybble of byte for
	shr al, 1				;lookup value 0-15
	shr al, 1
	shr al, 1
	shr al, 1
	xlat
	xchg bx, dx
	or al, ah				;Combine nybbles and store back.
	stosb
loop fadeOutLoop

	pop si
	pop ds
	pop di
	pop es
	pop bp
	retf 4

;==============================================================================
aFadeOut ENDP
aSetHudRows PROC
	;Set hud row count
	;Used by aPageFlip
	push bp
	mov bp, sp
	mov ax, [bp + 6]
	shl ax, 1
	shl ax, 1
	shl ax, 1
	shl ax, 1
	mov gfxHudRows, al
	pop bp
	retf 2
aSetHudRows ENDP
aUnPackLevelRLE PROC
	push	bp
	push	es
	push	di
	mov		bp, sp
	mov		ax, [bp + 6]	
	xor		cx, cx
	xor		dx, dx
	mov		dl, ah
	mov		cl,	ah
	xor		ah, ah	
	mov		es, gfxTileSeg
	mov		di, gfxTileMap
	add		di, [bp + 8]
	
	xor		bx, bx
	mov		bh, cl
	shl		bh, 1
	adc		bl, bl
	
loopRLE:
	stosb
	add		al, bl
	loop	loopRLE
	
	mov		ax, dx
	pop		di
	pop		es
	pop		bp
	retf	4	
aUnPackLevelRLE ENDP

lupFadeOutLo	db	00, 00, 08, 08, 01, 01, 08, 09, 01, 08, 07, 14, 06, 09, 07, 14
		lupFadeOutHi	db	00, 00, 128, 128, 16, 16, 128, 144, 16, 128, 112, 224, 96, 144, 112, 224
