Additional commit for last revision - didn't selected all files properly

This commit is contained in:
zicodxx 2011-01-19 21:52:01 +01:00
parent 9f6cbc8c6c
commit e60a7e1bca
4 changed files with 3 additions and 166 deletions

View file

@ -35,8 +35,6 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
static int Transparency_color = TRANSPARENCY_COLOR;
#include "scalea.h"
void rls_stretch_scanline( char * source, char * dest, int XDelta, int YDelta );
void rls_stretch_scanline_setup( int XDelta, int YDelta );
void scale_bitmap_asm(grs_bitmap *source_bmp, grs_bitmap *dest_bmp, int x0, int y0, int x1, int y1, fix u0, fix v0, fix u1, fix v1 );

View file

@ -1,99 +0,0 @@
/* $Id: scalea.h,v 1.1.1.1 2006/03/17 19:52:00 zicodxx Exp $ */
extern char scale_trans_color;
extern int scale_error_term;
extern int scale_initial_pixel_count;
extern int scale_adj_up;
extern int scale_adj_down;
extern int scale_final_pixel_count;
extern int scale_ydelta_minus_1;
extern int scale_whole_step;
extern ubyte * scale_source_ptr;
extern ubyte * scale_dest_ptr;
extern void rls_stretch_scanline_asm();
extern void scale_do_cc_scanline();
extern void rls_do_cc_setup_asm();
#ifdef __WATCOMC__
void rep_stosb(char *ScreenPtr, int RunLength, int Color);
#pragma aux rep_stosb = \
" rep stosb" \
parm [EDI] [ECX] [EAX]\
modify [];
// esi, edi = source, dest
// ecx = width
// ebx = u
// edx = du
void scale_row_asm_transparent( ubyte * sbits, ubyte * dbits, int width, fix u, fix du );
#pragma aux scale_row_asm_transparent parm [esi] [edi] [ecx] [ebx] [edx] modify exact [edi eax ebx ecx] = \
"newpixel: mov eax, ebx " \
" shr eax, 16 " \
" mov al, [esi+eax] " \
" cmp al, 255 " \
" je skip_it " \
" mov [edi], al " \
"skip_it: add ebx, edx " \
" inc edi " \
" dec ecx " \
" jne newpixel "
void scale_row_asm( ubyte * sbits, ubyte * dbits, int width, fix u, fix du );
#pragma aux scale_row_asm parm [esi] [edi] [ecx] [ebx] [edx] modify exact [edi eax ebx ecx] = \
"newpixel1: mov eax, ebx " \
" shr eax, 16 " \
" mov al, [esi+eax] " \
" add ebx, edx " \
" mov [edi], al " \
" inc edi " \
" dec ecx " \
" jne newpixel1 "
void rep_movsb( ubyte * sbits, ubyte * dbits, int width );
#pragma aux rep_movsb parm [esi] [edi] [ecx] modify exact [esi edi ecx] = \
"rep movsb"
#else
static inline void rep_stosb(char *ScreenPtr, int RunLength, int Color) {
int dummy[2];
__asm__ __volatile__ ("cld; rep; stosb"
: "=c" (dummy[0]), "=D" (dummy[1]) : "1" (ScreenPtr), "0" (RunLength), "a" (Color) );
}
static inline void scale_row_asm_transparent( ubyte * sbits, ubyte * dbits, int width, fix u, fix du ) {
int dummy[3];
__asm__ __volatile__ (
"0: movl %%ebx, %%eax;"
" shrl $16, %%eax;"
" movb (%%esi, %%eax), %%al;"
" cmpb $255, %%al;"
" je 1f;"
" movb %%al, (%%edi);"
"1: addl %%edx, %%ebx;"
" incl %%edi;"
" decl %%ecx;"
" jne 0b"
: "=c" (dummy[0]), "=b" (dummy[1]), "=D" (dummy[2])
: "S" (sbits), "2" (dbits), "0" (width), "1" (u), "d" (du)
: "%eax");
}
static inline void scale_row_asm( ubyte * sbits, ubyte * dbits, int width, fix u, fix du ) {
__asm__ __volatile__ (
"0: movl %%ebx,%%eax;"
" shrl $16, %%eax;"
" movb (%%esi, %%eax), %%al;"
" addl %%edx, %%ebx;"
" movb %%al, (%%edi);"
" incl %%edi;"
" decl %%ecx;"
" jne 0b"
: : "S" (sbits), "D" (dbits), "c" (width), "b" (u), "d" (du)
: "%eax", "%ebx", "%ecx", "%edi");
}
static inline void rep_movsb( ubyte * sbits, ubyte * dbits, int width ) {
__asm__ __volatile__ ("cld; rep; movsb"
: : "S" (sbits), "D" (dbits), "c" (width) : "%ecx", "%esi", "%edi");
}
#endif

View file

@ -216,56 +216,6 @@ void rls_stretch_scanline( )
}
}
#if 0
void rls_stretch_scanline()
{
ubyte c;
int i, j, len, ErrorTerm, x;
// Setup initial variables
ErrorTerm = scale_error_term;
// Draw the first, partial run of pixels
c = *scale_source_ptr++;
if ( c != TRANSPARENCY_COLOR ) {
for (i=0; i<scale_initial_pixel_count; i++ )
*scale_dest_ptr++ = c;
} else {
scale_dest_ptr += scale_initial_pixel_count;
}
// Draw all full runs
for (j=0; j<scale_ydelta_minus_1; j++) {
len = scale_whole_step; // run is at least this long
// Advance the error term and add an extra pixel if the error term so indicates
if ((ErrorTerm += scale_adj_up) > 0) {
len++;
ErrorTerm -= scale_adj_down; // reset the error term
}
// Draw this run o' pixels
c = *scale_source_ptr++;
if ( c != TRANSPARENCY_COLOR ) {
for (i=len; i>0; i-- )
*scale_dest_ptr++ = c;
} else {
scale_dest_ptr += len;
}
}
// Draw the final run of pixels
c = *scale_source_ptr++;
if ( c != TRANSPARENCY_COLOR ) {
for (i=0; i<scale_final_pixel_count; i++ )
*scale_dest_ptr++ = c;
} else {
scale_dest_ptr += scale_final_pixel_count;
}
}
#endif
// old stuff here...
void scale_bitmap_c(grs_bitmap *source_bmp, grs_bitmap *dest_bmp, int x0, int y0, int x1, int y1, fix u0, fix v0, fix u1, fix v1, int orientation )
@ -306,20 +256,8 @@ void scale_bitmap_c(grs_bitmap *source_bmp, grs_bitmap *dest_bmp, int x0, int y0
}
}
void scale_row_asm_transparent( ubyte * sbits, ubyte * dbits, int width, fix u, fix du )
void scale_row_transparent( ubyte * sbits, ubyte * dbits, int width, fix u, fix du )
{
#if 0
int i;
ubyte c;
for (i=0; i<width; i++ ) {
c = sbits[ u >> 16 ];
if ( c!=TRANSPARENCY_COLOR)
*dbits = c;
dbits++;
u += du;
}
#endif
int i;
ubyte c;
ubyte *dbits_end = &dbits[width-1];
@ -416,7 +354,7 @@ void scale_bitmap_c_rle(grs_bitmap *source_bmp, grs_bitmap *dest_bmp, int x0, in
last_row = f2i(v);
decode_row( source_bmp, last_row );
}
scale_row_asm_transparent( scale_rle_data, &dest_bmp->bm_data[dest_bmp->bm_rowsize*y+x0], x1-x0+1, u0, du );
scale_row_transparent( scale_rle_data, &dest_bmp->bm_data[dest_bmp->bm_rowsize*y+x0], x1-x0+1, u0, du );
v += dv;
}
}

View file

@ -5,7 +5,7 @@ D2X-Rebirth Changelog
main/game.h, main/gamerend.c, main/gauges.c, main/multi.c, main/multi.h, main/net_udp.c: Introducing new BOUNTY Multiplayer game mode by Matt "1360" Vandermeulen <matt1360@gmail.com>
main/gauges.c, main/multi.c: Fix for showing bounty target in kill list - was not actually checking if player_num == Bounty_target; When Bounty_target player leaves game host must select a new target so the game can proceed
main/gamerend.c, main/multi.c, main/multi.h, main/net_ipx.c, main/net_udp.c, main/text.h: On NETGAMES list Bounty mode was not shown since MODE_NAMES define was not adjusted - so in the end introduced GMNames and GMNamesShrt Arrays in multi.c for globally displaying full or short Multiplayer game mode names
2d/bitmap.c, 2d/bitmap.h, 2d/canvas.c, 2d/font.c, 2d/tmerge.c, SConstruct, arch/linux/alsadigi.c, arch/sdl/digi_audio.c, arch/sdl/digi_mixer.c, include/error.h, include/maths.h, main/fvi_a.h, main/inferno.c, maths/fixc.c, maths/vecmat.c, texmap/scanline.c: Retired most of the Assembler code except the generic i386 scanline renderer; Removed all leftovers of Direct3D implementation; On the way make a some code more similar between D1X-Rebirth and D2X-Rebirth
2d/bitmap.c, 2d/bitmap.h, 2d/canvas.c, 2d/font.c, 2d/scale.c, 2d/scalec.c, 2d/tmerge.c, SConstruct, arch/linux/alsadigi.c, arch/sdl/digi_audio.c, arch/sdl/digi_mixer.c, include/error.h, include/maths.h, main/fvi_a.h, main/inferno.c, maths/fixc.c, maths/vecmat.c, texmap/scanline.c: Retired most of the Assembler code except the generic i386 scanline renderer; Removed all leftovers of Direct3D implementation; On the way make a some code more similar between D1X-Rebirth and D2X-Rebirth
20110118
--------