diff --git a/plugins/zzogl-pg/opengl/NewRegs.h b/plugins/zzogl-pg/opengl/NewRegs.h index 1be1b9ed6c..29a124c70d 100644 --- a/plugins/zzogl-pg/opengl/NewRegs.h +++ b/plugins/zzogl-pg/opengl/NewRegs.h @@ -1,781 +1,781 @@ -/* 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 - */ - +/* 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 NEWREGS_H_INCLUDED #define NEWREGS_H_INCLUDED - -#ifdef USE_OLD_REGS -#include "Regs.h" -#else -enum GIF_REG -{ - GIF_REG_PRIM = 0x00, - GIF_REG_RGBA = 0x01, - GIF_REG_STQ = 0x02, - GIF_REG_UV = 0x03, - GIF_REG_XYZF2 = 0x04, - GIF_REG_XYZ2 = 0x05, - GIF_REG_TEX0_1 = 0x06, - GIF_REG_TEX0_2 = 0x07, - GIF_REG_CLAMP_1 = 0x08, - GIF_REG_CLAMP_2 = 0x09, - GIF_REG_FOG = 0x0a, - GIF_REG_XYZF3 = 0x0c, - GIF_REG_XYZ3 = 0x0d, - GIF_REG_A_D = 0x0e, - GIF_REG_NOP = 0x0f, -}; - -enum GIF_A_D_REG -{ - GIF_A_D_REG_PRIM = 0x00, - GIF_A_D_REG_RGBAQ = 0x01, - GIF_A_D_REG_ST = 0x02, - GIF_A_D_REG_UV = 0x03, - GIF_A_D_REG_XYZF2 = 0x04, - GIF_A_D_REG_XYZ2 = 0x05, - GIF_A_D_REG_TEX0_1 = 0x06, - GIF_A_D_REG_TEX0_2 = 0x07, - GIF_A_D_REG_CLAMP_1 = 0x08, - GIF_A_D_REG_CLAMP_2 = 0x09, - GIF_A_D_REG_FOG = 0x0a, - GIF_A_D_REG_XYZF3 = 0x0c, - GIF_A_D_REG_XYZ3 = 0x0d, - GIF_A_D_REG_NOP = 0x0f, - GIF_A_D_REG_TEX1_1 = 0x14, - GIF_A_D_REG_TEX1_2 = 0x15, - GIF_A_D_REG_TEX2_1 = 0x16, - GIF_A_D_REG_TEX2_2 = 0x17, - GIF_A_D_REG_XYOFFSET_1 = 0x18, - GIF_A_D_REG_XYOFFSET_2 = 0x19, - GIF_A_D_REG_PRMODECONT = 0x1a, - GIF_A_D_REG_PRMODE = 0x1b, - GIF_A_D_REG_TEXCLUT = 0x1c, - GIF_A_D_REG_SCANMSK = 0x22, - GIF_A_D_REG_MIPTBP1_1 = 0x34, - GIF_A_D_REG_MIPTBP1_2 = 0x35, - GIF_A_D_REG_MIPTBP2_1 = 0x36, - GIF_A_D_REG_MIPTBP2_2 = 0x37, - GIF_A_D_REG_TEXA = 0x3b, - GIF_A_D_REG_FOGCOL = 0x3d, - GIF_A_D_REG_TEXFLUSH = 0x3f, - GIF_A_D_REG_SCISSOR_1 = 0x40, - GIF_A_D_REG_SCISSOR_2 = 0x41, - GIF_A_D_REG_ALPHA_1 = 0x42, - GIF_A_D_REG_ALPHA_2 = 0x43, - GIF_A_D_REG_DIMX = 0x44, - GIF_A_D_REG_DTHE = 0x45, - GIF_A_D_REG_COLCLAMP = 0x46, - GIF_A_D_REG_TEST_1 = 0x47, - GIF_A_D_REG_TEST_2 = 0x48, - GIF_A_D_REG_PABE = 0x49, - GIF_A_D_REG_FBA_1 = 0x4a, - GIF_A_D_REG_FBA_2 = 0x4b, - GIF_A_D_REG_FRAME_1 = 0x4c, - GIF_A_D_REG_FRAME_2 = 0x4d, - GIF_A_D_REG_ZBUF_1 = 0x4e, - GIF_A_D_REG_ZBUF_2 = 0x4f, - GIF_A_D_REG_BITBLTBUF = 0x50, - GIF_A_D_REG_TRXPOS = 0x51, - GIF_A_D_REG_TRXREG = 0x52, - GIF_A_D_REG_TRXDIR = 0x53, - GIF_A_D_REG_HWREG = 0x54, - GIF_A_D_REG_SIGNAL = 0x60, - GIF_A_D_REG_FINISH = 0x61, - GIF_A_D_REG_LABEL = 0x62, -}; -// In case we want to change to/from __fastcall for GIF register handlers: -#define __gifCall __fastcall - -typedef void __gifCall FnType_GIFRegHandler(const u32* data); -typedef FnType_GIFRegHandler* GIFRegHandler; - -extern FnType_GIFRegHandler GIFPackedRegHandlerNull; -extern FnType_GIFRegHandler GIFPackedRegHandlerRGBA; -extern FnType_GIFRegHandler GIFPackedRegHandlerSTQ; -extern FnType_GIFRegHandler GIFPackedRegHandlerUV; -extern FnType_GIFRegHandler GIFPackedRegHandlerXYZF2; -extern FnType_GIFRegHandler GIFPackedRegHandlerXYZ2; -extern FnType_GIFRegHandler GIFPackedRegHandlerFOG; -extern FnType_GIFRegHandler GIFPackedRegHandlerA_D; -extern FnType_GIFRegHandler GIFPackedRegHandlerNOP; - -// These are unimplemented, and fall back on the non-packed versions. -extern FnType_GIFRegHandler GIFPackedRegHandlerPRIM; - -template -extern FnType_GIFRegHandler GIFPackedRegHandlerTEX0; - -template -extern FnType_GIFRegHandler GIFPackedRegHandlerCLAMP; - -extern FnType_GIFRegHandler GIFPackedRegHandlerXYZF3; -extern FnType_GIFRegHandler GIFPackedRegHandlerXYZ3; - -extern FnType_GIFRegHandler GIFRegHandlerNull; -extern FnType_GIFRegHandler GIFRegHandlerPRIM; -extern FnType_GIFRegHandler GIFRegHandlerRGBAQ; -extern FnType_GIFRegHandler GIFRegHandlerST; -extern FnType_GIFRegHandler GIFRegHandlerUV; -extern FnType_GIFRegHandler GIFRegHandlerXYZF2; -extern FnType_GIFRegHandler GIFRegHandlerXYZ2; - -template -extern FnType_GIFRegHandler GIFRegHandlerTEX0; - -template -extern FnType_GIFRegHandler GIFRegHandlerCLAMP; - -extern FnType_GIFRegHandler GIFRegHandlerFOG; -extern FnType_GIFRegHandler GIFRegHandlerXYZF3; -extern FnType_GIFRegHandler GIFRegHandlerXYZ3; -extern FnType_GIFRegHandler GIFRegHandlerNOP; - -template -extern FnType_GIFRegHandler GIFRegHandlerTEX1; - -template -extern FnType_GIFRegHandler GIFRegHandlerTEX2; - -template -extern FnType_GIFRegHandler GIFRegHandlerXYOFFSET; - -extern FnType_GIFRegHandler GIFRegHandlerPRMODECONT; -extern FnType_GIFRegHandler GIFRegHandlerPRMODE; -extern FnType_GIFRegHandler GIFRegHandlerTEXCLUT; -extern FnType_GIFRegHandler GIFRegHandlerSCANMSK; -template -extern FnType_GIFRegHandler GIFRegHandlerMIPTBP1; -template -extern FnType_GIFRegHandler GIFRegHandlerMIPTBP2; -extern FnType_GIFRegHandler GIFRegHandlerTEXA; -extern FnType_GIFRegHandler GIFRegHandlerFOGCOL; -extern FnType_GIFRegHandler GIFRegHandlerTEXFLUSH; - -template -extern FnType_GIFRegHandler GIFRegHandlerSCISSOR; -template -extern FnType_GIFRegHandler GIFRegHandlerALPHA; - -extern FnType_GIFRegHandler GIFRegHandlerDIMX; -extern FnType_GIFRegHandler GIFRegHandlerDTHE; -extern FnType_GIFRegHandler GIFRegHandlerCOLCLAMP; -template -extern FnType_GIFRegHandler GIFRegHandlerTEST; -extern FnType_GIFRegHandler GIFRegHandlerPABE; -template -extern FnType_GIFRegHandler GIFRegHandlerFBA; -template -extern FnType_GIFRegHandler GIFRegHandlerFRAME; -template -extern FnType_GIFRegHandler GIFRegHandlerZBUF; -extern FnType_GIFRegHandler GIFRegHandlerBITBLTBUF; -extern FnType_GIFRegHandler GIFRegHandlerTRXPOS; -extern FnType_GIFRegHandler GIFRegHandlerTRXREG; -extern FnType_GIFRegHandler GIFRegHandlerTRXDIR; -extern FnType_GIFRegHandler GIFRegHandlerHWREG; -extern FnType_GIFRegHandler GIFRegHandlerSIGNAL; -extern FnType_GIFRegHandler GIFRegHandlerFINISH; -extern FnType_GIFRegHandler GIFRegHandlerLABEL; - -// GifReg & GifPackedReg structs from GSdx, slightly modified - -enum GS_ATST -{ - ATST_NEVER = 0, - ATST_ALWAYS = 1, - ATST_LESS = 2, - ATST_LEQUAL = 3, - ATST_EQUAL = 4, - ATST_GEQUAL = 5, - ATST_GREATER = 6, - ATST_NOTEQUAL = 7, -}; - -enum GS_AFAIL -{ - AFAIL_KEEP = 0, - AFAIL_FB_ONLY = 1, - AFAIL_ZB_ONLY = 2, - AFAIL_RGB_ONLY = 3, -}; - -// GIFReg - -REG64_(GIFReg, ALPHA) - u32 A:2; - u32 B:2; - u32 C:2; - u32 D:2; - u32 _PAD1:24; - u32 FIX:8; - u32 _PAD2:24; -REG_END2 - // opaque => output will be Cs/As - __forceinline bool IsOpaque() const {return (A == B || C == 2 && FIX == 0) && D == 0 || (A == 0 && B == D && C == 2 && FIX == 0x80);} - __forceinline bool IsOpaque(int amin, int amax) const {return (A == B || amax == 0) && D == 0 || A == 0 && B == D && amin == 0x80 && amax == 0x80;} -REG_END2 - -REG64_(GIFReg, BITBLTBUF) - u32 SBP:14; - u32 _PAD1:2; - u32 SBW:6; - u32 _PAD2:2; - u32 SPSM:6; - u32 _PAD3:2; - u32 DBP:14; - u32 _PAD4:2; - u32 DBW:6; - u32 _PAD5:2; - u32 DPSM:6; - u32 _PAD6:2; -REG_END - -REG64_(GIFReg, CLAMP) -union -{ - struct - { - u32 WMS:2; - u32 WMT:2; - u32 MINU:10; - u32 MAXU:10; - u32 _PAD1:8; - u32 _PAD2:2; - u32 MAXV:10; - u32 _PAD3:20; - }; - - struct - { - u64 _PAD4:24; - u64 MINV:10; - u64 _PAD5:30; - }; -}; -REG_END - -REG64_(GIFReg, COLCLAMP) - u32 CLAMP:1; - u32 _PAD1:31; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, DIMX) - s32 DM00:3; - s32 _PAD00:1; - s32 DM01:3; - s32 _PAD01:1; - s32 DM02:3; - s32 _PAD02:1; - s32 DM03:3; - s32 _PAD03:1; - s32 DM10:3; - s32 _PAD10:1; - s32 DM11:3; - s32 _PAD11:1; - s32 DM12:3; - s32 _PAD12:1; - s32 DM13:3; - s32 _PAD13:1; - s32 DM20:3; - s32 _PAD20:1; - s32 DM21:3; - s32 _PAD21:1; - s32 DM22:3; - s32 _PAD22:1; - s32 DM23:3; - s32 _PAD23:1; - s32 DM30:3; - s32 _PAD30:1; - s32 DM31:3; - s32 _PAD31:1; - s32 DM32:3; - s32 _PAD32:1; - s32 DM33:3; - s32 _PAD33:1; -REG_END - -REG64_(GIFReg, DTHE) - u32 DTHE:1; - u32 _PAD1:31; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, FBA) - u32 FBA:1; - u32 _PAD1:31; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, FINISH) - u32 _PAD1:32; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, FOG) - u32 _PAD1:32; - u32 _PAD2:24; - u32 F:8; -REG_END - -REG64_(GIFReg, FOGCOL) - u32 FCR:8; - u32 FCG:8; - u32 FCB:8; - u32 _PAD1:8; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, FRAME) - u32 FBP:9; - u32 _PAD1:7; - u32 FBW:6; - u32 _PAD2:2; - u32 PSM:6; - u32 _PAD3:2; - u32 FBMSK:32; -REG_END2 - u32 Block() const {return FBP << 5;} -REG_END2 - -REG64_(GIFReg, HWREG) - u32 DATA_LOWER:32; - u32 DATA_UPPER:32; -REG_END - -REG64_(GIFReg, LABEL) - u32 ID:32; - u32 IDMSK:32; -REG_END - -REG64_(GIFReg, MIPTBP1) - u64 TBP1:14; - u64 TBW1:6; - u64 TBP2:14; - u64 TBW2:6; - u64 TBP3:14; - u64 TBW3:6; - u64 _PAD:4; -REG_END - -REG64_(GIFReg, MIPTBP2) - u64 TBP4:14; - u64 TBW4:6; - u64 TBP5:14; - u64 TBW5:6; - u64 TBP6:14; - u64 TBW6:6; - u64 _PAD:4; -REG_END - -REG64_(GIFReg, NOP) - u32 _PAD1:32; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, PABE) - u32 PABE:1; - u32 _PAD1:31; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, PRIM) - u32 PRIM:3; - u32 IIP:1; - u32 TME:1; - u32 FGE:1; - u32 ABE:1; - u32 AA1:1; - u32 FST:1; - u32 CTXT:1; - u32 FIX:1; - u32 _PAD1:21; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, PRMODE) - u32 _PRIM:3; - u32 IIP:1; - u32 TME:1; - u32 FGE:1; - u32 ABE:1; - u32 AA1:1; - u32 FST:1; - u32 CTXT:1; - u32 FIX:1; - u32 _PAD2:21; - u32 _PAD3:32; -REG_END - -REG64_(GIFReg, PRMODECONT) - u32 AC:1; - u32 _PAD1:31; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, RGBAQ) - u32 R:8; - u32 G:8; - u32 B:8; - u32 A:8; - float Q; -REG_END - -REG64_(GIFReg, SCANMSK) - u32 MSK:2; - u32 _PAD1:30; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, SCISSOR) - u32 SCAX0:11; - u32 _PAD1:5; - u32 SCAX1:11; - u32 _PAD2:5; - u32 SCAY0:11; - u32 _PAD3:5; - u32 SCAY1:11; - u32 _PAD4:5; -REG_END - -REG64_(GIFReg, SIGNAL) - u32 ID:32; - u32 IDMSK:32; -REG_END - -REG64_(GIFReg, ST) - float S; - float T; -REG_END - -REG64_(GIFReg, TEST) - u32 ATE:1; - u32 ATST:3; - u32 AREF:8; - u32 AFAIL:2; - u32 DATE:1; - u32 DATM:1; - u32 ZTE:1; - u32 ZTST:2; - u32 _PAD1:13; - u32 _PAD2:32; -REG_END2 - __forceinline bool DoFirstPass() {return !ATE || ATST != ATST_NEVER;} // not all pixels fail automatically - __forceinline bool DoSecondPass() {return ATE && ATST != ATST_ALWAYS && AFAIL != AFAIL_KEEP;} // pixels may fail, write fb/z - __forceinline bool NoSecondPass() {return ATE && ATST != ATST_ALWAYS && AFAIL == AFAIL_KEEP;} // pixels may fail, no output -REG_END2 - -REG64_(GIFReg, TEX0) -union -{ - struct - { - u32 TBP0:14; - u32 TBW:6; - u32 PSM:6; - u32 TW:4; - u32 _PAD1:2; - u32 _PAD2:2; - u32 TCC:1; - u32 TFX:2; - u32 CBP:14; - u32 CPSM:4; - u32 CSM:1; - u32 CSA:5; - u32 CLD:3; - }; - - struct - { - u64 _PAD3:30; - u64 TH:4; - u64 _PAD4:30; - }; -}; -REG_END2 - __forceinline bool IsRepeating() {return (u32)((u32)1 << TW) > (u32)(TBW << (u32)6);} -REG_END2 - -REG64_(GIFReg, TEX1) - u32 LCM:1; - u32 _PAD1:1; - u32 MXL:3; - u32 MMAG:1; - u32 MMIN:3; - u32 MTBA:1; - u32 _PAD2:9; - u32 L:2; - u32 _PAD3:11; - s32 K:12; // 1:7:4 - u32 _PAD4:20; -REG_END2 - bool IsMinLinear() const {return (MMIN == 1) || (MMIN & 4);} - bool IsMagLinear() const {return MMAG;} -REG_END2 - -REG64_(GIFReg, TEX2) - u32 _PAD1:20; - u32 PSM:6; - u32 _PAD2:6; - u32 _PAD3:5; - u32 CBP:14; - u32 CPSM:4; - u32 CSM:1; - u32 CSA:5; - u32 CLD:3; -REG_END - -REG64_(GIFReg, TEXA) - u32 TA0:8; - u32 _PAD1:7; - u32 AEM:1; - u32 _PAD2:16; - u32 TA1:8; - u32 _PAD3:24; -REG_END - -REG64_(GIFReg, TEXCLUT) - u32 CBW:6; - u32 COU:6; - u32 COV:10; - u32 _PAD1:10; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, TEXFLUSH) - u32 _PAD1:32; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, TRXDIR) - u32 XDIR:2; - u32 _PAD1:30; - u32 _PAD2:32; -REG_END - -REG64_(GIFReg, TRXPOS) - u32 SSAX:11; - u32 _PAD1:5; - u32 SSAY:11; - u32 _PAD2:5; - u32 DSAX:11; - u32 _PAD3:5; - u32 DSAY:11; - u32 DIRY:1; - u32 DIRX:1; - u32 _PAD4:3; -REG_END - -REG64_(GIFReg, TRXREG) - u32 RRW:12; - u32 _PAD1:20; - u32 RRH:12; - u32 _PAD2:20; -REG_END - -REG64_(GIFReg, UV) - u32 U:14; - u32 _PAD1:2; - u32 V:14; - u32 _PAD2:2; - u32 _PAD3:32; -REG_END - -REG64_(GIFReg, XYOFFSET) - u32 OFX:16; - u32 _PAD1:16; - u32 OFY:16; - u32 _PAD2:16; -REG_END - -REG64_(GIFReg, XYZ) - u32 X:16; - u32 Y:16; - u32 Z:32; -REG_END - -REG64_(GIFReg, XYZF) - u32 X:16; - u32 Y:16; - u32 Z:24; - u32 F:8; -REG_END - -REG64_(GIFReg, ZBUF) - u32 ZBP:9; - u32 _PAD1:15; - // u32 PSM:4; - // u32 _PAD2:4; - u32 PSM:6; - u32 _PAD2:2; - u32 ZMSK:1; - u32 _PAD3:31; -REG_END2 - u32 Block() const {return ZBP << 5;} -REG_END2 - -REG64_SET(GIFReg) - GIFRegALPHA ALPHA; - GIFRegBITBLTBUF BITBLTBUF; - GIFRegCLAMP CLAMP; - GIFRegCOLCLAMP COLCLAMP; - GIFRegDIMX DIMX; - GIFRegDTHE DTHE; - GIFRegFBA FBA; - GIFRegFINISH FINISH; - GIFRegFOG FOG; - GIFRegFOGCOL FOGCOL; - GIFRegFRAME FRAME; - GIFRegHWREG HWREG; - GIFRegLABEL LABEL; - GIFRegMIPTBP1 MIPTBP1; - GIFRegMIPTBP2 MIPTBP2; - GIFRegNOP NOP; - GIFRegPABE PABE; - GIFRegPRIM PRIM; - GIFRegPRMODE PRMODE; - GIFRegPRMODECONT PRMODECONT; - GIFRegRGBAQ RGBAQ; - GIFRegSCANMSK SCANMSK; - GIFRegSCISSOR SCISSOR; - GIFRegSIGNAL SIGNAL; - GIFRegST ST; - GIFRegTEST TEST; - GIFRegTEX0 TEX0; - GIFRegTEX1 TEX1; - GIFRegTEX2 TEX2; - GIFRegTEXA TEXA; - GIFRegTEXCLUT TEXCLUT; - GIFRegTEXFLUSH TEXFLUSH; - GIFRegTRXDIR TRXDIR; - GIFRegTRXPOS TRXPOS; - GIFRegTRXREG TRXREG; - GIFRegUV UV; - GIFRegXYOFFSET XYOFFSET; - GIFRegXYZ XYZ; - GIFRegXYZF XYZF; - GIFRegZBUF ZBUF; -REG_SET_END - -// GIFPacked - -REG128_(GIFPacked, PRIM) - u32 PRIM:11; - u32 _PAD1:21; - u32 _PAD2:32; - u32 _PAD3:32; - u32 _PAD4:32; -REG_END - -REG128_(GIFPacked, RGBA) - u32 R:8; - u32 _PAD1:24; - u32 G:8; - u32 _PAD2:24; - u32 B:8; - u32 _PAD3:24; - u32 A:8; - u32 _PAD4:24; -REG_END - -REG128_(GIFPacked, STQ) - float S; - float T; - float Q; - u32 _PAD1:32; -REG_END - -REG128_(GIFPacked, UV) - u32 U:14; - u32 _PAD1:18; - u32 V:14; - u32 _PAD2:18; - u32 _PAD3:32; - u32 _PAD4:32; -REG_END - -REG128_(GIFPacked, XYZF2) - u32 X:16; - u32 _PAD1:16; - u32 Y:16; - u32 _PAD2:16; - u32 _PAD3:4; - u32 Z:24; - u32 _PAD4:4; - u32 _PAD5:4; - u32 F:8; - u32 _PAD6:3; - u32 ADC:1; - u32 _PAD7:16; -REG_END - -REG128_(GIFPacked, XYZ2) - u32 X:16; - u32 _PAD1:16; - u32 Y:16; - u32 _PAD2:16; - u32 Z:32; - u32 _PAD3:15; - u32 ADC:1; - u32 _PAD4:16; -REG_END - -REG128_(GIFPacked, FOG) - u32 _PAD1:32; - u32 _PAD2:32; - u32 _PAD3:32; - u32 _PAD4:4; - u32 F:8; - u32 _PAD5:20; -REG_END - -REG128_(GIFPacked, A_D) - u64 DATA:64; - u32 ADDR:8; // enum GIF_A_D_REG - u32 _PAD1:24; - u32 _PAD2:32; -REG_END - -REG128_(GIFPacked, NOP) - u32 _PAD1:32; - u32 _PAD2:32; - u32 _PAD3:32; - u32 _PAD4:32; -REG_END - -REG128_SET(GIFPackedReg) - GIFReg r; - GIFPackedPRIM PRIM; - GIFPackedRGBA RGBA; - GIFPackedSTQ STQ; - GIFPackedUV UV; - GIFPackedXYZF2 XYZF2; - GIFPackedXYZ2 XYZ2; - GIFPackedFOG FOG; - GIFPackedA_D A_D; - GIFPackedNOP NOP; -REG_SET_END - -extern void WriteTempRegs(); -extern void SetFrameSkip(bool skip); -extern void ResetRegs(); + +#ifdef USE_OLD_REGS +#include "Regs.h" +#else +enum GIF_REG +{ + GIF_REG_PRIM = 0x00, + GIF_REG_RGBA = 0x01, + GIF_REG_STQ = 0x02, + GIF_REG_UV = 0x03, + GIF_REG_XYZF2 = 0x04, + GIF_REG_XYZ2 = 0x05, + GIF_REG_TEX0_1 = 0x06, + GIF_REG_TEX0_2 = 0x07, + GIF_REG_CLAMP_1 = 0x08, + GIF_REG_CLAMP_2 = 0x09, + GIF_REG_FOG = 0x0a, + GIF_REG_XYZF3 = 0x0c, + GIF_REG_XYZ3 = 0x0d, + GIF_REG_A_D = 0x0e, + GIF_REG_NOP = 0x0f, +}; + +enum GIF_A_D_REG +{ + GIF_A_D_REG_PRIM = 0x00, + GIF_A_D_REG_RGBAQ = 0x01, + GIF_A_D_REG_ST = 0x02, + GIF_A_D_REG_UV = 0x03, + GIF_A_D_REG_XYZF2 = 0x04, + GIF_A_D_REG_XYZ2 = 0x05, + GIF_A_D_REG_TEX0_1 = 0x06, + GIF_A_D_REG_TEX0_2 = 0x07, + GIF_A_D_REG_CLAMP_1 = 0x08, + GIF_A_D_REG_CLAMP_2 = 0x09, + GIF_A_D_REG_FOG = 0x0a, + GIF_A_D_REG_XYZF3 = 0x0c, + GIF_A_D_REG_XYZ3 = 0x0d, + GIF_A_D_REG_NOP = 0x0f, + GIF_A_D_REG_TEX1_1 = 0x14, + GIF_A_D_REG_TEX1_2 = 0x15, + GIF_A_D_REG_TEX2_1 = 0x16, + GIF_A_D_REG_TEX2_2 = 0x17, + GIF_A_D_REG_XYOFFSET_1 = 0x18, + GIF_A_D_REG_XYOFFSET_2 = 0x19, + GIF_A_D_REG_PRMODECONT = 0x1a, + GIF_A_D_REG_PRMODE = 0x1b, + GIF_A_D_REG_TEXCLUT = 0x1c, + GIF_A_D_REG_SCANMSK = 0x22, + GIF_A_D_REG_MIPTBP1_1 = 0x34, + GIF_A_D_REG_MIPTBP1_2 = 0x35, + GIF_A_D_REG_MIPTBP2_1 = 0x36, + GIF_A_D_REG_MIPTBP2_2 = 0x37, + GIF_A_D_REG_TEXA = 0x3b, + GIF_A_D_REG_FOGCOL = 0x3d, + GIF_A_D_REG_TEXFLUSH = 0x3f, + GIF_A_D_REG_SCISSOR_1 = 0x40, + GIF_A_D_REG_SCISSOR_2 = 0x41, + GIF_A_D_REG_ALPHA_1 = 0x42, + GIF_A_D_REG_ALPHA_2 = 0x43, + GIF_A_D_REG_DIMX = 0x44, + GIF_A_D_REG_DTHE = 0x45, + GIF_A_D_REG_COLCLAMP = 0x46, + GIF_A_D_REG_TEST_1 = 0x47, + GIF_A_D_REG_TEST_2 = 0x48, + GIF_A_D_REG_PABE = 0x49, + GIF_A_D_REG_FBA_1 = 0x4a, + GIF_A_D_REG_FBA_2 = 0x4b, + GIF_A_D_REG_FRAME_1 = 0x4c, + GIF_A_D_REG_FRAME_2 = 0x4d, + GIF_A_D_REG_ZBUF_1 = 0x4e, + GIF_A_D_REG_ZBUF_2 = 0x4f, + GIF_A_D_REG_BITBLTBUF = 0x50, + GIF_A_D_REG_TRXPOS = 0x51, + GIF_A_D_REG_TRXREG = 0x52, + GIF_A_D_REG_TRXDIR = 0x53, + GIF_A_D_REG_HWREG = 0x54, + GIF_A_D_REG_SIGNAL = 0x60, + GIF_A_D_REG_FINISH = 0x61, + GIF_A_D_REG_LABEL = 0x62, +}; +// In case we want to change to/from __fastcall for GIF register handlers: +#define __gifCall __fastcall + +typedef void __gifCall FnType_GIFRegHandler(const u32* data); +typedef FnType_GIFRegHandler* GIFRegHandler; + +extern FnType_GIFRegHandler GIFPackedRegHandlerNull; +extern FnType_GIFRegHandler GIFPackedRegHandlerRGBA; +extern FnType_GIFRegHandler GIFPackedRegHandlerSTQ; +extern FnType_GIFRegHandler GIFPackedRegHandlerUV; +extern FnType_GIFRegHandler GIFPackedRegHandlerXYZF2; +extern FnType_GIFRegHandler GIFPackedRegHandlerXYZ2; +extern FnType_GIFRegHandler GIFPackedRegHandlerFOG; +extern FnType_GIFRegHandler GIFPackedRegHandlerA_D; +extern FnType_GIFRegHandler GIFPackedRegHandlerNOP; + +// These are unimplemented, and fall back on the non-packed versions. +extern FnType_GIFRegHandler GIFPackedRegHandlerPRIM; + +template +extern FnType_GIFRegHandler GIFPackedRegHandlerTEX0; + +template +extern FnType_GIFRegHandler GIFPackedRegHandlerCLAMP; + +extern FnType_GIFRegHandler GIFPackedRegHandlerXYZF3; +extern FnType_GIFRegHandler GIFPackedRegHandlerXYZ3; + +extern FnType_GIFRegHandler GIFRegHandlerNull; +extern FnType_GIFRegHandler GIFRegHandlerPRIM; +extern FnType_GIFRegHandler GIFRegHandlerRGBAQ; +extern FnType_GIFRegHandler GIFRegHandlerST; +extern FnType_GIFRegHandler GIFRegHandlerUV; +extern FnType_GIFRegHandler GIFRegHandlerXYZF2; +extern FnType_GIFRegHandler GIFRegHandlerXYZ2; + +template +extern FnType_GIFRegHandler GIFRegHandlerTEX0; + +template +extern FnType_GIFRegHandler GIFRegHandlerCLAMP; + +extern FnType_GIFRegHandler GIFRegHandlerFOG; +extern FnType_GIFRegHandler GIFRegHandlerXYZF3; +extern FnType_GIFRegHandler GIFRegHandlerXYZ3; +extern FnType_GIFRegHandler GIFRegHandlerNOP; + +template +extern FnType_GIFRegHandler GIFRegHandlerTEX1; + +template +extern FnType_GIFRegHandler GIFRegHandlerTEX2; + +template +extern FnType_GIFRegHandler GIFRegHandlerXYOFFSET; + +extern FnType_GIFRegHandler GIFRegHandlerPRMODECONT; +extern FnType_GIFRegHandler GIFRegHandlerPRMODE; +extern FnType_GIFRegHandler GIFRegHandlerTEXCLUT; +extern FnType_GIFRegHandler GIFRegHandlerSCANMSK; +template +extern FnType_GIFRegHandler GIFRegHandlerMIPTBP1; +template +extern FnType_GIFRegHandler GIFRegHandlerMIPTBP2; +extern FnType_GIFRegHandler GIFRegHandlerTEXA; +extern FnType_GIFRegHandler GIFRegHandlerFOGCOL; +extern FnType_GIFRegHandler GIFRegHandlerTEXFLUSH; + +template +extern FnType_GIFRegHandler GIFRegHandlerSCISSOR; +template +extern FnType_GIFRegHandler GIFRegHandlerALPHA; + +extern FnType_GIFRegHandler GIFRegHandlerDIMX; +extern FnType_GIFRegHandler GIFRegHandlerDTHE; +extern FnType_GIFRegHandler GIFRegHandlerCOLCLAMP; +template +extern FnType_GIFRegHandler GIFRegHandlerTEST; +extern FnType_GIFRegHandler GIFRegHandlerPABE; +template +extern FnType_GIFRegHandler GIFRegHandlerFBA; +template +extern FnType_GIFRegHandler GIFRegHandlerFRAME; +template +extern FnType_GIFRegHandler GIFRegHandlerZBUF; +extern FnType_GIFRegHandler GIFRegHandlerBITBLTBUF; +extern FnType_GIFRegHandler GIFRegHandlerTRXPOS; +extern FnType_GIFRegHandler GIFRegHandlerTRXREG; +extern FnType_GIFRegHandler GIFRegHandlerTRXDIR; +extern FnType_GIFRegHandler GIFRegHandlerHWREG; +extern FnType_GIFRegHandler GIFRegHandlerSIGNAL; +extern FnType_GIFRegHandler GIFRegHandlerFINISH; +extern FnType_GIFRegHandler GIFRegHandlerLABEL; + +// GifReg & GifPackedReg structs from GSdx, slightly modified + +enum GS_ATST +{ + ATST_NEVER = 0, + ATST_ALWAYS = 1, + ATST_LESS = 2, + ATST_LEQUAL = 3, + ATST_EQUAL = 4, + ATST_GEQUAL = 5, + ATST_GREATER = 6, + ATST_NOTEQUAL = 7, +}; + +enum GS_AFAIL +{ + AFAIL_KEEP = 0, + AFAIL_FB_ONLY = 1, + AFAIL_ZB_ONLY = 2, + AFAIL_RGB_ONLY = 3, +}; + +// GIFReg + +REG64_(GIFReg, ALPHA) + u32 A:2; + u32 B:2; + u32 C:2; + u32 D:2; + u32 _PAD1:24; + u32 FIX:8; + u32 _PAD2:24; +REG_END2 + // opaque => output will be Cs/As + __forceinline bool IsOpaque() const {return (A == B || C == 2 && FIX == 0) && D == 0 || (A == 0 && B == D && C == 2 && FIX == 0x80);} + __forceinline bool IsOpaque(int amin, int amax) const {return (A == B || amax == 0) && D == 0 || A == 0 && B == D && amin == 0x80 && amax == 0x80;} +REG_END2 + +REG64_(GIFReg, BITBLTBUF) + u32 SBP:14; + u32 _PAD1:2; + u32 SBW:6; + u32 _PAD2:2; + u32 SPSM:6; + u32 _PAD3:2; + u32 DBP:14; + u32 _PAD4:2; + u32 DBW:6; + u32 _PAD5:2; + u32 DPSM:6; + u32 _PAD6:2; +REG_END + +REG64_(GIFReg, CLAMP) +union +{ + struct + { + u32 WMS:2; + u32 WMT:2; + u32 MINU:10; + u32 MAXU:10; + u32 _PAD1:8; + u32 _PAD2:2; + u32 MAXV:10; + u32 _PAD3:20; + }; + + struct + { + u64 _PAD4:24; + u64 MINV:10; + u64 _PAD5:30; + }; +}; +REG_END + +REG64_(GIFReg, COLCLAMP) + u32 CLAMP:1; + u32 _PAD1:31; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, DIMX) + s32 DM00:3; + s32 _PAD00:1; + s32 DM01:3; + s32 _PAD01:1; + s32 DM02:3; + s32 _PAD02:1; + s32 DM03:3; + s32 _PAD03:1; + s32 DM10:3; + s32 _PAD10:1; + s32 DM11:3; + s32 _PAD11:1; + s32 DM12:3; + s32 _PAD12:1; + s32 DM13:3; + s32 _PAD13:1; + s32 DM20:3; + s32 _PAD20:1; + s32 DM21:3; + s32 _PAD21:1; + s32 DM22:3; + s32 _PAD22:1; + s32 DM23:3; + s32 _PAD23:1; + s32 DM30:3; + s32 _PAD30:1; + s32 DM31:3; + s32 _PAD31:1; + s32 DM32:3; + s32 _PAD32:1; + s32 DM33:3; + s32 _PAD33:1; +REG_END + +REG64_(GIFReg, DTHE) + u32 DTHE:1; + u32 _PAD1:31; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, FBA) + u32 FBA:1; + u32 _PAD1:31; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, FINISH) + u32 _PAD1:32; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, FOG) + u32 _PAD1:32; + u32 _PAD2:24; + u32 F:8; +REG_END + +REG64_(GIFReg, FOGCOL) + u32 FCR:8; + u32 FCG:8; + u32 FCB:8; + u32 _PAD1:8; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, FRAME) + u32 FBP:9; + u32 _PAD1:7; + u32 FBW:6; + u32 _PAD2:2; + u32 PSM:6; + u32 _PAD3:2; + u32 FBMSK:32; +REG_END2 + u32 Block() const {return FBP << 5;} +REG_END2 + +REG64_(GIFReg, HWREG) + u32 DATA_LOWER:32; + u32 DATA_UPPER:32; +REG_END + +REG64_(GIFReg, LABEL) + u32 ID:32; + u32 IDMSK:32; +REG_END + +REG64_(GIFReg, MIPTBP1) + u64 TBP1:14; + u64 TBW1:6; + u64 TBP2:14; + u64 TBW2:6; + u64 TBP3:14; + u64 TBW3:6; + u64 _PAD:4; +REG_END + +REG64_(GIFReg, MIPTBP2) + u64 TBP4:14; + u64 TBW4:6; + u64 TBP5:14; + u64 TBW5:6; + u64 TBP6:14; + u64 TBW6:6; + u64 _PAD:4; +REG_END + +REG64_(GIFReg, NOP) + u32 _PAD1:32; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, PABE) + u32 PABE:1; + u32 _PAD1:31; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, PRIM) + u32 PRIM:3; + u32 IIP:1; + u32 TME:1; + u32 FGE:1; + u32 ABE:1; + u32 AA1:1; + u32 FST:1; + u32 CTXT:1; + u32 FIX:1; + u32 _PAD1:21; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, PRMODE) + u32 _PRIM:3; + u32 IIP:1; + u32 TME:1; + u32 FGE:1; + u32 ABE:1; + u32 AA1:1; + u32 FST:1; + u32 CTXT:1; + u32 FIX:1; + u32 _PAD2:21; + u32 _PAD3:32; +REG_END + +REG64_(GIFReg, PRMODECONT) + u32 AC:1; + u32 _PAD1:31; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, RGBAQ) + u32 R:8; + u32 G:8; + u32 B:8; + u32 A:8; + float Q; +REG_END + +REG64_(GIFReg, SCANMSK) + u32 MSK:2; + u32 _PAD1:30; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, SCISSOR) + u32 SCAX0:11; + u32 _PAD1:5; + u32 SCAX1:11; + u32 _PAD2:5; + u32 SCAY0:11; + u32 _PAD3:5; + u32 SCAY1:11; + u32 _PAD4:5; +REG_END + +REG64_(GIFReg, SIGNAL) + u32 ID:32; + u32 IDMSK:32; +REG_END + +REG64_(GIFReg, ST) + float S; + float T; +REG_END + +REG64_(GIFReg, TEST) + u32 ATE:1; + u32 ATST:3; + u32 AREF:8; + u32 AFAIL:2; + u32 DATE:1; + u32 DATM:1; + u32 ZTE:1; + u32 ZTST:2; + u32 _PAD1:13; + u32 _PAD2:32; +REG_END2 + __forceinline bool DoFirstPass() {return !ATE || ATST != ATST_NEVER;} // not all pixels fail automatically + __forceinline bool DoSecondPass() {return ATE && ATST != ATST_ALWAYS && AFAIL != AFAIL_KEEP;} // pixels may fail, write fb/z + __forceinline bool NoSecondPass() {return ATE && ATST != ATST_ALWAYS && AFAIL == AFAIL_KEEP;} // pixels may fail, no output +REG_END2 + +REG64_(GIFReg, TEX0) +union +{ + struct + { + u32 TBP0:14; + u32 TBW:6; + u32 PSM:6; + u32 TW:4; + u32 _PAD1:2; + u32 _PAD2:2; + u32 TCC:1; + u32 TFX:2; + u32 CBP:14; + u32 CPSM:4; + u32 CSM:1; + u32 CSA:5; + u32 CLD:3; + }; + + struct + { + u64 _PAD3:30; + u64 TH:4; + u64 _PAD4:30; + }; +}; +REG_END2 + __forceinline bool IsRepeating() {return (u32)((u32)1 << TW) > (u32)(TBW << (u32)6);} +REG_END2 + +REG64_(GIFReg, TEX1) + u32 LCM:1; + u32 _PAD1:1; + u32 MXL:3; + u32 MMAG:1; + u32 MMIN:3; + u32 MTBA:1; + u32 _PAD2:9; + u32 L:2; + u32 _PAD3:11; + s32 K:12; // 1:7:4 + u32 _PAD4:20; +REG_END2 + bool IsMinLinear() const {return (MMIN == 1) || (MMIN & 4);} + bool IsMagLinear() const {return MMAG;} +REG_END2 + +REG64_(GIFReg, TEX2) + u32 _PAD1:20; + u32 PSM:6; + u32 _PAD2:6; + u32 _PAD3:5; + u32 CBP:14; + u32 CPSM:4; + u32 CSM:1; + u32 CSA:5; + u32 CLD:3; +REG_END + +REG64_(GIFReg, TEXA) + u32 TA0:8; + u32 _PAD1:7; + u32 AEM:1; + u32 _PAD2:16; + u32 TA1:8; + u32 _PAD3:24; +REG_END + +REG64_(GIFReg, TEXCLUT) + u32 CBW:6; + u32 COU:6; + u32 COV:10; + u32 _PAD1:10; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, TEXFLUSH) + u32 _PAD1:32; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, TRXDIR) + u32 XDIR:2; + u32 _PAD1:30; + u32 _PAD2:32; +REG_END + +REG64_(GIFReg, TRXPOS) + u32 SSAX:11; + u32 _PAD1:5; + u32 SSAY:11; + u32 _PAD2:5; + u32 DSAX:11; + u32 _PAD3:5; + u32 DSAY:11; + u32 DIRY:1; + u32 DIRX:1; + u32 _PAD4:3; +REG_END + +REG64_(GIFReg, TRXREG) + u32 RRW:12; + u32 _PAD1:20; + u32 RRH:12; + u32 _PAD2:20; +REG_END + +REG64_(GIFReg, UV) + u32 U:14; + u32 _PAD1:2; + u32 V:14; + u32 _PAD2:2; + u32 _PAD3:32; +REG_END + +REG64_(GIFReg, XYOFFSET) + u32 OFX:16; + u32 _PAD1:16; + u32 OFY:16; + u32 _PAD2:16; +REG_END + +REG64_(GIFReg, XYZ) + u32 X:16; + u32 Y:16; + u32 Z:32; +REG_END + +REG64_(GIFReg, XYZF) + u32 X:16; + u32 Y:16; + u32 Z:24; + u32 F:8; +REG_END + +REG64_(GIFReg, ZBUF) + u32 ZBP:9; + u32 _PAD1:15; + // u32 PSM:4; + // u32 _PAD2:4; + u32 PSM:6; + u32 _PAD2:2; + u32 ZMSK:1; + u32 _PAD3:31; +REG_END2 + u32 Block() const {return ZBP << 5;} +REG_END2 + +REG64_SET(GIFReg) + GIFRegALPHA ALPHA; + GIFRegBITBLTBUF BITBLTBUF; + GIFRegCLAMP CLAMP; + GIFRegCOLCLAMP COLCLAMP; + GIFRegDIMX DIMX; + GIFRegDTHE DTHE; + GIFRegFBA FBA; + GIFRegFINISH FINISH; + GIFRegFOG FOG; + GIFRegFOGCOL FOGCOL; + GIFRegFRAME FRAME; + GIFRegHWREG HWREG; + GIFRegLABEL LABEL; + GIFRegMIPTBP1 MIPTBP1; + GIFRegMIPTBP2 MIPTBP2; + GIFRegNOP NOP; + GIFRegPABE PABE; + GIFRegPRIM PRIM; + GIFRegPRMODE PRMODE; + GIFRegPRMODECONT PRMODECONT; + GIFRegRGBAQ RGBAQ; + GIFRegSCANMSK SCANMSK; + GIFRegSCISSOR SCISSOR; + GIFRegSIGNAL SIGNAL; + GIFRegST ST; + GIFRegTEST TEST; + GIFRegTEX0 TEX0; + GIFRegTEX1 TEX1; + GIFRegTEX2 TEX2; + GIFRegTEXA TEXA; + GIFRegTEXCLUT TEXCLUT; + GIFRegTEXFLUSH TEXFLUSH; + GIFRegTRXDIR TRXDIR; + GIFRegTRXPOS TRXPOS; + GIFRegTRXREG TRXREG; + GIFRegUV UV; + GIFRegXYOFFSET XYOFFSET; + GIFRegXYZ XYZ; + GIFRegXYZF XYZF; + GIFRegZBUF ZBUF; +REG_SET_END + +// GIFPacked + +REG128_(GIFPacked, PRIM) + u32 PRIM:11; + u32 _PAD1:21; + u32 _PAD2:32; + u32 _PAD3:32; + u32 _PAD4:32; +REG_END + +REG128_(GIFPacked, RGBA) + u32 R:8; + u32 _PAD1:24; + u32 G:8; + u32 _PAD2:24; + u32 B:8; + u32 _PAD3:24; + u32 A:8; + u32 _PAD4:24; +REG_END + +REG128_(GIFPacked, STQ) + float S; + float T; + float Q; + u32 _PAD1:32; +REG_END + +REG128_(GIFPacked, UV) + u32 U:14; + u32 _PAD1:18; + u32 V:14; + u32 _PAD2:18; + u32 _PAD3:32; + u32 _PAD4:32; +REG_END + +REG128_(GIFPacked, XYZF2) + u32 X:16; + u32 _PAD1:16; + u32 Y:16; + u32 _PAD2:16; + u32 _PAD3:4; + u32 Z:24; + u32 _PAD4:4; + u32 _PAD5:4; + u32 F:8; + u32 _PAD6:3; + u32 ADC:1; + u32 _PAD7:16; +REG_END + +REG128_(GIFPacked, XYZ2) + u32 X:16; + u32 _PAD1:16; + u32 Y:16; + u32 _PAD2:16; + u32 Z:32; + u32 _PAD3:15; + u32 ADC:1; + u32 _PAD4:16; +REG_END + +REG128_(GIFPacked, FOG) + u32 _PAD1:32; + u32 _PAD2:32; + u32 _PAD3:32; + u32 _PAD4:4; + u32 F:8; + u32 _PAD5:20; +REG_END + +REG128_(GIFPacked, A_D) + u64 DATA:64; + u32 ADDR:8; // enum GIF_A_D_REG + u32 _PAD1:24; + u32 _PAD2:32; +REG_END + +REG128_(GIFPacked, NOP) + u32 _PAD1:32; + u32 _PAD2:32; + u32 _PAD3:32; + u32 _PAD4:32; +REG_END + +REG128_SET(GIFPackedReg) + GIFReg r; + GIFPackedPRIM PRIM; + GIFPackedRGBA RGBA; + GIFPackedSTQ STQ; + GIFPackedUV UV; + GIFPackedXYZF2 XYZF2; + GIFPackedXYZ2 XYZ2; + GIFPackedFOG FOG; + GIFPackedA_D A_D; + GIFPackedNOP NOP; +REG_SET_END + +extern void WriteTempRegs(); +extern void SetFrameSkip(bool skip); +extern void ResetRegs(); #endif #endif // NEWREGS_H_INCLUDED diff --git a/plugins/zzogl-pg/opengl/Win32/Conf.cpp b/plugins/zzogl-pg/opengl/Win32/Conf.cpp index dd398dea46..ab166ff27b 100644 --- a/plugins/zzogl-pg/opengl/Win32/Conf.cpp +++ b/plugins/zzogl-pg/opengl/Win32/Conf.cpp @@ -45,6 +45,7 @@ void LoadConfig() if (!fp) { + SysMessage("Unable to open file!"); CreateDirectory(s_strIniPath.c_str(), NULL); SaveConfig();//save and return return ; diff --git a/plugins/zzogl-pg/opengl/Win32/Win32.cpp b/plugins/zzogl-pg/opengl/Win32/Win32.cpp index 4e2c002526..84b77d421e 100644 --- a/plugins/zzogl-pg/opengl/Win32/Win32.cpp +++ b/plugins/zzogl-pg/opengl/Win32/Win32.cpp @@ -78,7 +78,7 @@ map mapConfOpts; void OnInitDialog(HWND hW) { - if (!(conf.zz_options.loaded)) LoadConfig(); + /*if (!(conf.zz_options.loaded))*/ LoadConfig(); CheckDlgButton(hW, IDC_CONFIG_INTERLACE, conf.interlace); CheckDlgButton(hW, IDC_CONFIG_BILINEAR, conf.bilinear); @@ -125,7 +125,7 @@ void OnInitDialog(HWND hW) for (map::iterator it = mapConfOpts.begin(); it != mapConfOpts.end(); ++it) { - CheckDlgButton(hW, it->first, (conf.def_hacks._u32&it->second) ? 1 : 0); + CheckDlgButton(hW, it->first, (conf.settings()._u32 & it->second) ? 1 : 0); } } diff --git a/plugins/zzogl-pg/opengl/Win32/zerogs.rc b/plugins/zzogl-pg/opengl/Win32/zerogs.rc index fbe6c46ec5..aa2918ad89 100644 --- a/plugins/zzogl-pg/opengl/Win32/zerogs.rc +++ b/plugins/zzogl-pg/opengl/Win32/zerogs.rc @@ -40,113 +40,88 @@ IDR_SHADERS RCDATA "ps2hw.dat" // // Dialog // +IDD_CONFIG DIALOGEX 0, 0, 530, 290 +STYLE DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "ZZ OpenGL PG Configuration" +FONT 8, "Tahoma" +{ + CONTROL "Logging (For Debugging)", 1000, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 6, 102, 10 + CONTROL "Interlace Enable (toggle with F5). There are 2 modes + interlace off", IDC_CONFIG_INTERLACE, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 64, 137, 18 + CONTROL "Bilinear Filtering (Shift+F5). Best quality is on, turn off for speed.", IDC_CONFIG_BILINEAR, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 81, 137, 18 + CONTROL "None", IDC_CONFIG_AANONE, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP, 21, 38, 34, 11 + CONTROL "2X", IDC_CONFIG_AA2, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 21, 48, 26, 11 + CONTROL "4X", IDC_CONFIG_AA4, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 63, 38, 28, 11 + CONTROL "8X", IDC_CONFIG_AA8, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 63, 48, 26, 11 + CONTROL "16X", IDC_CONFIG_AA16, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 100, 42, 28, 11 + CONTROL "Wireframe rendering (F7)", IDC_CONFIG_WIREFRAME, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 183, 96, 10 + CONTROL "Capture Avi (zerogs.avi) (F12)", IDC_CONFIG_CAPTUREAVI, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 194, 109, 10 + CONTROL "Save Snapshots as BMP(default is JPG)", IDC_CONFIG_BMPSS, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 205, 141, 10 + CONTROL "Fullscreen (Alt+Enter),to get out press Alt+Enter again", IDC_CONFIG_FULLSCREEN, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 150, 135, 18 + CONTROL "Wide Screen", IDC_CONFIG_WIDESCREEN, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 167, 109, 10 + CONTROL "640 x 480", IDC_CONF_WIN640, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP, 17, 123, 59, 8 + CONTROL "800 x 600", IDC_CONF_WIN800, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 17, 135, 59, 8 + CONTROL "1024 x 768", IDC_CONF_WIN1024, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 82, 123, 59, 8 + CONTROL "1280 x 960", IDC_CONF_WIN1280, BUTTON, BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE, 82, 135, 53, 8 + CONTROL "Anti-aliasing for sharper graphics (F6)", IDC_STATIC, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 5, 21, 137, 41 + CONTROL "Default Window Size (no speed impact)", IDC_STATIC, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 6, 111, 137, 39 + CONTROL "Show Frames Per Second (Shift+F7)", IDC_STATIC, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 15, 219, 118, 20 -IDD_CONFIG DIALOGEX 0, 0, 427, 401 -STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - CONTROL "Interlace Enable (toggle with F5)\n there are 2 modes + interlace off",IDC_CONFIG_INTERLACE, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,7,134,18 - CONTROL "Bilinear Filtering (Shift+F5)\n Best quality is on, turn off for speed.",IDC_CONFIG_BILINEAR, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,31,135,18 - CONTROL "None",IDC_CONFIG_AANONE,"Button",BS_AUTORADIOBUTTON | WS_GROUP,19,81,34,11 - CONTROL "2X",IDC_CONFIG_AA2,"Button",BS_AUTORADIOBUTTON,69,81,26,11 - CONTROL "4X",IDC_CONFIG_AA4,"Button",BS_AUTORADIOBUTTON,111,81,28,11 - CONTROL "8X",IDC_CONFIG_AA8,"Button",BS_AUTORADIOBUTTON,65,97,26,11 - CONTROL "16X",IDC_CONFIG_AA16,"Button",BS_AUTORADIOBUTTON,107,97,28,11 - CONTROL "Wireframe rendering (F7)",IDC_CONFIG_WIREFRAME,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,122,93,10 - CONTROL "Capture Avi (zerogs.avi) (F12)",IDC_CONFIG_CAPTUREAVI, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,140,109,10 - CONTROL "Save Snapshots as BMPs (default is JPG)",IDC_CONFIG_BMPSS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,161,147,10 - CONTROL "Fullscreen (Alt+Enter)\n to get out press Alt+Enter again",IDC_CONFIG_FULLSCREEN, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,177,146,17 - CONTROL "Wide Screen",IDC_CONFIG_WIDESCREEN, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,7,194,109,10 - CONTROL "640 x 480",IDC_CONF_WIN640,"Button",BS_AUTORADIOBUTTON | WS_GROUP,15,210,59,8 - CONTROL "800 x 600",IDC_CONF_WIN800,"Button",BS_AUTORADIOBUTTON,78,210,59,8 - CONTROL "1024 x 768",IDC_CONF_WIN1024,"Button",BS_AUTORADIOBUTTON,15,223,59,8 - CONTROL "1280 x 960",IDC_CONF_WIN1280,"Button",BS_AUTORADIOBUTTON,78,223,59,8 - DEFPUSHBUTTON "OK",IDOK,7,380,50,14 - PUSHBUTTON "Cancel",IDCANCEL,94,380,50,14 - GROUPBOX "Anti-aliasing for sharper graphics (F6)",IDC_STATIC,7,55,132,61 - GROUPBOX "Default Window Size (no speed impact)",IDC_STATIC,7,201,141,35 - LTEXT "Show Frames Per Second (Shift+F7)",IDC_STATIC,7,244,140,10 - GROUPBOX "Advanced Options",IDC_STATIC,152,7,268,387 - LTEXT "Each option is presented with a unique ID in hex. In order to preserve options across games, go into the game's patch (.pnach) file and type\n zerogs=IDS\nwhere IDS is the OR all of the values in hex for every option you want enabled. ",IDC_STATIC,161,16,252,33 - PUSHBUTTON "Use Defaults (recommended)",IDC_CONF_DEFAULT,159,76,151,14 - CONTROL "Disable alpha testing - 00080000",IDC_CONFOPT_00080000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,104,119,10 - CONTROL "Disable stencil buffer - 00002000\nusually safe to do for simple scenes. Harvest Moon",IDC_CONFOPT_00002000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,114,118,22 - CONTROL "No target CLUT - 00001000\n(use on RE4, or foggy scenes)",IDC_CONFOPT_00001000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,169,120,24 - CONTROL "Disable depth updates - 00000200",IDC_CONFOPT_00000200, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,158,161,125,10 - CONTROL "Alpha Fail hack\nFor Sonic Unleashed, Shadow the Hedgehog, Ghost in the Shell. Remove vertical stripes or other coloring artefacts. Break Persona 4 and MGS3",IDC_CONFOPT_00000100, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,190,121,17 - CONTROL "Exact color testing - 00000020\nfixes overbright or shadow/black artifacts (crash n burn)",IDC_CONFOPT_00000020, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,209,119,25 - CONTROL "Tex Target checking - 00000001\nlego racers",IDC_CONFOPT_00000001, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,233,123,22 - CONTROL "Interlace 2X - 00000004\nfixes 2x bigger screen (gradius3)",IDC_CONFOPT_00000004, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,254,119,20 - CONTROL "No depth resolve - 00008000\nmight give z buffer artifacts",IDC_CONFOPT_00008000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,164,121,19 - CONTROL "full 16 bit resolution - 00010000\nuse when half the screen is missing, etc",IDC_CONFOPT_00010000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,185,125,23 - CONTROL "Auto Reset Targs - 00000002\nshadow hearts, samurai warriors (use when game is slow and toggling AA fixes it)",IDC_CONFOPT_00000002, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,212,124,32 - EDITTEXT IDC_CONFOPT_IDS,361,380,48,14,ES_AUTOHSCROLL | ES_READONLY - CONTROL "Resolve Hack #1 - 00000400\nspeeds some games (kingdom hearts)",IDC_CONFOPT_00000400, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,266,135,19 - CONTROL "Resolve Hack #2 - 00000800\nshadow hearts, urbz, destroy FFX",IDC_CONFOPT_00000800, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,276,117,17 - CONTROL "Resolve Hack #3 - 00020000\nneopets",IDC_CONFOPT_00020000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,287,125,17 - CONTROL "Fast Update - 00040000\nspeeds some games (okami). Sonic Unleashed",IDC_CONFOPT_00040000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,297,125,17 - PUSHBUTTON "Compute OR of IDS",IDC_CONFOPT_COMPUTEOR,283,380,73,14 - LTEXT "Important options are listed first. Note, setting option here means that they will be ADDED to whatever options are set in each pnach file.",IDC_STATIC,159,50,252,23 - CONTROL "No target resolves - 00000010\nStops all resolving of targets (try this first for really slow games). Dark Cloud 1",IDC_CONFOPT_00000010, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,104,111,33 - CONTROL "Enable Multiple RTs - 00100000",IDC_CONFOPT_00100000, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,159,91,119,10 - CONTROL "No color clamping - 00000040\nSpeeds games up but might be too bright or too dim",IDC_CONFOPT_00000040, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,157,137,123,22 - LTEXT "shortcuts: F6 - next, Shift+F6 - prev",IDC_STATIC,19,65,116,11 - CONTROL "No logaripmic-Z - 20000000\n decrease number of Z artefacts",IDC_CONFOPT_20000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,138,111,28 - CONTROL "Partial Targets - 02000000\nReduces artifacts and speeds up some games (mgs3)",IDC_CONFOPT_02000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,158,319,125,24 - CONTROL "Partial Depth - 04000000\nTries to save the depth target as much as possible (mgs3)",IDC_CONFOPT_04000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,159,347,125,24 - CONTROL "Specular Highlights - 01000000\nMakes xenosaga and Okage graphics faster by removing highlights",IDC_CONFOPT_01000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,285,313,125,25 - CONTROL "Gust fix, made gustgame more clean and fast - 10000000",IDC_CONFOPT_10000000, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_TABSTOP,284,343,125,25 + CONTROL "shortcuts: F6 - next, Shift+F6 - prev", IDC_STATIC, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 13, 28, 123, 11 -END + CONTROL "Advanced Options", IDC_STATIC, BUTTON, BS_GROUPBOX | WS_CHILD | WS_VISIBLE, 150, 0, 375, 272 + CONTROL "Each option is presented with a unique ID in hex.", IDC_STATIC, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 155, 10, 365, 8 + CONTROL "Note, setting options here means that they will be ADDED to whatever options are set automatically.", IDC_STATIC, STATIC, SS_LEFT | WS_CHILD | WS_VISIBLE | WS_GROUP, 155, 20, 365, 8 + + CONTROL "Enable Multiple RTS - 00100000", IDC_CONFOPT_00100000, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 30, 365, 8 + CONTROL "Disable alpha testing - 00080000", IDC_CONFOPT_00080000, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 40, 365, 8 + CONTROL "Disable stencil buffer - 00002000, Usually safe to do for simple scenes. Harvest Moon", IDC_CONFOPT_00002000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 50, 365, 8 + CONTROL "No color clamping - 00000040, Speeds games up but might be too bright or too dim", IDC_CONFOPT_00000040, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 60, 365, 8 + CONTROL "Disable depth updates - 00000200", IDC_CONFOPT_00000200, BUTTON, BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 70, 365, 8 + CONTROL "No target CLUT - 00001000, Use on RE4, or foggy scenes.", IDC_CONFOPT_00001000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 80, 365, 8 + CONTROL "Alpha Fail hack - 00000100, Remove vertical stripes, coloring artefacts. (Sonic Unleashed, Shadow the Hedgehog, Ghost in the Shell)", IDC_CONFOPT_00000100, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 90, 365, 16 + CONTROL "Exact color testing - 00000020, Fixes overbright or shadow/black artifacts (crash n burn)", IDC_CONFOPT_00000020, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 110, 365, 8 + CONTROL "Tex Target checking - 00000001, Lego racers", IDC_CONFOPT_00000001, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 120, 365, 8 + CONTROL "Interlace 2X - 00000004, Fixes 2x bigger screen (Gradius 3)", IDC_CONFOPT_00000004, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 130, 365, 8 + CONTROL "Resolve Hack #2 - 00000800, Shadow Hearts, Urbz, (Destroys FFX)", IDC_CONFOPT_00000800, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 140, 365, 8 + CONTROL "Fast Update - 00040000, Speeds some games - (Okami, Sonic Unleashed)", 10IDC_CONFOPT_00040000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 150, 365, 8 + CONTROL "Partial Depth - 04000000, Tries to save the depth target as much as possible (mgs3)", IDC_CONFOPT_04000000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 160, 365, 8 + CONTROL "No target resolves - 00000010, Stops target resolving(try this first for very slow games). (Dark Cloud 1)", IDC_CONFOPT_00000010, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 170, 365, 8 + CONTROL "No logarithmic-Z - 20000000, Decreases number of Z artefacts", IDC_CONFOPT_20000000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 180, 365, 8 + CONTROL "No depth resolve - 00008000, Might give z buffer artifacts", IDC_CONFOPT_00008000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 190, 365, 8 + CONTROL "Auto Reset Targs - 00000002, Use when game is slow and toggling AA fixes it (SH, samurai warriors)", IDC_CONFOPT_00000002, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 200, 365, 8 + CONTROL "Full 16 bit resolution - 00010000, Use when half the screen is missing, etc", IDC_CONFOPT_00010000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 210, 365, 8 + CONTROL "Resolve Hack #1 - 00000400, Speeds some games (Kingdom Hearts)", IDC_CONFOPT_00000400, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 220, 365, 8 + CONTROL "Partial Targets - 02000000, Reduces artifacts and speeds up some games (mgs3)", IDC_CONFOPT_02000000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 230, 365, 8 + CONTROL "Resolve Hack #3 - 00020000, Neopets", IDC_CONFOPT_00020000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 240, 365, 8 + CONTROL "Specular Highlights - 01000000, Makes xenosaga and Okage graphics faster by removing highlights.", IDC_CONFOPT_01000000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 250, 365, 8 + CONTROL "Gust fix - 10000000, Makes gust games cleaner and faster.", IDC_CONFOPT_10000000, BUTTON, BS_AUTOCHECKBOX | BS_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 155, 260, 365, 8 + + CONTROL "OK", IDOK, BUTTON, BS_DEFPUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 275, 50, 12 + CONTROL "Cancel", IDCANCEL, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 92, 275, 50, 12 + CONTROL "Use Defaults (recommended)", IDC_CONF_DEFAULT, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 171, 275, 151, 12 + CONTROL "", IDC_CONFOPT_IDS, EDIT, ES_LEFT | ES_AUTOHSCROLL | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 451, 275, 48, 12 + CONTROL "Compute OR of IDS", IDC_CONFOPT_COMPUTEOR, BUTTON, BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 373, 275, 73, 12 +} IDD_ABOUT DIALOGEX 0, 0, 182, 220 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "GSabout" -FONT 8, "MS Sans Serif", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,65,199,50,14 - LTEXT "ZZogl\n\nauthor: Zeydlitz(@gmail.com)\n\n\nthanks to Gabest for SSE optimizations",IDC_STATIC,7,7,160,47 - LTEXT "Static",IDC_ABOUTTEXT,7,65,152,124 -END +FONT 8, "MS Sans Serif" +{ + DEFPUSHBUTTON "OK",IDOK,65,199,50,14 + LTEXT "ZZogl\n\nauthor: Zeydlitz(@gmail.com)\n\n\nthanks to Gabest for SSE optimizations",IDC_STATIC,7,7,160,47 + LTEXT "Static",IDC_ABOUTTEXT,7,65,152,124 +} IDD_LOGGING DIALOG 0, 0, 152, 55 STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Dialog" FONT 8, "MS Sans Serif" -BEGIN +{ DEFPUSHBUTTON "OK",IDOK,40,35,50,14 PUSHBUTTON "Cancel",IDCANCEL,95,35,50,14 CONTROL "Log",IDC_LOG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,60,15,28,10 -END +} /////////////////////////////////////////////////////////////////////////////