- Fixed: The colormap changes by column, so the assembly rt_* routines need

to be setup for every column group, not once per image.


SVN r775 (trunk)
This commit is contained in:
Randy Heit 2008-02-28 22:15:24 +00:00
parent 965bfda5fe
commit dc82a26c8a
4 changed files with 48 additions and 29 deletions

View file

@ -1,4 +1,6 @@
February 28, 2008
- Fixed: The colormap changes by column, so the assembly rt_* routines need
to be setup for every column group, not once per image.
- Fixed: rt_Translate1col() had a couple of bugs.
February 27, 2008

View file

@ -80,9 +80,6 @@ int detailyshift; // [RH] Y shift for vertical detail level
extern "C" void STACK_ARGS DoubleHoriz_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 R_SetupShadedCol();
extern "C" void R_SetupAddCol();
extern "C" void R_SetupAddClampCol();
#endif
// [RH] Pointers to the different column drawers.
@ -2273,9 +2270,6 @@ ESPSResult R_SetPatchStyle (FRenderStyle style, fixed_t alpha, int translation,
{
dc_colormap += fixedlightlev;
}
#ifdef USEASM
R_SetupShadedCol();
#endif
return r_columnmethod ? DoDraw1 : DoDraw0;
}
@ -2307,16 +2301,6 @@ ESPSResult R_SetPatchStyle (FRenderStyle style, fixed_t alpha, int translation,
{
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;
}

View file

@ -59,6 +59,12 @@ unsigned int dc_tspans[4][MAXHEIGHT];
unsigned int *dc_ctspan[4];
unsigned int *horizspan[4];
#ifdef USEASM
extern "C" void R_SetupShadedCol();
extern "C" void R_SetupAddCol();
extern "C" void R_SetupAddClampCol();
#endif
#ifndef USEASM
// Copies one span at hx to the screen at sx.
void rt_copy1col_c (int hx, int sx, int yl, int yh)
@ -844,6 +850,22 @@ void rt_draw4cols (int sx)
dc_ctspan[x][1] = screen->GetHeight();
}
#ifdef USEASM
// Setup assembly routines for changed colormaps or other parameters.
if (hcolfunc_post4 == rt_shaded4cols)
{
R_SetupShadedCol();
}
else if (hcolfunc_post4 == rt_addclamp4cols || hcolfunc_post4 == rt_tlateaddclamp4cols)
{
R_SetupAddClampCol();
}
else if (hcolfunc_post4 == rt_add4cols || hcolfunc_post4 == rt_tlateadd4cols)
{
R_SetupAddCol();
}
#endif
for (;;)
{
// If a column is out of spans, mark it as such

View file

@ -1745,17 +1745,21 @@ GLOBAL @R_SetupShadedCol@0
R_SetupShadedCol:
@R_SetupShadedCol@0:
mov eax,[dc_colormap]
cmp [s4cm1+3],eax
je .cmdone
mov [s4cm1+3],eax
mov [s4cm2+3],eax
mov [s4cm3+3],eax
mov [s4cm4+3],eax
mov eax,[dc_color]
.cmdone mov eax,[dc_color]
lea eax,[Col2RGB8+eax*4]
cmp [s4fg1+3],eax
je .cdone
mov [s4fg1+3],eax
mov [s4fg2+3],eax
mov [s4fg3+3],eax
mov [s4fg4+3],eax
ret
.cdone ret
GLOBAL R_SetupAddCol
GLOBAL @R_SetupAddCol@0
@ -1766,21 +1770,27 @@ GLOBAL @R_SetupAddCol@0
R_SetupAddCol:
@R_SetupAddCol@0:
mov eax,[dc_colormap]
cmp [a4cm1+3],eax
je .cmdone
mov [a4cm1+3],eax
mov [a4cm2+3],eax
mov [a4cm3+3],eax
mov [a4cm4+3],eax
mov eax,[dc_srcblend]
.cmdone mov eax,[dc_srcblend]
cmp [a4fg1+3],eax
je .sbdone
mov [a4fg1+3],eax
mov [a4fg2+3],eax
mov [a4fg3+3],eax
mov [a4fg4+3],eax
mov eax,[dc_destblend]
.sbdone mov eax,[dc_destblend]
cmp [a4bg1+3],eax
je .dbdone
mov [a4bg1+3],eax
mov [a4bg2+3],eax
mov [a4bg3+3],eax
mov [a4bg4+3],eax
ret
.dbdone ret
GLOBAL R_SetupAddClampCol
GLOBAL @R_SetupAddClampCol@0
@ -1791,21 +1801,27 @@ GLOBAL @R_SetupAddClampCol@0
R_SetupAddClampCol:
@R_SetupAddClampCol@0:
mov eax,[dc_colormap]
cmp [a4cm1+3],eax
je .cmdone
mov [ac4cm1+3],eax
mov [ac4cm2+3],eax
mov [ac4cm3+3],eax
mov [ac4cm4+3],eax
mov eax,[dc_srcblend]
.cmdone mov eax,[dc_srcblend]
cmp [ac4fg1+3],eax
je .sbdone
mov [ac4fg1+3],eax
mov [ac4fg2+3],eax
mov [ac4fg3+3],eax
mov [ac4fg4+3],eax
mov eax,[dc_destblend]
.sbdone mov eax,[dc_destblend]
cmp [ac4bg1+3],eax
je .dbdone
mov [ac4bg1+3],eax
mov [ac4bg2+3],eax
mov [ac4bg3+3],eax
mov [ac4bg4+3],eax
ret
.dbdone ret
EXTERN setvlinebpl_
EXTERN setpitch3
@ -1827,14 +1843,9 @@ _ASM_PatchPitch:
mov ecx,eax
neg ecx
inc ecx
; mov [a4p1+2],ecx
inc ecx
; mov [a4p2a+3],ecx
; mov [a4p2b+2],ecx
mov [s4p2+2],ecx
inc ecx
; mov [a4p3a+3],ecx
; mov [a4p3b+2],ecx
mov [s4p3+2],ecx
call setpitch3
jmp setvlinebpl_