Added option to DDraw blitter to force flipping

This commit is contained in:
Barry Harris 2011-12-09 20:23:06 +00:00
parent a258def3a1
commit ef0779a32b
9 changed files with 16 additions and 1 deletions

View File

@ -975,6 +975,8 @@ BEGIN
MENUITEM SEPARATOR
MENUITEM "&Rotate scanlines", MENU_ROTSCAN
MENUITEM SEPARATOR
MENUITEM "Force &Flip", MENU_FORCE_FLIP
MENUITEM SEPARATOR
POPUP "Buffering &method"
BEGIN
MENUITEM "&Autodetect", MENU_MEMAUTO

View File

@ -126,6 +126,7 @@ int ConfigAppLoad()
// DirectDraw blitter
VAR(bVidScanHalf);
VAR(bVidForceFlip);
// Direct3D blitter
VAR(bVidBilinear);
@ -384,6 +385,8 @@ int ConfigAppSave()
_ftprintf(h, _T("// --- DirectDraw blitter module settings -------------------------------------\n"));
_ftprintf(h, _T("\n// If non-zero, draw scanlines at 50%% intensity\n"));
VAR(bVidScanHalf);
_ftprintf(h, _T("\n// If non-zero, force flipping for games that need it\n"));
VAR(bVidForceFlip);
_ftprintf(h, _T("\n"));
_ftprintf(h, _T("// --- Direct3D 7 blitter module settings -------------------------------------\n"));
_ftprintf(h, _T("\n// If non-zero, use bi-linear filtering to display the image\n"));

View File

@ -671,6 +671,7 @@ void MenuUpdate()
}
CheckMenuRadioItem(hMenu, MENU_NORMAL, MENU_SCAN50, var, MF_BYCOMMAND);
CheckMenuItem(hMenu, MENU_ROTSCAN, bVidScanRotate ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, MENU_FORCE_FLIP, bVidForceFlip ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu, MENU_RES_ARCADE, bVidArcaderes ? MF_CHECKED : MF_UNCHECKED);
break;
case 1:

View File

@ -560,6 +560,7 @@
#define MENU_EFFECT_10 11147
#define MENU_FORCE_16BIT 11141
#define MENU_TEXTUREMANAGE 11142
#define MENU_FORCE_FLIP 11143
#define MENU_SOFT_STRETCH 11201
#define MENU_SOFT_SCALE2X 11202

View File

@ -2045,6 +2045,11 @@ static void OnCommand(HWND /*hDlg*/, int id, HWND /*hwndCtl*/, UINT codeNotify)
bVidScanRotate = !bVidScanRotate;
POST_INITIALISE_MESSAGE;
break;
case MENU_FORCE_FLIP:
bVidForceFlip = !bVidForceFlip;
POST_INITIALISE_MESSAGE;
break;
}
break;
}

View File

@ -193,6 +193,7 @@ extern INT32 nVidRotationAdjust;
extern INT32 bVidUseHardwareGamma;
extern INT32 bVidAutoSwitchFull;
extern INT32 bVidForce16bit;
extern INT32 bVidForceFlip;
extern INT32 nVidTransferMethod;
extern float fVidScreenAngle;
extern float fVidScreenCurvature;

View File

@ -69,6 +69,7 @@ INT32 bVidArcaderesVer = 0;
INT32 nVidRotationAdjust = 0; // & 1: do not rotate the graphics for vertical games, & 2: Reverse flipping for vertical games
INT32 bVidForce16bit = 1; // Emulate the game in 16-bit even when the screen is 32-bit (D3D blitter)
INT32 bVidForceFlip = 0; // Force flipping (DDraw blitter, hardware detection seems to fail on all? graphics hardware)
INT32 nVidTransferMethod = -1; // How to transfer the game image to video memory and/or a texture --
// 0 = blit from system memory / use driver/DirectX texture management
// 1 = copy to a video memory surface, then use bltfast()

View File

@ -330,7 +330,7 @@ static int vidInit()
ddcaps.dwSize = sizeof(ddcaps);
DtoDD->GetCaps(&ddcaps, NULL);
if ((ddcaps.dwFXCaps & DDFXCAPS_BLTMIRRORLEFTRIGHT) && (ddcaps.dwFXCaps & DDFXCAPS_BLTMIRRORUPDOWN)) {
if (((ddcaps.dwFXCaps & DDFXCAPS_BLTMIRRORLEFTRIGHT) && (ddcaps.dwFXCaps & DDFXCAPS_BLTMIRRORUPDOWN)) || bVidForceFlip) {
DtoBltFx = (DDBLTFX*)malloc(sizeof(DDBLTFX));
if (DtoBltFx == NULL) {

View File

@ -112,6 +112,7 @@
<li>Updated M6502 CPU core interface to allocate memory rather than use an array [iq_132]</li>
<li>Updated Vez CPU core interface to allocate memory rather than use an array, and added support for auto-acknowledging IRQs [iq_132]</li>
<li>Fixed crash when taking screenshots of vertical or flipped games using blitters other than the D3D enhanced blitter [Barry]</li>
<li>Added option to DirectDraw blitter to force flipping as it isn't usually detected as available, see help file for more information [Barry]</li>
<li>Matched all sets to MAME 0.144u2 [Barry]</li>
<li>Matched the Megadrive sets to MESS 0.144u2 [Barry]</li>
</ul>