mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-11-13 07:57:51 +00:00
- Added assembly versions of rt_add4cols and rt_addclamp4cols.
SVN r773 (trunk)
This commit is contained in:
parent
9cb674c60c
commit
db5938d22a
5 changed files with 342 additions and 149 deletions
|
@ -1,3 +1,6 @@
|
||||||
|
February 27, 2008
|
||||||
|
- Added assembly versions of rt_add4cols and rt_addclamp4cols.
|
||||||
|
|
||||||
February 26, 2008
|
February 26, 2008
|
||||||
- Added an assembly version of rt_shaded4cols, since that's the main decal
|
- Added an assembly version of rt_shaded4cols, since that's the main decal
|
||||||
drawing function. The most improvement came from being able to turn some
|
drawing function. The most improvement came from being able to turn some
|
||||||
|
|
|
@ -81,6 +81,8 @@ extern "C" void STACK_ARGS DoubleHoriz_MMX (int height, int width, BYTE *dest, i
|
||||||
extern "C" void STACK_ARGS DoubleHorizVert_MMX (int height, int width, BYTE *dest, int pitch);
|
extern "C" void STACK_ARGS DoubleHorizVert_MMX (int height, int width, BYTE *dest, int pitch);
|
||||||
extern "C" void STACK_ARGS DoubleVert_ASM (int height, int width, BYTE *dest, int pitch);
|
extern "C" void STACK_ARGS DoubleVert_ASM (int height, int width, BYTE *dest, int pitch);
|
||||||
extern "C" void R_SetupShadedCol();
|
extern "C" void R_SetupShadedCol();
|
||||||
|
extern "C" void R_SetupAddCol();
|
||||||
|
extern "C" void R_SetupAddClampCol();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// [RH] Pointers to the different column drawers.
|
// [RH] Pointers to the different column drawers.
|
||||||
|
@ -2271,7 +2273,9 @@ ESPSResult R_SetPatchStyle (FRenderStyle style, fixed_t alpha, int translation,
|
||||||
{
|
{
|
||||||
dc_colormap += fixedlightlev;
|
dc_colormap += fixedlightlev;
|
||||||
}
|
}
|
||||||
|
#ifdef USEASM
|
||||||
R_SetupShadedCol();
|
R_SetupShadedCol();
|
||||||
|
#endif
|
||||||
return r_columnmethod ? DoDraw1 : DoDraw0;
|
return r_columnmethod ? DoDraw1 : DoDraw0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2299,8 +2303,21 @@ ESPSResult R_SetPatchStyle (FRenderStyle style, fixed_t alpha, int translation,
|
||||||
dc_colormap = identitymap;
|
dc_colormap = identitymap;
|
||||||
}
|
}
|
||||||
|
|
||||||
return R_SetBlendFunc (style.BlendOp, fglevel, bglevel, style.Flags) ?
|
if (!R_SetBlendFunc (style.BlendOp, fglevel, bglevel, style.Flags))
|
||||||
(r_columnmethod ? DoDraw1 : DoDraw0) : DontDraw;
|
{
|
||||||
|
return DontDraw;
|
||||||
|
}
|
||||||
|
#ifdef USEASM
|
||||||
|
if (hcolfunc_post4 == rt_addclamp4cols || hcolfunc_post4 == rt_tlateaddclamp4cols)
|
||||||
|
{
|
||||||
|
R_SetupAddClampCol();
|
||||||
|
}
|
||||||
|
else if (hcolfunc_post4 == rt_add4cols || hcolfunc_post4 == rt_tlateadd4cols)
|
||||||
|
{
|
||||||
|
R_SetupAddCol();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return r_columnmethod ? DoDraw1 : DoDraw0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void R_FinishSetPatchStyle ()
|
void R_FinishSetPatchStyle ()
|
||||||
|
|
26
src/r_draw.h
26
src/r_draw.h
|
@ -128,8 +128,8 @@ void rt_tlatesubclamp1col (int hx, int sx, int yl, int yh);
|
||||||
void rt_tlaterevsubclamp1col (int hx, int sx, int yl, int yh);
|
void rt_tlaterevsubclamp1col (int hx, int sx, int yl, int yh);
|
||||||
|
|
||||||
void STACK_ARGS rt_map4cols_c (int sx, int yl, int yh);
|
void STACK_ARGS rt_map4cols_c (int sx, int yl, int yh);
|
||||||
void STACK_ARGS rt_add4cols (int sx, int yl, int yh);
|
void STACK_ARGS rt_add4cols_c (int sx, int yl, int yh);
|
||||||
void STACK_ARGS rt_addclamp4cols (int sx, int yl, int yh);
|
void STACK_ARGS rt_addclamp4cols_c (int sx, int yl, int yh);
|
||||||
void STACK_ARGS rt_subclamp4cols (int sx, int yl, int yh);
|
void STACK_ARGS rt_subclamp4cols (int sx, int yl, int yh);
|
||||||
void STACK_ARGS rt_revsubclamp4cols (int sx, int yl, int yh);
|
void STACK_ARGS rt_revsubclamp4cols (int sx, int yl, int yh);
|
||||||
|
|
||||||
|
@ -145,20 +145,26 @@ void rt_map1col_asm (int hx, int sx, int yl, int yh);
|
||||||
void STACK_ARGS rt_copy4cols_asm (int sx, int yl, int yh);
|
void STACK_ARGS rt_copy4cols_asm (int sx, int yl, int yh);
|
||||||
void STACK_ARGS rt_map4cols_asm1 (int sx, int yl, int yh);
|
void STACK_ARGS rt_map4cols_asm1 (int sx, int yl, int yh);
|
||||||
void STACK_ARGS rt_map4cols_asm2 (int sx, int yl, int yh);
|
void STACK_ARGS rt_map4cols_asm2 (int sx, int yl, int yh);
|
||||||
|
void STACK_ARGS rt_add4cols_asm (int sx, int yl, int yh);
|
||||||
|
void STACK_ARGS rt_addclamp4cols_asm (int sx, int yl, int yh);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void (STACK_ARGS *rt_map4cols)(int sx, int yl, int yh);
|
extern void (STACK_ARGS *rt_map4cols)(int sx, int yl, int yh);
|
||||||
|
|
||||||
#ifdef USEASM
|
#ifdef USEASM
|
||||||
#define rt_copy1col rt_copy1col_asm
|
#define rt_copy1col rt_copy1col_asm
|
||||||
#define rt_copy4cols rt_copy4cols_asm
|
#define rt_copy4cols rt_copy4cols_asm
|
||||||
#define rt_map1col rt_map1col_asm
|
#define rt_map1col rt_map1col_asm
|
||||||
#define rt_shaded4cols rt_shaded4cols_asm
|
#define rt_shaded4cols rt_shaded4cols_asm
|
||||||
|
#define rt_add4cols rt_add4cols_asm
|
||||||
|
#define rt_addclamp4cols rt_addclamp4cols_asm
|
||||||
#else
|
#else
|
||||||
#define rt_copy1col rt_copy1col_c
|
#define rt_copy1col rt_copy1col_c
|
||||||
#define rt_copy4cols rt_copy4cols_c
|
#define rt_copy4cols rt_copy4cols_c
|
||||||
#define rt_map1col rt_map1col_c
|
#define rt_map1col rt_map1col_c
|
||||||
#define rt_shaded4cols rt_shaded4cols_c
|
#define rt_shaded4cols rt_shaded4cols_c
|
||||||
|
#define rt_add4cols rt_add4cols_c
|
||||||
|
#define rt_addclamp4cols rt_addclamp4cols_c
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void rt_draw4cols (int sx);
|
void rt_draw4cols (int sx);
|
||||||
|
|
|
@ -351,7 +351,7 @@ void rt_add1col (int hx, int sx, int yl, int yh)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds all four spans to the screen starting at sx without clamping.
|
// Adds all four spans to the screen starting at sx without clamping.
|
||||||
void STACK_ARGS rt_add4cols (int sx, int yl, int yh)
|
void STACK_ARGS rt_add4cols_c (int sx, int yl, int yh)
|
||||||
{
|
{
|
||||||
BYTE *colormap;
|
BYTE *colormap;
|
||||||
BYTE *source;
|
BYTE *source;
|
||||||
|
@ -472,7 +472,6 @@ void STACK_ARGS rt_shaded4cols_c (int sx, int yl, int yh)
|
||||||
source = &dc_temp[yl*4];
|
source = &dc_temp[yl*4];
|
||||||
pitch = dc_pitch;
|
pitch = dc_pitch;
|
||||||
|
|
||||||
// 107.1, 108.4, 118.2/117.7, 119.4
|
|
||||||
do {
|
do {
|
||||||
DWORD val;
|
DWORD val;
|
||||||
|
|
||||||
|
@ -497,47 +496,6 @@ void STACK_ARGS rt_shaded4cols_c (int sx, int yl, int yh)
|
||||||
} while (--count);
|
} while (--count);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
static DWORD t_fgstart[1];
|
|
||||||
static BYTE t_colormap[1];
|
|
||||||
|
|
||||||
void STACK_ARGS rt_shaded4cols_t (int sx, int yl, int yh)
|
|
||||||
{
|
|
||||||
BYTE *source;
|
|
||||||
BYTE *dest;
|
|
||||||
int count;
|
|
||||||
|
|
||||||
count = yh-yl;
|
|
||||||
if (count < 0)
|
|
||||||
return;
|
|
||||||
count++;
|
|
||||||
|
|
||||||
dest = ylookup[yl] + sx + dc_destorg;
|
|
||||||
source = &dc_temp[yl*4];
|
|
||||||
|
|
||||||
do {
|
|
||||||
DWORD val, val2;
|
|
||||||
|
|
||||||
val = t_colormap[source[0]];
|
|
||||||
val2 = t_colormap[source[1]];
|
|
||||||
val = (Col2RGB8[64-val][dest[0]] + t_fgstart[val<<8]) | 0x1f07c1f;
|
|
||||||
val2 = (Col2RGB8[64-val2][dest[1]] + t_fgstart[val2<<8]) | 0x1f07c1f;
|
|
||||||
dest[0] = RGB32k[0][0][val & (val>>15)];
|
|
||||||
dest[1] = RGB32k[0][0][val2 & (val2>>15)];
|
|
||||||
|
|
||||||
val = t_colormap[source[2]];
|
|
||||||
val2 = t_colormap[source[3]];
|
|
||||||
val = (Col2RGB8[64-val][dest[2]] + t_fgstart[val<<8]) | 0x1f07c1f;
|
|
||||||
val2 = (Col2RGB8[64-val2][dest[3]] + t_fgstart[val2<<8]) | 0x1f07c1f;
|
|
||||||
dest[2] = RGB32k[0][0][val & (val>>15)];
|
|
||||||
dest[3] = RGB32k[0][0][val2 & (val2>>15)];
|
|
||||||
|
|
||||||
source += 4;
|
|
||||||
dest += 320;
|
|
||||||
} while (--count);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Adds one span at hx to the screen at sx with clamping.
|
// Adds one span at hx to the screen at sx with clamping.
|
||||||
void rt_addclamp1col (int hx, int sx, int yl, int yh)
|
void rt_addclamp1col (int hx, int sx, int yl, int yh)
|
||||||
{
|
{
|
||||||
|
@ -575,7 +533,7 @@ void rt_addclamp1col (int hx, int sx, int yl, int yh)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds all four spans to the screen starting at sx with clamping.
|
// Adds all four spans to the screen starting at sx with clamping.
|
||||||
void STACK_ARGS rt_addclamp4cols (int sx, int yl, int yh)
|
void STACK_ARGS rt_addclamp4cols_c (int sx, int yl, int yh)
|
||||||
{
|
{
|
||||||
BYTE *colormap;
|
BYTE *colormap;
|
||||||
BYTE *source;
|
BYTE *source;
|
||||||
|
|
395
src/tmap.nas
395
src/tmap.nas
|
@ -42,7 +42,59 @@ BITS 32
|
||||||
; If you change this in r_draw.c, be sure to change it here, too!
|
; If you change this in r_draw.c, be sure to change it here, too!
|
||||||
FUZZTABLE equ 50
|
FUZZTABLE equ 50
|
||||||
|
|
||||||
%ifdef M_TARGET_LINUX
|
%ifndef M_TARGET_LINUX
|
||||||
|
|
||||||
|
%define ylookup _ylookup
|
||||||
|
%define centery _centery
|
||||||
|
%define fuzzpos _fuzzpos
|
||||||
|
%define fuzzoffset _fuzzoffset
|
||||||
|
%define NormalLight _NormalLight
|
||||||
|
%define realviewheight _realviewheight
|
||||||
|
%define fuzzviewheight _fuzzviewheight
|
||||||
|
%define CPU _CPU
|
||||||
|
|
||||||
|
%define dc_pitch _dc_pitch
|
||||||
|
%define dc_colormap _dc_colormap
|
||||||
|
%define dc_color _dc_color
|
||||||
|
%define dc_iscale _dc_iscale
|
||||||
|
%define dc_texturefrac _dc_texturefrac
|
||||||
|
%define dc_srcblend _dc_srcblend
|
||||||
|
%define dc_destblend _dc_destblend
|
||||||
|
%define dc_source _dc_source
|
||||||
|
%define dc_yl _dc_yl
|
||||||
|
%define dc_yh _dc_yh
|
||||||
|
%define dc_x _dc_x
|
||||||
|
%define dc_count _dc_count
|
||||||
|
%define dc_dest _dc_dest
|
||||||
|
%define dc_destorg _dc_destorg
|
||||||
|
|
||||||
|
%define Col2RGB8 _Col2RGB8
|
||||||
|
%define RGB32k _RGB32k
|
||||||
|
|
||||||
|
%define dc_ctspan _dc_ctspan
|
||||||
|
%define dc_temp _dc_temp
|
||||||
|
|
||||||
|
%define ds_xstep _ds_xstep
|
||||||
|
%define ds_ystep _ds_ystep
|
||||||
|
%define ds_colormap _ds_colormap
|
||||||
|
%define ds_source _ds_source
|
||||||
|
%define ds_x1 _ds_x1
|
||||||
|
%define ds_x2 _ds_x2
|
||||||
|
%define ds_xfrac _ds_xfrac
|
||||||
|
%define ds_yfrac _ds_yfrac
|
||||||
|
%define ds_y _ds_y
|
||||||
|
|
||||||
|
%define ds_cursource _ds_cursource
|
||||||
|
%define ds_curcolormap _ds_curcolormap
|
||||||
|
|
||||||
|
%define R_SetSpanSource_ASM _R_SetSpanSource_ASM
|
||||||
|
%define R_SetSpanSize_ASM _R_SetSpanSize_ASM
|
||||||
|
%define R_SetSpanColormap_ASM _R_SetSpanColormap_ASM
|
||||||
|
%define R_SetupShadedCol _R_SetupShadedCol
|
||||||
|
%define R_SetupAddCol _R_SetupAddCol
|
||||||
|
%define R_SetupAddClampCol _R_SetupAddClampCol
|
||||||
|
|
||||||
|
%endif
|
||||||
|
|
||||||
EXTERN ylookup
|
EXTERN ylookup
|
||||||
EXTERN centery
|
EXTERN centery
|
||||||
|
@ -58,6 +110,8 @@ EXTERN dc_colormap
|
||||||
EXTERN dc_color
|
EXTERN dc_color
|
||||||
EXTERN dc_iscale
|
EXTERN dc_iscale
|
||||||
EXTERN dc_texturefrac
|
EXTERN dc_texturefrac
|
||||||
|
EXTERN dc_srcblend
|
||||||
|
EXTERN dc_destblend
|
||||||
EXTERN dc_source
|
EXTERN dc_source
|
||||||
EXTERN dc_yl
|
EXTERN dc_yl
|
||||||
EXTERN dc_yh
|
EXTERN dc_yh
|
||||||
|
@ -85,98 +139,10 @@ EXTERN ds_y
|
||||||
GLOBAL ds_cursource
|
GLOBAL ds_cursource
|
||||||
GLOBAL ds_curcolormap
|
GLOBAL ds_curcolormap
|
||||||
|
|
||||||
%else
|
|
||||||
|
|
||||||
EXTERN _ylookup
|
|
||||||
EXTERN _centery
|
|
||||||
EXTERN _fuzzpos
|
|
||||||
EXTERN _fuzzoffset
|
|
||||||
EXTERN _NormalLight
|
|
||||||
EXTERN _realviewheight
|
|
||||||
EXTERN _fuzzviewheight
|
|
||||||
EXTERN _CPU
|
|
||||||
|
|
||||||
EXTERN _dc_pitch
|
|
||||||
EXTERN _dc_colormap
|
|
||||||
EXTERN _dc_color
|
|
||||||
EXTERN _dc_iscale
|
|
||||||
EXTERN _dc_texturefrac
|
|
||||||
EXTERN _dc_source
|
|
||||||
EXTERN _dc_yl
|
|
||||||
EXTERN _dc_yh
|
|
||||||
EXTERN _dc_x
|
|
||||||
EXTERN _dc_count
|
|
||||||
EXTERN _dc_dest
|
|
||||||
EXTERN _dc_destorg
|
|
||||||
|
|
||||||
EXTERN _dc_ctspan
|
|
||||||
EXTERN _dc_temp
|
|
||||||
|
|
||||||
EXTERN _Col2RGB8
|
|
||||||
EXTERN _RGB32k
|
|
||||||
|
|
||||||
EXTERN _ds_xstep
|
|
||||||
EXTERN _ds_ystep
|
|
||||||
EXTERN _ds_colormap
|
|
||||||
EXTERN _ds_source
|
|
||||||
EXTERN _ds_x1
|
|
||||||
EXTERN _ds_x2
|
|
||||||
EXTERN _ds_xfrac
|
|
||||||
EXTERN _ds_yfrac
|
|
||||||
EXTERN _ds_y
|
|
||||||
|
|
||||||
GLOBAL _ds_cursource
|
|
||||||
GLOBAL _ds_curcolormap
|
|
||||||
|
|
||||||
%define ylookup _ylookup
|
|
||||||
%define centery _centery
|
|
||||||
%define fuzzpos _fuzzpos
|
|
||||||
%define fuzzoffset _fuzzoffset
|
|
||||||
%define NormalLight _NormalLight
|
|
||||||
%define realviewheight _realviewheight
|
|
||||||
%define fuzzviewheight _fuzzviewheight
|
|
||||||
%define CPU _CPU
|
|
||||||
|
|
||||||
%define dc_pitch _dc_pitch
|
|
||||||
%define dc_colormap _dc_colormap
|
|
||||||
%define dc_color _dc_color
|
|
||||||
%define dc_iscale _dc_iscale
|
|
||||||
%define dc_texturefrac _dc_texturefrac
|
|
||||||
%define dc_source _dc_source
|
|
||||||
%define dc_yl _dc_yl
|
|
||||||
%define dc_yh _dc_yh
|
|
||||||
%define dc_x _dc_x
|
|
||||||
%define dc_count _dc_count
|
|
||||||
%define dc_dest _dc_dest
|
|
||||||
%define dc_destorg _dc_destorg
|
|
||||||
|
|
||||||
%define Col2RGB8 _Col2RGB8
|
|
||||||
%define RGB32k _RGB32k
|
|
||||||
|
|
||||||
%define dc_ctspan _dc_ctspan
|
|
||||||
%define dc_temp _dc_temp
|
|
||||||
|
|
||||||
%define ds_xstep _ds_xstep
|
|
||||||
%define ds_ystep _ds_ystep
|
|
||||||
%define ds_colormap _ds_colormap
|
|
||||||
%define ds_source _ds_source
|
|
||||||
%define ds_x1 _ds_x1
|
|
||||||
%define ds_x2 _ds_x2
|
|
||||||
%define ds_xfrac _ds_xfrac
|
|
||||||
%define ds_yfrac _ds_yfrac
|
|
||||||
%define ds_y _ds_y
|
|
||||||
|
|
||||||
%define R_SetSpanSource_ASM _R_SetSpanSource_ASM
|
|
||||||
%define R_SetSpanSize_ASM _R_SetSpanSize_ASM
|
|
||||||
%define R_SetSpanColormap_ASM _R_SetSpanColormap_ASM
|
|
||||||
|
|
||||||
%endif
|
|
||||||
|
|
||||||
_ds_cursource:
|
|
||||||
ds_cursource:
|
ds_cursource:
|
||||||
DD 0
|
DD 0
|
||||||
|
|
||||||
_ds_curcolormap:
|
|
||||||
ds_curcolormap:
|
ds_curcolormap:
|
||||||
DD 0
|
DD 0
|
||||||
|
|
||||||
|
@ -1577,18 +1543,206 @@ s4nil: pop ebp
|
||||||
|
|
||||||
align 16
|
align 16
|
||||||
|
|
||||||
|
GLOBAL rt_add4cols_asm
|
||||||
|
GLOBAL _rt_add4cols_asm
|
||||||
|
|
||||||
|
rt_add4cols_asm:
|
||||||
|
_rt_add4cols_asm:
|
||||||
|
mov ecx,[esp+8]
|
||||||
|
push edi
|
||||||
|
mov edi,[esp+16]
|
||||||
|
sub edi,ecx
|
||||||
|
js near a4nil
|
||||||
|
mov eax,[ylookup+ecx*4]
|
||||||
|
add eax,[dc_destorg]
|
||||||
|
push ebx
|
||||||
|
push esi
|
||||||
|
push ebp
|
||||||
|
inc edi
|
||||||
|
add eax,[esp+20]
|
||||||
|
lea esi,[dc_temp+ecx*4]
|
||||||
|
|
||||||
|
align 16
|
||||||
|
a4loop:
|
||||||
|
movzx ebx,byte [esi]
|
||||||
|
movzx edx,byte [esi+1]
|
||||||
|
movzx ecx,byte [eax]
|
||||||
|
movzx ebp,byte [eax+1]
|
||||||
|
a4cm1: movzx ebx,byte [SPACEFILLER4+ebx] ; colormap
|
||||||
|
a4cm2: movzx edx,byte [SPACEFILLER4+edx] ; colormap
|
||||||
|
a4bg1: mov ecx,[SPACEFILLER4+ecx*4] ; bg2rgb
|
||||||
|
a4bg2: mov ebp,[SPACEFILLER4+ebp*4] ; bg2rgb
|
||||||
|
a4fg1: add ecx,[SPACEFILLER4+ebx*4] ; fg2rgb
|
||||||
|
a4fg2: add ebp,[SPACEFILLER4+edx*4] ; fg2rgb
|
||||||
|
or ecx,0x01f07c1f
|
||||||
|
or ebp,0x01f07c1f
|
||||||
|
mov ebx,ecx
|
||||||
|
shr ecx,15
|
||||||
|
mov edx,ebp
|
||||||
|
shr ebp,15
|
||||||
|
and ecx,ebx
|
||||||
|
and ebp,edx
|
||||||
|
movzx ebx,byte [esi+2]
|
||||||
|
movzx edx,byte [esi+3]
|
||||||
|
mov cl,[RGB32k+ecx]
|
||||||
|
mov ch,[RGB32k+ebp]
|
||||||
|
mov [eax],cl
|
||||||
|
mov [eax+1],ch
|
||||||
|
|
||||||
|
movzx ecx,byte [eax+2]
|
||||||
|
movzx ebp,byte [eax+3]
|
||||||
|
a4cm3: movzx ebx,byte [SPACEFILLER4+ebx] ; colormap
|
||||||
|
a4cm4: movzx edx,byte [SPACEFILLER4+edx] ; colormap
|
||||||
|
a4bg3: mov ecx,[SPACEFILLER4+ecx*4] ; bg2rgb
|
||||||
|
a4bg4: mov ebp,[SPACEFILLER4+ebp*4] ; bg2rgb
|
||||||
|
a4fg3: add ecx,[SPACEFILLER4+ebx*4] ; fg2rgb
|
||||||
|
a4fg4: add ebp,[SPACEFILLER4+edx*4] ; fg2rgb
|
||||||
|
or ecx,0x01f07c1f
|
||||||
|
or ebp,0x01f07c1f
|
||||||
|
mov ebx,ecx
|
||||||
|
shr ecx,15
|
||||||
|
mov edx,ebp
|
||||||
|
shr ebp,15
|
||||||
|
and ebx,ecx
|
||||||
|
and edx,ebp
|
||||||
|
mov cl,[RGB32k+ebx]
|
||||||
|
mov ch,[RGB32k+edx]
|
||||||
|
mov [eax+2],cl
|
||||||
|
mov [eax+3],ch
|
||||||
|
|
||||||
|
add esi,4
|
||||||
|
a4p: add eax,320 ; pitch
|
||||||
|
sub edi,1
|
||||||
|
jne a4loop
|
||||||
|
pop ebp
|
||||||
|
pop esi
|
||||||
|
pop ebx
|
||||||
|
a4nil: pop edi
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 16
|
||||||
|
|
||||||
|
GLOBAL rt_addclamp4cols_asm
|
||||||
|
GLOBAL _rt_addclamp4cols_asm
|
||||||
|
|
||||||
|
rt_addclamp4cols_asm:
|
||||||
|
_rt_addclamp4cols_asm:
|
||||||
|
mov ecx,[esp+8]
|
||||||
|
push edi
|
||||||
|
mov edi,[esp+16]
|
||||||
|
sub edi,ecx
|
||||||
|
js near ac4nil
|
||||||
|
mov eax,[ylookup+ecx*4]
|
||||||
|
add eax,[dc_destorg]
|
||||||
|
push ebx
|
||||||
|
push esi
|
||||||
|
push ebp
|
||||||
|
inc edi
|
||||||
|
add eax,[esp+20]
|
||||||
|
lea esi,[dc_temp+ecx*4]
|
||||||
|
push edi
|
||||||
|
|
||||||
|
align 16
|
||||||
|
ac4loop:
|
||||||
|
movzx ebx,byte [esi]
|
||||||
|
movzx edx,byte [esi+1]
|
||||||
|
mov [esp],edi
|
||||||
|
ac4cm1: movzx ebx,byte [SPACEFILLER4+ebx] ; colormap
|
||||||
|
ac4cm2: movzx edx,byte [SPACEFILLER4+edx] ; colormap
|
||||||
|
ac4fg1: mov ebx,[SPACEFILLER4+ebx*4] ; fg2rgb
|
||||||
|
ac4fg2: mov edx,[SPACEFILLER4+edx*4] ; fg2rgb
|
||||||
|
movzx ecx,byte [eax]
|
||||||
|
movzx ebp,byte [eax+1]
|
||||||
|
ac4bg1: add ebx,[SPACEFILLER4+ecx*4] ; bg2rgb
|
||||||
|
ac4bg2: add edx,[SPACEFILLER4+ebp*4] ; bg2rgb
|
||||||
|
mov ecx,ebx
|
||||||
|
or ebx,0x01f07c1f
|
||||||
|
and ecx,0x40100400
|
||||||
|
and ebx,0x3fffffff
|
||||||
|
mov edi,ecx
|
||||||
|
shr ecx,5
|
||||||
|
mov ebp,edx
|
||||||
|
sub edi,ecx
|
||||||
|
or edx,0x01f07c1f
|
||||||
|
or ebx,edi
|
||||||
|
mov ecx,ebx
|
||||||
|
shr ebx,15
|
||||||
|
and ebp,0x40100400
|
||||||
|
and ebx,ecx
|
||||||
|
and edx,0x3fffffff
|
||||||
|
mov edi,ebp
|
||||||
|
shr ebp,5
|
||||||
|
mov cl,[RGB32k+ebx]
|
||||||
|
sub edi,ebp
|
||||||
|
mov [eax],cl
|
||||||
|
or edx,edi
|
||||||
|
mov ebp,edx
|
||||||
|
shr edx,15
|
||||||
|
movzx ebx,byte [esi+2]
|
||||||
|
and ebp,edx
|
||||||
|
movzx edx,byte [esi+3]
|
||||||
|
ac4cm3: movzx ebx,byte [SPACEFILLER4+ebx] ; colormap
|
||||||
|
mov cl,[RGB32k+ebp]
|
||||||
|
ac4cm4: movzx edx,byte [SPACEFILLER4+edx] ; colormap
|
||||||
|
mov [eax+1],cl
|
||||||
|
ac4fg3: mov ebx,[SPACEFILLER4+ebx*4] ; fg2rgb
|
||||||
|
ac4fg4: mov edx,[SPACEFILLER4+edx*4] ; fg2rgb
|
||||||
|
movzx ecx,byte [eax+2]
|
||||||
|
movzx ebp,byte [eax+3]
|
||||||
|
ac4bg3: add ebx,[SPACEFILLER4+ecx*4] ; bg2rgb
|
||||||
|
ac4bg4: add edx,[SPACEFILLER4+ebp*4] ; bg2rgb
|
||||||
|
mov ecx,ebx
|
||||||
|
or ebx,0x01f07c1f
|
||||||
|
and ecx,0x40100400
|
||||||
|
and ebx,0x3fffffff
|
||||||
|
mov edi,ecx
|
||||||
|
shr ecx,5
|
||||||
|
mov ebp,edx
|
||||||
|
sub edi,ecx
|
||||||
|
or edx,0x01f07c1f
|
||||||
|
or ebx,edi
|
||||||
|
mov ecx,ebx
|
||||||
|
shr ebx,15
|
||||||
|
and ebp,0x40100400
|
||||||
|
and ebx,ecx
|
||||||
|
and edx,0x3fffffff
|
||||||
|
mov edi,ebp
|
||||||
|
shr ebp,5
|
||||||
|
mov cl,[RGB32k+ebx]
|
||||||
|
sub edi,ebp
|
||||||
|
mov [eax+2],cl
|
||||||
|
or edx,edi
|
||||||
|
mov edi,[esp]
|
||||||
|
mov ebp,edx
|
||||||
|
shr edx,15
|
||||||
|
add esi,4
|
||||||
|
and edx,ebp
|
||||||
|
mov cl,[RGB32k+edx]
|
||||||
|
mov [eax+3],cl
|
||||||
|
|
||||||
|
ac4p: add eax,320 ; pitch
|
||||||
|
sub edi,1
|
||||||
|
jne ac4loop
|
||||||
|
pop edi
|
||||||
|
|
||||||
|
pop ebp
|
||||||
|
pop esi
|
||||||
|
pop ebx
|
||||||
|
ac4nil: pop edi
|
||||||
|
ret
|
||||||
|
|
||||||
|
align 16
|
||||||
|
|
||||||
;************************
|
;************************
|
||||||
|
|
||||||
SECTION .text
|
SECTION .text
|
||||||
|
|
||||||
GLOBAL R_SetupShadedCol
|
GLOBAL R_SetupShadedCol
|
||||||
GLOBAL _R_SetupShadedCol
|
|
||||||
GLOBAL @R_SetupShadedCol@0
|
GLOBAL @R_SetupShadedCol@0
|
||||||
|
|
||||||
# Patch the values of dc_colormap and dc_color into the shaded column drawer.
|
# Patch the values of dc_colormap and dc_color into the shaded column drawer.
|
||||||
|
|
||||||
R_SetupShadedCol:
|
R_SetupShadedCol:
|
||||||
_R_SetupShadedCol:
|
|
||||||
@R_SetupShadedCol@0:
|
@R_SetupShadedCol@0:
|
||||||
mov eax,[dc_colormap]
|
mov eax,[dc_colormap]
|
||||||
mov [s4cm1+3],eax
|
mov [s4cm1+3],eax
|
||||||
|
@ -1603,6 +1757,56 @@ _R_SetupShadedCol:
|
||||||
mov [s4fg4+3],eax
|
mov [s4fg4+3],eax
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
GLOBAL R_SetupAddCol
|
||||||
|
GLOBAL @R_SetupAddCol@0
|
||||||
|
|
||||||
|
# Patch the values of dc_colormap, dc_srcblend, and dc_destblend into the
|
||||||
|
# unclamped adding column drawer.
|
||||||
|
|
||||||
|
R_SetupAddCol:
|
||||||
|
@R_SetupAddCol@0:
|
||||||
|
mov eax,[dc_colormap]
|
||||||
|
mov [a4cm1+3],eax
|
||||||
|
mov [a4cm2+3],eax
|
||||||
|
mov [a4cm3+3],eax
|
||||||
|
mov [a4cm4+3],eax
|
||||||
|
mov eax,[dc_srcblend]
|
||||||
|
mov [a4fg1+3],eax
|
||||||
|
mov [a4fg2+3],eax
|
||||||
|
mov [a4fg3+3],eax
|
||||||
|
mov [a4fg4+3],eax
|
||||||
|
mov eax,[dc_destblend]
|
||||||
|
mov [a4bg1+3],eax
|
||||||
|
mov [a4bg2+3],eax
|
||||||
|
mov [a4bg3+3],eax
|
||||||
|
mov [a4bg4+3],eax
|
||||||
|
ret
|
||||||
|
|
||||||
|
GLOBAL R_SetupAddClampCol
|
||||||
|
GLOBAL @R_SetupAddClampCol@0
|
||||||
|
|
||||||
|
# Patch the values of dc_colormap, dc_srcblend, and dc_destblend into the
|
||||||
|
# add with clamping column drawer.
|
||||||
|
|
||||||
|
R_SetupAddClampCol:
|
||||||
|
@R_SetupAddClampCol@0:
|
||||||
|
mov eax,[dc_colormap]
|
||||||
|
mov [ac4cm1+3],eax
|
||||||
|
mov [ac4cm2+3],eax
|
||||||
|
mov [ac4cm3+3],eax
|
||||||
|
mov [ac4cm4+3],eax
|
||||||
|
mov eax,[dc_srcblend]
|
||||||
|
mov [ac4fg1+3],eax
|
||||||
|
mov [ac4fg2+3],eax
|
||||||
|
mov [ac4fg3+3],eax
|
||||||
|
mov [ac4fg4+3],eax
|
||||||
|
mov eax,[dc_destblend]
|
||||||
|
mov [ac4bg1+3],eax
|
||||||
|
mov [ac4bg2+3],eax
|
||||||
|
mov [ac4bg3+3],eax
|
||||||
|
mov [ac4bg4+3],eax
|
||||||
|
ret
|
||||||
|
|
||||||
EXTERN setvlinebpl_
|
EXTERN setvlinebpl_
|
||||||
EXTERN setpitch3
|
EXTERN setpitch3
|
||||||
|
|
||||||
|
@ -1618,14 +1822,19 @@ _ASM_PatchPitch:
|
||||||
mov [rdcp2+2],eax
|
mov [rdcp2+2],eax
|
||||||
mov [rdcp3+2],eax
|
mov [rdcp3+2],eax
|
||||||
mov [s4p+1],eax
|
mov [s4p+1],eax
|
||||||
|
mov [a4p+1],eax
|
||||||
|
mov [ac4p+1],eax
|
||||||
mov ecx,eax
|
mov ecx,eax
|
||||||
neg ecx
|
neg ecx
|
||||||
inc ecx
|
inc ecx
|
||||||
|
; mov [a4p1+2],ecx
|
||||||
inc ecx
|
inc ecx
|
||||||
|
; mov [a4p2a+3],ecx
|
||||||
|
; mov [a4p2b+2],ecx
|
||||||
mov [s4p2+2],ecx
|
mov [s4p2+2],ecx
|
||||||
inc ecx
|
inc ecx
|
||||||
|
; mov [a4p3a+3],ecx
|
||||||
|
; mov [a4p3b+2],ecx
|
||||||
mov [s4p3+2],ecx
|
mov [s4p3+2],ecx
|
||||||
call setpitch3
|
call setpitch3
|
||||||
jmp setvlinebpl_
|
jmp setvlinebpl_
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue