mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-02-19 18:41:28 +00:00
Transposed backbuffer WIP
This commit is contained in:
parent
8e7d8281bd
commit
1634a59804
10 changed files with 213 additions and 566 deletions
|
@ -787,7 +787,7 @@ static void AM_drawPixel(INT32 xx, INT32 yy, INT32 cc)
|
||||||
UINT8 *dest = screens[0];
|
UINT8 *dest = screens[0];
|
||||||
if (xx < 0 || yy < 0 || xx >= vid.width || yy >= vid.height)
|
if (xx < 0 || yy < 0 || xx >= vid.width || yy >= vid.height)
|
||||||
return; // off the screen
|
return; // off the screen
|
||||||
dest[(yy*vid.width) + xx] = cc;
|
dest[(xx*vid.height) + yy] = cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
@ -1747,6 +1747,7 @@ static void CON_DrawHudlines(void)
|
||||||
// Lactozilla: Draws the console's background picture.
|
// Lactozilla: Draws the console's background picture.
|
||||||
static void CON_DrawBackpic(void)
|
static void CON_DrawBackpic(void)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
patch_t *con_backpic;
|
patch_t *con_backpic;
|
||||||
lumpnum_t piclump;
|
lumpnum_t piclump;
|
||||||
int x, w, h;
|
int x, w, h;
|
||||||
|
@ -1790,6 +1791,7 @@ static void CON_DrawBackpic(void)
|
||||||
|
|
||||||
// Unlock the cached patch.
|
// Unlock the cached patch.
|
||||||
W_UnlockCachedPatch(con_backpic);
|
W_UnlockCachedPatch(con_backpic);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw the console background, text, and prompt if enough place
|
// draw the console background, text, and prompt if enough place
|
||||||
|
|
15
src/d_main.c
15
src/d_main.c
|
@ -407,11 +407,13 @@ static void D_Display(void)
|
||||||
case GS_LEVEL:
|
case GS_LEVEL:
|
||||||
if (!gametic)
|
if (!gametic)
|
||||||
break;
|
break;
|
||||||
|
#if 0
|
||||||
HU_Erase();
|
HU_Erase();
|
||||||
AM_Drawer();
|
AM_Drawer();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case GS_INTERMISSION:
|
case GS_INTERMISSION:
|
||||||
|
|
||||||
Y_IntermissionDrawer();
|
Y_IntermissionDrawer();
|
||||||
HU_Erase();
|
HU_Erase();
|
||||||
HU_Drawer();
|
HU_Drawer();
|
||||||
|
@ -469,6 +471,9 @@ static void D_Display(void)
|
||||||
}
|
}
|
||||||
case GS_DEDICATEDSERVER:
|
case GS_DEDICATEDSERVER:
|
||||||
case GS_NULL:
|
case GS_NULL:
|
||||||
|
#else
|
||||||
|
default:
|
||||||
|
#endif
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,7 +496,7 @@ static void D_Display(void)
|
||||||
PS_START_TIMING(ps_rendercalltime);
|
PS_START_TIMING(ps_rendercalltime);
|
||||||
if (players[displayplayer].mo || players[displayplayer].playerstate == PST_DEAD)
|
if (players[displayplayer].mo || players[displayplayer].playerstate == PST_DEAD)
|
||||||
{
|
{
|
||||||
topleft = screens[0] + viewwindowy*vid.width + viewwindowx;
|
topleft = screens[0] + viewwindowx*vid.height + viewwindowy;
|
||||||
objectsdrawn = 0;
|
objectsdrawn = 0;
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
if (rendermode != render_soft)
|
if (rendermode != render_soft)
|
||||||
|
@ -515,7 +520,7 @@ static void D_Display(void)
|
||||||
viewwindowy = vid.height / 2;
|
viewwindowy = vid.height / 2;
|
||||||
M_Memcpy(ylookup, ylookup2, viewheight*sizeof (ylookup[0]));
|
M_Memcpy(ylookup, ylookup2, viewheight*sizeof (ylookup[0]));
|
||||||
|
|
||||||
topleft = screens[0] + viewwindowy*vid.width + viewwindowx;
|
topleft = screens[0] + viewwindowx*vid.height + viewwindowy;
|
||||||
|
|
||||||
R_RenderPlayerView(&players[secondarydisplayplayer]);
|
R_RenderPlayerView(&players[secondarydisplayplayer]);
|
||||||
|
|
||||||
|
@ -527,6 +532,7 @@ static void D_Display(void)
|
||||||
// Image postprocessing effect
|
// Image postprocessing effect
|
||||||
if (rendermode == render_soft)
|
if (rendermode == render_soft)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if (!splitscreen)
|
if (!splitscreen)
|
||||||
R_ApplyViewMorph();
|
R_ApplyViewMorph();
|
||||||
|
|
||||||
|
@ -534,11 +540,13 @@ static void D_Display(void)
|
||||||
V_DoPostProcessor(0, postimgtype, postimgparam);
|
V_DoPostProcessor(0, postimgtype, postimgparam);
|
||||||
if (postimgtype2)
|
if (postimgtype2)
|
||||||
V_DoPostProcessor(1, postimgtype2, postimgparam2);
|
V_DoPostProcessor(1, postimgtype2, postimgparam2);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
PS_STOP_TIMING(ps_rendercalltime);
|
PS_STOP_TIMING(ps_rendercalltime);
|
||||||
R_RestoreLevelInterpolators();
|
R_RestoreLevelInterpolators();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (lastdraw)
|
if (lastdraw)
|
||||||
{
|
{
|
||||||
if (rendermode == render_soft)
|
if (rendermode == render_soft)
|
||||||
|
@ -549,9 +557,11 @@ static void D_Display(void)
|
||||||
}
|
}
|
||||||
lastdraw = false;
|
lastdraw = false;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
PS_START_TIMING(ps_uitime);
|
PS_START_TIMING(ps_uitime);
|
||||||
|
|
||||||
|
#if 0
|
||||||
if (gamestate == GS_LEVEL)
|
if (gamestate == GS_LEVEL)
|
||||||
{
|
{
|
||||||
ST_Drawer();
|
ST_Drawer();
|
||||||
|
@ -560,6 +570,7 @@ static void D_Display(void)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
F_TitleScreenDrawer();
|
F_TitleScreenDrawer();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -41,9 +41,9 @@
|
||||||
#include "hardware/hw_main.h"
|
#include "hardware/hw_main.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if NUMSCREENS < 5
|
// #if NUMSCREENS < 5
|
||||||
#define NOWIPE // do not enable wipe image post processing for ARM, SH and MIPS CPUs
|
#define NOWIPE // do not enable wipe image post processing for ARM, SH and MIPS CPUs
|
||||||
#endif
|
// #endif
|
||||||
|
|
||||||
typedef struct fademask_s {
|
typedef struct fademask_s {
|
||||||
UINT8* mask;
|
UINT8* mask;
|
||||||
|
|
|
@ -70,7 +70,7 @@ raster_bbox_seg
|
||||||
|
|
||||||
while (y < h)
|
while (y < h)
|
||||||
{
|
{
|
||||||
topleft[x + y * vid.width] = pixel;
|
topleft[y + x * vid.height] = pixel;
|
||||||
y++;
|
y++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
610
src/r_draw8.c
610
src/r_draw8.c
File diff suppressed because it is too large
Load diff
|
@ -37,7 +37,7 @@ void R_DrawSpan_NPO2_8 (void)
|
||||||
UINT8 *source;
|
UINT8 *source;
|
||||||
UINT8 *colormap;
|
UINT8 *colormap;
|
||||||
UINT8 *dest;
|
UINT8 *dest;
|
||||||
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.height;
|
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.width;
|
||||||
|
|
||||||
size_t count = (ds_x2 - ds_x1 + 1);
|
size_t count = (ds_x2 - ds_x1 + 1);
|
||||||
|
|
||||||
|
@ -46,9 +46,9 @@ void R_DrawSpan_NPO2_8 (void)
|
||||||
|
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
|
|
||||||
if (dest+8 > deststop)
|
if (dest > deststop)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fixedwidth = ds_flatwidth << FRACBITS;
|
fixedwidth = ds_flatwidth << FRACBITS;
|
||||||
|
@ -121,7 +121,7 @@ void R_DrawTiltedSpan_NPO2_8(void)
|
||||||
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
||||||
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
||||||
|
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
//colormap = ds_colormap;
|
//colormap = ds_colormap;
|
||||||
|
|
||||||
|
@ -311,7 +311,7 @@ void R_DrawTiltedTranslucentSpan_NPO2_8(void)
|
||||||
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
||||||
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
||||||
|
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
//colormap = ds_colormap;
|
//colormap = ds_colormap;
|
||||||
|
|
||||||
|
@ -499,7 +499,7 @@ void R_DrawTiltedSplat_NPO2_8(void)
|
||||||
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
||||||
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
||||||
|
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
//colormap = ds_colormap;
|
//colormap = ds_colormap;
|
||||||
|
|
||||||
|
@ -683,7 +683,7 @@ void R_DrawSplat_NPO2_8 (void)
|
||||||
UINT8 *source;
|
UINT8 *source;
|
||||||
UINT8 *colormap;
|
UINT8 *colormap;
|
||||||
UINT8 *dest;
|
UINT8 *dest;
|
||||||
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.height;
|
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.width;
|
||||||
|
|
||||||
size_t count = (ds_x2 - ds_x1 + 1);
|
size_t count = (ds_x2 - ds_x1 + 1);
|
||||||
UINT32 val;
|
UINT32 val;
|
||||||
|
@ -693,7 +693,7 @@ void R_DrawSplat_NPO2_8 (void)
|
||||||
|
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
|
|
||||||
fixedwidth = ds_flatwidth << FRACBITS;
|
fixedwidth = ds_flatwidth << FRACBITS;
|
||||||
fixedheight = ds_flatheight << FRACBITS;
|
fixedheight = ds_flatheight << FRACBITS;
|
||||||
|
@ -751,7 +751,7 @@ void R_DrawTranslucentSplat_NPO2_8 (void)
|
||||||
UINT8 *source;
|
UINT8 *source;
|
||||||
UINT8 *colormap;
|
UINT8 *colormap;
|
||||||
UINT8 *dest;
|
UINT8 *dest;
|
||||||
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.height;
|
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.width;
|
||||||
|
|
||||||
size_t count = (ds_x2 - ds_x1 + 1);
|
size_t count = (ds_x2 - ds_x1 + 1);
|
||||||
UINT32 val;
|
UINT32 val;
|
||||||
|
@ -761,7 +761,7 @@ void R_DrawTranslucentSplat_NPO2_8 (void)
|
||||||
|
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
|
|
||||||
fixedwidth = ds_flatwidth << FRACBITS;
|
fixedwidth = ds_flatwidth << FRACBITS;
|
||||||
fixedheight = ds_flatheight << FRACBITS;
|
fixedheight = ds_flatheight << FRACBITS;
|
||||||
|
@ -820,7 +820,7 @@ void R_DrawFloorSprite_NPO2_8 (void)
|
||||||
UINT8 *translation;
|
UINT8 *translation;
|
||||||
UINT8 *colormap;
|
UINT8 *colormap;
|
||||||
UINT8 *dest;
|
UINT8 *dest;
|
||||||
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.height;
|
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.width;
|
||||||
|
|
||||||
size_t count = (ds_x2 - ds_x1 + 1);
|
size_t count = (ds_x2 - ds_x1 + 1);
|
||||||
UINT32 val;
|
UINT32 val;
|
||||||
|
@ -831,7 +831,7 @@ void R_DrawFloorSprite_NPO2_8 (void)
|
||||||
source = (UINT16 *)ds_source;
|
source = (UINT16 *)ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
translation = ds_translation;
|
translation = ds_translation;
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
|
|
||||||
fixedwidth = ds_flatwidth << FRACBITS;
|
fixedwidth = ds_flatwidth << FRACBITS;
|
||||||
fixedheight = ds_flatheight << FRACBITS;
|
fixedheight = ds_flatheight << FRACBITS;
|
||||||
|
@ -890,7 +890,7 @@ void R_DrawTranslucentFloorSprite_NPO2_8 (void)
|
||||||
UINT8 *translation;
|
UINT8 *translation;
|
||||||
UINT8 *colormap;
|
UINT8 *colormap;
|
||||||
UINT8 *dest;
|
UINT8 *dest;
|
||||||
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.height;
|
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.width;
|
||||||
|
|
||||||
size_t count = (ds_x2 - ds_x1 + 1);
|
size_t count = (ds_x2 - ds_x1 + 1);
|
||||||
UINT32 val;
|
UINT32 val;
|
||||||
|
@ -901,7 +901,7 @@ void R_DrawTranslucentFloorSprite_NPO2_8 (void)
|
||||||
source = (UINT16 *)ds_source;
|
source = (UINT16 *)ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
translation = ds_translation;
|
translation = ds_translation;
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
|
|
||||||
fixedwidth = ds_flatwidth << FRACBITS;
|
fixedwidth = ds_flatwidth << FRACBITS;
|
||||||
fixedheight = ds_flatheight << FRACBITS;
|
fixedheight = ds_flatheight << FRACBITS;
|
||||||
|
@ -974,7 +974,7 @@ void R_DrawTiltedFloorSprite_NPO2_8(void)
|
||||||
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
||||||
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
||||||
|
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
source = (UINT16 *)ds_source;
|
source = (UINT16 *)ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
translation = ds_translation;
|
translation = ds_translation;
|
||||||
|
@ -1130,7 +1130,7 @@ void R_DrawTiltedTranslucentFloorSprite_NPO2_8(void)
|
||||||
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
||||||
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
||||||
|
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
source = (UINT16 *)ds_source;
|
source = (UINT16 *)ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
translation = ds_translation;
|
translation = ds_translation;
|
||||||
|
@ -1271,7 +1271,7 @@ void R_DrawTranslucentSpan_NPO2_8 (void)
|
||||||
UINT8 *source;
|
UINT8 *source;
|
||||||
UINT8 *colormap;
|
UINT8 *colormap;
|
||||||
UINT8 *dest;
|
UINT8 *dest;
|
||||||
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.height;
|
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.width;
|
||||||
|
|
||||||
size_t count = (ds_x2 - ds_x1 + 1);
|
size_t count = (ds_x2 - ds_x1 + 1);
|
||||||
UINT32 val;
|
UINT32 val;
|
||||||
|
@ -1281,7 +1281,7 @@ void R_DrawTranslucentSpan_NPO2_8 (void)
|
||||||
|
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
|
|
||||||
fixedwidth = ds_flatwidth << FRACBITS;
|
fixedwidth = ds_flatwidth << FRACBITS;
|
||||||
fixedheight = ds_flatheight << FRACBITS;
|
fixedheight = ds_flatheight << FRACBITS;
|
||||||
|
@ -1336,7 +1336,7 @@ void R_DrawWaterSpan_NPO2_8(void)
|
||||||
UINT8 *colormap;
|
UINT8 *colormap;
|
||||||
UINT8 *dest;
|
UINT8 *dest;
|
||||||
UINT8 *dsrc;
|
UINT8 *dsrc;
|
||||||
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.height;
|
const UINT8 *deststop = screens[0] + vid.rowbytes * vid.width;
|
||||||
|
|
||||||
size_t count = (ds_x2 - ds_x1 + 1);
|
size_t count = (ds_x2 - ds_x1 + 1);
|
||||||
|
|
||||||
|
@ -1345,8 +1345,8 @@ void R_DrawWaterSpan_NPO2_8(void)
|
||||||
|
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
colormap = ds_colormap;
|
colormap = ds_colormap;
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
dsrc = screens[1] + (ds_y+ds_bgofs)*vid.width + ds_x1;
|
dsrc = screens[1] + ds_x1*vid.height + (ds_y+ds_bgofs);
|
||||||
|
|
||||||
fixedwidth = ds_flatwidth << FRACBITS;
|
fixedwidth = ds_flatwidth << FRACBITS;
|
||||||
fixedheight = ds_flatheight << FRACBITS;
|
fixedheight = ds_flatheight << FRACBITS;
|
||||||
|
@ -1381,7 +1381,9 @@ void R_DrawWaterSpan_NPO2_8(void)
|
||||||
|
|
||||||
x = (xposition >> FRACBITS);
|
x = (xposition >> FRACBITS);
|
||||||
y = (yposition >> FRACBITS);
|
y = (yposition >> FRACBITS);
|
||||||
*dest++ = colormap[*(ds_transmap + (source[((y * ds_flatwidth) + x)] << 8) + *dsrc++)];
|
*dest = colormap[*(ds_transmap + (source[((y * ds_flatwidth) + x)] << 8) + *dsrc)];
|
||||||
|
dest += vid.height;
|
||||||
|
dsrc += vid.height;
|
||||||
xposition += xstep;
|
xposition += xstep;
|
||||||
yposition += ystep;
|
yposition += ystep;
|
||||||
}
|
}
|
||||||
|
@ -1418,8 +1420,8 @@ void R_DrawTiltedWaterSpan_NPO2_8(void)
|
||||||
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
uz = ds_sup->z + ds_sup->y*(centery-ds_y) + ds_sup->x*(ds_x1-centerx);
|
||||||
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
vz = ds_svp->z + ds_svp->y*(centery-ds_y) + ds_svp->x*(ds_x1-centerx);
|
||||||
|
|
||||||
dest = ylookup[ds_y] + columnofs[ds_x1];
|
dest = &topleft[ds_x1*vid.height + ds_y];
|
||||||
dsrc = screens[1] + (ds_y+ds_bgofs)*vid.width + ds_x1;
|
dsrc = screens[1] + ds_x1*vid.height + (ds_y+ds_bgofs);
|
||||||
source = ds_source;
|
source = ds_source;
|
||||||
//colormap = ds_colormap;
|
//colormap = ds_colormap;
|
||||||
|
|
||||||
|
@ -1448,9 +1450,10 @@ void R_DrawTiltedWaterSpan_NPO2_8(void)
|
||||||
else
|
else
|
||||||
y -= libdivide_u32_do((UINT32)y, &y_divider) * ds_flatheight;
|
y -= libdivide_u32_do((UINT32)y, &y_divider) * ds_flatheight;
|
||||||
|
|
||||||
*dest = *(ds_transmap + (colormap[source[((y * ds_flatwidth) + x)]] << 8) + *dsrc++);
|
*dest = *(ds_transmap + (colormap[source[((y * ds_flatwidth) + x)]] << 8) + *dsrc);
|
||||||
}
|
}
|
||||||
dest++;
|
dest += vid.height;
|
||||||
|
dsrc += vid.height;
|
||||||
iz += ds_szp->x;
|
iz += ds_szp->x;
|
||||||
uz += ds_sup->x;
|
uz += ds_sup->x;
|
||||||
vz += ds_svp->x;
|
vz += ds_svp->x;
|
||||||
|
@ -1498,9 +1501,10 @@ void R_DrawTiltedWaterSpan_NPO2_8(void)
|
||||||
else
|
else
|
||||||
y -= libdivide_u32_do((UINT32)y, &y_divider) * ds_flatheight;
|
y -= libdivide_u32_do((UINT32)y, &y_divider) * ds_flatheight;
|
||||||
|
|
||||||
*dest = *(ds_transmap + (colormap[source[((y * ds_flatwidth) + x)]] << 8) + *dsrc++);
|
*dest = *(ds_transmap + (colormap[source[((y * ds_flatwidth) + x)]] << 8) + *dsrc);
|
||||||
}
|
}
|
||||||
dest++;
|
dest += vid.height;
|
||||||
|
dsrc += vid.height;
|
||||||
u += stepu;
|
u += stepu;
|
||||||
v += stepv;
|
v += stepv;
|
||||||
}
|
}
|
||||||
|
@ -1530,7 +1534,7 @@ void R_DrawTiltedWaterSpan_NPO2_8(void)
|
||||||
else
|
else
|
||||||
y -= libdivide_u32_do((UINT32)y, &y_divider) * ds_flatheight;
|
y -= libdivide_u32_do((UINT32)y, &y_divider) * ds_flatheight;
|
||||||
|
|
||||||
*dest = *(ds_transmap + (colormap[source[((y * ds_flatwidth) + x)]] << 8) + *dsrc++);
|
*dest = *(ds_transmap + (colormap[source[((y * ds_flatwidth) + x)]] << 8) + *dsrc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1567,9 +1571,10 @@ void R_DrawTiltedWaterSpan_NPO2_8(void)
|
||||||
else
|
else
|
||||||
y -= libdivide_u32_do((UINT32)y, &y_divider) * ds_flatheight;
|
y -= libdivide_u32_do((UINT32)y, &y_divider) * ds_flatheight;
|
||||||
|
|
||||||
*dest = *(ds_transmap + (colormap[source[((y * ds_flatwidth) + x)]] << 8) + *dsrc++);
|
*dest = *(ds_transmap + (colormap[source[((y * ds_flatwidth) + x)]] << 8) + *dsrc);
|
||||||
}
|
}
|
||||||
dest++;
|
dest += vid.height;
|
||||||
|
dsrc += vid.height;
|
||||||
u += stepu;
|
u += stepu;
|
||||||
v += stepv;
|
v += stepv;
|
||||||
}
|
}
|
||||||
|
|
|
@ -688,15 +688,7 @@ void R_DrawMaskedColumn(column_t *column)
|
||||||
dc_texturemid = basetexturemid - (topdelta<<FRACBITS);
|
dc_texturemid = basetexturemid - (topdelta<<FRACBITS);
|
||||||
|
|
||||||
// Drawn by R_DrawColumn.
|
// Drawn by R_DrawColumn.
|
||||||
// This stuff is a likely cause of the splitscreen water crash bug.
|
colfunc();
|
||||||
// FIXTHIS: Figure out what "something more proper" is and do it.
|
|
||||||
// quick fix... something more proper should be done!!!
|
|
||||||
if (ylookup[dc_yl])
|
|
||||||
colfunc();
|
|
||||||
#ifdef PARANOIA
|
|
||||||
else
|
|
||||||
I_Error("R_DrawMaskedColumn: Invalid ylookup for dc_yl %d", dc_yl);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
column = (column_t *)((UINT8 *)column + column->length + 4);
|
column = (column_t *)((UINT8 *)column + column->length + 4);
|
||||||
}
|
}
|
||||||
|
@ -755,12 +747,8 @@ void R_DrawFlippedMaskedColumn(column_t *column)
|
||||||
dc_texturemid = basetexturemid - (topdelta<<FRACBITS);
|
dc_texturemid = basetexturemid - (topdelta<<FRACBITS);
|
||||||
|
|
||||||
// Still drawn by R_DrawColumn.
|
// Still drawn by R_DrawColumn.
|
||||||
if (ylookup[dc_yl])
|
colfunc();
|
||||||
colfunc();
|
|
||||||
#ifdef PARANOIA
|
|
||||||
else
|
|
||||||
I_Error("R_DrawMaskedColumn: Invalid ylookup for dc_yl %d", dc_yl);
|
|
||||||
#endif
|
|
||||||
Z_Free(dc_source);
|
Z_Free(dc_source);
|
||||||
}
|
}
|
||||||
column = (column_t *)((UINT8 *)column + column->length + 4);
|
column = (column_t *)((UINT8 *)column + column->length + 4);
|
||||||
|
|
|
@ -259,7 +259,7 @@ static void SDLSetMode(INT32 width, INT32 height, SDL_bool fullscreen, SDL_bool
|
||||||
sw_texture_format = SDL_PIXELFORMAT_RGBA8888;
|
sw_texture_format = SDL_PIXELFORMAT_RGBA8888;
|
||||||
}
|
}
|
||||||
|
|
||||||
texture = SDL_CreateTexture(renderer, sw_texture_format, SDL_TEXTUREACCESS_STREAMING, width, height);
|
texture = SDL_CreateTexture(renderer, sw_texture_format, SDL_TEXTUREACCESS_STREAMING, height, width);
|
||||||
|
|
||||||
// Set up SW surface
|
// Set up SW surface
|
||||||
if (vidSurface != NULL)
|
if (vidSurface != NULL)
|
||||||
|
@ -272,7 +272,7 @@ static void SDLSetMode(INT32 width, INT32 height, SDL_bool fullscreen, SDL_bool
|
||||||
vid.buffer = NULL;
|
vid.buffer = NULL;
|
||||||
}
|
}
|
||||||
SDL_PixelFormatEnumToMasks(sw_texture_format, &bpp, &rmask, &gmask, &bmask, &amask);
|
SDL_PixelFormatEnumToMasks(sw_texture_format, &bpp, &rmask, &gmask, &bmask, &amask);
|
||||||
vidSurface = SDL_CreateRGBSurface(0, width, height, bpp, rmask, gmask, bmask, amask);
|
vidSurface = SDL_CreateRGBSurface(0, height, width, bpp, rmask, gmask, bmask, amask);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1227,6 +1227,7 @@ static inline boolean I_SkipFrame(void)
|
||||||
// I_FinishUpdate
|
// I_FinishUpdate
|
||||||
//
|
//
|
||||||
static SDL_Rect src_rect = { 0, 0, 0, 0 };
|
static SDL_Rect src_rect = { 0, 0, 0, 0 };
|
||||||
|
static SDL_Rect dst_rect = { 0, 0, 0, 0 };
|
||||||
|
|
||||||
void I_FinishUpdate(void)
|
void I_FinishUpdate(void)
|
||||||
{
|
{
|
||||||
|
@ -1268,7 +1269,7 @@ void I_FinishUpdate(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
SDL_RenderClear(renderer);
|
SDL_RenderClear(renderer);
|
||||||
SDL_RenderCopy(renderer, texture, &src_rect, NULL);
|
SDL_RenderCopyEx(renderer, texture, NULL, &dst_rect, 90.0, NULL, SDL_FLIP_VERTICAL);
|
||||||
SDL_RenderPresent(renderer);
|
SDL_RenderPresent(renderer);
|
||||||
}
|
}
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
|
@ -1663,8 +1664,13 @@ INT32 VID_SetMode(INT32 modeNum)
|
||||||
vid.modenum = modeNum;
|
vid.modenum = modeNum;
|
||||||
|
|
||||||
//Impl_SetWindowName("SRB2 "VERSIONSTRING);
|
//Impl_SetWindowName("SRB2 "VERSIONSTRING);
|
||||||
src_rect.w = vid.width;
|
src_rect.w = vid.height;
|
||||||
src_rect.h = vid.height;
|
src_rect.h = vid.width;
|
||||||
|
|
||||||
|
dst_rect.x = (vid.width - vid.height) / 2;
|
||||||
|
dst_rect.y = (vid.height - vid.width) / 2;
|
||||||
|
dst_rect.w = vid.height;
|
||||||
|
dst_rect.h = vid.width;
|
||||||
|
|
||||||
refresh_rate = VID_GetRefreshRate();
|
refresh_rate = VID_GetRefreshRate();
|
||||||
|
|
||||||
|
@ -1741,12 +1747,12 @@ static void Impl_VideoSetupSDLBuffer(void)
|
||||||
// Set up the SDL palletized buffer (copied to vidbuffer before being rendered to texture)
|
// Set up the SDL palletized buffer (copied to vidbuffer before being rendered to texture)
|
||||||
if (vid.bpp == 1)
|
if (vid.bpp == 1)
|
||||||
{
|
{
|
||||||
bufSurface = SDL_CreateRGBSurfaceFrom(screens[0],vid.width,vid.height,8,
|
bufSurface = SDL_CreateRGBSurfaceFrom(screens[0],vid.height,vid.width,8,
|
||||||
(int)vid.rowbytes,0x00000000,0x00000000,0x00000000,0x00000000); // 256 mode
|
(int)vid.rowbytes,0x00000000,0x00000000,0x00000000,0x00000000); // 256 mode
|
||||||
}
|
}
|
||||||
else if (vid.bpp == 2) // Fury -- don't think this is used at all anymore
|
else if (vid.bpp == 2) // Fury -- don't think this is used at all anymore
|
||||||
{
|
{
|
||||||
bufSurface = SDL_CreateRGBSurfaceFrom(screens[0],vid.width,vid.height,15,
|
bufSurface = SDL_CreateRGBSurfaceFrom(screens[0],vid.height,vid.width,15,
|
||||||
(int)vid.rowbytes,0x00007C00,0x000003E0,0x0000001F,0x00000000); // 555 mode
|
(int)vid.rowbytes,0x00007C00,0x000003E0,0x0000001F,0x00000000); // 555 mode
|
||||||
}
|
}
|
||||||
if (bufSurface)
|
if (bufSurface)
|
||||||
|
@ -1762,11 +1768,11 @@ static void Impl_VideoSetupSDLBuffer(void)
|
||||||
static void Impl_VideoSetupBuffer(void)
|
static void Impl_VideoSetupBuffer(void)
|
||||||
{
|
{
|
||||||
// Set up game's software render buffer
|
// Set up game's software render buffer
|
||||||
vid.rowbytes = vid.width * vid.bpp;
|
vid.rowbytes = vid.height * vid.bpp;
|
||||||
vid.direct = NULL;
|
vid.direct = NULL;
|
||||||
if (vid.buffer)
|
if (vid.buffer)
|
||||||
free(vid.buffer);
|
free(vid.buffer);
|
||||||
vid.buffer = calloc(vid.rowbytes*vid.height, NUMSCREENS);
|
vid.buffer = calloc(vid.rowbytes*vid.width, NUMSCREENS);
|
||||||
if (!vid.buffer)
|
if (!vid.buffer)
|
||||||
{
|
{
|
||||||
I_Error("%s", M_GetText("Not enough memory for video buffer\n"));
|
I_Error("%s", M_GetText("Not enough memory for video buffer\n"));
|
||||||
|
|
|
@ -460,6 +460,7 @@ static void CV_constextsize_OnChange(void)
|
||||||
void VID_BlitLinearScreen(const UINT8 *srcptr, UINT8 *destptr, INT32 width, INT32 height, size_t srcrowbytes,
|
void VID_BlitLinearScreen(const UINT8 *srcptr, UINT8 *destptr, INT32 width, INT32 height, size_t srcrowbytes,
|
||||||
size_t destrowbytes)
|
size_t destrowbytes)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if (srcrowbytes == destrowbytes)
|
if (srcrowbytes == destrowbytes)
|
||||||
M_Memcpy(destptr, srcptr, srcrowbytes * height);
|
M_Memcpy(destptr, srcptr, srcrowbytes * height);
|
||||||
else
|
else
|
||||||
|
@ -472,6 +473,14 @@ void VID_BlitLinearScreen(const UINT8 *srcptr, UINT8 *destptr, INT32 width, INT3
|
||||||
srcptr += srcrowbytes;
|
srcptr += srcrowbytes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
(void)srcptr;
|
||||||
|
(void)destptr;
|
||||||
|
(void)width;
|
||||||
|
(void)height;
|
||||||
|
(void)srcrowbytes;
|
||||||
|
(void)destrowbytes;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static UINT8 hudplusalpha[11] = { 10, 8, 6, 4, 2, 0, 0, 0, 0, 0, 0};
|
static UINT8 hudplusalpha[11] = { 10, 8, 6, 4, 2, 0, 0, 0, 0, 0, 0};
|
||||||
|
@ -514,7 +523,8 @@ void V_DrawStretchyFixedPatch(fixed_t x, fixed_t y, fixed_t pscale, fixed_t vsca
|
||||||
|
|
||||||
UINT8 perplayershuffle = 0;
|
UINT8 perplayershuffle = 0;
|
||||||
|
|
||||||
if (rendermode == render_none)
|
// if (rendermode == render_none)
|
||||||
|
if (true)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
|
@ -797,7 +807,8 @@ void V_DrawCroppedPatch(fixed_t x, fixed_t y, fixed_t pscale, fixed_t vscale, IN
|
||||||
|
|
||||||
UINT8 perplayershuffle = 0;
|
UINT8 perplayershuffle = 0;
|
||||||
|
|
||||||
if (rendermode == render_none)
|
// if (rendermode == render_none)
|
||||||
|
if (true)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
|
@ -1166,7 +1177,8 @@ void V_DrawFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 c)
|
||||||
|
|
||||||
UINT8 perplayershuffle = 0;
|
UINT8 perplayershuffle = 0;
|
||||||
|
|
||||||
if (rendermode == render_none)
|
// if (rendermode == render_none)
|
||||||
|
if (true)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
|
@ -1363,7 +1375,8 @@ void V_DrawFillConsoleMap(INT32 x, INT32 y, INT32 w, INT32 h, INT32 c)
|
||||||
UINT32 alphalevel = 0;
|
UINT32 alphalevel = 0;
|
||||||
UINT8 perplayershuffle = 0;
|
UINT8 perplayershuffle = 0;
|
||||||
|
|
||||||
if (rendermode == render_none)
|
// if (rendermode == render_none)
|
||||||
|
if (true)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
|
@ -1558,7 +1571,8 @@ void V_DrawFadeFill(INT32 x, INT32 y, INT32 w, INT32 h, INT32 c, UINT16 color, U
|
||||||
UINT8 *fadetable;
|
UINT8 *fadetable;
|
||||||
UINT8 perplayershuffle = 0;
|
UINT8 perplayershuffle = 0;
|
||||||
|
|
||||||
if (rendermode == render_none)
|
// if (rendermode == render_none)
|
||||||
|
if (true)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
|
@ -1797,6 +1811,7 @@ void V_DrawPatchFill(patch_t *pat)
|
||||||
//
|
//
|
||||||
void V_DrawFadeScreen(UINT16 color, UINT8 strength)
|
void V_DrawFadeScreen(UINT16 color, UINT8 strength)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
#ifdef HWRENDER
|
#ifdef HWRENDER
|
||||||
if (rendermode == render_opengl)
|
if (rendermode == render_opengl)
|
||||||
{
|
{
|
||||||
|
@ -1819,11 +1834,16 @@ void V_DrawFadeScreen(UINT16 color, UINT8 strength)
|
||||||
for (; buf < deststop; ++buf)
|
for (; buf < deststop; ++buf)
|
||||||
*buf = fadetable[*buf];
|
*buf = fadetable[*buf];
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
(void)color;
|
||||||
|
(void)strength;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Simple translucency with one color, over a set number of lines starting from the top.
|
// Simple translucency with one color, over a set number of lines starting from the top.
|
||||||
void V_DrawFadeConsBack(INT32 plines)
|
void V_DrawFadeConsBack(INT32 plines)
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
UINT8 *deststop, *buf;
|
UINT8 *deststop, *buf;
|
||||||
|
|
||||||
#ifdef HWRENDER // not win32 only 19990829 by Kin
|
#ifdef HWRENDER // not win32 only 19990829 by Kin
|
||||||
|
@ -1840,6 +1860,9 @@ void V_DrawFadeConsBack(INT32 plines)
|
||||||
deststop = screens[0] + vid.rowbytes * min(plines, vid.height);
|
deststop = screens[0] + vid.rowbytes * min(plines, vid.height);
|
||||||
for (buf = screens[0]; buf < deststop; ++buf)
|
for (buf = screens[0]; buf < deststop; ++buf)
|
||||||
*buf = consolebgmap[*buf];
|
*buf = consolebgmap[*buf];
|
||||||
|
#else
|
||||||
|
(void)plines;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
// Very similar to F_DrawFadeConsBack, except we draw from the middle(-ish) of the screen to the bottom.
|
// Very similar to F_DrawFadeConsBack, except we draw from the middle(-ish) of the screen to the bottom.
|
||||||
|
@ -3722,7 +3745,7 @@ void V_Init(void)
|
||||||
{
|
{
|
||||||
INT32 i;
|
INT32 i;
|
||||||
UINT8 *base = vid.buffer;
|
UINT8 *base = vid.buffer;
|
||||||
const INT32 screensize = vid.rowbytes * vid.height;
|
const INT32 screensize = vid.rowbytes * vid.width;
|
||||||
|
|
||||||
LoadMapPalette();
|
LoadMapPalette();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue