* (Bugfix) Fixed issue where default .ini animations wouldn't get applied correctly in some cases, this fixed a slight offset problem with Stone Of Balance

* Fixed problem with glitchy black lines during screen transitions
* (Bugfix) Fixed issue with playmidi and filenames that start with numbers over 1000, this fixed a problem with 1812over.mid not playing in Mayhem
* Added 1920X1080 screen mode selector in the Options menu
* No longer applying Dan's checkboard fix to tile screens (they don't need it I think..), and also added a hack so it will ignore main-02 through main-04.bpm (the dialog box) as it made it look weird (it looks perfect in 640X480, but other resolutions have slight artifacts due to sub-pixel accuracy issues
* Fixed some issues related to dynamic 8 bit to 32 bit surface changes (this can happen if you turn on the new shadows after starting to play or the game suddenly hits a 32 bit image)
- Note: Just to be safe, save state version has changed, so old save states won't load

git-svn-id: svn://rtsoft.com/rtsvn/projects/RTDink@1490 353e56fe-9613-0410-8469-b96ad8e6f29c
This commit is contained in:
seth 2017-09-19 01:16:24 +00:00
parent 0bf781e005
commit 1adfda0aab
8 changed files with 115 additions and 97 deletions

View file

@ -116,4 +116,12 @@ www.rtsoft.com
* (Bugfix) Fixed a script crash. This bug was also in the legacy dink * (Bugfix) Fixed a script crash. This bug was also in the legacy dink
* (Windows) "Tap to continue" is no longer shown when waiting for a keypress, but will still be shown on touch-devices * (Windows) "Tap to continue" is no longer shown when waiting for a keypress, but will still be shown on touch-devices
* Fixed bug where any DMOD directory starting with "dink" was ignored from the internal DMOD listing screen. Oops, that was a pretty bad one, sorry dinkcrft. * Fixed bug where any DMOD directory starting with "dink" was ignored from the internal DMOD listing screen. Oops, that was a pretty bad one, sorry dinkcrft.
* (Bugfix) Fixed issue where default .ini animations wouldn't get applied correctly in some cases, this fixed a slight offset problem with Stone Of Balance
* Fixed problem with glitchy black lines during screen transitions
* (Bugfix) Fixed issue with playmidi and filenames that start with numbers over 1000, this fixed a problem with 1812over.mid not playing in Mayhem
* Added 1920X1080 screen mode selector in the Options menu
* No longer applying Dan's checkboard fix to tile screens (they don't need it I think..), and also added a hack so it will ignore main-02 through main-04.bpm (the dialog box) as it made it look weird
* Fixed some issues related to dynamic 8 bit to 32 bit surface changes (this can happen if you turn on the new shadows after starting to play or the game suddenly hits a 32 bit image)
- Note: Just to be safe, save state version has changed, so old save states won't load

View file

@ -356,6 +356,11 @@ void OptionsMenuAddScrollContent(Entity *pParent)
pEnt = CreateTextButtonEntity(pBG, "vid_big", startX+700, y, "1280X960"); pEnt = CreateTextButtonEntity(pBG, "vid_big", startX+700, y, "1280X960");
pEnt->GetShared()->GetFunction("OnButtonSelected")->sig_function.connect(&OptionsMenuOnSelect); pEnt->GetShared()->GetFunction("OnButtonSelected")->sig_function.connect(&OptionsMenuOnSelect);
y += spacerY; y += spacerY;
pEnt = CreateTextButtonEntity(pBG, "vid_hd", startX, y, "1920X1080");
pEnt->GetShared()->GetFunction("OnButtonSelected")->sig_function.connect(&OptionsMenuOnSelect);
y += spacerY;
} }

View file

@ -16,11 +16,11 @@ bool pre_figure_out(const char *line, int load_seq, bool bLoadSpriteOnly);
#define C_DINK_SCREEN_TRANSITION_TIME_MS 400 #define C_DINK_SCREEN_TRANSITION_TIME_MS 400
const float SAVE_FORMAT_VERSION = 2.2f; const float SAVE_FORMAT_VERSION = 2.3f;
const int C_DINK_FADE_TIME_MS = 300; const int C_DINK_FADE_TIME_MS = 300;
const float G_TRANSITION_SCALE_TRICK = 1.01f; const float G_TRANSITION_SCALE_TRICK = 1.01f;
bool g_forceRebuildBackground = false; bool g_forceBuildBackgroundFromScratch = false;
float g_dinkFadeAlpha = 0; float g_dinkFadeAlpha = 0;
@ -1558,13 +1558,33 @@ bool LoadSpriteSingleFrame(string fNameBase, int seq, int oo, int picIndex, eTra
//assert(!g_dglos.g_picInfo[g_cur_sprite].pSurface); //assert(!g_dglos.g_picInfo[g_cur_sprite].pSurface);
SAFE_DELETE(g_pSpriteSurface[picIndex]); SAFE_DELETE(g_pSpriteSurface[picIndex]);
#ifdef _DEBUG #ifdef _DEBUG
if (seq == 60 && oo == 2) if (seq == 192 && oo == 5)
{
LogMsg("Woah, ");
}
if (seq == 192 && oo == 1)
{ {
LogMsg("Woah, "); LogMsg("Woah, ");
} }
#endif #endif
g_pSpriteSurface[picIndex] = LoadBitmapIntoSurface("", transType, IDirectDrawSurface::MODE_SHADOW_GL, pMem);
bool bUseCheckerboardFix = GetApp()->GetVar("checkerboard_fix")->GetUINT32() != 0;
//hack so dialog box doesn't look bad:
if (bUseCheckerboardFix)
{
if (oo >=2 && oo <= 4 && fNameBase =="main-")
{
//nah, because this is connected it makes this look weird
bUseCheckerboardFix = false;
}
}
g_pSpriteSurface[picIndex] = LoadBitmapIntoSurface("", transType, IDirectDrawSurface::MODE_SHADOW_GL, pMem, bUseCheckerboardFix);
} }
else else
{ {
@ -1898,9 +1918,9 @@ void ReadFromLoadSequenceString(char ev[15][100] )
g_dglos.g_seq[seqID].m_bIsAnim = false; g_dglos.g_seq[seqID].m_bIsAnim = false;
#ifdef _DEBUG #ifdef _DEBUG
if (seqID == 180) if (seqID == 192)
{ {
LogMsg("Booya"); // LogMsg("Booya");
} }
#endif #endif
@ -1908,12 +1928,7 @@ void ReadFromLoadSequenceString(char ev[15][100] )
assert(strlen(ev[2]) < C_SPRITE_MAX_FILENAME_SIZE); assert(strlen(ev[2]) < C_SPRITE_MAX_FILENAME_SIZE);
strcpy(g_dglos.g_seq[seqID].m_fileName, ev[2]); strcpy(g_dglos.g_seq[seqID].m_fileName, ev[2]);
#ifdef _DEBUG
if (seqID == 59)
{
LogMsg("He");
}
#endif
if (compare(ev[4], "BLACK")) if (compare(ev[4], "BLACK"))
{ {
@ -1959,14 +1974,7 @@ void ReadFromLoadSequenceString(char ev[15][100] )
*/ */
g_dglos.g_seq[seqID].m_bIsAnim = true; g_dglos.g_seq[seqID].m_bIsAnim = true;
//yes, an animation!
g_dglos.g_seq[seqID].m_speed = atol(ev[4]);
g_dglos.g_seq[seqID].m_xoffset = atol(ev[5]);
g_dglos.g_seq[seqID].m_yoffset = atol(ev[6]);
g_dglos.g_seq[seqID].m_hardbox.left = atol(ev[7]);
g_dglos.g_seq[seqID].m_hardbox.top = atol(ev[8]);
g_dglos.g_seq[seqID].m_hardbox.right = atol(ev[9]);
g_dglos.g_seq[seqID].m_hardbox.bottom = atol(ev[10]);
/* /*
if (g_dglos.g_seq[seqID].m_bIsAnim) if (g_dglos.g_seq[seqID].m_bIsAnim)
@ -2024,8 +2032,17 @@ void ReadFromLoadSequenceString(char ev[15][100] )
//LogMsg("Hardbox: %s", PrintRect(hardbox).c_str()); //LogMsg("Hardbox: %s", PrintRect(hardbox).c_str());
#endif #endif
} }
if (g_dglos.g_seq[seqID].m_bIsAnim)
{
//yes, an animation! Set default values for entire animation if we've got them
g_dglos.g_seq[seqID].m_speed = atol(ev[4]);
g_dglos.g_seq[seqID].m_xoffset = atol(ev[5]);
g_dglos.g_seq[seqID].m_yoffset = atol(ev[6]);
g_dglos.g_seq[seqID].m_hardbox.left = atol(ev[7]);
g_dglos.g_seq[seqID].m_hardbox.top = atol(ev[8]);
g_dglos.g_seq[seqID].m_hardbox.right = atol(ev[9]);
g_dglos.g_seq[seqID].m_hardbox.bottom = atol(ev[10]);
}
} }
@ -5037,12 +5054,12 @@ void draw_sprite_game(LPDIRECTDRAWSURFACE lpdest,int h)
#ifdef _DEBUG #ifdef _DEBUG
if (g_sprite[h].pseq == 10 && g_sprite[h].pframe == 8) if (g_sprite[h].pseq == 10 && g_sprite[h].pframe == 8)
{ {
LogMsg("Drawing the rock"); //LogMsg("Drawing the rock");
} }
if (g_sprite[h].pseq == 890) if (g_sprite[h].pseq == 890)
{ {
LogMsg("Drawing a wall"); //LogMsg("Drawing a wall");
} }
#endif #endif
@ -5126,6 +5143,9 @@ void draw_sprite_game(LPDIRECTDRAWSURFACE lpdest,int h)
lpDDSBuffer = InitOffscreenSurface(C_DINK_SCREENSIZE_X, C_DINK_SCREENSIZE_Y, IDirectDrawSurface::MODE_SHADOW_GL, true); lpDDSBuffer = InitOffscreenSurface(C_DINK_SCREENSIZE_X, C_DINK_SCREENSIZE_Y, IDirectDrawSurface::MODE_SHADOW_GL, true);
lpDDSBuffer->m_pGLSurf->SetUsesAlpha(true); lpDDSBuffer->m_pGLSurf->SetUsesAlpha(true);
//however, we need to force a rebuild of the background now
g_forceBuildBackgroundFromScratch = true;
} }
} }
@ -6204,10 +6224,10 @@ void BuildScreenBackground( bool bFullRebuild, bool bBuildImageFromScratch )
int pa, cool; int pa, cool;
// *pvision = 0; //this was bad because save stats call this. Moved to where new maps are loaded // *pvision = 0; //this was bad because save stats call this. Moved to where new maps are loaded
if (g_forceRebuildBackground) if (g_forceBuildBackgroundFromScratch)
{ {
bFullRebuild = true; bBuildImageFromScratch = true;
g_forceRebuildBackground = false; g_forceBuildBackgroundFromScratch = false;
} }
if (bFullRebuild) if (bFullRebuild)
@ -7705,7 +7725,10 @@ pass:
LogMsg("playmidi - cd play command detected."); LogMsg("playmidi - cd play command detected.");
PlayMidi((toString(regm-1000)+".mid").c_str()); PlayMidi((toString(regm-1000)+".mid").c_str());
} else }
//ok, weird, but the actual dink plays both and this is needed - if the fake CD tune can't play, it will probably find it below
//else
{ {
PlayMidi(slist[0]); PlayMidi(slist[0]);
} }
@ -9667,7 +9690,7 @@ LogMsg("%d scripts used", g_dglos.g_returnint);
//remember this change //remember this change
strncpy(g_dglos.g_playerInfo.tile[tileIndex].file, fName.c_str(), 50); //this 50 is hardcoded in the player data strncpy(g_dglos.g_playerInfo.tile[tileIndex].file, fName.c_str(), 50); //this 50 is hardcoded in the player data
g_forceRebuildBackground = true; g_forceBuildBackgroundFromScratch = true;
//BuildScreenBackground(true); //trigger full rebuild, this could be optimized by setting a flag and only doing it once... //BuildScreenBackground(true); //trigger full rebuild, this could be optimized by setting a flag and only doing it once...
} }
@ -12545,60 +12568,41 @@ void BlitSecondTransitionScreen()
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
glPushMatrix(); glPushMatrix();
float offsetX = g_dglo.m_centeringOffset.x*(1 - ((float)GetFakePrimaryScreenSizeX() / (float)C_DINK_SCREENSIZE_X)); float offsetX = g_dglo.m_centeringOffset.x*(1.0f - ((float)GetFakePrimaryScreenSizeX() / (float)C_DINK_SCREENSIZE_X));
float offsetY = g_dglo.m_centeringOffset.y*(1 - ((float)GetFakePrimaryScreenSizeY() / (float)C_DINK_SCREENSIZE_Y)); float offsetY = g_dglo.m_centeringOffset.y*(1.0f - ((float)GetFakePrimaryScreenSizeY() / (float)C_DINK_SCREENSIZE_Y));
//for some reason, after doing the aspect ratio scale trick, I need to also move it over a bit for this second blit to line up
//glTranslatef(offsetX,
//Let me write a long explanation of why these numbers are used. It's be... sorry, uhh.. phone call
glTranslatef(-offsetX, -offsetY, 0); glTranslatef(-offsetX, -offsetY, 0);
rtRectf dstRect = g_dglo.m_nativeGameArea; rtRectf dstRect = g_dglo.m_nativeGameArea;
rtRectf dstOffset = rtRectf(0.5f,0.5f,-0.5f,-0.5f);
/*
//old code for when we manually rotated the screen, these days we let iOS do it, it's not a horrible performance penalty anymore static rtRectf dstOffset;
static rtRectf srcOffset;
if (GetApp()->GetVar("smoothing")->GetUINT32() != 0)
if (GetPrimaryGLX() < GetPrimaryGLY() && GetEmulatedPlatformID() != PLATFORM_ID_WINDOWS)
{ {
//fix black lines due to antialiasing
swap(dstRect.left, dstRect.top); dstOffset = rtRectf(-1, -1, 1, 1);
swap(dstRect.right, dstRect.bottom); srcOffset = rtRectf(1, 1, -1, -1);
rtRectf srcRect = ConvertFakeScreenRectToReal(dstRect);
}
//CHECK the fakescreen stuff.. else
if (GetOrientation() == ORIENTATION_LANDSCAPE_LEFT)
{
glTranslatef((-g_dglo.m_transitionOffsetNative.x*g_dglo.m_transitionProgress), (g_dglo.m_nativeGameArea.GetHeight()-g_dglo.m_transitionOffsetNative.y*g_dglo.m_transitionProgress),0);
glRotatef(-90, 0, 0, 1);
srcRect.AdjustPosition(GetScreenSizeYf()-g_dglo.m_nativeGameArea.GetHeight(), 0);
g_transitionSurf.BlitEx(dstRect, srcRect);
} else
{
glTranslatef( ( ( g_dglo.m_nativeGameArea.left*2+g_dglo.m_nativeGameArea.GetWidth())-g_dglo.m_transitionOffsetNative.x*g_dglo.m_transitionProgress),
( (g_dglo.m_nativeGameArea.top) -g_dglo.m_transitionOffsetNative.y*g_dglo.m_transitionProgress ),0);
glRotatef(90, 0, 0, 1);
g_transitionSurf.BlitEx(dstRect, srcRect);
}
} else
\*/
{ {
//without normal antialiasing we don't need to do much, but this does fix tiny black artifacts during the screen transition
dstOffset = rtRectf(-0.05, -0.05f, 0.05f, 0.05);
srcOffset = rtRectf(0.4, 0.4, -0.4, -0.4);
}
dstRect.AdjustPosition( ( -g_dglo.m_transitionOffsetNative.x*g_dglo.m_transitionProgress), dstRect.AdjustPosition( ( -g_dglo.m_transitionOffsetNative.x*g_dglo.m_transitionProgress),
( -g_dglo.m_transitionOffsetNative.y*g_dglo.m_transitionProgress)); ( -g_dglo.m_transitionOffsetNative.y*g_dglo.m_transitionProgress));
//dstRect.AdjustPosition(-g_dglo.m_centeringOffset.x*g_dglo.m_transitionProgress, -g_dglo.m_centeringOffset.y*g_dglo.m_transitionProgress);
rtRectf srcRect = ConvertFakeScreenRectToReal(g_dglo.m_nativeGameArea); rtRectf srcRect = ConvertFakeScreenRectToReal(g_dglo.m_nativeGameArea);
// LogMsg("Dest rect: %s",PrintRect(dstRect)); // LogMsg("Dest rect: %s",PrintRect(dstRect));
g_transitionSurf.BlitEx(dstRect, srcRect); g_transitionSurf.BlitEx(dstRect+dstOffset, srcRect+ srcOffset);
}
//g_globalBatcher.Flush();
if (!g_onePixelSurf.IsLoaded()) if (!g_onePixelSurf.IsLoaded())
{ {
g_onePixelSurf.InitBlankSurface(1, 1); g_onePixelSurf.InitBlankSurface(1, 1);
@ -12608,6 +12612,8 @@ void BlitSecondTransitionScreen()
if (g_dglo.GetActiveView() != DinkGlobals::VIEW_ZOOMED) if (g_dglo.GetActiveView() != DinkGlobals::VIEW_ZOOMED)
{ {
static uint32 blackBarsColor = MAKE_RGBA(0, 0, 0, 255); static uint32 blackBarsColor = MAKE_RGBA(0, 0, 0, 255);
//well, at this point we're done except there is garbage on the area outside the playfield if we're letterboxed so aspect ratio is right. This could have all been
//avoided with a render to surface but I think this will be faster
g_onePixelSurf.BlitScaled(g_dglo.m_nativeGameArea.left, 0, CL_Vec2f(5000, 5000), ALIGNMENT_RIGHT_CENTER, blackBarsColor); g_onePixelSurf.BlitScaled(g_dglo.m_nativeGameArea.left, 0, CL_Vec2f(5000, 5000), ALIGNMENT_RIGHT_CENTER, blackBarsColor);
g_onePixelSurf.BlitScaled(g_dglo.m_nativeGameArea.right, 0, CL_Vec2f(5000, 5000), ALIGNMENT_LEFT_CENTER, blackBarsColor); g_onePixelSurf.BlitScaled(g_dglo.m_nativeGameArea.right, 0, CL_Vec2f(5000, 5000), ALIGNMENT_LEFT_CENTER, blackBarsColor);
@ -12616,13 +12622,9 @@ void BlitSecondTransitionScreen()
g_onePixelSurf.BlitScaled(0, g_dglo.m_nativeGameArea.bottom, CL_Vec2f(5000, 5000), ALIGNMENT_UPPER_CENTER, blackBarsColor); g_onePixelSurf.BlitScaled(0, g_dglo.m_nativeGameArea.bottom, CL_Vec2f(5000, 5000), ALIGNMENT_UPPER_CENTER, blackBarsColor);
} }
//s.Blit(0, 0);
//g_globalBatcher.Flush();
glPopMatrix( ); glPopMatrix( );
//well, at this point we're done except there is garbage on the area outside the playfield if we're letterboxed so aspect ratio is right. This could have all been
//avoided with a render to surface but I think this will be faster
} }
@ -14718,7 +14720,7 @@ void DinkSetCursorPosition(CL_Vec2f vPos)
g_sprite[1].y = vPos.y; g_sprite[1].y = vPos.y;
#ifdef _DEBUG #ifdef _DEBUG
LogMsg("Mouse X: %d, Y: %d", g_sprite[1].x, g_sprite[1].y); //LogMsg("Mouse X: %d, Y: %d", g_sprite[1].x, g_sprite[1].y);
#endif #endif
} }
} }
@ -15835,6 +15837,11 @@ LastWindowsTimer = GetTickCount();
} }
} }
if (g_forceBuildBackgroundFromScratch)
{
BuildScreenBackground(false, true);
}
state[1] = 0; state[1] = 0;
//figure out frame rate //figure out frame rate
@ -16428,15 +16435,7 @@ bool LoadGameChunk(int gameIDToLoad, float &progressOut)
case 1: case 1:
progressOut = 0.1f; progressOut = 0.1f;
LogMsg("loading tilescreens...");
/*
for (int h=1; h < C_TILE_SCREEN_COUNT; h++)
{
if (!LoadTileScreenIfNeeded(h)) return false;
}
*/
LogMsg("Done with tilescreens...");
break; break;
case 2: case 2:
@ -16462,7 +16461,7 @@ bool LoadGameChunk(int gameIDToLoad, float &progressOut)
case 3: case 3:
progressOut = 0.7f; progressOut = 0.7f;
LogMsg("done loading batch");
if (!load_hard()) return false; if (!load_hard()) return false;
break; break;
@ -16847,10 +16846,13 @@ bool LoadHeader(FILE *fp)
LoadFromFile(g_dglo.m_dmodGameDir, fp); LoadFromFile(g_dglo.m_dmodGameDir, fp);
LoadFromFile(g_dglo.m_gameDir, fp); LoadFromFile(g_dglo.m_gameDir, fp);
if (!FileExists(g_dglo.m_dmodGameDir + "dmod.diz")) if (!g_dglo.m_dmodGameDir.empty())
{ {
LogMsg("DMOD directory invalid. Trying original directory %s instead", g_dglo.m_savePath.c_str()); if (!FileExists(g_dglo.m_dmodGameDir + "dmod.diz"))
g_dglo.m_dmodGameDir = g_dglo.m_savePath; {
LogMsg("DMOD directory invalid. Trying original directory %s instead", g_dglo.m_savePath.c_str());
g_dglo.m_dmodGameDir = g_dglo.m_savePath;
}
} }

View file

@ -200,8 +200,6 @@ struct sequence
byte m_bIsAnim; byte m_bIsAnim;
}; };
const int32 C_DINK_SCREENSIZE_X = 640;
const int32 C_DINK_SCREENSIZE_Y = 480;
const int32 C_DINK_VERSION = 110; const int32 C_DINK_VERSION = 110;
const int32 num_soundbanks = 20; const int32 num_soundbanks = 20;
const int32 max_idata = 1000; const int32 max_idata = 1000;

View file

@ -3,6 +3,10 @@
#include "PlatformSetup.h" #include "PlatformSetup.h"
const int32 C_DINK_SCREENSIZE_X = 640;
const int32 C_DINK_SCREENSIZE_Y = 480;
void getdir(char final[]); void getdir(char final[]);
void dink_decompress (unsigned char *in, char * destBuf); void dink_decompress (unsigned char *in, char * destBuf);

View file

@ -13,7 +13,7 @@ extern LPDIRECTDRAWSURFACE lpDDSBackGround;
bool InitializeVideoSystem() bool InitializeVideoSystem()
{ {
assert(!lpDDSBack); assert(!lpDDSBack);
lpDDSBack = InitOffscreenSurface(640, 480, IDirectDrawSurface::MODE_PRIMARY_GL); lpDDSBack = InitOffscreenSurface(C_DINK_SCREENSIZE_X, C_DINK_SCREENSIZE_Y, IDirectDrawSurface::MODE_PRIMARY_GL);
g_palette.Init(8,8, SoftSurface::SURFACE_PALETTE_8BIT); g_palette.Init(8,8, SoftSurface::SURFACE_PALETTE_8BIT);
g_palette.SetPaletteFromBMP("dink/tiles/palette.bmp", SoftSurface::COLOR_KEY_NONE); g_palette.SetPaletteFromBMP("dink/tiles/palette.bmp", SoftSurface::COLOR_KEY_NONE);
@ -28,15 +28,14 @@ void KillVideoEngine()
void dderror(int hErr){}; void dderror(int hErr){};
IDirectDrawSurface * LoadBitmapIntoSurface(const char *pName, eTransparencyType trans, IDirectDrawSurface::eMode mode, byte *pMem) IDirectDrawSurface * LoadBitmapIntoSurface(const char *pName, eTransparencyType trans, IDirectDrawSurface::eMode mode, byte *pMem, bool bUseCheckerboardFix)
{ {
IDirectDrawSurface * pSurf; IDirectDrawSurface * pSurf;
pSurf = new IDirectDrawSurface; pSurf = new IDirectDrawSurface;
pSurf->m_mode = mode; pSurf->m_mode = mode;
pSurf->m_pSurf = new SoftSurface; pSurf->m_pSurf = new SoftSurface;
//bUseCheckerboardFix = true;
bool bUseCheckerboardFix = GetApp()->GetVar("checkerboard_fix")->GetUINT32() != 0;
if (pMem) if (pMem)
{ {

View file

@ -111,6 +111,7 @@ bool InitializeVideoSystem();
void KillVideoEngine(); void KillVideoEngine();
void GetSizeOfSurface(IDirectDrawSurface *pdds, int *pX, int *pY); void GetSizeOfSurface(IDirectDrawSurface *pdds, int *pX, int *pY);
IDirectDrawSurface * LoadBitmapIntoSurface(const char *pName, eTransparencyType trans= TRANSPARENT_NONE, IDirectDrawSurface::eMode mode = IDirectDrawSurface::MODE_SHADOW_GL, byte *pMem = NULL); IDirectDrawSurface * LoadBitmapIntoSurface(const char *pName, eTransparencyType trans= TRANSPARENT_NONE, IDirectDrawSurface::eMode mode = IDirectDrawSurface::MODE_SHADOW_GL, byte *pMem = NULL,
bool bUseCheckerboardFix = false);
#endif // video_dx_h__ #endif // video_dx_h__

View file

@ -7,6 +7,7 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug GL|Win32'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug GL|Win32'">
<LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory> <LocalDebuggerWorkingDirectory>$(ProjectDir)</LocalDebuggerWorkingDirectory>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<LocalDebuggerCommandArguments>-game dmods/dinkcrft</LocalDebuggerCommandArguments> <LocalDebuggerCommandArguments>
</LocalDebuggerCommandArguments>
</PropertyGroup> </PropertyGroup>
</Project> </Project>