* Added redink1's "soft shadow improvement" patch
* (proton) Fixed issue with blitting alpha things to the background, fixed the soft shadows for things rendered into the background * Versioned to 1.7.1, was distributed as beta git-svn-id: svn://rtsoft.com/rtsvn/projects/RTDink@1481 353e56fe-9613-0410-8469-b96ad8e6f29c
This commit is contained in:
parent
72d2a12be6
commit
e0717ae8d1
5 changed files with 69 additions and 22 deletions
|
@ -7,6 +7,21 @@ To toggle a psuedo full screen mode, click Full Screen Toggle in the options. (
|
||||||
|
|
||||||
NOTE: Quick saves might give a "Can't load old version" error if the data format has changed. However, normal Dink saves (using save machines, etc) will always work.
|
NOTE: Quick saves might give a "Can't load old version" error if the data format has changed. However, normal Dink saves (using save machines, etc) will always work.
|
||||||
|
|
||||||
|
Keyboard controls:
|
||||||
|
|
||||||
|
F1 - Quick save
|
||||||
|
F10 - Quick load
|
||||||
|
Control - Attack
|
||||||
|
Arrow keys - Movement
|
||||||
|
Space - Talk
|
||||||
|
Enter - Inventory
|
||||||
|
Shift - Magic
|
||||||
|
Escape - Bring up menu
|
||||||
|
|
||||||
|
NOTE: If you have a controller (like an xbox 360 pad) plugged in when you start the game, you can use that instead of keyboard, but you still need to use the
|
||||||
|
mouse to navigate the initial menus to start the game
|
||||||
|
|
||||||
|
|
||||||
------------- BETA VERSION -----------------
|
------------- BETA VERSION -----------------
|
||||||
|
|
||||||
This is a beta version which means it probably has bugs and isn't ready for general consumption. However, it means you've been recruited to help us make it better!
|
This is a beta version which means it probably has bugs and isn't ready for general consumption. However, it means you've been recruited to help us make it better!
|
||||||
|
@ -47,7 +62,7 @@ www.rtsoft.com
|
||||||
|
|
||||||
------ Change log for 1.7.1 ----------
|
------ Change log for 1.7.1 ----------
|
||||||
|
|
||||||
(big thanks to Redink1 for most of these bug reports!)
|
(big thanks to Redink1 for most of these bug reports and the fancy shadows patch!)
|
||||||
|
|
||||||
* (Windows) Fixed app icon
|
* (Windows) Fixed app icon
|
||||||
* (Windows) Mouse-controlled screens in DMODs control better and hide the original mouse cursor
|
* (Windows) Mouse-controlled screens in DMODs control better and hide the original mouse cursor
|
||||||
|
@ -60,4 +75,8 @@ www.rtsoft.com
|
||||||
* (bugfix) Fixed some issues with how default offsets are calculated, it fixed some problems where sprites would be in the wrong place in certain DMODs
|
* (bugfix) Fixed some issues with how default offsets are calculated, it fixed some problems where sprites would be in the wrong place in certain DMODs
|
||||||
* (bugfix, windows) "Smoothing" no longer incorrectly turns on if you lose/regain focus
|
* (bugfix, windows) "Smoothing" no longer incorrectly turns on if you lose/regain focus
|
||||||
* (windows) Added "Windowed Borderless fullscreen mode" toggle, defaults to off. It will try to do 640X480 at your native monitor resolution by default now on
|
* (windows) Added "Windowed Borderless fullscreen mode" toggle, defaults to off. It will try to do 640X480 at your native monitor resolution by default now on
|
||||||
a clean install. It's a bit wacky how fullscreen/bordlerless fullscreen and clicking screen sizes works, but it usually gets you to where you want to go eventually
|
a clean install. If you've dragged the dink window to a weird size it won't be able to go fullscreen which is kind of weird, but it does give a clear error message. It should probably
|
||||||
|
enumerate graphic modes and choose one if the current one is invalid, or let the user choose, meh
|
||||||
|
* Added redink1's "soft shadow improvement" patch
|
||||||
|
* (proton) Fixed issue with blitting alpha things to the background, fixed the soft shadows for things rendered into the background
|
||||||
|
|
||||||
|
|
|
@ -434,7 +434,7 @@ bool App::Init()
|
||||||
bool bFileExisted;
|
bool bFileExisted;
|
||||||
m_varDB.Load("save.dat", &bFileExisted);
|
m_varDB.Load("save.dat", &bFileExisted);
|
||||||
|
|
||||||
GetApp()->GetVarWithDefault("smoothing",uint32(1))->GetUINT32();
|
GetApp()->GetVarWithDefault("smoothing",uint32(0))->GetUINT32();
|
||||||
|
|
||||||
GetApp()->GetVarWithDefault("buttons",uint32(0));
|
GetApp()->GetVarWithDefault("buttons",uint32(0));
|
||||||
|
|
||||||
|
@ -443,7 +443,10 @@ bool App::Init()
|
||||||
|
|
||||||
|
|
||||||
#ifdef PLATFORM_WINDOWS
|
#ifdef PLATFORM_WINDOWS
|
||||||
//If you don't have directx, just comment out this and remove the dx lib dependency, directx is only used for the
|
|
||||||
|
GetApp()->GetVarWithDefault("checkerboard_fix", uint32(1)); //default to on for Windows
|
||||||
|
|
||||||
|
//If you don't have directx, just comment out this and remove the dx lib dependency, directx is only used for the
|
||||||
//gamepad input on windows
|
//gamepad input on windows
|
||||||
GetGamepadManager()->AddProvider(new GamepadProviderDirectX); //use directx joysticks
|
GetGamepadManager()->AddProvider(new GamepadProviderDirectX); //use directx joysticks
|
||||||
#endif
|
#endif
|
||||||
|
@ -525,7 +528,8 @@ if (GetEmulatedPlatformID() == PLATFORM_ID_IOS)
|
||||||
int videox = GetApp()->GetVarWithDefault("video_x", uint32(640))->GetUINT32();
|
int videox = GetApp()->GetVarWithDefault("video_x", uint32(640))->GetUINT32();
|
||||||
int videoy = GetApp()->GetVarWithDefault("video_y", uint32(480))->GetUINT32();
|
int videoy = GetApp()->GetVarWithDefault("video_y", uint32(480))->GetUINT32();
|
||||||
int fullscreen = GetApp()->GetVarWithDefault("fullscreen", uint32(1))->GetUINT32();
|
int fullscreen = GetApp()->GetVarWithDefault("fullscreen", uint32(1))->GetUINT32();
|
||||||
//bool borderlessfullscreen = GetApp()->GetVarWithDefault("fullscreen", uint32(1))->GetUINT32();
|
|
||||||
|
bool borderlessfullscreen = GetApp()->GetVarWithDefault("fullscreen", uint32(0))->GetUINT32();
|
||||||
|
|
||||||
|
|
||||||
if (fullscreen && g_bUseBorderlessFullscreenOnWindows)
|
if (fullscreen && g_bUseBorderlessFullscreenOnWindows)
|
||||||
|
@ -902,11 +906,11 @@ bool App::OnPreInitVideo()
|
||||||
|
|
||||||
g_winVideoScreenX = pVarX->GetUINT32();
|
g_winVideoScreenX = pVarX->GetUINT32();
|
||||||
g_winVideoScreenY = pVarY->GetUINT32();
|
g_winVideoScreenY = pVarY->GetUINT32();
|
||||||
g_bIsFullScreen = temp.GetVarWithDefault("fullscreen", uint32(1))->GetUINT32();
|
|
||||||
g_bUseBorderlessFullscreenOnWindows = temp.GetVarWithDefault("borderless_fullscreen", uint32(0))->GetUINT32() != 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_bIsFullScreen = temp.GetVarWithDefault("fullscreen", uint32(1))->GetUINT32();
|
||||||
|
g_bUseBorderlessFullscreenOnWindows = temp.GetVarWithDefault("borderless_fullscreen", uint32(0))->GetUINT32() != 0;
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -134,6 +134,16 @@ void OptionsMenuOnSelect(VariantList *pVList) //0=vec2 point of click, 1=entity
|
||||||
DinkOnForeground();
|
DinkOnForeground();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pEntClicked->GetName() == "check_checkboard")
|
||||||
|
{
|
||||||
|
bool bChecked = IsCheckboxChecked(pEntClicked);
|
||||||
|
GetApp()->GetVar("checkerboard_fix")->Set(uint32(bChecked));
|
||||||
|
GetApp()->UpdateVideoSettings();
|
||||||
|
DinkUnloadUnusedGraphicsByUsageTime(0); //unload anything not used in the last second
|
||||||
|
DinkReInitSurfacesAfterVideoChange();
|
||||||
|
DinkOnForeground();
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef WINAPI
|
#ifdef WINAPI
|
||||||
if (pEntClicked->GetName() == "check_borderless")
|
if (pEntClicked->GetName() == "check_borderless")
|
||||||
{
|
{
|
||||||
|
@ -446,8 +456,7 @@ void OptionsMenuAddScrollContent(Entity *pParent)
|
||||||
y += spacerY;
|
y += spacerY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
bool bStretchToFit = GetApp()->GetVar("check_stretch")->GetUINT32() != 0;
|
bool bStretchToFit = GetApp()->GetVar("check_stretch")->GetUINT32() != 0;
|
||||||
pEnt = CreateCheckbox(pBG, "check_stretch", "Force screen stretching (ignore aspect ratio)", startX, y, bStretchToFit, FONT_SMALL, 1.0f);
|
pEnt = CreateCheckbox(pBG, "check_stretch", "Force screen stretching (ignore aspect ratio)", startX, y, bStretchToFit, FONT_SMALL, 1.0f);
|
||||||
pEnt->GetFunction("OnButtonSelected")->sig_function.connect(&OptionsMenuOnSelect);
|
pEnt->GetFunction("OnButtonSelected")->sig_function.connect(&OptionsMenuOnSelect);
|
||||||
|
@ -462,6 +471,12 @@ void OptionsMenuAddScrollContent(Entity *pParent)
|
||||||
y += spacerY;
|
y += spacerY;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
bool bCheckerboardFix = GetApp()->GetVar("checkerboard_fix")->GetUINT32() != 0;
|
||||||
|
pEnt = CreateCheckbox(pBG, "check_checkboard", "Apply improved shadows", startX, y, bCheckerboardFix, FONT_SMALL, 1.0f);
|
||||||
|
pEnt->GetFunction("OnButtonSelected")->sig_function.connect(&OptionsMenuOnSelect);
|
||||||
|
y += GetSize2DEntity(pEnt).y;
|
||||||
|
y += spacerY;
|
||||||
|
|
||||||
|
|
||||||
//fps limit
|
//fps limit
|
||||||
pEnt = CreateTextLabelEntity(pBG, "", startX, y, "FPS lock:");
|
pEnt = CreateTextLabelEntity(pBG, "", startX, y, "FPS lock:");
|
||||||
|
|
|
@ -5063,6 +5063,7 @@ void draw_sprite_game(LPDIRECTDRAWSURFACE lpdest,int h)
|
||||||
//convert it to a high color surface on the fly, without losing the data on it
|
//convert it to a high color surface on the fly, without losing the data on it
|
||||||
|
|
||||||
LPDIRECTDRAWSURFACE pNewSurf = InitOffscreenSurface(C_DINK_SCREENSIZE_X, C_DINK_SCREENSIZE_Y, IDirectDrawSurface::MODE_SHADOW_GL, true, lpdest->m_pSurf);
|
LPDIRECTDRAWSURFACE pNewSurf = InitOffscreenSurface(C_DINK_SCREENSIZE_X, C_DINK_SCREENSIZE_Y, IDirectDrawSurface::MODE_SHADOW_GL, true, lpdest->m_pSurf);
|
||||||
|
|
||||||
LogMsg("Detected high color bmps that need to drawn to the static landscape, converting backbuffers to 32 bit on the fly.");
|
LogMsg("Detected high color bmps that need to drawn to the static landscape, converting backbuffers to 32 bit on the fly.");
|
||||||
delete lpDDSBackGround;
|
delete lpDDSBackGround;
|
||||||
|
|
||||||
|
@ -5070,16 +5071,16 @@ void draw_sprite_game(LPDIRECTDRAWSURFACE lpdest,int h)
|
||||||
if (lpDDSBuffer->m_pSurf->GetSurfaceType() == SoftSurface::SURFACE_PALETTE_8BIT)
|
if (lpDDSBuffer->m_pSurf->GetSurfaceType() == SoftSurface::SURFACE_PALETTE_8BIT)
|
||||||
{
|
{
|
||||||
//this one too
|
//this one too
|
||||||
delete lpDDSBuffer;
|
delete lpDDSBuffer;
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ddrval = lpdest->Blt(&dstRect, g_pSpriteSurface[getpic(h)],
|
ddrval = lpdest->Blt(&dstRect, g_pSpriteSurface[getpic(h)],
|
||||||
&srcRect , DDBLT_KEYSRC ,&ddbltfx );
|
&srcRect , DDBLT_KEYSRC ,&ddbltfx );
|
||||||
|
|
||||||
|
@ -5528,7 +5529,8 @@ void place_sprites_game(bool bBackgroundOnly )
|
||||||
//it requires scaling, need to do things differently as our low mem fast custom blits won't work with this
|
//it requires scaling, need to do things differently as our low mem fast custom blits won't work with this
|
||||||
bScaledBackgroundSpritesRequired = true;
|
bScaledBackgroundSpritesRequired = true;
|
||||||
}
|
}
|
||||||
if (bScaledBackgroundSpritesRequired)
|
|
||||||
|
if (bScaledBackgroundSpritesRequired)
|
||||||
{
|
{
|
||||||
g_dglo.m_bgSpriteMan.Add(sprite);
|
g_dglo.m_bgSpriteMan.Add(sprite);
|
||||||
|
|
||||||
|
@ -6145,6 +6147,7 @@ restart:
|
||||||
if (bRequireRebuild) goto restart;
|
if (bRequireRebuild) goto restart;
|
||||||
g_tileScreens[tileScreenID]->UpdateLastUsedTime();
|
g_tileScreens[tileScreenID]->UpdateLastUsedTime();
|
||||||
|
|
||||||
|
|
||||||
lpDDSBackGround->BltFast( (x * 50 - ((x / 12) * 600))+g_gameAreaLeftOffset, (x / 12) * 50, g_tileScreens[tileScreenID],
|
lpDDSBackGround->BltFast( (x * 50 - ((x / 12) * 600))+g_gameAreaLeftOffset, (x / 12) * 50, g_tileScreens[tileScreenID],
|
||||||
&rcRect, DDBLTFAST_NOCOLORKEY| DDBLTFAST_WAIT );
|
&rcRect, DDBLTFAST_NOCOLORKEY| DDBLTFAST_WAIT );
|
||||||
}
|
}
|
||||||
|
@ -15841,6 +15844,7 @@ LastWindowsTimer = GetTickCount();
|
||||||
|
|
||||||
EndProcessTransition();
|
EndProcessTransition();
|
||||||
|
|
||||||
|
|
||||||
if (g_dglos.g_stopEntireGame == 1)
|
if (g_dglos.g_stopEntireGame == 1)
|
||||||
{
|
{
|
||||||
if (g_dglos.g_talkInfo.active)
|
if (g_dglos.g_talkInfo.active)
|
||||||
|
@ -15896,10 +15900,14 @@ LastWindowsTimer = GetTickCount();
|
||||||
if (g_dglos.screenlock == 1)
|
if (g_dglos.screenlock == 1)
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
|
|
||||||
|
/*
|
||||||
if (debug_mode)
|
if (debug_mode)
|
||||||
{
|
{
|
||||||
|
//CHEAT - ignore screenlocks
|
||||||
g_dglos.screenlock = 0;
|
g_dglos.screenlock = 0;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
#endif
|
#endif
|
||||||
drawscreenlock();
|
drawscreenlock();
|
||||||
}
|
}
|
||||||
|
@ -15941,16 +15949,14 @@ flip:
|
||||||
if (turn_on_plane) g_dglos.plane_process = true;
|
if (turn_on_plane) g_dglos.plane_process = true;
|
||||||
|
|
||||||
BlitSecondTransitionScreen();
|
BlitSecondTransitionScreen();
|
||||||
|
|
||||||
|
|
||||||
if (g_bTransitionActive)
|
if (g_bTransitionActive)
|
||||||
{
|
{
|
||||||
SetOrthoRenderSize(C_DINK_SCREENSIZE_X, g_dglo.m_orthoRenderRect.GetHeight(), 0, -g_dglo.m_orthoRenderRect.top);
|
SetOrthoRenderSize(C_DINK_SCREENSIZE_X, g_dglo.m_orthoRenderRect.GetHeight(), 0, -g_dglo.m_orthoRenderRect.top);
|
||||||
BlitGUIOverlay();
|
BlitGUIOverlay();
|
||||||
RemoveOrthoRenderSize();
|
RemoveOrthoRenderSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (bCaptureScreen)
|
if (bCaptureScreen)
|
||||||
{
|
{
|
||||||
//reset the timer because we probably just wasted a bunch loading crap
|
//reset the timer because we probably just wasted a bunch loading crap
|
||||||
|
|
|
@ -36,19 +36,21 @@ IDirectDrawSurface * LoadBitmapIntoSurface(const char *pName, eTransparencyType
|
||||||
pSurf->m_mode = mode;
|
pSurf->m_mode = mode;
|
||||||
pSurf->m_pSurf = new SoftSurface;
|
pSurf->m_pSurf = new SoftSurface;
|
||||||
|
|
||||||
|
bool bUseCheckerboardFix = GetApp()->GetVar("checkerboard_fix")->GetUINT32() != 0;
|
||||||
|
|
||||||
if (pMem)
|
if (pMem)
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
//LogMsg("loading DDRAW bmp from mem");
|
//LogMsg("loading DDRAW bmp from mem");
|
||||||
#endif
|
#endif
|
||||||
//if this is set, ignore the filename
|
//if this is set, ignore the filename
|
||||||
pSurf->m_pSurf->LoadFileFromMemory(pMem, SoftSurface::eColorKeyType(trans));
|
pSurf->m_pSurf->LoadFileFromMemory(pMem, SoftSurface::eColorKeyType(trans), 0, false, bUseCheckerboardFix);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
//LogMsg("loading DDRAW bmp from file");
|
//LogMsg("loading DDRAW bmp from file");
|
||||||
#endif
|
#endif
|
||||||
pSurf->m_pSurf->LoadFile(pName, SoftSurface::eColorKeyType(trans), false);
|
pSurf->m_pSurf->LoadFile(pName, SoftSurface::eColorKeyType(trans), false, bUseCheckerboardFix);
|
||||||
}
|
}
|
||||||
|
|
||||||
//LogMsg("loaded bitmap");
|
//LogMsg("loaded bitmap");
|
||||||
|
@ -96,6 +98,7 @@ IDirectDrawSurface * InitOffscreenSurface(int x, int y, IDirectDrawSurface::eMod
|
||||||
{
|
{
|
||||||
pdds->m_pSurf->Init(x,y, SoftSurface::SURFACE_RGBA);
|
pdds->m_pSurf->Init(x,y, SoftSurface::SURFACE_RGBA);
|
||||||
pdds->m_pSurf->SetHasPremultipliedAlpha(true);
|
pdds->m_pSurf->SetHasPremultipliedAlpha(true);
|
||||||
|
pdds->m_pSurf->SetUsesAlpha(true);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
pdds->m_pSurf->Init(x,y, SoftSurface::SURFACE_PALETTE_8BIT);
|
pdds->m_pSurf->Init(x,y, SoftSurface::SURFACE_PALETTE_8BIT);
|
||||||
|
@ -335,7 +338,7 @@ int IDirectDrawSurface::BltFast( int x, int y, IDirectDrawSurface *pSrcSurf, rtR
|
||||||
//we need to copy from what is already on the screen
|
//we need to copy from what is already on the screen
|
||||||
m_pSurf->BlitFromScreen(x, y, pSrcRect->left, pSrcRect->top, pSrcRect->GetWidth(), pSrcRect->GetHeight());
|
m_pSurf->BlitFromScreen(x, y, pSrcRect->left, pSrcRect->top, pSrcRect->GetWidth(), pSrcRect->GetHeight());
|
||||||
//m_pSurf->Blit(x, y, lpDDSBackGround->m_pSurf, pSrcRect->left, pSrcRect->top, pSrcRect->GetWidth(), pSrcRect->GetHeight());
|
//m_pSurf->Blit(x, y, lpDDSBackGround->m_pSurf, pSrcRect->left, pSrcRect->top, pSrcRect->GetWidth(), pSrcRect->GetHeight());
|
||||||
m_pSurf->SetUsesAlpha(false);
|
//m_pSurf->SetUsesAlpha(false);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
m_pSurf->Blit(x, y, pSrcSurf->m_pSurf, pSrcRect->left, pSrcRect->top, pSrcRect->GetWidth(), pSrcRect->GetHeight());
|
m_pSurf->Blit(x, y, pSrcSurf->m_pSurf, pSrcRect->left, pSrcRect->top, pSrcRect->GetWidth(), pSrcRect->GetHeight());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue