Files
glide/glide3x/h5/glide3/src/gbanner.c
sezero 8b047bb95c splash and shameless plug updates:
removed experimental splash stuff from h3/h5 for non-windows.
if either of GLIDE_SPLASH or GLIDE_PLUG aren't defined their
respective data are completey excluded from the binary image,
and their respective functions aren't called at all.
2018-08-05 12:02:59 +03:00

186 lines
5.3 KiB
C

/*
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
**
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
** THE UNITED STATES.
**
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
**
** $Log:
** 3 3dfx 1.0.1.0.1.0 10/11/00 Brent Forced check in to enforce
** branching.
** 2 3dfx 1.0.1.0 06/20/00 Joseph Kain Changes to support the
** Napalm Glide open source release. Changes include cleaned up offensive
** comments and new legal headers.
** 1 3dfx 1.0 09/11/99 StarTeam VTS Administrator
** $
**
** 8 2/19/99 8:03p Peter
** new splash
**
** 7 11/21/98 10:19a Atai
** fixed test37 grChromaRangeModeExt error and rename functions
**
** 6 7/16/98 8:17a Jdt
** fxcmd.h
**
** 5 5/29/98 11:45a Atai
** 1.added _EXT for extension #defines.
** 2. change GR_TEXBASE_* values
** 3. Remove GR_TEXCHROMA_ENABLE_SUBSTITUTE_RGB
**
** 3 2/05/98 2:30p Atai
** fixed bug#1222.
**
** 2 1/22/98 10:35a Atai
** 1. introduce GLIDE_VERSION, g3\glide.h, g3\glideutl.h, g2\glide.h,
** g2\glideutl.h
** 2. fixed grChromaRange, grSstOrigin, and grGetProcAddress
*
* 1 1/16/98 4:29p Atai
* create glide 3 src
*
* 17 1/05/98 6:06p Atai
* glide extension stuff
*
* 16 12/15/97 5:52p Atai
* disable obsolete glide2 api for glide3
*
* 15 11/18/97 4:36p Peter
* make thing more translucent
*
* 14 9/15/97 7:31p Peter
* more cmdfifo cleanup, fixed normal buffer clear, banner in the right
* place, lfb's are on, Hmmmm.. probably more
*
* 13 7/26/97 3:04p Peter
* gratuitous plug is translucent
*
* 12 7/08/97 2:48p Peter
* shameless plug just uses lfb routines
*
* 11 5/27/97 1:16p Peter
* Basic cvg, w/o cmd fifo stuff.
*
* 10 5/21/97 6:05a Peter
*
* 9 5/02/97 2:08p Pgj
* screen_width/height now FxU32
*
* 8 3/16/97 2:24a Jdt
* Fixed bug. Didn't initialize info.
*
* 7 3/12/97 11:51p Jdt
* Watcom warning.
*
* 6 3/12/97 4:20p Jdt
* Fixed for VG96 and optimized SST-1
*
* 5 2/26/97 11:55a Jdt
* Updated banner for new lfb api
*
* 4 12/23/96 1:37p Dow
* chagnes for multiplatform glide
**
*/
#include <3dfx.h>
#include <glidesys.h>
#define FX_DLL_DEFINITION
#include <fxdll.h>
#include <glide.h>
#include "fxglide.h"
#include "fxcmd.h"
#ifdef GLIDE_PLUG
#if (GLIDE_PLATFORM & GLIDE_OS_WIN32)
static const void *
getPlugdata (FxU32* w, FxU32* h, FxI32* strideInBytes,
GrLfbWriteMode_t* format)
{
GR_DCL_GC;
if (gc->pluginInfo.plugProc != NULL)
return (*gc->pluginInfo.plugProc)(w,h,strideInBytes,format);
return NULL;
}
#else
static __inline const void *
getPlugdata (FxU32* w, FxU32* h, FxI32* strideInBytes,
GrLfbWriteMode_t* format)
{
return NULL;
}
#endif
void
_grShamelessPlug(void)
{
GR_BEGIN_NOFIFOCHECK("_grShamelessPlug", 80);
GDBG_INFO_MORE(gc->myLevel, "()\n");
GrState state;
FxU32 plugWidth, plugHeight;
FxI32 plugStride;
GrLfbWriteMode_t plugFormat;
const void* plugData =
getPlugdata(&plugWidth, &plugHeight, &plugStride, &plugFormat);
if (!plugData) return;
grGlideGetState(&state);
grDisableAllEffects();
grAlphaCombine(GR_COMBINE_FUNCTION_SCALE_OTHER,
GR_COMBINE_FACTOR_ONE,
GR_COMBINE_LOCAL_CONSTANT,
GR_COMBINE_OTHER_TEXTURE, FXFALSE);
grColorCombine(GR_COMBINE_FUNCTION_SCALE_OTHER,
GR_COMBINE_FACTOR_ONE,
GR_COMBINE_LOCAL_NONE,
GR_COMBINE_OTHER_TEXTURE,
FXFALSE);
grAlphaBlendFunction(GR_BLEND_SRC_ALPHA,
GR_BLEND_ONE_MINUS_SRC_ALPHA,
GR_BLEND_ZERO, GR_BLEND_ZERO);
grClipWindow(0, 0,
gc->state.screen_width - 1,
gc->state.screen_height - 1);
grDepthMask(FXFALSE);
grDepthBufferFunction(GR_CMP_ALWAYS);
grDepthBufferMode(GR_DEPTHBUFFER_DISABLE);
grChromakeyValue(0x0000);
grChromakeyMode(GR_CHROMAKEY_ENABLE);
grLfbConstantAlpha((FxU8) 0x40);
grLfbWriteColorFormat(GR_COLORFORMAT_ARGB);
_grLfbWriteRegion(FXTRUE, GR_BUFFER_BACKBUFFER,
gc->state.screen_width - (plugWidth + 1),
gc->state.screen_height - (plugHeight + 1),
GR_LFBWRITEMODE_565,
plugWidth, plugHeight,
plugStride,
plugData);
grGlideSetState(&state);
GR_END();
} /* _grShamelessPlug */
#endif /* GLIDE_PLUG */