Merge pull request #2934 from raven02/ui

NewUI fix and add cycleable frameskipping/resolution to winUI
This commit is contained in:
Henrik Rydgård 2013-07-26 15:43:35 -07:00
commit dc213f1792
5 changed files with 158 additions and 27 deletions

View file

@ -58,8 +58,12 @@ enum {
enum {
FB_NON_BUFFERED_MODE = 0,
FB_BUFFERED_MODE = 1,
#ifndef USING_GLES2
FB_READFBOMEMORY_CPU = 2,
FB_READFBOMEMORY_GPU = 3,
#else
FB_READFBOMEMORY_GPU = 2,
#endif
};
struct VirtualFramebuffer {

View file

@ -193,13 +193,13 @@ void GameSettingsScreen::CreateViews() {
tabHolder->AddTab("Graphics", graphicsSettingsScroll);
graphicsSettings->Add(new ItemHeader(gs->T("Rendering Mode")));
static const char *renderingMode[] = { "Non-Buffered Rendering", "Buffered Rendering",
#ifndef USING_GLES2
"Read Framebuffers To Memory(CPU)",
#endif
"Read Framebuffers To Memory(GPU)"
};
static const char *renderingMode[] = { "Non-Buffered Rendering", "Buffered Rendering", "Read Framebuffers To Memory(CPU)", "Read Framebuffers To Memory(GPU)"};
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iRenderingMode, gs->T("Mode"), renderingMode, 0, 4, gs, screenManager()));
#else
static const char *renderingMode[] = { "Non-Buffered Rendering", "Buffered Rendering", "Read Framebuffers To Memory(GPU)"};
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iRenderingMode, gs->T("Mode"), renderingMode, 0, 3, gs, screenManager()));
#endif
graphicsSettings->Add(new ItemHeader(gs->T("Features")));
graphicsSettings->Add(new CheckBox(&g_Config.bHardwareTransform, gs->T("Hardware Transform")));
graphicsSettings->Add(new CheckBox(&g_Config.bVertexCache, gs->T("Vertex Cache")));
@ -220,17 +220,18 @@ void GameSettingsScreen::CreateViews() {
static const char *anisoLevels[] = { "Off", "2x", "4x", "8x", "16x" };
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iAnisotropyLevel, gs->T("Anisotropic Filtering"), anisoLevels, 0, 5, gs, screenManager()));
graphicsSettings->Add(new ItemHeader(gs->T("Texture Scaling")));
static const char *texScaleLevels[] = {
"Off (1x)", "2x", "3x",
#ifndef USING_GLES2
"4x", "5x",
#endif
};
static const char *texScaleLevels[] = {"Off", "2x", "3x","4x", "5x"};
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iTexScalingLevel, gs->T("Upscale Level"), texScaleLevels, 1, 5, gs, screenManager()));
#else
static const char *texScaleLevels[] = {"Off", "2x", "3x"};
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iTexScalingLevel, gs->T("Upscale Level"), texScaleLevels, 1, 3, gs, screenManager()));
#endif
static const char *texScaleAlgos[] = { "xBRZ", "Hybrid", "Bicubic", "Hybrid + Bicubic", };
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iTexScalingType, gs->T("Upscale Type"), texScaleAlgos, 0, 4, gs, screenManager()));
graphicsSettings->Add(new CheckBox(&g_Config.bTexDeposterize, gs->T("Deposterize")));
graphicsSettings->Add(new ItemHeader(gs->T("Texture Filtering")));
static const char *texFilters[] = { "Default (auto)", "Nearest", "Linear", "Linear on FMV", };
static const char *texFilters[] = { "Auto", "Nearest", "Linear", "Linear on FMV", };
graphicsSettings->Add(new PopupMultiChoice(&g_Config.iTexFiltering, gs->T("Upscale Type"), texFilters, 1, 4, gs, screenManager()));
// Audio

View file

@ -180,7 +180,7 @@ namespace MainWindow
gpu->Resized();
}
void SetZoom(float zoom) {
void setZoom(float zoom) {
if (zoom < 5)
g_Config.iWindowZoom = (int) zoom;
RECT rc, rcOuter;
@ -204,22 +204,22 @@ namespace MainWindow
}
}
void setTexScalingLevel(int num) {
g_Config.iTexScalingLevel = num;
void setTexScalingLevel(int level) {
g_Config.iTexScalingLevel = level;
if(gpu) gpu->ClearCacheNextFrame();
}
void setTexFiltering(int num) {
g_Config.iTexFiltering = num;
void setTexFiltering(int type) {
g_Config.iTexFiltering = type;
}
void setTexScalingType(int num) {
g_Config.iTexScalingType = num;
void setTexScalingType(int type) {
g_Config.iTexScalingType = type;
if(gpu) gpu->ClearCacheNextFrame();
}
void setRenderingMode(int num) {
g_Config.iRenderingMode = num;
void setRenderingMode(int mode) {
g_Config.iRenderingMode = mode;
if (gpu) gpu->Resized();
}
@ -227,6 +227,10 @@ namespace MainWindow
g_Config.iFpsLimit = fps;
}
void setFrameSkipping(int frame) {
g_Config.iFrameSkip = frame;
}
void enableCheats(bool cheats){
g_Config.bEnableCheats = cheats;
}
@ -695,18 +699,39 @@ namespace MainWindow
break;
case ID_OPTIONS_SCREEN1X:
SetZoom(1);
setZoom(1);
break;
case ID_OPTIONS_SCREEN2X:
SetZoom(2);
setZoom(2);
break;
case ID_OPTIONS_SCREEN3X:
SetZoom(3);
setZoom(3);
break;
case ID_OPTIONS_SCREEN4X:
SetZoom(4);
setZoom(4);
break;
case ID_OPTIONS_SCREENDUMMY:
g_Config.iWindowZoom = ++g_Config.iWindowZoom > 4 ? 1 : g_Config.iWindowZoom;
switch(g_Config.iWindowZoom) {
case 1:
osm.Show(g->T("1x Rending Resolution"));
break;
case 2:
osm.Show(g->T("2x Rending Resolution"));
break;
case 3:
osm.Show(g->T("3x Rending Resolution"));
break;
case 4:
osm.Show(g->T("4x Rending Resolution"));
break;
}
setZoom(g_Config.iWindowZoom);
break;
case ID_OPTIONS_MIPMAP:
g_Config.bMipMap = !g_Config.bMipMap;
break;
@ -803,9 +828,84 @@ namespace MainWindow
gpu->Resized(); // easy way to force a clear...
break;
case ID_OPTIONS_FRAMESKIP:
g_Config.iFrameSkip = g_Config.iFrameSkip == 0 ? 1 : 0;
osm.ShowOnOff(g->T("Frame Skipping"), g_Config.iFrameSkip != 0);
case ID_OPTIONS_FRAMESKIP_0:
setFrameSkipping(0);
break;
case ID_OPTIONS_FRAMESKIP_1:
setFrameSkipping(1);
break;
case ID_OPTIONS_FRAMESKIP_2:
setFrameSkipping(2);
break;
case ID_OPTIONS_FRAMESKIP_3:
setFrameSkipping(3);
break;
case ID_OPTIONS_FRAMESKIP_4:
setFrameSkipping(4);
break;
case ID_OPTIONS_FRAMESKIP_5:
setFrameSkipping(5);
break;
case ID_OPTIONS_FRAMESKIP_6:
setFrameSkipping(6);
break;
case ID_OPTIONS_FRAMESKIP_7:
setFrameSkipping(7);
break;
case ID_OPTIONS_FRAMESKIP_8:
setFrameSkipping(8);
break;
case ID_OPTIONS_FRAMESKIP_9:
setFrameSkipping(9);
break;
case ID_OPTIONS_FRAMESKIPDUMMY:
g_Config.iFrameSkip = ++g_Config.iFrameSkip > 9 ? 0 : g_Config.iFrameSkip;
switch(g_Config.iFrameSkip) {
case 0:
osm.Show(g->T("No Frame Skip"));
break;
case 1:
osm.Show(g->T("Skip 1 frame"));
break;
case 2:
osm.Show(g->T("Skip 2 frames"));
break;
case 3:
osm.Show(g->T("Skip 3 frames"));
break;
case 4:
osm.Show(g->T("Skip 4 frames"));
break;
case 5:
osm.Show(g->T("Skip 5 frames"));
break;
case 6:
osm.Show(g->T("Skip 6 frames"));
break;
case 7:
osm.Show(g->T("Skip 7 frames"));
break;
case 8:
osm.Show(g->T("Skip 8 frames"));
break;
case 9:
osm.Show(g->T("Skip 9 frames"));
break;
}
setFrameSkipping(g_Config.iFrameSkip);
break;
case ID_FILE_EXIT:
@ -1154,6 +1254,32 @@ namespace MainWindow
CheckMenuItem(menu, renderingmode[i], MF_BYCOMMAND | ( i == g_Config.iRenderingMode )? MF_CHECKED : MF_UNCHECKED);
}
static const int frameskipping[] = {
ID_OPTIONS_FRAMESKIP_0,
ID_OPTIONS_FRAMESKIP_1,
ID_OPTIONS_FRAMESKIP_2,
ID_OPTIONS_FRAMESKIP_3,
ID_OPTIONS_FRAMESKIP_4,
ID_OPTIONS_FRAMESKIP_5,
ID_OPTIONS_FRAMESKIP_6,
ID_OPTIONS_FRAMESKIP_7,
ID_OPTIONS_FRAMESKIP_8,
ID_OPTIONS_FRAMESKIP_9,
};
for (int i = 0; i < 9; i++) {
CheckMenuItem(menu, frameskipping[i], MF_BYCOMMAND | ( i == g_Config.iFrameSkip )? MF_CHECKED : MF_UNCHECKED);
}
static const int zoommode[] = {
ID_OPTIONS_SCREEN1X,
ID_OPTIONS_SCREEN2X,
ID_OPTIONS_SCREEN3X,
ID_OPTIONS_SCREEN4X,
};
for (int i = 0; i < 4; i++) {
CheckMenuItem(menu, zoommode[i], MF_BYCOMMAND | ( i == g_Config.iWindowZoom )? MF_CHECKED : MF_UNCHECKED);
}
UpdateCommands();
}

Binary file not shown.

Binary file not shown.