X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=source%2Fgles2glide64%2Fsrc%2FGlitch64%2Fmain.h;fp=source%2Fgles2glide64%2Fsrc%2FGlitch64%2Fmain.h;h=f213fe9aaa8324552c9f4f2085292782cde7137a;hb=98e75f2d18c02c233da543560f76282f04fc796c;hp=0000000000000000000000000000000000000000;hpb=0ced54f867d36e8b324155bef49e8abfebfc3237;p=mupen64plus-pandora.git diff --git a/source/gles2glide64/src/Glitch64/main.h b/source/gles2glide64/src/Glitch64/main.h new file mode 100644 index 0000000..f213fe9 --- /dev/null +++ b/source/gles2glide64/src/Glitch64/main.h @@ -0,0 +1,329 @@ +/* +* Glide64 - Glide video plugin for Nintendo 64 emulators. +* Copyright (c) 2002 Dave2001 +* Copyright (c) 2003-2009 Sergey 'Gonetz' Lipski +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef MAIN_H +#define MAIN_H + +#include + +#define LOG(...) // WriteLog(M64MSG_VERBOSE, __VA_ARGS__) +#define LOGINFO(...) WriteLog(M64MSG_INFO, __VA_ARGS__) +void WriteLog(m64p_msg_level level, const char *msg, ...); + + +#ifndef _WIN32 +//#define VPDEBUG +#endif +#ifdef VPDEBUG +void dump_tex(int id); +void dump_start(); +void dump_stop(); +extern int dumping; +#endif + +#define zscale 1.0f + +typedef struct _wrapper_config +{ + int res; + int fbo; + int anisofilter; + int vram_size; +} wrapper_config; +extern wrapper_config config; + + +// VP added this utility function +// returns the bytes per pixel of a given GR texture format +int grTexFormatSize(int fmt); + +extern int packed_pixels_support; +extern int ati_sucks; +extern float largest_supported_anisotropy; + +extern int default_texture; // the infamous "32*1024*1024" is now configurable +extern int depth_texture; +void set_depth_shader(); +void set_bw_shader(); +extern float invtex[2]; +extern int buffer_cleared; // mark that the buffer has been cleared, used to check if we need to reload the texture buffer content + +#ifdef _WIN32 +#include +extern "C" { + #include + extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB; + extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; + extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; + extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; + extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT; + extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; + extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; + extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; + extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; + extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT; + extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT; + extern PFNGLFOGCOORDFEXTPROC glFogCoordfEXT; + extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; + extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; + extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; + extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; + extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; + extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; + extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; + extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB; + extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB; + extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; + extern PFNGLSECONDARYCOLOR3FPROC glSecondaryColor3f; + extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; + extern PFNGLUNIFORM1FARBPROC glUniform1fARB; + extern PFNGLUNIFORM1IARBPROC glUniform1iARB; + extern PFNGLUNIFORM4FARBPROC glUniform4fARB; + extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; + typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc); +} +#else +#include +//#define printf(...) +#define GL_GLEXT_PROTOTYPES +#include +#endif // _WIN32 +#include "glide.h" +#include "glState.cpp" + +void display_warning(const unsigned char *text, ...); +void display_warning(const char *text, ...); +void init_geometry(); +void init_textures(); +void init_combiner(); +void free_textures(); +void updateCombiner(int i); +void updateCombinera(int i); +void remove_tex(unsigned int idmin, unsigned int idmax); +void add_tex(unsigned int id); + +#ifdef _WIN32 +extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB; +extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB; +extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT; +extern PFNGLFOGCOORDFPROC glFogCoordfEXT; + +extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; +extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; +extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; +extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB; +extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; +extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB; +extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; +extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB; +extern PFNGLUNIFORM1IARBPROC glUniform1iARB; +extern PFNGLUNIFORM4IARBPROC glUniform4iARB; +extern PFNGLUNIFORM4FARBPROC glUniform4fARB; +extern PFNGLUNIFORM1FARBPROC glUniform1fARB; +extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB; +extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; +extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; +extern PFNGLSECONDARYCOLOR3FPROC glSecondaryColor3f; +#endif +void check_compile(GLuint shader); +void check_link(GLuint program); +void vbo_enable(); +void vbo_disable(); + +//Vertex Attribute Locations +#define POSITION_ATTR 0 +#define COLOUR_ATTR 1 +#define TEXCOORD_0_ATTR 2 +#define TEXCOORD_1_ATTR 3 +#define FOG_ATTR 4 + +extern int w_buffer_mode; +extern int nbTextureUnits; +extern int width, height, widtho, heighto; +extern int tex0_width, tex0_height, tex1_width, tex1_height; +extern float texture_env_color[4]; +extern int fog_enabled; +extern float lambda; +extern int need_lambda[2]; +extern float lambda_color[2][4]; +extern int inverted_culling; +extern int culling_mode; +extern int render_to_texture; +extern int lfb_color_fmt; +extern int need_to_compile; +extern int blackandwhite0; +extern int blackandwhite1; +extern int TMU_SIZE; + +extern int blend_func_separate_support; +extern int fog_coord_support; +//extern int pbuffer_support; +extern int glsl_support; +extern unsigned int pBufferAddress; +extern int viewport_width, viewport_height, viewport_offset, nvidia_viewport_hack; +extern int UMAmode; + +void grChromaRangeExt(GrColor_t color0, GrColor_t color1, FxU32 mode); +void grChromaRangeModeExt(GrChromakeyMode_t mode); +void grTexChromaRangeExt(GrChipID_t tmu, GrColor_t color0, GrColor_t color1, GrTexChromakeyMode_t mode); +void grTexChromaModeExt(GrChipID_t tmu, GrChromakeyMode_t mode); +void updateTexture(); +void reloadTexture(); +void free_combiners(); +void compile_shader(); +void set_lambda(); +void set_copy_shader(); +void disable_textureSizes(); + +// config functions + +//FX_ENTRY void FX_CALL grConfigWrapperExt(HINSTANCE instance, HWND hwnd); +FX_ENTRY void FX_CALL grConfigWrapperExt(FxI32, FxI32, FxBool, FxBool); +FX_ENTRY GrScreenResolution_t FX_CALL grWrapperFullScreenResolutionExt(FxU32*, FxU32*); +FX_ENTRY char ** FX_CALL grQueryResolutionsExt(FxI32*); +FX_ENTRY FxBool FX_CALL grKeyPressedExt(FxU32 key); +FX_ENTRY void FX_CALL grGetGammaTableExt(FxU32, FxU32*, FxU32*, FxU32*); + +int getFullScreenWidth(); +int getFullScreenHeight(); + +// ZIGGY framebuffer copy extension +// allow to copy the depth or color buffer from back/front to front/back +#define GR_FBCOPY_MODE_DEPTH 0 +#define GR_FBCOPY_MODE_COLOR 1 +#define GR_FBCOPY_BUFFER_BACK 0 +#define GR_FBCOPY_BUFFER_FRONT 1 +FX_ENTRY void FX_CALL grFramebufferCopyExt(int x, int y, int w, int h, + int buffer_from, int buffer_to, int mode); + + +// COMBINE extension + +typedef FxU32 GrCCUColor_t; +typedef FxU32 GrACUColor_t; +typedef FxU32 GrTCCUColor_t; +typedef FxU32 GrTACUColor_t; + +typedef FxU32 GrCombineMode_t; +#define GR_FUNC_MODE_ZERO 0x00 +#define GR_FUNC_MODE_X 0x01 +#define GR_FUNC_MODE_ONE_MINUS_X 0x02 +#define GR_FUNC_MODE_NEGATIVE_X 0x03 +#define GR_FUNC_MODE_X_MINUS_HALF 0x04 + +#define GR_CMBX_ZERO 0x00 +#define GR_CMBX_TEXTURE_ALPHA 0x01 +#define GR_CMBX_ALOCAL 0x02 +#define GR_CMBX_AOTHER 0x03 +#define GR_CMBX_B 0x04 +#define GR_CMBX_CONSTANT_ALPHA 0x05 +#define GR_CMBX_CONSTANT_COLOR 0x06 +#define GR_CMBX_DETAIL_FACTOR 0x07 +#define GR_CMBX_ITALPHA 0x08 +#define GR_CMBX_ITRGB 0x09 +#define GR_CMBX_LOCAL_TEXTURE_ALPHA 0x0a +#define GR_CMBX_LOCAL_TEXTURE_RGB 0x0b +#define GR_CMBX_LOD_FRAC 0x0c +#define GR_CMBX_OTHER_TEXTURE_ALPHA 0x0d +#define GR_CMBX_OTHER_TEXTURE_RGB 0x0e +#define GR_CMBX_TEXTURE_RGB 0x0f +#define GR_CMBX_TMU_CALPHA 0x10 +#define GR_CMBX_TMU_CCOLOR 0x11 + + +FX_ENTRY void FX_CALL +grColorCombineExt(GrCCUColor_t a, GrCombineMode_t a_mode, + GrCCUColor_t b, GrCombineMode_t b_mode, + GrCCUColor_t c, FxBool c_invert, + GrCCUColor_t d, FxBool d_invert, + FxU32 shift, FxBool invert); + +FX_ENTRY void FX_CALL +grAlphaCombineExt(GrACUColor_t a, GrCombineMode_t a_mode, + GrACUColor_t b, GrCombineMode_t b_mode, + GrACUColor_t c, FxBool c_invert, + GrACUColor_t d, FxBool d_invert, + FxU32 shift, FxBool invert); + +FX_ENTRY void FX_CALL +grTexColorCombineExt(GrChipID_t tmu, + GrTCCUColor_t a, GrCombineMode_t a_mode, + GrTCCUColor_t b, GrCombineMode_t b_mode, + GrTCCUColor_t c, FxBool c_invert, + GrTCCUColor_t d, FxBool d_invert, + FxU32 shift, FxBool invert); + +FX_ENTRY void FX_CALL +grTexAlphaCombineExt(GrChipID_t tmu, + GrTACUColor_t a, GrCombineMode_t a_mode, + GrTACUColor_t b, GrCombineMode_t b_mode, + GrTACUColor_t c, FxBool c_invert, + GrTACUColor_t d, FxBool d_invert, + FxU32 shift, FxBool invert); + +FX_ENTRY void FX_CALL +grConstantColorValueExt(GrChipID_t tmu, + GrColor_t value); + +#define CHECK_FRAMEBUFFER_STATUS() \ +{\ + GLenum status; \ + status = glCheckFramebufferStatus(GL_FRAMEBUFFER); \ + /*display_warning("%x\n", status);*/\ + switch(status) { \ + case GL_FRAMEBUFFER_COMPLETE: \ + /*display_warning("framebuffer complete!\n");*/\ + break; \ + case GL_FRAMEBUFFER_UNSUPPORTED: \ + display_warning("framebuffer GL_FRAMEBUFFER_UNSUPPORTED_EXT\n");\ + /* you gotta choose different formats */ \ + /*assert(0);*/ \ + break; \ + case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT: \ + display_warning("framebuffer INCOMPLETE_ATTACHMENT\n");\ + break; \ + case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT: \ + display_warning("framebuffer FRAMEBUFFER_MISSING_ATTACHMENT\n");\ + break; \ + case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS: \ + display_warning("framebuffer FRAMEBUFFER_DIMENSIONS\n");\ + break; \ + default: \ + break; \ + /* programming error; will fail on all hardware */ \ + /*assert(0);*/ \ + }\ +} + +#ifdef VPDEBUG +#define LOGGING +#endif + +#ifdef LOGGING +void OPEN_LOG(); +void CLOSE_LOG(); +//void LOG(const char *text, ...); +#else // LOGGING +#define OPEN_LOG() +#define CLOSE_LOG() +//#define LOG +#endif // LOGGING + +#endif