diff --git a/2d/scale.c b/2d/scale.c index b3d56c63f..374bdae83 100644 --- a/2d/scale.c +++ b/2d/scale.c @@ -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 ); diff --git a/2d/scalea.h b/2d/scalea.h deleted file mode 100644 index d59988f72..000000000 --- a/2d/scalea.h +++ /dev/null @@ -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 diff --git a/2d/scalec.c b/2d/scalec.c index bd985f618..f4c9ff2b9 100644 --- a/2d/scalec.c +++ b/2d/scalec.c @@ -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 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> 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; } } diff --git a/CHANGELOG.txt b/CHANGELOG.txt index d764d04e8..1490953c4 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -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 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 --------