mirror of https://github.com/PCSX2/pcsx2.git
119 lines
4.5 KiB
C
119 lines
4.5 KiB
C
/* ZZ Open GL graphics plugin
|
|
* Copyright (c)2009-2010 zeydlitz@gmail.com, arcum42@gmail.com
|
|
* Based on Zerofrog's ZeroGS KOSMOS (c)2005-2008
|
|
*
|
|
* 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
|
|
* (at your option) 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
|
*/
|
|
|
|
#ifndef ZZHACKS_H_INCLUDED
|
|
#define ZZHACKS_H_INCLUDED
|
|
|
|
#include "PS2Edefs.h"
|
|
|
|
// This is a list of the various hacks, and what bit controls them.
|
|
// Changing these is not advised unless you know what you are doing.
|
|
enum GAME_HACK_OPTIONS
|
|
{
|
|
GAME_TEXTURETARGS = 0x00000001,
|
|
GAME_AUTORESET = 0x00000002,
|
|
GAME_INTERLACE2X = 0x00000004,
|
|
GAME_TEXAHACK = 0x00000008, // apply texa to non textured polys
|
|
GAME_NOTARGETRESOLVE = 0x00000010,
|
|
GAME_EXACTCOLOR = 0x00000020,
|
|
GAME_NOCOLORCLAMP = 0x00000040,
|
|
GAME_FFXHACK = 0x00000080,
|
|
GAME_NOALPHAFAIL = 0x00000100,
|
|
GAME_NODEPTHUPDATE = 0x00000200,
|
|
GAME_QUICKRESOLVE1 = 0x00000400,
|
|
GAME_NOQUICKRESOLVE = 0x00000800,
|
|
GAME_NOTARGETCLUT = 0x00001000, // full 16 bit resolution
|
|
GAME_NOSTENCIL = 0x00002000,
|
|
GAME_VSSHACKOFF = 0x00004000, // vertical stripe syndrome
|
|
GAME_NODEPTHRESOLVE = 0x00008000,
|
|
GAME_FULL16BITRES = 0x00010000,
|
|
GAME_RESOLVEPROMOTED = 0x00020000,
|
|
GAME_FASTUPDATE = 0x00040000,
|
|
GAME_NOALPHATEST = 0x00080000,
|
|
GAME_DISABLEMRTDEPTH = 0x00100000,
|
|
GAME_32BITTARGS = 0x00200000,
|
|
GAME_PATH3HACK = 0x00400000,
|
|
GAME_DOPARALLELCTX = 0x00800000, // tries to parallelize both contexts so that render calls are reduced (xenosaga)
|
|
// makes the game faster, but can be buggy
|
|
GAME_XENOSPECHACK = 0x01000000, // xenosaga specularity hack (ignore any zmask=1 draws)
|
|
GAME_PARTIALPOINTERS = 0x02000000, // whenver the texture or render target are small, tries to look for bigger ones to read from
|
|
GAME_PARTIALDEPTH = 0x04000000, // tries to save depth targets as much as possible across height changes
|
|
GAME_REGETHACK = 0x08000000, // some sort of weirdness in ReGet() code
|
|
GAME_GUSTHACK = 0x10000000, // Needed for Gustgames fast update.
|
|
GAME_NOLOGZ = 0x20000000, // Intended for linux -- not logarithmic Z.
|
|
GAME_AUTOSKIPDRAW = 0x40000000, // Remove blur effect on some games
|
|
GAME_RESERVED_HACK = 0x80000000
|
|
};
|
|
|
|
#define USEALPHATESTING (!(conf.settings().no_alpha_test))
|
|
|
|
typedef union
|
|
{
|
|
struct
|
|
{
|
|
u32 texture_targs : 1;
|
|
u32 auto_reset : 1;
|
|
u32 interlace_2x : 1;
|
|
u32 texa : 1; // apply texa to non textured polys
|
|
u32 no_target_resolve : 1;
|
|
u32 exact_color : 1;
|
|
u32 no_color_clamp : 1;
|
|
u32 ffx : 1;
|
|
u32 no_alpha_fail : 1;
|
|
u32 no_depth_update : 1;
|
|
u32 quick_resolve_1 : 1;
|
|
u32 no_quick_resolve : 1;
|
|
u32 no_target_clut : 1; // full 16 bit resolution
|
|
u32 no_stencil : 1;
|
|
u32 vss_hack_off : 1; // vertical stripe syndrome
|
|
u32 no_depth_resolve : 1;
|
|
u32 full_16_bit_res : 1;
|
|
u32 resolve_promoted : 1;
|
|
u32 fast_update : 1;
|
|
u32 no_alpha_test : 1;
|
|
u32 disable_mrt_depth : 1;
|
|
u32 args_32_bit : 1;
|
|
u32 path3 : 1;
|
|
u32 parallel_context : 1; // tries to parallelize both contexts so that render calls are reduced (xenosaga)
|
|
// makes the game faster, but can be buggy
|
|
u32 xenosaga_spec : 1; // xenosaga specularity hack (ignore any zmask=1 draws)
|
|
u32 partial_pointers : 1; // whenver the texture or render target are small, tries to look for bigger ones to read from
|
|
u32 partial_depth : 1; // tries to save depth targets as much as possible across height changes
|
|
u32 reget : 1; // some sort of weirdness in ReGet() code
|
|
u32 gust : 1; // Needed for Gustgames fast update.
|
|
u32 no_logz : 1; // Intended for linux -- not logarithmic Z.
|
|
u32 automatic_skip_draw :1; // allow debug of the automatic skip draw option
|
|
u32 reserved2 :1;
|
|
};
|
|
u32 _u32;
|
|
} gameHacks;
|
|
|
|
#define HACK_NUMBER 25
|
|
extern u32 hackList[HACK_NUMBER];
|
|
extern char hackDesc[32][64];
|
|
extern int CurrentHack;
|
|
|
|
extern void ReportHacks(gameHacks hacks);
|
|
extern void ListHacks();
|
|
|
|
extern void DisplayHack(int hack);
|
|
extern void ChangeCurrentHack(int hack);
|
|
|
|
#endif // ZZHACKS_H_INCLUDED
|