You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
260 lines
7.6 KiB
260 lines
7.6 KiB
;-----------------------------------------------------------------------------
|
|
;
|
|
; This file contains the output buffer color writing routines.
|
|
;
|
|
; Copyright (C) Microsoft Corporation, 1997.
|
|
;
|
|
; Need to change this from Segment asm method to be same as other files.
|
|
; This is the only file that is doing it this way.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
|
|
INCLUDE iammx.inc
|
|
INCLUDE offs_acp.inc
|
|
|
|
include(`m4hdr.mh')dnl
|
|
include(`cvars.mh')dnl
|
|
include(`bufwrite.mh')dnl
|
|
|
|
.586p
|
|
.model flat
|
|
.data
|
|
PUBLIC g_uDitherValue
|
|
g_uDitherValue dq ?
|
|
|
|
PUBLIC SetAlphato0x00
|
|
SetAlphato0x00 dq 0000000000ffffffh
|
|
PUBLIC SetAlphato0xff
|
|
SetAlphato0xff dq 00000000ff000000h
|
|
|
|
; 565 values. Too bad that there are 5 values. 4 values would fit into one cache line.
|
|
PUBLIC u888to565RedBlueMask
|
|
u888to565RedBlueMask dq 00f800f800f800f8h
|
|
|
|
PUBLIC u888to565GreenMask
|
|
u888to565GreenMask dq 0000fc000000fc00h
|
|
|
|
PUBLIC u888to565Multiplier
|
|
u888to565Multiplier dq 2000000420000004h
|
|
|
|
PUBLIC uVal0x000007ff03ff07ff
|
|
uVal0x000007ff03ff07ff dq 000007ff03ff07ffh ; Or mask to increase 565 color value
|
|
|
|
PUBLIC uVal0x0000078003c00780
|
|
uVal0x0000078003c00780 dq 0000078003c00780h ; Bits to test for dithering in 565
|
|
|
|
; 555 values
|
|
PUBLIC u888to555RedBlueMask
|
|
u888to555RedBlueMask dq 00f800f800f800f8h
|
|
|
|
PUBLIC u888to555GreenMask
|
|
u888to555GreenMask dq 0000f8000000f800h
|
|
|
|
PUBLIC u888to555Multiplier
|
|
u888to555Multiplier dq 2000000820000008h
|
|
|
|
PUBLIC uVal0x000007ff07ff07ff
|
|
uVal0x000007ff07ff07ff dq 000007ff07ff07ffh ; Or mask to increase 555 color value
|
|
|
|
PUBLIC uVal0x0000078007800780
|
|
uVal0x0000078007800780 dq 0000078007800780h ; Bits to test for dithering in 555
|
|
|
|
|
|
Val0x008000800080 dq 0000008000800080h
|
|
Val0x002400060001 dq 0000002400060001h
|
|
Val0x000500050005 dq 0000000500050005h
|
|
|
|
.code
|
|
|
|
; Names are read LSB to MSB, so B5G6R5 means five bits of blue starting
|
|
; at the LSB, then six bits of green, then five bits of red.
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B8G8R8X8_NoDither
|
|
;
|
|
; Writes output in BGR-888 format.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B8G8R8X8_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B8G8R8X8_NoDither
|
|
_MMX_BufWrite_B8G8R8X8_NoDither:
|
|
|
|
d_BufWrite_B8G8R8X8_NoDither(NotMonolithic)
|
|
|
|
;; just returns for C, since we really cant loop with function calls
|
|
;ret
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B8G8R8A8_NoDither
|
|
;
|
|
; Writes output in BGRA-8888 format.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B8G8R8A8_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B8G8R8A8_NoDither
|
|
_MMX_BufWrite_B8G8R8A8_NoDither:
|
|
|
|
d_BufWrite_B8G8R8A8_NoDither(NotMonolithic)
|
|
|
|
; just returns for C, since we really cant loop with function calls
|
|
;ret
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B5G6R5_NoDither
|
|
;
|
|
; Writes output in BGR-565 format.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B5G6R5_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B5G6R5_NoDither
|
|
_MMX_BufWrite_B5G6R5_NoDither:
|
|
|
|
d_BufWrite_B5G6R5_NoDither(NotMonolithic)
|
|
|
|
; just returns for C, since we really cant loop with function calls
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B5G6R5_Dither
|
|
;
|
|
; Writes output in BGR-565 format, dithered.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B5G6R5_Dither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B5G6R5_Dither
|
|
_MMX_BufWrite_B5G6R5_Dither:
|
|
|
|
|
|
d_BufWrite_B5G6R5_Dither(NotMonolithic)
|
|
|
|
; just returns for C, since we really cant loop with function calls
|
|
;ret
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
|
|
;}
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B5G5R5_NoDither
|
|
;
|
|
; Writes output in BGR-555 format.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B5G5R5_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B5G5R5_NoDither
|
|
_MMX_BufWrite_B5G5R5_NoDither:
|
|
|
|
d_BufWrite_B5G5R5_NoDither(NotMonolithic)
|
|
|
|
; just returns for C, since we really cant loop with function calls
|
|
;ret
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B5G5R5_Dither
|
|
;
|
|
; Writes output in BGR-555 format, dithered.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B5G5R5_Dither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B5G5R5_Dither
|
|
_MMX_BufWrite_B5G5R5_Dither:
|
|
|
|
d_BufWrite_B5G5R5_Dither(NotMonolithic)
|
|
|
|
; just returns for C, since we really cant loop with function calls
|
|
;ret
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B5G5R5A1_NoDither
|
|
;
|
|
; Writes output in BGRA-1555 format.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B5G5R5A1_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B5G5R5A1_NoDither
|
|
_MMX_BufWrite_B5G5R5A1_NoDither:
|
|
|
|
d_BufWrite_B5G5R5A1_NoDither(NotMonolithic)
|
|
|
|
; just returns for C, since we really cant loop with function calls
|
|
;ret
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B5G5R5A1_Dither
|
|
;
|
|
; Writes output in BGRA-1555 format, dithered.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B5G5R5A1_Dither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B5G5R5A1_Dither
|
|
_MMX_BufWrite_B5G5R5A1_Dither:
|
|
|
|
|
|
d_BufWrite_B5G5R5A1_Dither(NotMonolithic)
|
|
; just returns for C, since we really cant loop with function calls
|
|
;ret
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_B8G8R8_NoDither
|
|
;
|
|
; Writes output in BGR-888 format.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_B8G8R8_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_B8G8R8_NoDither
|
|
_MMX_BufWrite_B8G8R8_NoDither:
|
|
|
|
d_BufWrite_B8G8R8_NoDither(NotMonolithic)
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
;-----------------------------------------------------------------------------
|
|
;
|
|
; Write_Palette8_NoDither
|
|
;
|
|
; Writes output in Palette8 format.
|
|
;
|
|
;-----------------------------------------------------------------------------
|
|
;void Write_Palette8_NoDither(PD3DI_RASTCTX pCtx, PD3DI_RASTPRIM pP, PD3DI_RASTSPAN pS)
|
|
;{
|
|
PUBLIC _MMX_BufWrite_Palette8_NoDither
|
|
_MMX_BufWrite_Palette8_NoDither:
|
|
|
|
d_BufWrite_Palette8_Dither(NotMonolithic)
|
|
|
|
jmp dword ptr XpCtx(pfnPixelEnd)
|
|
;}
|
|
|
|
END
|