diff --git a/glide3x/cvg/glide3/src/gbanner.c b/glide3x/cvg/glide3/src/gbanner.c index a13e3a5..fb3d378 100644 --- a/glide3x/cvg/glide3/src/gbanner.c +++ b/glide3x/cvg/glide3/src/gbanner.c @@ -93,13 +93,11 @@ #ifdef GLIDE_PLUG #include "banner.inc" -#endif /* display the translucent 3Dfx powerfield logo */ void _grShamelessPlug(void) { -#ifdef GLIDE_PLUG GrState state; GR_BEGIN_NOFIFOCHECK("_grShamelessPlug", 80); @@ -185,5 +183,5 @@ _grShamelessPlug(void) grGlideSetState(&state); GR_END(); -#endif /* GLIDE_PLUG */ } /* _grShamelessPlug */ +#endif /* GLIDE_PLUG */ diff --git a/glide3x/cvg/glide3/src/gglide.c b/glide3x/cvg/glide3/src/gglide.c index ff93de3..0a9d3cf 100644 --- a/glide3x/cvg/glide3/src/gglide.c +++ b/glide3x/cvg/glide3/src/gglide.c @@ -978,8 +978,10 @@ GR_ENTRY(grBufferSwap, void, (FxU32 swapInterval)) #endif /* (GLIDE_PLATFORM & GLIDE_HW_CVG) */ #if ((GLIDE_PLATFORM & GLIDE_HW_CVG) || (GLIDE_PLATFORM & GLIDE_HW_H3)) + #ifdef GLIDE_PLUG /* optionally display the 3Dfx powerfield logo overlay */ if (_GlideRoot.environment.shamelessPlug) _grShamelessPlug(); + #endif /* check for environmental override. * diff --git a/glide3x/cvg/glide3/src/gpci.c b/glide3x/cvg/glide3/src/gpci.c index 064d116..7ff4168 100644 --- a/glide3x/cvg/glide3/src/gpci.c +++ b/glide3x/cvg/glide3/src/gpci.c @@ -731,8 +731,16 @@ _GlideInitEnvironment(void) (((envStr = GETENV(__envVar)) == NULL) ? (__defVal) : atol(envStr)) _GlideRoot.environment.triBoundsCheck = (GETENV("FX_GLIDE_BOUNDS_CHECK") != NULL); +#ifdef GLIDE_SPLASH _GlideRoot.environment.noSplash = (GETENV("FX_GLIDE_NO_SPLASH") != NULL); +#else + _GlideRoot.environment.noSplash = 1; +#endif +#ifdef GLIDE_PLUG _GlideRoot.environment.shamelessPlug = (GETENV("FX_GLIDE_SHAMELESS_PLUG") != NULL); +#else + _GlideRoot.environment.shamelessPlug = 0; +#endif _GlideRoot.environment.ignoreReopen = (GETENV("FX_GLIDE_IGNORE_REOPEN") != NULL); _GlideRoot.environment.texLodDither = ((GETENV("FX_GLIDE_LOD_DITHER") == NULL) ? 0x00UL diff --git a/glide3x/cvg/glide3/src/gsplash.c b/glide3x/cvg/glide3/src/gsplash.c index 9002a0b..e05d09a 100644 --- a/glide3x/cvg/glide3/src/gsplash.c +++ b/glide3x/cvg/glide3/src/gsplash.c @@ -129,6 +129,13 @@ #include "fxglide.h" #include "fxinline.h" +#ifndef GLIDE_SPLASH +GR_DIENTRY(grSplash,void,(float x,float y,float w,float h,FxU32 _frame)) { +/* nothing */ +} + +#else /* GLIDE_SPLASH */ + /*----------------------------- Constants -----------------------------*/ @@ -1103,4 +1110,4 @@ GR_DIENTRY(grSplash,void,(float x,float y,float w,float h,FxU32 _frame)) grVertexLayout(GR_PARAM_Q1, gc->state.vData.q1Info.offset , gc->state.vData.q1Info.mode); } - +#endif /* GLIDE_SPLASH */ diff --git a/glide3x/cvg/glide3/src/gsst.c b/glide3x/cvg/glide3/src/gsst.c index 079850a..22e9565 100644 --- a/glide3x/cvg/glide3/src/gsst.c +++ b/glide3x/cvg/glide3/src/gsst.c @@ -1523,6 +1523,7 @@ __errSliExit: /* -------------------------------------------------------- Splash Screen --------------------------------------------------------*/ +#ifdef GLIDE_SPLASH #if (GLIDE_PLATFORM & GLIDE_OS_WIN32) if (!_GlideRoot.environment.noSplash) { HMODULE newSplash; @@ -1586,6 +1587,7 @@ __errSliExit: 0); _GlideRoot.environment.noSplash = 1; } +#endif _GlideRoot.windowsInit = FXTRUE; /* to avoid race with grSstControl() */ diff --git a/glide3x/h3/glide3/src/gbanner.c b/glide3x/h3/glide3/src/gbanner.c index fe4ccbf..93265b0 100644 --- a/glide3x/h3/glide3/src/gbanner.c +++ b/glide3x/h3/glide3/src/gbanner.c @@ -105,29 +105,43 @@ #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"); -#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) - if (gc->pluginInfo.plugProc != NULL) { - FxU32 - plugWidth, plugHeight; - FxI32 - plugStride; - GrLfbWriteMode_t - plugFormat; - const void* - plugData = (*gc->pluginInfo.plugProc)(&plugWidth, &plugHeight, - &plugStride, - &plugFormat); + GrState state; + FxU32 plugWidth, plugHeight; + FxI32 plugStride; + GrLfbWriteMode_t plugFormat; + const void* plugData = + getPlugdata(&plugWidth, &plugHeight, &plugStride, &plugFormat); + + if (!plugData) return; - if (plugData != NULL) { -#ifdef GLIDE_PLUG - GrState state; - grGlideGetState(&state); grDisableAllEffects(); @@ -165,10 +179,8 @@ _grShamelessPlug(void) plugData); grGlideSetState(&state); -#endif /* GLIDE_PLUG */ - } - } -#endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */ GR_END(); } /* _grShamelessPlug */ + +#endif /* GLIDE_PLUG */ diff --git a/glide3x/h3/glide3/src/gglide.c b/glide3x/h3/glide3/src/gglide.c index 9bd3206..4a3722d 100644 --- a/glide3x/h3/glide3/src/gglide.c +++ b/glide3x/h3/glide3/src/gglide.c @@ -1061,8 +1061,10 @@ GR_ENTRY(grBufferSwap, void, (FxU32 swapInterval)) GR_BEGIN_NOFIFOCHECK(FN_NAME,86); GDBG_INFO_MORE(gc->myLevel,"(%d)\n",swapInterval); +#ifdef GLIDE_PLUG /* optionally display the 3Dfx powerfield logo overlay */ if (_GlideRoot.environment.shamelessPlug) _grShamelessPlug(); +#endif /* check for environmental override */ if (_GlideRoot.environment.swapInterval >= 0) { @@ -1180,8 +1182,10 @@ GR_ENTRY(grDRIBufferSwap, void, (FxU32 swapInterval)) GR_BEGIN_NOFIFOCHECK(FN_NAME,86); GDBG_INFO_MORE(gc->myLevel,"(%d)\n",swapInterval); +#ifdef GLIDE_PLUG /* optionally display the 3Dfx powerfield logo overlay */ if (_GlideRoot.environment.shamelessPlug) _grShamelessPlug(); +#endif /* check for environmental override */ if (_GlideRoot.environment.swapInterval >= 0) { diff --git a/glide3x/h3/glide3/src/gpci.c b/glide3x/h3/glide3/src/gpci.c index 4e09b30..7579303 100644 --- a/glide3x/h3/glide3/src/gpci.c +++ b/glide3x/h3/glide3/src/gpci.c @@ -864,9 +864,17 @@ _GlideInitEnvironment(void) _GlideRoot.environment.triBoundsCheck = (GETENV("FX_GLIDE_BOUNDS_CHECK") != NULL); GDBG_INFO(80," triBoundsCheck: %d\n",_GlideRoot.environment.triBoundsCheck); +#ifdef GLIDE_SPLASH _GlideRoot.environment.noSplash = (GETENV("FX_GLIDE_NO_SPLASH") != NULL); +#else + _GlideRoot.environment.noSplash = 1; +#endif GDBG_INFO(80," noSplash: %d\n",_GlideRoot.environment.noSplash); +#ifdef GLIDE_PLUG _GlideRoot.environment.shamelessPlug = (GETENV("FX_GLIDE_SHAMELESS_PLUG") != NULL); +#else + _GlideRoot.environment.shamelessPlug = 0; +#endif GDBG_INFO(80," shamelessPlug: %d\n",_GlideRoot.environment.shamelessPlug); _GlideRoot.environment.ignoreReopen = (GETENV("FX_GLIDE_IGNORE_REOPEN") != NULL); GDBG_INFO(80," ignoreReopen: %d\n",_GlideRoot.environment.ignoreReopen); diff --git a/glide3x/h3/glide3/src/gsplash.c b/glide3x/h3/glide3/src/gsplash.c index 5182ee7..547c9b6 100644 --- a/glide3x/h3/glide3/src/gsplash.c +++ b/glide3x/h3/glide3/src/gsplash.c @@ -156,6 +156,19 @@ * Updated grSplash code to set all of the necessary state itself rather * than expecting the caller to do so. */ +#ifndef GLIDE_SPLASH +#include <3dfx.h> +#define FX_DLL_DEFINITION +#include +#include +#include "fxglide.h" +GR_DIENTRY(grSplash,void,(float x, float y, + float w, float h, + FxU32 frameNumber)) { +/* nothing */ +} + +#elif defined(_WIN32) #include #include <3dfx.h> @@ -188,7 +201,6 @@ GR_DIENTRY(grSplash,void,(float x, float y, GR_BEGIN_NOFIFOCHECK("grSplash", 85); GDBG_INFO_MORE(gc->myLevel,"(%f,%f,%f,%f,%d)\n", x, y, w, h, frameNumber); -#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) { GrState glideState; @@ -201,8 +213,20 @@ GR_DIENTRY(grSplash,void,(float x, float y, } grGlideSetState((const void*)&glideState); } -#endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */ GR_END(); #undef FN_NAME } + +#else /* others */ +#include <3dfx.h> +#define FX_DLL_DEFINITION +#include +#include +#include "fxglide.h" +GR_DIENTRY(grSplash,void,(float x, float y, + float w, float h, + FxU32 frameNumber)) { +/* nothing */ +} +#endif diff --git a/glide3x/h3/glide3/src/gsst.c b/glide3x/h3/glide3/src/gsst.c index c34b75f..453716e 100644 --- a/glide3x/h3/glide3/src/gsst.c +++ b/glide3x/h3/glide3/src/gsst.c @@ -696,9 +696,11 @@ clearBuffers( GrGC *gc ) static void doSplash( void ) { +#if defined(GLIDE_SPLASH) || ((GLIDE_PLATFORM & GLIDE_OS_WIN32) && defined(GLIDE_PLUG)) GR_DCL_GC; +#endif -#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) +#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) && (defined(GLIDE_SPLASH)||defined(GLIDE_PLUG)) { FxBool didLoad; @@ -742,6 +744,7 @@ doSplash( void ) } #endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */ +#ifdef GLIDE_SPLASH if (_GlideRoot.environment.noSplash == 0) { grSplash(0.0f, 0.0f, (float)gc->state.screen_width, @@ -749,6 +752,7 @@ doSplash( void ) 0); } _GlideRoot.environment.noSplash = 1; +#endif } /* doSplash */ diff --git a/glide3x/h5/glide3/src/banner.inc b/glide3x/h5/glide3/src/banner.inc deleted file mode 100644 index 13dd724..0000000 --- a/glide3x/h5/glide3/src/banner.inc +++ /dev/null @@ -1,457 +0,0 @@ -static unsigned long fxPlugWidth = 180; -static unsigned long fxPlugHeight = 90; -static unsigned long fxPlugStride = 360; -static unsigned char tga_16rle[] = { - 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, - 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, - 0xff, 0x00, 0x00, 0x98, 0x00, 0x00, 0x06, 0x00, 0x00, 0x40, 0x10, 0xa0, - 0x20, 0xe0, 0x30, 0x40, 0x41, 0x60, 0x51, 0xa0, 0x59, 0x81, 0xa0, 0x59, - 0x05, 0x80, 0x59, 0x60, 0x49, 0x20, 0x41, 0xc0, 0x28, 0x60, 0x10, 0x20, - 0x00, 0xff, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x0b, 0x20, 0x08, 0xa0, 0x20, - 0x40, 0x49, 0xe0, 0x69, 0xa1, 0x92, 0x41, 0xb3, 0xc1, 0xd3, 0xe1, 0xdb, - 0xe1, 0xdb, 0x01, 0xe4, 0x21, 0xe4, 0x21, 0xec, 0x81, 0x21, 0xec, 0x09, - 0x21, 0xec, 0x01, 0xe4, 0x01, 0xe4, 0xe1, 0xdb, 0xc1, 0xd3, 0x41, 0xbb, - 0x81, 0x8a, 0xc0, 0x61, 0xc0, 0x28, 0x00, 0x00, 0xff, 0x00, 0x00, 0x97, - 0x00, 0x00, 0x1d, 0x00, 0x00, 0xa0, 0x20, 0x80, 0x51, 0x61, 0x8a, 0x61, - 0xbb, 0xe1, 0xdb, 0x21, 0xec, 0x41, 0xf4, 0x41, 0xf4, 0x41, 0xec, 0x21, - 0xec, 0x21, 0xec, 0x21, 0xec, 0x21, 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, - 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, 0xe4, 0x01, - 0xe4, 0x21, 0xe4, 0x21, 0xec, 0x21, 0xec, 0xe1, 0xdb, 0x41, 0xb3, 0xe0, - 0x69, 0xa0, 0x20, 0xff, 0x00, 0x00, 0x92, 0x00, 0x00, 0x13, 0x00, 0x00, - 0xa0, 0x20, 0x00, 0x72, 0x41, 0xb3, 0x01, 0xe4, 0x61, 0xf4, 0x61, 0xfc, - 0x21, 0xec, 0x01, 0xe4, 0xe1, 0xdb, 0xc1, 0xd3, 0x61, 0xc3, 0x41, 0xbb, - 0x41, 0xbb, 0x41, 0xbb, 0x41, 0xbb, 0x81, 0xc3, 0xc1, 0xd3, 0xe1, 0xdb, - 0x01, 0xe4, 0x81, 0x21, 0xec, 0x01, 0x01, 0xe4, 0x01, 0xe4, 0x83, 0x01, - 0xe4, 0x06, 0x01, 0xe4, 0x01, 0xe4, 0x21, 0xec, 0x21, 0xec, 0xe1, 0xdb, - 0x81, 0x8a, 0x80, 0x20, 0xff, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x0f, 0xa0, - 0x20, 0x00, 0x72, 0x41, 0xbb, 0x21, 0xec, 0x41, 0xf4, 0x01, 0xe4, 0x41, - 0xbb, 0x81, 0x8a, 0xe0, 0x69, 0x60, 0x49, 0xe0, 0x30, 0x80, 0x18, 0x40, - 0x10, 0x20, 0x08, 0x20, 0x00, 0x00, 0x00, 0x81, 0x20, 0x00, 0x09, 0x20, - 0x08, 0x40, 0x10, 0xc0, 0x28, 0x20, 0x41, 0xc0, 0x61, 0xa1, 0x92, 0xa1, - 0xcb, 0x01, 0xe4, 0x21, 0xec, 0x01, 0xe4, 0x85, 0x01, 0xe4, 0x04, 0x01, - 0xe4, 0x41, 0xec, 0xc1, 0xd3, 0xe0, 0x69, 0x20, 0x08, 0xff, 0x00, 0x00, - 0x89, 0x00, 0x00, 0x09, 0x40, 0x10, 0x80, 0x59, 0x01, 0xab, 0x01, 0xe4, - 0x21, 0xe4, 0x41, 0xbb, 0x20, 0x7a, 0x40, 0x49, 0x80, 0x18, 0x00, 0x00, - 0x90, 0x00, 0x00, 0x05, 0x40, 0x10, 0x20, 0x41, 0x61, 0x82, 0xc1, 0xd3, - 0x21, 0xec, 0x01, 0xe4, 0x85, 0x01, 0xe4, 0x03, 0x01, 0xe4, 0x41, 0xec, - 0x21, 0xb3, 0xc0, 0x28, 0xff, 0x00, 0x00, 0x86, 0x00, 0x00, 0x07, 0xc0, - 0x28, 0x61, 0x8a, 0xa1, 0xcb, 0xe1, 0xdb, 0xe1, 0xa2, 0xa0, 0x59, 0xa0, - 0x20, 0x00, 0x00, 0x97, 0x00, 0x00, 0x04, 0x80, 0x18, 0x00, 0x72, 0xa1, - 0xd3, 0x21, 0xec, 0x01, 0xe4, 0x84, 0x01, 0xe4, 0x03, 0x01, 0xe4, 0x21, - 0xec, 0xc1, 0xd3, 0x40, 0x49, 0xff, 0x00, 0x00, 0x83, 0x00, 0x00, 0x05, - 0x40, 0x41, 0xe1, 0xa2, 0xc1, 0xd3, 0x01, 0xab, 0xa0, 0x59, 0x80, 0x18, - 0x9d, 0x00, 0x00, 0x03, 0x80, 0x20, 0x81, 0x8a, 0x21, 0xec, 0x01, 0xe4, - 0x85, 0x01, 0xe4, 0x02, 0x21, 0xec, 0x01, 0xe4, 0x60, 0x51, 0xff, 0x00, - 0x00, 0x05, 0x00, 0x00, 0x40, 0x49, 0x01, 0xab, 0x81, 0xcb, 0x81, 0x8a, - 0xe0, 0x30, 0xa2, 0x00, 0x00, 0x02, 0xa0, 0x59, 0xe1, 0xdb, 0x21, 0xec, - 0x85, 0x01, 0xe4, 0x02, 0x21, 0xe4, 0xe1, 0xdb, 0x00, 0x39, 0xfc, 0x00, - 0x00, 0x05, 0x00, 0x00, 0x60, 0x51, 0x01, 0xab, 0x21, 0xb3, 0xc0, 0x61, - 0x40, 0x10, 0xa5, 0x00, 0x00, 0x02, 0x00, 0x39, 0xa1, 0xd3, 0x21, 0xec, - 0x85, 0x01, 0xe4, 0x02, 0x21, 0xec, 0xa1, 0xcb, 0x80, 0x20, 0xf9, 0x00, - 0x00, 0x05, 0x00, 0x00, 0x40, 0x49, 0xe1, 0xa2, 0xe1, 0xa2, 0x40, 0x49, - 0x00, 0x00, 0xa8, 0x00, 0x00, 0x02, 0xe0, 0x30, 0xc1, 0xd3, 0x21, 0xec, - 0x85, 0x01, 0xe4, 0x02, 0x21, 0xec, 0x21, 0xb3, 0x20, 0x08, 0xf7, 0x00, - 0x00, 0x03, 0x00, 0x39, 0xa1, 0x92, 0xa1, 0x9a, 0x00, 0x39, 0xac, 0x00, - 0x00, 0x02, 0x00, 0x39, 0xe1, 0xdb, 0x01, 0xe4, 0x85, 0x01, 0xe4, 0x01, - 0x41, 0xec, 0x00, 0x72, 0xf5, 0x00, 0x00, 0x03, 0x80, 0x20, 0x61, 0x8a, - 0xc1, 0x9a, 0x00, 0x39, 0xaf, 0x00, 0x00, 0x02, 0xa0, 0x61, 0x21, 0xec, - 0x01, 0xe4, 0x84, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xc1, 0xd3, 0x80, 0x20, - 0xf2, 0x00, 0x00, 0x04, 0x20, 0x08, 0xc0, 0x61, 0x81, 0x92, 0x40, 0x49, - 0x00, 0x00, 0xb0, 0x00, 0x00, 0x02, 0x00, 0x00, 0xe1, 0xa2, 0x21, 0xec, - 0x85, 0x01, 0xe4, 0x01, 0x41, 0xec, 0x40, 0x7a, 0xf1, 0x00, 0x00, 0x03, - 0x20, 0x41, 0x61, 0x8a, 0xa0, 0x59, 0x20, 0x08, 0xb3, 0x00, 0x00, 0x02, - 0xc0, 0x28, 0xe1, 0xdb, 0x01, 0xe4, 0x84, 0x01, 0xe4, 0x02, 0x01, 0xe4, - 0xc1, 0xd3, 0x60, 0x18, 0xee, 0x00, 0x00, 0x03, 0x80, 0x20, 0x20, 0x7a, - 0xe0, 0x69, 0x60, 0x18, 0xb6, 0x00, 0x00, 0x01, 0x81, 0x8a, 0x21, 0xec, - 0x85, 0x01, 0xe4, 0x01, 0x21, 0xec, 0xc0, 0x61, 0xec, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x80, 0x51, 0x20, 0x7a, 0xe0, 0x30, 0xb8, 0x00, 0x00, 0x02, - 0xc0, 0x28, 0xe1, 0xdb, 0x01, 0xe4, 0x84, 0x01, 0xe4, 0x02, 0x21, 0xec, - 0x21, 0xab, 0x00, 0x00, 0xea, 0x00, 0x00, 0x03, 0xa0, 0x20, 0xe0, 0x69, - 0xa0, 0x59, 0x00, 0x00, 0xba, 0x00, 0x00, 0x01, 0xc1, 0x9a, 0x21, 0xec, - 0x84, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xe1, 0xdb, 0xa0, 0x20, 0xe8, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x40, 0x41, 0xe0, 0x69, 0xa0, 0x20, 0xbc, 0x00, - 0x00, 0x02, 0x80, 0x51, 0x21, 0xec, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, - 0x01, 0xe4, 0x21, 0xec, 0x80, 0x51, 0xe7, 0x00, 0x00, 0x03, 0x60, 0x18, - 0xa0, 0x61, 0x40, 0x49, 0x00, 0x00, 0xbd, 0x00, 0x00, 0x02, 0x80, 0x18, - 0xe1, 0xdb, 0x01, 0xe4, 0x84, 0x01, 0xe4, 0x01, 0x41, 0xec, 0x41, 0x82, - 0xe6, 0x00, 0x00, 0x02, 0x00, 0x39, 0xc0, 0x61, 0x80, 0x20, 0xbf, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x21, 0xb3, 0x21, 0xec, 0x84, 0x01, 0xe4, 0x02, - 0x21, 0xec, 0x21, 0xb3, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x03, 0x20, 0x08, - 0x60, 0x51, 0x60, 0x49, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x87, 0x20, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x09, 0xa2, 0x10, - 0x49, 0x4a, 0x4d, 0x6b, 0xef, 0x7b, 0x10, 0x84, 0x8e, 0x73, 0x0c, 0x63, - 0x49, 0x4a, 0x45, 0x29, 0x20, 0x00, 0x8f, 0x00, 0x00, 0x01, 0x41, 0x82, - 0x41, 0xec, 0x84, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xa1, 0xd3, 0x40, 0x10, - 0xe2, 0x00, 0x00, 0x02, 0x60, 0x18, 0x80, 0x59, 0xc0, 0x28, 0x94, 0x00, - 0x00, 0x00, 0x8a, 0x52, 0x87, 0x59, 0xce, 0x00, 0x8a, 0x52, 0x88, 0x00, - 0x00, 0x02, 0x28, 0x42, 0x55, 0xad, 0x5d, 0xef, 0x86, 0xff, 0xff, 0x01, - 0xdf, 0xff, 0x28, 0x42, 0x8f, 0x00, 0x00, 0x02, 0xa0, 0x59, 0x21, 0xec, - 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xe1, 0xdb, 0xc0, 0x28, - 0xe1, 0x00, 0x00, 0x02, 0xe0, 0x30, 0x60, 0x51, 0x60, 0x10, 0x95, 0x00, - 0x00, 0x00, 0x6d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x6d, 0x6b, 0x87, 0x00, - 0x00, 0x01, 0x30, 0x84, 0xff, 0xff, 0x89, 0xff, 0xff, 0x00, 0x49, 0x4a, - 0x8f, 0x00, 0x00, 0x00, 0x20, 0x41, 0x81, 0x01, 0xe4, 0x83, 0x01, 0xe4, - 0x02, 0x01, 0xe4, 0x01, 0xe4, 0x20, 0x41, 0xdf, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x20, 0x41, 0x20, 0x41, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x4d, - 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x86, 0x00, 0x00, 0x00, 0xcf, - 0x7b, 0x8b, 0xff, 0xff, 0x00, 0x49, 0x4a, 0x8f, 0x00, 0x00, 0x02, 0xc0, - 0x28, 0xe1, 0xdb, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0x21, - 0xe4, 0x80, 0x51, 0xde, 0x00, 0x00, 0x02, 0x40, 0x10, 0x40, 0x49, 0xa0, - 0x28, 0x98, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x85, 0x00, 0x00, 0x01, 0x45, 0x29, 0xbe, 0xf7, 0x8b, 0xff, 0xff, - 0x00, 0x49, 0x4a, 0x8f, 0x00, 0x00, 0x02, 0x80, 0x20, 0xe1, 0xdb, 0x01, - 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0x21, 0xec, 0xa0, 0x59, 0xdd, - 0x00, 0x00, 0x02, 0x60, 0x18, 0x40, 0x49, 0x60, 0x18, 0x99, 0x00, 0x00, - 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x85, 0x00, 0x00, - 0x00, 0x51, 0x8c, 0x8c, 0xff, 0xff, 0x00, 0x49, 0x4a, 0x8f, 0x00, 0x00, - 0x02, 0x60, 0x10, 0xc1, 0xd3, 0x01, 0xe4, 0x84, 0x01, 0xe4, 0x01, 0x21, - 0xec, 0xc0, 0x61, 0xdc, 0x00, 0x00, 0x02, 0xa0, 0x20, 0x20, 0x41, 0x20, - 0x08, 0x9a, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0x00, 0x00, 0x38, 0xc6, 0x8c, 0xff, 0xff, - 0x00, 0x49, 0x4a, 0x8f, 0x00, 0x00, 0x02, 0x40, 0x10, 0xc1, 0xd3, 0x01, - 0xe4, 0x84, 0x01, 0xe4, 0x01, 0x21, 0xec, 0xc0, 0x61, 0xdb, 0x00, 0x00, - 0x02, 0xe0, 0x30, 0x00, 0x39, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x4d, - 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0x61, - 0x08, 0x5d, 0xef, 0x89, 0xff, 0xff, 0x03, 0x7d, 0xef, 0x9a, 0xd6, 0x59, - 0xce, 0xc7, 0x39, 0x8f, 0x00, 0x00, 0x02, 0x40, 0x10, 0xc1, 0xd3, 0x01, - 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0x21, 0xec, 0xa0, 0x59, 0xd9, - 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x39, 0xc0, 0x28, 0x9d, 0x00, 0x00, - 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xc3, 0x18, 0xbe, 0xf7, 0x87, 0xff, 0xff, 0x05, 0x3c, 0xe7, 0x2c, - 0x63, 0xa2, 0x10, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, - 0x02, 0x60, 0x10, 0xc1, 0xd3, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, - 0xe4, 0x21, 0xec, 0x80, 0x51, 0xd8, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x39, 0xa0, 0x20, 0x9e, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, - 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0x04, 0x21, 0xbe, 0xf7, 0x86, - 0xff, 0xff, 0x01, 0xff, 0xff, 0x28, 0x42, 0x94, 0x00, 0x00, 0x02, 0x80, - 0x20, 0xe1, 0xdb, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0x01, - 0xe4, 0x40, 0x41, 0xd7, 0x00, 0x00, 0x02, 0x20, 0x08, 0x00, 0x39, 0x80, - 0x18, 0x9f, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x01, 0x79, 0xce, 0x00, 0x00, 0x94, 0x00, 0x00, 0x02, 0xc0, 0x28, 0xe1, - 0xdb, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xe1, 0xdb, 0xe0, - 0x30, 0xd6, 0x00, 0x00, 0x02, 0x40, 0x08, 0x20, 0x39, 0x60, 0x10, 0xa0, - 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, - 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xb6, - 0xb5, 0x95, 0x00, 0x00, 0x02, 0x00, 0x39, 0x01, 0xe4, 0x01, 0xe4, 0x83, - 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xc1, 0xdb, 0x80, 0x18, 0xd5, 0x00, 0x00, - 0x02, 0x20, 0x08, 0x00, 0x39, 0x40, 0x08, 0xa1, 0x00, 0x00, 0x00, 0x4d, - 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, - 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x95, 0x00, 0x00, - 0x02, 0x60, 0x51, 0x21, 0xe4, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, - 0xe4, 0x81, 0xc3, 0x20, 0x08, 0xd5, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0xa2, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0xd7, 0xbd, 0x95, 0x00, 0x00, 0x01, 0xe0, 0x69, 0x41, 0xec, 0x84, - 0x01, 0xe4, 0x02, 0x21, 0xec, 0xe1, 0xa2, 0x00, 0x00, 0xfa, 0x00, 0x00, - 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x95, - 0x00, 0x00, 0x01, 0x81, 0x8a, 0x41, 0xec, 0x84, 0x01, 0xe4, 0x01, 0x41, - 0xec, 0x41, 0x82, 0xfb, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, - 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, - 0xff, 0xff, 0x00, 0xb6, 0xb5, 0x94, 0x00, 0x00, 0x02, 0x00, 0x00, 0x21, - 0xb3, 0x21, 0xec, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0x21, 0xec, 0xa0, - 0x61, 0xdb, 0x00, 0x00, 0x07, 0x20, 0x00, 0x86, 0x31, 0xcb, 0x5a, 0x4d, - 0x6b, 0x4d, 0x6b, 0xaa, 0x52, 0x86, 0x31, 0x61, 0x08, 0x8f, 0x00, 0x00, - 0x05, 0x04, 0x21, 0x69, 0x4a, 0x2c, 0x63, 0x0c, 0x63, 0xe7, 0x39, 0x61, - 0x08, 0x81, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x81, 0x00, 0x00, 0x82, 0x00, 0x00, 0x01, 0x04, 0x21, 0xbe, 0xf7, - 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x84, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x87, 0x00, 0x00, 0x85, 0x00, 0x00, 0x02, 0x60, 0x10, 0xc1, - 0xd3, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0x01, 0xe4, 0x00, - 0x39, 0xd9, 0x00, 0x00, 0x03, 0x20, 0x00, 0x0c, 0x63, 0x59, 0xce, 0xdf, - 0xff, 0x83, 0xff, 0xff, 0x03, 0xdf, 0xff, 0xfb, 0xde, 0x30, 0x84, 0x24, - 0x21, 0x8b, 0x00, 0x00, 0x02, 0x24, 0x21, 0x14, 0xa5, 0x9e, 0xf7, 0x82, - 0xff, 0xff, 0x04, 0xff, 0xff, 0xdb, 0xde, 0x6d, 0x6b, 0x00, 0x00, 0x2c, - 0x63, 0x87, 0xff, 0xff, 0x02, 0x4d, 0x6b, 0x00, 0x00, 0x0c, 0x63, 0x81, - 0xf7, 0xbd, 0x02, 0xf7, 0xbd, 0x38, 0xc6, 0xff, 0xff, 0x86, 0xff, 0xff, - 0x00, 0x7d, 0xef, 0x81, 0xf7, 0xbd, 0x81, 0xf7, 0xbd, 0x03, 0x14, 0xa5, - 0x00, 0x00, 0xe7, 0x39, 0x18, 0xc6, 0x86, 0xf7, 0xbd, 0x00, 0xcf, 0x7b, - 0x84, 0x00, 0x00, 0x02, 0x00, 0x39, 0x01, 0xe4, 0x01, 0xe4, 0x83, 0x01, - 0xe4, 0x02, 0x01, 0xe4, 0xc1, 0xd3, 0x60, 0x10, 0xd8, 0x00, 0x00, 0x01, - 0xc3, 0x18, 0xb6, 0xb5, 0x89, 0xff, 0xff, 0x01, 0x5d, 0xef, 0xeb, 0x5a, - 0x89, 0x00, 0x00, 0x01, 0x86, 0x31, 0x1c, 0xe7, 0x87, 0xff, 0xff, 0x01, - 0xb2, 0x94, 0x6d, 0x6b, 0x87, 0xff, 0xff, 0x02, 0x4d, 0x6b, 0x00, 0x00, - 0x30, 0x84, 0x90, 0xff, 0xff, 0x03, 0x1c, 0xe7, 0x20, 0x00, 0xa2, 0x10, - 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x01, 0x5d, 0xef, 0x61, 0x08, 0x83, 0x00, - 0x00, 0x02, 0xc0, 0x61, 0x21, 0xec, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, - 0x21, 0xec, 0x21, 0xab, 0x00, 0x00, 0xd7, 0x00, 0x00, 0x01, 0xe3, 0x18, - 0x9a, 0xd6, 0x8c, 0xff, 0xff, 0x00, 0xcf, 0x7b, 0x87, 0x00, 0x00, 0x01, - 0xc3, 0x18, 0xfb, 0xde, 0x89, 0xff, 0xff, 0x00, 0x3c, 0xe7, 0x87, 0xff, - 0xff, 0x02, 0x4d, 0x6b, 0x00, 0x00, 0x10, 0x84, 0x90, 0xff, 0xff, 0x03, - 0xdb, 0xde, 0x41, 0x08, 0x00, 0x00, 0xd3, 0x9c, 0x87, 0xff, 0xff, 0x00, - 0xeb, 0x5a, 0x83, 0x00, 0x00, 0x01, 0xa1, 0x92, 0x21, 0xec, 0x84, 0x01, - 0xe4, 0x01, 0x41, 0xec, 0x21, 0x7a, 0xd7, 0x00, 0x00, 0x01, 0x20, 0x00, - 0xf7, 0xbd, 0x8e, 0xff, 0xff, 0x00, 0xcb, 0x5a, 0x85, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x75, 0xad, 0x93, 0xff, 0xff, 0x02, 0x4d, 0x6b, 0x00, 0x00, - 0x10, 0x84, 0x90, 0xff, 0xff, 0x03, 0xdb, 0xde, 0x41, 0x08, 0x00, 0x00, - 0x08, 0x42, 0x87, 0xff, 0xff, 0x00, 0xb6, 0xb5, 0x82, 0x00, 0x00, 0x02, - 0x40, 0x10, 0xa1, 0xcb, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, - 0x01, 0xe4, 0x40, 0x49, 0xd7, 0x00, 0x00, 0x00, 0x8e, 0x73, 0x8f, 0xff, - 0xff, 0x01, 0x3c, 0xe7, 0xa2, 0x10, 0x84, 0x00, 0x00, 0x00, 0x28, 0x42, - 0x94, 0xff, 0xff, 0x02, 0x4d, 0x6b, 0x00, 0x00, 0x10, 0x84, 0x90, 0xff, - 0xff, 0x04, 0xdb, 0xde, 0x41, 0x08, 0x00, 0x00, 0x20, 0x00, 0x9a, 0xd6, - 0x86, 0xff, 0xff, 0x01, 0xbe, 0xf7, 0x24, 0x21, 0x81, 0x00, 0x00, 0x02, - 0x40, 0x49, 0x21, 0xe4, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, - 0xc1, 0xd3, 0x60, 0x18, 0xd6, 0x00, 0x00, 0x01, 0x61, 0x08, 0xfb, 0xde, - 0x86, 0xff, 0xff, 0x01, 0xba, 0xd6, 0x7d, 0xef, 0x87, 0xff, 0xff, 0x00, - 0x6d, 0x6b, 0x84, 0x00, 0x00, 0x00, 0x75, 0xad, 0x87, 0xff, 0xff, 0x03, - 0x3c, 0xe7, 0x92, 0x94, 0x51, 0x8c, 0x59, 0xce, 0x88, 0xff, 0xff, 0x02, - 0x4d, 0x6b, 0x00, 0x00, 0x10, 0x84, 0x90, 0xff, 0xff, 0x01, 0xfb, 0xde, - 0x41, 0x08, 0x81, 0x00, 0x00, 0x00, 0x8e, 0x73, 0x87, 0xff, 0xff, 0x00, - 0x10, 0x84, 0x81, 0x00, 0x00, 0x01, 0x61, 0x82, 0x41, 0xec, 0x84, 0x01, - 0xe4, 0x01, 0x21, 0xec, 0xc1, 0xa2, 0xd7, 0x00, 0x00, 0x00, 0xaa, 0x52, - 0x85, 0xff, 0xff, 0x04, 0x7d, 0xef, 0xaa, 0x52, 0x41, 0x08, 0x45, 0x29, - 0xdb, 0xde, 0x86, 0xff, 0xff, 0x01, 0xf7, 0xbd, 0x00, 0x00, 0x82, 0x00, - 0x00, 0x01, 0xe3, 0x18, 0x9e, 0xf7, 0x86, 0xff, 0xff, 0x01, 0x7d, 0xef, - 0x86, 0x31, 0x81, 0x00, 0x00, 0x01, 0x41, 0x08, 0x55, 0xad, 0x87, 0xff, - 0xff, 0x02, 0x4d, 0x6b, 0x00, 0x00, 0xef, 0x7b, 0x82, 0xdf, 0xff, 0x00, - 0xdf, 0xff, 0x87, 0xff, 0xff, 0x00, 0xff, 0xff, 0x83, 0xdf, 0xff, 0x01, - 0xba, 0xd6, 0x41, 0x08, 0x81, 0x00, 0x00, 0x01, 0xe3, 0x18, 0x7d, 0xef, - 0x86, 0xff, 0xff, 0x04, 0xfb, 0xde, 0x41, 0x08, 0x00, 0x00, 0x41, 0xbb, - 0x21, 0xe4, 0x84, 0x01, 0xe4, 0x01, 0x21, 0xec, 0xc0, 0x61, 0xd7, 0x00, - 0x00, 0x00, 0xb2, 0x94, 0x85, 0xff, 0xff, 0x00, 0x6d, 0x6b, 0x82, 0x00, - 0x00, 0x00, 0x2c, 0x63, 0x86, 0xff, 0xff, 0x01, 0x9e, 0xf7, 0xa2, 0x10, - 0x82, 0x00, 0x00, 0x00, 0xcb, 0x5a, 0x87, 0xff, 0xff, 0x00, 0xf3, 0x9c, - 0x83, 0x00, 0x00, 0x00, 0x2c, 0x63, 0x87, 0xff, 0xff, 0x02, 0x4d, 0x6b, - 0x00, 0x00, 0xa2, 0x10, 0x81, 0x65, 0x29, 0x02, 0x65, 0x29, 0x28, 0x42, - 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0x38, 0xc6, 0x83, 0x65, 0x29, 0x01, - 0x24, 0x21, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x55, 0xad, 0x87, 0xff, - 0xff, 0x01, 0x29, 0x42, 0x80, 0x28, 0x81, 0x01, 0xe4, 0x83, 0x01, 0xe4, - 0x02, 0x01, 0xe4, 0xe1, 0xdb, 0xa0, 0x28, 0xd7, 0x00, 0x00, 0x00, 0x18, - 0xc6, 0x84, 0xff, 0xff, 0x01, 0x3c, 0xe7, 0x41, 0x08, 0x82, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x85, 0xff, 0xff, 0x01, 0xdf, 0xff, 0x86, - 0x31, 0x82, 0x00, 0x00, 0x00, 0x92, 0x94, 0x87, 0xff, 0xff, 0x00, 0x0c, - 0x63, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xc3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0xb6, 0xb5, 0x88, 0x00, 0x00, 0x00, 0x8a, 0x52, 0x87, 0xff, 0xff, - 0x02, 0x15, 0x9d, 0x20, 0x7a, 0x21, 0xec, 0x84, 0x01, 0xe4, 0x02, 0x21, - 0xec, 0x01, 0xab, 0x00, 0x00, 0xd6, 0x00, 0x00, 0x07, 0x00, 0x00, 0x0c, - 0x63, 0x92, 0x94, 0x34, 0xa5, 0xf7, 0xbd, 0x9a, 0xd6, 0x7d, 0xef, 0x96, - 0xb5, 0x83, 0x00, 0x00, 0x01, 0x41, 0x08, 0xfb, 0xde, 0x85, 0xff, 0xff, - 0x01, 0xff, 0xff, 0xe7, 0x39, 0x81, 0x00, 0x00, 0x01, 0x20, 0x00, 0x59, - 0xce, 0x86, 0xff, 0xff, 0x01, 0xff, 0xff, 0xc7, 0x39, 0x83, 0x00, 0x00, - 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x88, - 0x00, 0x00, 0x01, 0x41, 0x08, 0xdb, 0xde, 0x86, 0xff, 0xff, 0x02, 0x9d, - 0xf7, 0xe3, 0xd3, 0xe1, 0xe3, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0x21, - 0xec, 0xa0, 0x61, 0xdb, 0x00, 0x00, 0x04, 0x00, 0x00, 0x20, 0x00, 0x82, - 0x10, 0xa2, 0x10, 0x00, 0x00, 0x82, 0x00, 0x00, 0x01, 0x20, 0x00, 0x9a, - 0xd6, 0x85, 0xff, 0xff, 0x01, 0xff, 0xff, 0xc7, 0x39, 0x81, 0x00, 0x00, - 0x01, 0xa2, 0x10, 0x9e, 0xf7, 0x86, 0xff, 0xff, 0x01, 0xbe, 0xf7, 0xe3, - 0x18, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0xd7, 0xbd, 0x89, 0x00, 0x00, 0x00, 0x71, 0x8c, 0x86, 0xff, 0xff, - 0x02, 0xb5, 0xf6, 0xe1, 0xe3, 0xe1, 0xe3, 0x83, 0x01, 0xe4, 0x02, 0x01, - 0xe4, 0xe1, 0xdb, 0x80, 0x20, 0xe3, 0x00, 0x00, 0x01, 0x20, 0x00, 0x79, - 0xce, 0x85, 0xff, 0xff, 0x01, 0xdf, 0xff, 0x65, 0x29, 0x81, 0x00, 0x00, - 0x01, 0x86, 0x31, 0xdf, 0xff, 0x86, 0xff, 0xff, 0x01, 0x7d, 0xef, 0x61, - 0x08, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0xd7, 0xbd, 0x89, 0x00, 0x00, 0x01, 0xa6, 0x31, 0xdf, 0xff, 0x85, - 0xff, 0xff, 0x01, 0x4b, 0xed, 0xc0, 0xdb, 0x84, 0x01, 0xe4, 0x02, 0x21, - 0xec, 0xc1, 0x9a, 0x00, 0x00, 0xe3, 0x00, 0x00, 0x01, 0x20, 0x00, 0xfb, - 0xde, 0x85, 0xff, 0xff, 0x01, 0x9e, 0xf7, 0xc3, 0x18, 0x81, 0x00, 0x00, - 0x00, 0x69, 0x4a, 0x87, 0xff, 0xff, 0x01, 0x1c, 0xe7, 0x41, 0x08, 0x83, - 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, - 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, - 0xbd, 0x89, 0x00, 0x00, 0x01, 0x00, 0x00, 0x18, 0xc6, 0x84, 0xff, 0xff, - 0x02, 0x7b, 0xff, 0x23, 0xe4, 0xe1, 0xe3, 0x83, 0x01, 0xe4, 0x02, 0x01, - 0xe4, 0x01, 0xe4, 0x20, 0x41, 0xe4, 0x00, 0x00, 0x01, 0x86, 0x31, 0xdf, - 0xff, 0x85, 0xff, 0xff, 0x01, 0x79, 0xce, 0x20, 0x00, 0x81, 0x00, 0x00, - 0x00, 0x0c, 0x63, 0x87, 0xff, 0xff, 0x01, 0xdb, 0xde, 0x41, 0x08, 0x83, - 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, - 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, - 0xbd, 0x8a, 0x00, 0x00, 0x00, 0x6d, 0x6b, 0x84, 0xff, 0xff, 0x01, 0xcf, - 0xed, 0xc0, 0xdb, 0x84, 0x01, 0xe4, 0x02, 0x21, 0xec, 0x41, 0xbb, 0x00, - 0x00, 0xe3, 0x00, 0x00, 0x01, 0x00, 0x00, 0x96, 0xb5, 0x86, 0xff, 0xff, - 0x00, 0x30, 0x84, 0x82, 0x00, 0x00, 0x00, 0x8e, 0x73, 0x87, 0xff, 0xff, - 0x01, 0x9a, 0xd6, 0x20, 0x00, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, - 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, - 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x8a, 0x00, 0x00, 0x01, 0xc3, - 0x18, 0x7d, 0xef, 0x82, 0xff, 0xff, 0x02, 0x9d, 0xff, 0x44, 0xe4, 0xe0, - 0xdb, 0x84, 0x01, 0xe4, 0x01, 0x21, 0xec, 0xe0, 0x69, 0xdf, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x41, 0x08, 0x61, 0x08, 0xc3, 0x18, 0x49, 0x4a, 0x96, - 0xb5, 0x86, 0xff, 0xff, 0x01, 0xdf, 0xff, 0x65, 0x29, 0x82, 0x00, 0x00, - 0x00, 0xef, 0x7b, 0x87, 0xff, 0xff, 0x01, 0x79, 0xce, 0x20, 0x00, 0x83, - 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, - 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, - 0xbd, 0x8b, 0x00, 0x00, 0x00, 0x55, 0xad, 0x82, 0xff, 0xff, 0x01, 0x53, - 0xf6, 0xc0, 0xdb, 0x84, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xc1, 0xd3, 0x60, - 0x18, 0xdf, 0x00, 0x00, 0x03, 0x04, 0x21, 0x9a, 0xd6, 0x1c, 0xe7, 0x9e, - 0xf7, 0x88, 0xff, 0xff, 0x00, 0xcf, 0x7b, 0x83, 0x00, 0x00, 0x00, 0x30, - 0x84, 0x87, 0xff, 0xff, 0x01, 0x59, 0xce, 0x20, 0x00, 0x83, 0x00, 0x00, - 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x8b, - 0x00, 0x00, 0x00, 0x8a, 0x52, 0x81, 0xff, 0xff, 0x02, 0xde, 0xff, 0xa6, - 0xe4, 0xe0, 0xdb, 0x84, 0x01, 0xe4, 0x01, 0x41, 0xec, 0x81, 0x8a, 0xe0, - 0x00, 0x00, 0x01, 0x24, 0x21, 0xff, 0xff, 0x87, 0xff, 0xff, 0x03, 0xff, - 0xff, 0x3c, 0xe7, 0xae, 0x73, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x92, - 0x94, 0x87, 0xff, 0xff, 0x01, 0x59, 0xce, 0x20, 0x00, 0x83, 0x00, 0x00, - 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x8b, - 0x00, 0x00, 0x05, 0x20, 0x00, 0x9a, 0xd6, 0xff, 0xff, 0x95, 0xf6, 0xc0, - 0xdb, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xe1, 0xdb, 0xc0, - 0x28, 0xe0, 0x00, 0x00, 0x01, 0x24, 0x21, 0xbe, 0xf7, 0x87, 0xff, 0xff, - 0x01, 0x9e, 0xf7, 0x8e, 0x73, 0x85, 0x00, 0x00, 0x00, 0xd3, 0x9c, 0x87, - 0xff, 0xff, 0x01, 0x59, 0xce, 0x20, 0x00, 0x83, 0x00, 0x00, 0x00, 0x4d, - 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, - 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x8c, 0x00, 0x00, - 0x03, 0xcf, 0x73, 0xff, 0xff, 0xc7, 0xe4, 0xc0, 0xdb, 0x84, 0x01, 0xe4, - 0x01, 0x21, 0xec, 0xa1, 0x9a, 0xe1, 0x00, 0x00, 0x01, 0x24, 0x21, 0xbe, - 0xf7, 0x87, 0xff, 0xff, 0x03, 0xff, 0xff, 0xdf, 0xff, 0x38, 0xc6, 0x86, - 0x31, 0x83, 0x00, 0x00, 0x00, 0xf3, 0x9c, 0x87, 0xff, 0xff, 0x01, 0x59, - 0xce, 0x20, 0x00, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, - 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, - 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x8c, 0x00, 0x00, 0x03, 0x66, 0x29, 0x54, - 0xee, 0xe0, 0xe3, 0x01, 0xe4, 0x83, 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xe1, - 0xe3, 0xe0, 0x38, 0xe1, 0x00, 0x00, 0x01, 0x24, 0x21, 0xbe, 0xf7, 0x8a, - 0xff, 0xff, 0x01, 0x5d, 0xef, 0x86, 0x31, 0x82, 0x00, 0x00, 0x00, 0xd3, - 0x9c, 0x87, 0xff, 0xff, 0x01, 0x59, 0xce, 0x20, 0x00, 0x83, 0x00, 0x00, - 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x8c, - 0x00, 0x00, 0x02, 0x20, 0x00, 0xc3, 0xc3, 0x01, 0xe4, 0x84, 0x01, 0xe4, - 0x02, 0xe0, 0xe3, 0x09, 0xed, 0x28, 0x42, 0xe1, 0x00, 0x00, 0x01, 0x24, - 0x21, 0xff, 0xff, 0x8b, 0xff, 0xff, 0x01, 0x79, 0xce, 0x41, 0x08, 0x81, - 0x00, 0x00, 0x00, 0x71, 0x8c, 0x87, 0xff, 0xff, 0x01, 0x59, 0xce, 0x20, - 0x00, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0xd7, 0xbd, 0x8c, 0x00, 0x00, 0x02, 0x40, 0x49, 0x01, 0xe4, 0x01, - 0xe4, 0x83, 0x01, 0xe4, 0x03, 0xe1, 0xe3, 0xe1, 0xe3, 0x58, 0xff, 0x55, - 0xa5, 0xe1, 0x00, 0x00, 0x05, 0x61, 0x08, 0xeb, 0x5a, 0x2c, 0x63, 0x8e, - 0x73, 0xf3, 0x9c, 0x7d, 0xef, 0x88, 0xff, 0xff, 0x00, 0xaa, 0x52, 0x81, - 0x00, 0x00, 0x00, 0x51, 0x8c, 0x87, 0xff, 0xff, 0x01, 0x59, 0xce, 0x20, - 0x00, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0xd7, 0xbd, 0x8b, 0x00, 0x00, 0x02, 0x20, 0x08, 0x41, 0xbb, 0x21, - 0xec, 0x84, 0x01, 0xe4, 0x04, 0xc0, 0xdb, 0x09, 0xed, 0xff, 0xff, 0x7d, - 0xef, 0xa2, 0x10, 0xe5, 0x00, 0x00, 0x01, 0x45, 0x29, 0x79, 0xce, 0x87, - 0xff, 0xff, 0x00, 0x34, 0xa5, 0x81, 0x00, 0x00, 0x00, 0x10, 0x84, 0x87, - 0xff, 0xff, 0x01, 0x79, 0xce, 0x20, 0x00, 0x83, 0x00, 0x00, 0x00, 0x4d, - 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, - 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x8b, 0x00, 0x00, - 0x01, 0xe0, 0x69, 0x41, 0xec, 0x84, 0x01, 0xe4, 0x02, 0xe1, 0xe3, 0xe1, - 0xdb, 0xf8, 0xf6, 0x81, 0xff, 0xff, 0x00, 0x6d, 0x6b, 0xe6, 0x00, 0x00, - 0x01, 0x08, 0x42, 0xff, 0xff, 0x86, 0xff, 0xff, 0x03, 0xfb, 0xde, 0x41, - 0x08, 0x00, 0x00, 0xae, 0x73, 0x87, 0xff, 0xff, 0x01, 0x9a, 0xd6, 0x20, - 0x00, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0xd7, 0xbd, 0x8a, 0x00, 0x00, 0x02, 0x60, 0x18, 0xa1, 0xcb, 0x01, - 0xe4, 0x84, 0x01, 0xe4, 0x01, 0xc0, 0xdb, 0x6c, 0xed, 0x82, 0xff, 0xff, - 0x00, 0xf7, 0xbd, 0xe6, 0x00, 0x00, 0x01, 0x20, 0x00, 0xba, 0xd6, 0x86, - 0xff, 0xff, 0x03, 0xbe, 0xf7, 0x04, 0x21, 0x00, 0x00, 0x2c, 0x63, 0x87, - 0xff, 0xff, 0x01, 0xdb, 0xde, 0x41, 0x08, 0x83, 0x00, 0x00, 0x00, 0x4d, - 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, - 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x8a, 0x00, 0x00, - 0x01, 0x61, 0x82, 0x41, 0xec, 0x84, 0x01, 0xe4, 0x02, 0xe1, 0xdb, 0x02, - 0xe4, 0x5a, 0xff, 0x82, 0xff, 0xff, 0x01, 0xdf, 0xff, 0x65, 0x29, 0xe6, - 0x00, 0x00, 0x00, 0xd7, 0xbd, 0x86, 0xff, 0xff, 0x03, 0xdf, 0xff, 0xa6, - 0x31, 0x00, 0x00, 0x8a, 0x52, 0x87, 0xff, 0xff, 0x01, 0xfb, 0xde, 0x41, - 0x08, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, - 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0xd7, 0xbd, 0x89, 0x00, 0x00, 0x02, 0xe0, 0x30, 0x01, 0xdc, 0x01, - 0xe4, 0x84, 0x01, 0xe4, 0x01, 0xc0, 0xdb, 0xcf, 0xed, 0x84, 0xff, 0xff, - 0x00, 0x51, 0x8c, 0xde, 0x00, 0x00, 0x02, 0x00, 0x00, 0x41, 0x08, 0x20, - 0x00, 0x84, 0x00, 0x00, 0x00, 0x96, 0xb5, 0x86, 0xff, 0xff, 0x04, 0xff, - 0xff, 0xe7, 0x39, 0x00, 0x00, 0xe7, 0x39, 0xff, 0xff, 0x86, 0xff, 0xff, - 0x01, 0x7d, 0xef, 0x61, 0x08, 0x83, 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, - 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, - 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x88, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x01, 0xab, 0x21, 0xec, 0x84, 0x01, 0xe4, 0x02, 0xe0, 0xdb, 0x64, - 0xe4, 0xbd, 0xff, 0x84, 0xff, 0xff, 0x01, 0xdb, 0xde, 0x41, 0x08, 0xd8, - 0x00, 0x00, 0x07, 0x45, 0x29, 0xef, 0x7b, 0x71, 0x8c, 0xf3, 0x9c, 0x96, - 0xb5, 0x18, 0xc6, 0xba, 0xd6, 0x30, 0x84, 0x84, 0x00, 0x00, 0x00, 0xb6, - 0xb5, 0x86, 0xff, 0xff, 0x04, 0xff, 0xff, 0xc7, 0x39, 0x00, 0x00, 0x04, - 0x21, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x01, 0xbe, 0xf7, 0xe3, 0x18, 0x83, - 0x00, 0x00, 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, - 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, - 0xbd, 0x88, 0x00, 0x00, 0x02, 0xa0, 0x59, 0x21, 0xec, 0x01, 0xe4, 0x83, - 0x01, 0xe4, 0x02, 0xe1, 0xe3, 0xe0, 0xe3, 0x73, 0xf6, 0x86, 0xff, 0xff, - 0x00, 0x69, 0x4a, 0xd8, 0x00, 0x00, 0x00, 0x0c, 0x63, 0x85, 0xff, 0xff, - 0x00, 0x34, 0xa5, 0x83, 0x00, 0x00, 0x01, 0x00, 0x00, 0x38, 0xc6, 0x86, - 0xff, 0xff, 0x04, 0xbe, 0xf7, 0x04, 0x21, 0x00, 0x00, 0x41, 0x08, 0x1c, - 0xe7, 0x86, 0xff, 0xff, 0x01, 0xff, 0xff, 0xe7, 0x39, 0x83, 0x00, 0x00, - 0x00, 0x4d, 0x6b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x87, - 0x00, 0x00, 0x02, 0x60, 0x18, 0xa1, 0xcb, 0x21, 0xe4, 0x84, 0x01, 0xe4, - 0x02, 0xe0, 0xe3, 0x46, 0xd4, 0xdf, 0xff, 0x86, 0xff, 0xff, 0x00, 0x96, - 0xb5, 0xd8, 0x00, 0x00, 0x01, 0xc7, 0x39, 0xff, 0xff, 0x84, 0xff, 0xff, - 0x00, 0x38, 0xc6, 0x83, 0x00, 0x00, 0x01, 0x61, 0x08, 0x5d, 0xef, 0x86, - 0xff, 0xff, 0x01, 0xba, 0xd6, 0x20, 0x00, 0x81, 0x00, 0x00, 0x00, 0x75, - 0xad, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x83, 0x00, 0x00, 0x00, 0x2c, - 0x63, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, - 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x86, 0x00, 0x00, - 0x02, 0x00, 0x00, 0xc1, 0x9a, 0x21, 0xec, 0x84, 0x01, 0xe4, 0x03, 0x01, - 0xe4, 0xa1, 0xd3, 0x22, 0x31, 0xbb, 0xd6, 0x86, 0xff, 0xff, 0x01, 0xdf, - 0xff, 0x45, 0x29, 0xd7, 0x00, 0x00, 0x01, 0x82, 0x10, 0x5d, 0xef, 0x84, - 0xff, 0xff, 0x01, 0xbe, 0xf7, 0x86, 0x31, 0x82, 0x00, 0x00, 0x00, 0xaa, - 0x52, 0x87, 0xff, 0xff, 0x00, 0x92, 0x94, 0x82, 0x00, 0x00, 0x00, 0xae, - 0x73, 0x87, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x83, 0x00, 0x00, 0x00, 0xef, - 0x7b, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, - 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x86, 0x00, 0x00, - 0x02, 0x80, 0x51, 0x21, 0xec, 0x01, 0xe4, 0x84, 0x01, 0xe4, 0x03, 0x21, - 0xec, 0x00, 0x72, 0x00, 0x00, 0x51, 0x8c, 0x87, 0xff, 0xff, 0x00, 0xcf, - 0x7b, 0xd8, 0x00, 0x00, 0x00, 0x96, 0xb5, 0x85, 0xff, 0xff, 0x04, 0x79, - 0xce, 0xe7, 0x39, 0x61, 0x08, 0xc7, 0x39, 0xdb, 0xde, 0x87, 0xff, 0xff, - 0x00, 0x08, 0x42, 0x82, 0x00, 0x00, 0x00, 0xe7, 0x39, 0x87, 0xff, 0xff, - 0x05, 0xff, 0xff, 0xb2, 0x94, 0x28, 0x42, 0x49, 0x4a, 0x71, 0x8c, 0x9e, - 0xf7, 0x87, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, - 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x85, 0x00, 0x00, - 0x02, 0x80, 0x20, 0xc1, 0xd3, 0x21, 0xe4, 0x84, 0x01, 0xe4, 0x05, 0x21, - 0xec, 0x41, 0xb3, 0x20, 0x08, 0x00, 0x00, 0x65, 0x29, 0xdf, 0xff, 0x86, - 0xff, 0xff, 0x01, 0xba, 0xd6, 0x20, 0x00, 0xd7, 0x00, 0x00, 0x00, 0xcb, - 0x5a, 0x86, 0xff, 0xff, 0x02, 0xff, 0xff, 0x7d, 0xef, 0xdf, 0xff, 0x87, - 0xff, 0xff, 0x01, 0x59, 0xce, 0x20, 0x00, 0x82, 0x00, 0x00, 0x01, 0x41, - 0x08, 0xdb, 0xde, 0x94, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x84, - 0x00, 0x00, 0x02, 0x00, 0x00, 0xc1, 0x9a, 0x21, 0xec, 0x84, 0x01, 0xe4, - 0x02, 0x01, 0xe4, 0x01, 0xe4, 0x20, 0x39, 0x82, 0x00, 0x00, 0x00, 0x18, - 0xc6, 0x87, 0xff, 0xff, 0x00, 0x08, 0x42, 0xd7, 0x00, 0x00, 0x01, 0x20, - 0x00, 0x59, 0xce, 0x90, 0xff, 0xff, 0x00, 0x28, 0x42, 0x84, 0x00, 0x00, - 0x00, 0xcf, 0x7b, 0x94, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, - 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x84, - 0x00, 0x00, 0x02, 0xa0, 0x59, 0x21, 0xec, 0x01, 0xe4, 0x84, 0x01, 0xe4, - 0x01, 0x41, 0xec, 0x40, 0x82, 0x83, 0x00, 0x00, 0x00, 0x6d, 0x6b, 0x87, - 0xff, 0xff, 0x00, 0xb2, 0x94, 0x81, 0x00, 0x00, 0x02, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x01, 0xe7, 0x39, 0xbe, 0xf7, 0x8e, - 0xff, 0xff, 0x00, 0x71, 0x8c, 0x85, 0x00, 0x00, 0x01, 0xc3, 0x18, 0x3c, - 0xe7, 0x8a, 0xff, 0xff, 0x01, 0xba, 0xd6, 0x9e, 0xf7, 0x86, 0xff, 0xff, - 0x00, 0x4d, 0x6b, 0x84, 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, - 0xff, 0xff, 0x00, 0xd7, 0xbd, 0x83, 0x00, 0x00, 0x02, 0xc0, 0x28, 0xe1, - 0xdb, 0x01, 0xe4, 0x84, 0x01, 0xe4, 0x02, 0x21, 0xec, 0x61, 0xbb, 0x40, - 0x08, 0x83, 0x00, 0x00, 0x01, 0xa2, 0x10, 0x7d, 0xef, 0x86, 0xff, 0xff, - 0x08, 0x7d, 0xef, 0xa2, 0x10, 0x00, 0x00, 0xc7, 0x39, 0x92, 0x94, 0x4d, - 0x6b, 0x10, 0x84, 0xae, 0x73, 0x00, 0x00, 0xd1, 0x00, 0x00, 0x01, 0x0c, - 0x63, 0xdf, 0xff, 0x8c, 0xff, 0xff, 0x01, 0xf3, 0x9c, 0x20, 0x00, 0x86, - 0x00, 0x00, 0x01, 0x8a, 0x52, 0xdf, 0xff, 0x88, 0xff, 0xff, 0x02, 0x9a, - 0xd6, 0x65, 0x29, 0x5d, 0xef, 0x86, 0xff, 0xff, 0x00, 0x4d, 0x6b, 0x84, - 0x00, 0x00, 0x01, 0xe3, 0x18, 0xbe, 0xf7, 0x86, 0xff, 0xff, 0x00, 0xd7, - 0xbd, 0x82, 0x00, 0x00, 0x02, 0x40, 0x10, 0x21, 0xb3, 0x21, 0xec, 0x84, - 0x01, 0xe4, 0x02, 0x01, 0xe4, 0xe1, 0xdb, 0x00, 0x39, 0x85, 0x00, 0x00, - 0x00, 0x34, 0xa5, 0x87, 0xff, 0xff, 0x07, 0x0c, 0x63, 0x00, 0x00, 0xe3, - 0x18, 0x71, 0x8c, 0x8e, 0x73, 0x7d, 0xef, 0x55, 0xad, 0x00, 0x00, 0xd2, - 0x00, 0x00, 0x01, 0xcb, 0x5a, 0x5d, 0xef, 0x89, 0xff, 0xff, 0x01, 0xdf, - 0xff, 0xef, 0x7b, 0x89, 0x00, 0x00, 0x01, 0x6d, 0x6b, 0xff, 0xff, 0x86, - 0xff, 0xff, 0x02, 0x79, 0xce, 0x04, 0x21, 0x20, 0x00, 0x87, 0xff, 0xff, - 0x00, 0x8e, 0x73, 0x84, 0x00, 0x00, 0x00, 0x04, 0x21, 0x87, 0xff, 0xff, - 0x00, 0x38, 0xc6, 0x81, 0x00, 0x00, 0x02, 0x20, 0x00, 0xc1, 0x9a, 0x81, - 0xfc, 0x84, 0x41, 0xec, 0x02, 0x41, 0xf4, 0x61, 0xf4, 0xe0, 0x69, 0x86, - 0x00, 0x00, 0x00, 0x69, 0x4a, 0x87, 0xff, 0xff, 0x07, 0x59, 0xce, 0x00, - 0x00, 0xa2, 0x10, 0x51, 0x8c, 0xeb, 0x5a, 0x79, 0xce, 0x34, 0xa5, 0x00, - 0x00, 0xd3, 0x00, 0x00, 0x02, 0x24, 0x21, 0x92, 0x94, 0x5d, 0xef, 0x85, - 0xff, 0xff, 0x02, 0x7d, 0xef, 0x14, 0xa5, 0xc7, 0x39, 0x8b, 0x00, 0x00, - 0x0c, 0x49, 0x4a, 0xd7, 0xbd, 0xbe, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xdf, - 0xff, 0xdb, 0xde, 0xef, 0x7b, 0x82, 0x10, 0x00, 0x00, 0x41, 0x08, 0x30, - 0x84, 0x92, 0x94, 0x84, 0x71, 0x8c, 0x01, 0x92, 0x94, 0xe7, 0x39, 0x84, - 0x00, 0x00, 0x01, 0x82, 0x10, 0x51, 0x8c, 0x85, 0x71, 0x8c, 0x01, 0x92, - 0x94, 0x2c, 0x63, 0x81, 0x00, 0x00, 0x02, 0x80, 0x18, 0x40, 0x7a, 0x40, - 0x82, 0x84, 0x40, 0x7a, 0x02, 0x40, 0x82, 0x00, 0x72, 0x20, 0x08, 0x86, - 0x00, 0x00, 0x03, 0x20, 0x00, 0x10, 0x84, 0x71, 0x8c, 0xb2, 0x94, 0x84, - 0xf3, 0x9c, 0x07, 0xb2, 0x94, 0x82, 0x10, 0x41, 0x08, 0x8a, 0x52, 0xa6, - 0x31, 0x8a, 0x52, 0xeb, 0x5a, 0x00, 0x00, 0xd5, 0x00, 0x00, 0x07, 0xc3, - 0x18, 0x69, 0x4a, 0x6d, 0x6b, 0xef, 0x7b, 0xef, 0x7b, 0x4d, 0x6b, 0x49, - 0x4a, 0xe3, 0x18, 0x8f, 0x00, 0x00, 0x04, 0x04, 0x21, 0xe7, 0x39, 0x08, - 0x42, 0x65, 0x29, 0x41, 0x08, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, - 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, - 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xa3, 0x00, 0x00 -}; diff --git a/glide3x/h5/glide3/src/gbanner.c b/glide3x/h5/glide3/src/gbanner.c index f006753..db73aad 100644 --- a/glide3x/h5/glide3/src/gbanner.c +++ b/glide3x/h5/glide3/src/gbanner.c @@ -104,28 +104,43 @@ #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"); - if (gc->pluginInfo.plugProc != NULL) { - FxU32 - plugWidth, plugHeight; - FxI32 - plugStride; - GrLfbWriteMode_t - plugFormat; - const void* - plugData = (*gc->pluginInfo.plugProc)(&plugWidth, &plugHeight, - &plugStride, - &plugFormat); + GrState state; + FxU32 plugWidth, plugHeight; + FxI32 plugStride; + GrLfbWriteMode_t plugFormat; + const void* plugData = + getPlugdata(&plugWidth, &plugHeight, &plugStride, &plugFormat); + + if (!plugData) return; - if (plugData != NULL) { -#ifdef GLIDE_PLUG - GrState state; - grGlideGetState(&state); grDisableAllEffects(); @@ -163,259 +178,8 @@ _grShamelessPlug(void) plugData); grGlideSetState(&state); -#endif /* GLIDE_PLUG */ - } - } GR_END(); } /* _grShamelessPlug */ - - -#if !(GLIDE_PLATFORM & GLIDE_OS_WIN32) - -#if GLIDE_PLUG -#if GLIDE_PLUG_EXT -static FxU32 fxPlugWidth; -static FxU32 fxPlugHeight; -static FxU32 fxPlugStride; -#else -#include "banner.inc" -#endif -static GrLfbWriteMode_t fxPlugFormat = GR_LFBWRITEMODE_565; -static FxU16 *fxPlugData; -#endif /* GLIDE_PLUG */ - - - -void FX_CALL fxSplashShutdown (void) -{ -#if GLIDE_PLUG - if (fxPlugData != NULL) { - free(fxPlugData); - fxPlugData = NULL; - } -#endif -} - - - -FxBool FX_CALL fxSplashInit (FxU32 hWnd, - FxU32 screenWidth, FxU32 screenHeight, - FxU32 numColBuf, FxU32 numAuxBuf, - GrColorFormat_t colorFormat) -{ -#if GLIDE_PLUG - if (fxPlugData == NULL) { -#if GLIDE_PLUG_EXT - /* [dBorca] - * we should try to extract TGA resource from 3dfxspl3.dll - */ - FILE *f; - if ((f = fopen("3dfxplug.tga", "rb")) != NULL) { - int bpp, skip; - unsigned int i, j, decoded; - unsigned char header[18], b1[4], b0; - - /* read TGA header */ - if (!fread(header, 18, 1, f)) { - fclose(f); - return FXFALSE; - } - - /* fill in values */ - fxPlugWidth = ((unsigned short *)header)[6]; - fxPlugHeight = ((unsigned short *)header)[7]; - fxPlugStride = fxPlugWidth * 2; - - /* compute bits/pixel, then bytes/pixel; also check TGA type */ - bpp = header[16]; - if (((bpp != 16) && (bpp != 24) && (bpp != 32)) || ((header[2] & ~0x8) != 2)) { - fclose(f); - return FXFALSE; - } - bpp >>= 3; - - /* skip colormap + junk */ - skip = header[0]; - if (header[1]) { - skip += *(unsigned short *)&header[5] * header[7] >> 3; - } - fseek(f, skip, SEEK_CUR); - - /* allocate datablock */ - if ((fxPlugData = malloc(fxPlugStride * fxPlugHeight)) == NULL) { - fclose(f); - return FXFALSE; - } - - if (header[2] == 10) { - /* RLE */ - j = 0; - while (j < (fxPlugWidth * fxPlugHeight)) { - /* packet header */ - if (!fread(&b0, 1, 1, f)) { - fxSplashShutdown(); - fclose(f); - return FXFALSE; - } - if (b0 & 0x80) { - /* replicate pixels */ - b0 &= 0x7f; - if (!fread(b1, bpp, 1, f)) { - fxSplashShutdown(); - fclose(f); - return FXFALSE; - } - switch (bpp) { - case 2: - decoded = *(unsigned short *)&b1[0]; - decoded = ((decoded & 0x7fe0) << 1) - | ((decoded & 0x0200) >> 4) - | (decoded & 0x001f); - break; - case 3: - case 4: - decoded = (b1[0]>>3) + ((b1[1]>>2)<<5) + ((b1[2]>>3)<<11); - break; - } - for (i = 0; i <= b0; i++) { - fxPlugData[j++] = decoded; - } - } else { - /* read pixels */ - for (i = 0; i <= b0; i++) { - if (!fread(b1, bpp, 1, f)) { - fxSplashShutdown(); - fclose(f); - return FXFALSE; - } - switch (bpp) { - case 2: - decoded = *(unsigned short *)&b1[0]; - decoded = ((decoded & 0x7fe0) << 1) - | ((decoded & 0x0200) >> 4) - | (decoded & 0x001f); - break; - case 3: - case 4: - decoded = (b1[0]>>3) + ((b1[1]>>2)<<5) + ((b1[2]>>3)<<11); - break; - } - fxPlugData[j++] = decoded; - } - } - } - /* flip (RLE can cross scanlines, thus we can't use tricks) */ - if (!(header[17] & 0x20)) { - for (i = 0; i < fxPlugHeight / 2; i++) { - unsigned short *src = &fxPlugData[fxPlugWidth * i]; - unsigned short *dst = &fxPlugData[fxPlugWidth * (fxPlugHeight - i - 1)]; - for (j = 0; j < fxPlugWidth; j++) { - decoded = dst[j]; - dst[j] = src[j]; - src[j] = decoded; - } - } - } - } else if (header[2] == 2) { - /* normal (flip on-the-fly) */ - for (i = 0; i < fxPlugHeight; i++) { - int l = (header[17] & 0x20) ? i : (fxPlugHeight-i-1); - unsigned short *line = &fxPlugData[fxPlugWidth * l]; - for (j = 0; j < fxPlugWidth; j++) { - if (!fread(b1, bpp, 1, f)) { - fxSplashShutdown(); - fclose(f); - return FXFALSE; - } - switch (bpp) { - case 2: - decoded = *(unsigned short *)&b1[0]; - decoded = ((decoded & 0x7fe0) << 1) - | ((decoded & 0x0200) >> 4) - | (decoded & 0x001f); - break; - case 3: - case 4: - decoded = (b1[0]>>3) + ((b1[1]>>2)<<5) + ((b1[2]>>3)<<11); - break; - } - line[j] = decoded; - } - } - } - - fclose(f); - } - -#else /* GLIDE_PLUG_EXT */ - - /* [dBorca] - * embedded image is always 16bit RLE and does not need to be flipped - */ - int k = 0; - unsigned int i, j, decoded; - unsigned char b0; - - /* allocate datablock */ - if ((fxPlugData = malloc(fxPlugStride * fxPlugHeight)) == NULL) { - return FXFALSE; - } - - /* RLE */ - j = 0; - while (j < (fxPlugWidth * fxPlugHeight)) { - /* packet header */ - b0 = tga_16rle[k++]; - if (b0 & 0x80) { - /* replicate pixels */ - b0 &= 0x7f; - decoded = *(unsigned short *)&tga_16rle[k]; - k += 2; - for (i = 0; i <= b0; i++) { - fxPlugData[j++] = decoded; - } - } else { - /* read pixels */ - for (i = 0; i <= b0; i++) { - decoded = *(unsigned short *)&tga_16rle[k]; - k += 2; - fxPlugData[j++] = decoded; - } - } - } -#endif /* GLIDE_PLUG_EXT */ - } - return FXTRUE; - -#else /* GLIDE_PLUG */ - - return FXFALSE; -#endif /* GLIDE_PLUG */ -} - - - -const void * FX_CALL fxSplashPlug (FxU32* w, FxU32* h, - FxI32* strideInBytes, - GrLfbWriteMode_t* format) -{ -#if GLIDE_PLUG - *w = fxPlugWidth; - *h = fxPlugHeight; - *strideInBytes = fxPlugStride; - *format = fxPlugFormat; - return fxPlugData; -#else - return NULL; -#endif -} - - - -void FX_CALL fxSplash (float x, float y, float w, float h, FxU32 frameNumber) -{ -} - -#endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */ +#endif /* GLIDE_PLUG */ diff --git a/glide3x/h5/glide3/src/gglide.c b/glide3x/h5/glide3/src/gglide.c index 842771c..34e38ca 100644 --- a/glide3x/h5/glide3/src/gglide.c +++ b/glide3x/h5/glide3/src/gglide.c @@ -2676,8 +2676,10 @@ GR_ENTRY(grBufferSwap, void, (FxU32 swapInterval)) } #endif +#ifdef GLIDE_PLUG /* optionally display the 3Dfx powerfield logo overlay */ if (_GlideRoot.environment.shamelessPlug) _grShamelessPlug(); +#endif #if (GLIDE_PLATFORM & GLIDE_OS_WIN32) if (_GlideRoot.environment.aaToggleKey) { @@ -2796,7 +2798,6 @@ GR_ENTRY(grBufferSwap, void, (FxU32 swapInterval)) GR_ASSERT(j != -1); gc->swapsPending++; - } #endif @@ -2954,8 +2955,10 @@ GR_ENTRY(grDRIBufferSwap, void, (FxU32 swapInterval)) _grChipMask( SST_CHIP_MASK_ALL_CHIPS ); } #endif +#ifdef GLIDE_PLUG /* optionally display the 3Dfx powerfield logo overlay */ if (_GlideRoot.environment.shamelessPlug) _grShamelessPlug(); +#endif /* check for environmental override */ if (_GlideRoot.environment.swapInterval >= 0) { diff --git a/glide3x/h5/glide3/src/gpci.c b/glide3x/h5/glide3/src/gpci.c index ce76979..c40d47d 100644 --- a/glide3x/h5/glide3/src/gpci.c +++ b/glide3x/h5/glide3/src/gpci.c @@ -1426,7 +1426,11 @@ _GlideInitEnvironment(void) #endif GDBG_INFO(80," noSplash: %d\n",_GlideRoot.environment.noSplash); +#ifdef GLIDE_PLUG _GlideRoot.environment.shamelessPlug = GETENV("FX_GLIDE_SHAMELESS_PLUG") != NULL; +#else + _GlideRoot.environment.shamelessPlug = 0; +#endif GDBG_INFO(80," shamelessPlug: %d\n",_GlideRoot.environment.shamelessPlug); _GlideRoot.environment.ignoreReopen = GETENV("FX_GLIDE_IGNORE_REOPEN") != NULL; GDBG_INFO(80," ignoreReopen: %d\n",_GlideRoot.environment.ignoreReopen); diff --git a/glide3x/h5/glide3/src/gsplash.c b/glide3x/h5/glide3/src/gsplash.c index 9da88da..3c0a394 100644 --- a/glide3x/h5/glide3/src/gsplash.c +++ b/glide3x/h5/glide3/src/gsplash.c @@ -159,6 +159,19 @@ * Updated grSplash code to set all of the necessary state itself rather * than expecting the caller to do so. */ +#ifndef GLIDE_SPLASH +#include <3dfx.h> +#define FX_DLL_DEFINITION +#include +#include +#include "fxglide.h" +GR_DIENTRY(grSplash,void,(float x, float y, + float w, float h, + FxU32 frameNumber)) { +/* nothing */ +} + +#elif defined(_WIN32) #include #include <3dfx.h> @@ -196,7 +209,6 @@ GR_DIENTRY(grSplash,void,(float x, float y, GDBG_INFO_MORE(gc->myLevel,"(%f,%f,%f,%f,%d)\n", x, y, w, h, frameNumber); -#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) #if (GLIDE_PLATFORM & GLIDE_HW_SST2) #else { @@ -212,8 +224,20 @@ GR_DIENTRY(grSplash,void,(float x, float y, grGlideSetState((const void*)&glideState); } #endif -#endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */ GR_END(); #undef FN_NAME } + +#else /* others */ +#include <3dfx.h> +#define FX_DLL_DEFINITION +#include +#include +#include "fxglide.h" +GR_DIENTRY(grSplash,void,(float x, float y, + float w, float h, + FxU32 frameNumber)) { +/* nothing */ +} +#endif diff --git a/glide3x/h5/glide3/src/gsst.c b/glide3x/h5/glide3/src/gsst.c index 4de36ed..11472a2 100644 --- a/glide3x/h5/glide3/src/gsst.c +++ b/glide3x/h5/glide3/src/gsst.c @@ -1083,97 +1083,68 @@ clearBuffers( GrGC *gc ) static void doSplash( void ) { +#if defined(GLIDE_SPLASH) || ((GLIDE_PLATFORM & GLIDE_OS_WIN32) && defined(GLIDE_PLUG)) GR_DCL_GC; - - FxBool didLoad; +#endif /* The splash screen wants a swapped Y origin, which doesn't * work in all SLI configs. */ if(_GlideRoot.environment.sliBandHeightForce) return; -#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) - if (gc->pluginInfo.moduleHandle == NULL) - gc->pluginInfo.moduleHandle = LoadLibrary("3dfxspl3.dll"); - - didLoad = (gc->pluginInfo.moduleHandle != NULL); - if (didLoad) { - gc->pluginInfo.initProc = (GrSplashInitProc) GetProcAddress(gc->pluginInfo.moduleHandle, - "_fxSplashInit@24"); - gc->pluginInfo.shutdownProc = (GrSplashShutdownProc)GetProcAddress(gc->pluginInfo.moduleHandle, - "_fxSplashShutdown@0"); - gc->pluginInfo.splashProc = (GrSplashProc) GetProcAddress(gc->pluginInfo.moduleHandle, - "_fxSplash@20"); - gc->pluginInfo.plugProc = (GrSplashPlugProc) GetProcAddress(gc->pluginInfo.moduleHandle, - "_fxSplashPlug@16"); - - didLoad = (!_GlideRoot.environment.noSplash && - (gc->pluginInfo.initProc != NULL) && - (gc->pluginInfo.splashProc != NULL) && - (gc->pluginInfo.plugProc != NULL) && - (gc->pluginInfo.shutdownProc != NULL)); - if (didLoad) { - GrState glideState; - - /* Protect ourselves from the splash screen */ - grGlideGetState(&glideState); - didLoad = (*gc->pluginInfo.initProc)(gc->grHwnd, - gc->state.screen_width, gc->state.screen_height, - gc->grColBuf, gc->grAuxBuf, - gc->state.color_format); - if (didLoad) { - (*gc->pluginInfo.splashProc)(0.0f, 0.0f, - (float)gc->state.screen_width, - (float)gc->state.screen_height, - 0); - (*gc->pluginInfo.shutdownProc)(); - } - grGlideSetState((const void*)&glideState); - } - } - - /* Clear all the info if we could not load for some reason */ - if (!didLoad) { - if (gc->pluginInfo.moduleHandle) - FreeLibrary(gc->pluginInfo.moduleHandle); - memset(&gc->pluginInfo, 0, sizeof(gc->pluginInfo)); - } -#else - gc->pluginInfo.initProc = fxSplashInit; - gc->pluginInfo.shutdownProc = fxSplashShutdown; - gc->pluginInfo.splashProc = fxSplash; - gc->pluginInfo.plugProc = fxSplashPlug; - - didLoad = (!_GlideRoot.environment.noSplash && - (gc->pluginInfo.initProc != NULL) && - (gc->pluginInfo.splashProc != NULL) && - (gc->pluginInfo.plugProc != NULL) && - (gc->pluginInfo.shutdownProc != NULL)); - if (didLoad) { - GrState glideState; - - /* Protect ourselves from the splash screen */ - grGlideGetState(&glideState); - didLoad = (*gc->pluginInfo.initProc)(gc->grHwnd, - gc->state.screen_width, gc->state.screen_height, - gc->grColBuf, gc->grAuxBuf, - gc->state.color_format); - if (didLoad) { - (*gc->pluginInfo.splashProc)(0.0f, 0.0f, - (float)gc->state.screen_width, - (float)gc->state.screen_height, - 0); - (*gc->pluginInfo.shutdownProc)(); - } - grGlideSetState((const void*)&glideState); - } +#if (GLIDE_PLATFORM & GLIDE_OS_WIN32) && (defined(GLIDE_SPLASH)||defined(GLIDE_PLUG)) + { + FxBool + didLoad; - /* Clear all the info if we could not load for some reason */ - if (!didLoad) memset(&gc->pluginInfo, 0, sizeof(gc->pluginInfo)); + if (gc->pluginInfo.moduleHandle == NULL) gc->pluginInfo.moduleHandle = LoadLibrary("3dfxspl3.dll"); + didLoad = (gc->pluginInfo.moduleHandle != NULL); + if (didLoad) { + gc->pluginInfo.initProc = (GrSplashInitProc)GetProcAddress(gc->pluginInfo.moduleHandle, + "_fxSplashInit@24"); + gc->pluginInfo.shutdownProc = (GrSplashShutdownProc)GetProcAddress(gc->pluginInfo.moduleHandle, + "_fxSplashShutdown@0"); + gc->pluginInfo.splashProc = (GrSplashProc)GetProcAddress(gc->pluginInfo.moduleHandle, + "_fxSplash@20"); + gc->pluginInfo.plugProc = (GrSplashPlugProc)GetProcAddress(gc->pluginInfo.moduleHandle, + "_fxSplashPlug@16"); + + didLoad = ((gc->pluginInfo.initProc != NULL) && + (gc->pluginInfo.splashProc != NULL) && + (gc->pluginInfo.plugProc != NULL) && + (gc->pluginInfo.shutdownProc != NULL)); + if (didLoad) { + GrState glideState; + + /* Protect ourselves from the splash screen */ + grGlideGetState(&glideState); + { + didLoad = (*gc->pluginInfo.initProc)(gc->grHwnd, + gc->state.screen_width, gc->state.screen_height, + gc->grColBuf, gc->grAuxBuf, + gc->state.color_format); + if (!didLoad) (*gc->pluginInfo.shutdownProc)(); + } + grGlideSetState((const void*)&glideState); + } + + if (!didLoad) FreeLibrary(gc->pluginInfo.moduleHandle); + } + + /* Clear all the info if we could not load for some reason */ + if (!didLoad) memset(&gc->pluginInfo, 0, sizeof(gc->pluginInfo)); + } #endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */ +#ifdef GLIDE_SPLASH + if (_GlideRoot.environment.noSplash == 0) { + grSplash(0.0f, 0.0f, + (float)gc->state.screen_width, + (float)gc->state.screen_height, + 0); + } _GlideRoot.environment.noSplash = 1; - +#endif } /* doSplash */ @@ -3141,6 +3112,8 @@ GR_ENTRY(grSstWinClose, FxBool, (GrContext_t context)) #if (GLIDE_PLATFORM & GLIDE_OS_WIN32) /* free splashscreen DLL */ if (gc->pluginInfo.moduleHandle) { + if (gc->pluginInfo.shutdownProc) + (*gc->pluginInfo.shutdownProc)(); FreeLibrary(gc->pluginInfo.moduleHandle); memset(&gc->pluginInfo, 0, sizeof(gc->pluginInfo)); } diff --git a/glide3x/sst1/glide3/src/gbanner.c b/glide3x/sst1/glide3/src/gbanner.c index 92b777e..ac15f6d 100644 --- a/glide3x/sst1/glide3/src/gbanner.c +++ b/glide3x/sst1/glide3/src/gbanner.c @@ -58,13 +58,11 @@ #ifdef GLIDE_PLUG #include "banner.inc" -#endif /* display the translucent 3Dfx powerfield logo */ void _grShamelessPlug( void ) { -#ifdef GLIDE_PLUG GrState state; GrLfbInfo_t info; @@ -193,5 +191,5 @@ _grShamelessPlug( void ) GR_END(); -#endif } /* _grShamelessPlug */ +#endif diff --git a/glide3x/sst1/glide3/src/gglide.c b/glide3x/sst1/glide3/src/gglide.c index 2f09633..9afedb6 100644 --- a/glide3x/sst1/glide3/src/gglide.c +++ b/glide3x/sst1/glide3/src/gglide.c @@ -584,9 +584,11 @@ GR_ENTRY(grBufferSwap, void, ( FxU32 swapInterval )) pending = _grBufferNumPending(); } +#ifdef GLIDE_PLUG /* optionally display the 3Dfx powerfield logo overlay */ if (_GlideRoot.environment.shamelessPlug) _grShamelessPlug(); +#endif initSwapBuffers( swapInterval ); @@ -603,9 +605,11 @@ GR_ENTRY(grBufferSwap, void, ( FxU32 swapInterval )) P6_NUDGE_OF_LOVE; #elif ( GLIDE_PLATFORM & GLIDE_HW_SST1 ) + #ifdef GLIDE_PLUG /* optionally display the 3Dfx powerfield logo overlay */ if (_GlideRoot.environment.shamelessPlug) _grShamelessPlug(); + #endif /* check for environmental override */ if (_GlideRoot.environment.swapInterval >= 0) { diff --git a/glide3x/sst1/glide3/src/gpci.c b/glide3x/sst1/glide3/src/gpci.c index 18017ef..9567cbc 100644 --- a/glide3x/sst1/glide3/src/gpci.c +++ b/glide3x/sst1/glide3/src/gpci.c @@ -436,8 +436,16 @@ _GlideInitEnvironment( void ) _GlideRoot.environment.swFifoLWM = -1; _GlideRoot.environment.triBoundsCheck = (getenv("FX_GLIDE_BOUNDS_CHECK") != NULL); +#ifdef GLIDE_SPLASH _GlideRoot.environment.noSplash = (getenv("FX_GLIDE_NO_SPLASH") != NULL); +#else + _GlideRoot.environment.noSplash = 1; +#endif +#ifdef GLIDE_PLUG _GlideRoot.environment.shamelessPlug = (getenv("FX_GLIDE_SHAMELESS_PLUG") != NULL); +#else + _GlideRoot.environment.shamelessPlug = 0; +#endif _GlideRoot.environment.ignoreReopen = (getenv("FX_GLIDE_IGNORE_REOPEN") != NULL); _GlideRoot.environment.disableDitherSub = (getenv("FX_GLIDE_NO_DITHER_SUB") != NULL); diff --git a/glide3x/sst1/glide3/src/gsplash.c b/glide3x/sst1/glide3/src/gsplash.c index 4d974f3..552e993 100644 --- a/glide3x/sst1/glide3/src/gsplash.c +++ b/glide3x/sst1/glide3/src/gsplash.c @@ -132,6 +132,13 @@ #include "fxglide.h" #include "fxinline.h" +#ifndef GLIDE_SPLASH +GR_DIENTRY(grSplash,void,(float x,float y,float w,float h,FxU32 _frame)) { +/* nothing */ +} + +#else /* GLIDE_SPLASH */ + /*----------------------------- Constants -----------------------------*/ @@ -1074,3 +1081,4 @@ GR_DIENTRY(grSplash,void,(float x,float y,float w,float h,FxU32 _frame)) grVertexLayout(GR_PARAM_Q1, gc->state.vData.q1Info.offset , gc->state.vData.q1Info.mode); } +#endif /* GLIDE_SPLASH */ diff --git a/glide3x/sst1/glide3/src/gsst.c b/glide3x/sst1/glide3/src/gsst.c index 8d72adb..153d646 100644 --- a/glide3x/sst1/glide3/src/gsst.c +++ b/glide3x/sst1/glide3/src/gsst.c @@ -1002,21 +1002,25 @@ GR_ENTRY(grSstWinOpen, GrContext_t, (FxU32 hWnd, grSstOrigin( GR_ORIGIN_LOWER_LEFT ); +#ifdef GLIDE_SPLASH if (!_GlideRoot.environment.noSplash) { - HMODULE newSplash; + HMODULE newSplash = LoadLibrary("3dfxspl3.dll"); - if (newSplash = LoadLibrary("3dfxspl3.dll")) { - FARPROC fxSplash; + if (newSplash) { + FARPROC fxSplash = GetProcAddress(newSplash, "_fxSplash@16"); - if (fxSplash = GetProcAddress(newSplash, "_fxSplash@16")) { + if (fxSplash) { fxSplash(hWnd, gc->state.screen_width, - gc->state.screen_height, nAuxBuffers); - _GlideRoot.environment.noSplash = 1; - } + gc->state.screen_height, nAuxBuffers); + _GlideRoot.environment.noSplash = 1; + } + FreeLibrary(newSplash); } } +#endif #endif /* (GLIDE_PLATFORM & GLIDE_OS_WIN32) */ +#ifdef GLIDE_SPLASH /* If it's still 0, then do the old one */ if (!_GlideRoot.environment.noSplash) { grSplash(0.0f, 0.0f, @@ -1025,6 +1029,8 @@ GR_ENTRY(grSstWinOpen, GrContext_t, (FxU32 hWnd, 0); _GlideRoot.environment.noSplash = 1; } +#endif + grGlideSetState(&state); }