Win32 gl ui: Fixes and tweaks.

This commit is contained in:
Henrik Rydgard 2013-03-29 19:32:20 +01:00
parent 84fd5781de
commit 32a599c957
9 changed files with 62 additions and 83 deletions

View File

@ -111,14 +111,20 @@ void UpdateScreenScale() {
void Core_RunLoop()
{
while (!coreState) {
time_update();
UpdateScreenScale();
{
lock_guard guard(input_state.lock);
if (GetAsyncKeyState(VK_ESCAPE)) {
input_state.pad_buttons |= PAD_BUTTON_MENU;
} else {
input_state.pad_buttons &= ~PAD_BUTTON_MENU;
}
NativeUpdate(input_state);
}
NativeRender();
// Simple throttling to not burn the GPU in the menu.
if (!PSP_CoreParameter().fileToStart.size())
if (globalUIState != UISTATE_INGAME)
Sleep(15);
GL_SwapBuffers();
}

View File

@ -49,6 +49,7 @@
MetaFileSystem pspFileSystem;
ParamSFOData g_paramSFO;
GlobalUIState globalUIState;
static CoreParameter coreParameter;
static PSPMixer *mixer;

View File

@ -28,13 +28,14 @@ extern ParamSFOData g_paramSFO;
// To synchronize the two UIs, we need to know which state we're in.
enum UIState {
enum GlobalUIState {
UISTATE_MENU,
UISTATE_PAUSEMENU,
UISTATE_INGAME,
};
extern GlobalUIState globalUIState;
bool PSP_Init(const CoreParameter &coreParam, std::string *error_string);
bool PSP_IsInited();

View File

@ -218,7 +218,7 @@ namespace MainWindow
filter[i] = '\0';
}
if (W32Util::BrowseForFileName(true, GetHWND(), "Load File",defaultPath.size() ? defaultPath.c_str() : 0, filter.c_str(),"*.pbp;*.elf;*.iso;*.cso;",fn))
if (W32Util::BrowseForFileName(true, GetHWND(), "Load File", defaultPath.size() ? defaultPath.c_str() : 0, filter.c_str(),"*.pbp;*.elf;*.iso;*.cso;",fn))
{
// decode the filename with fullpath
std::string fullpath = fn;
@ -229,7 +229,7 @@ namespace MainWindow
_splitpath(fullpath.c_str(), drive, dir, fname, ext);
std::string executable = std::string(drive) + std::string(dir) + std::string(fname) + std::string(ext);
NativeMessageReceived("run", executable.c_str());
NativeMessageReceived("boot", executable.c_str());
}
}
@ -243,10 +243,10 @@ namespace MainWindow
break;
case WM_SIZE:
break;
case WM_ERASEBKGND:
return DefWindowProc(hWnd, message, wParam, lParam);
case WM_LBUTTONDOWN:
{
lock_guard guard(input_state.lock);
@ -274,7 +274,6 @@ namespace MainWindow
}
break;
case WM_PAINT:
return DefWindowProc(hWnd, message, wParam, lParam);
default:
@ -332,6 +331,7 @@ namespace MainWindow
break;
case ID_EMULATION_RUN:
NativeMessageReceived("run", "");
for (int i=0; i<numCPUs; i++)
if (disasmWindow[i])
SendMessage(disasmWindow[i]->GetDlgHandle(), WM_COMMAND, IDC_STOP, 0);
@ -695,6 +695,9 @@ namespace MainWindow
PostMessage(hwndMain, WM_COMMAND, ID_EMULATION_RUN, 0);
UpdateMenus();
break;
case WM_MENUSELECT:
UpdateMenus();
break;
default:
return DefWindowProc(hWnd, message, wParam, lParam);
@ -730,16 +733,21 @@ namespace MainWindow
CHECKITEM(ID_OPTIONS_FRAMESKIP, g_Config.iFrameSkip != 0);
CHECKITEM(ID_OPTIONS_USEMEDIAENGINE, g_Config.bUseMediaEngine);
UINT enable = !Core_IsStepping() ? MF_GRAYED : MF_ENABLED;
bool paused = !Core_IsStepping();
UINT enable = paused ? MF_GRAYED : MF_ENABLED;
bool pspRunning = PSP_CoreParameter().fileToStart.size() != 0;
EnableMenuItem(menu,ID_EMULATION_RUN, pspRunning ? enable : MF_GRAYED);
EnableMenuItem(menu,ID_EMULATION_PAUSE, pspRunning ? !enable : MF_GRAYED);
EnableMenuItem(menu,ID_EMULATION_RESET, FALSE); //pspRunning ? MF_ENABLED : MF_GRAYED);
EnableMenuItem(menu,ID_EMULATION_RUN, globalUIState == UISTATE_PAUSEMENU ? MF_ENABLED : MF_GRAYED);
EnableMenuItem(menu,ID_EMULATION_PAUSE, globalUIState == UISTATE_INGAME ? MF_ENABLED : MF_GRAYED);
EnableMenuItem(menu,ID_EMULATION_STOP, globalUIState == UISTATE_INGAME ? MF_ENABLED : MF_GRAYED);
EnableMenuItem(menu,ID_EMULATION_RESET, MF_GRAYED); //pspRunning ? MF_ENABLED : MF_GRAYED);
enable = pspRunning ? MF_GRAYED : MF_ENABLED;
enable = globalUIState == UISTATE_MENU ? MF_ENABLED : MF_GRAYED;
EnableMenuItem(menu,ID_FILE_LOAD,enable);
EnableMenuItem(menu,ID_FILE_LOAD_MEMSTICK,enable);
EnableMenuItem(menu,ID_FILE_SAVESTATEFILE,!enable);
EnableMenuItem(menu,ID_FILE_LOADSTATEFILE,!enable);
EnableMenuItem(menu,ID_FILE_QUICKSAVESTATE,!enable);

View File

@ -413,7 +413,7 @@ BEGIN
VALUE "FileDescription", "PPSSPP"
VALUE "FileVersion", "1, 0, 5, 0"
VALUE "InternalName", "s"
VALUE "LegalCopyright", "Copyright (C) 2006-2012 by Henrik Rydgård"
VALUE "LegalCopyright", "Copyright (C) 2006-2013 by Henrik Rydgård"
VALUE "LegalTrademarks", "All product names are trademarks of their respective owners."
VALUE "OriginalFilename", "PPSSPP.exe"
VALUE "ProductName", "PPSSPP"
@ -426,23 +426,4 @@ BEGIN
END
END
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE
BEGIN
IDS_GAMELISTPATH "Path"
IDS_UNIMPLEMENTED "Unimplemented"
END
STRINGTABLE
BEGIN
IDS_GAMELISTGENRE "Genre"
IDS_APPNAME "Potemkin"
IDS_GAMELISTTYPE "Type"
END
#endif // Neutral (Default) resources

View File

@ -2,31 +2,6 @@
// Microsoft Visual C++ generated include file.
// Used by ppsspp.rc
//
#define IDS_DLGSETTINGSGENERAL 5
#define IDS_DLGSETTINGSGCMPATHS 6
#define IDS_DLGSETTINGSPLUGINS 7
#define IDS_ERRORNOGAMESFOUND 9
#define IDS_GAMELISTBANNER 10
#define IDS_GAMELISTCOMPANY 11
#define IDS_GAMELISTTITLE 12
#define IDS_GAMELISTNOTES 13
#define IDS_GAMELISTID 14
#define IDS_GAMELISTSIZE 15
#define IDS_GAMELISTPATH 16
#define IDS_TIPS_LOADDOL 17
#define IDS_TIPS_LOADELF 18
#define IDS_TIPS_LOADGCM 19
#define IDS_TIPS_REFRESHGAMELIST 20
#define IDS_TIPS_RUN 21
#define IDS_TIPS_PAUSE 22
#define IDS_TIPS_STOP 23
#define IDS_TIPS_FRAMEBUFFER 24
#define IDS_TIPS_HELP 25
#define IDS_TIPS_CONFIGUREGFX 26
#define IDS_TIPS_CONFIGUREAUDIO 27
#define IDS_TIPS_CONFIGUREPAD 28
#define IDS_TIPS_CONFIGUREDVD 29
#define IDS_TIPS_SETTINGS 30
#define IDS_UNIMPLEMENTED 31
#define IDS_GAMELISTGENRE 32
#define IDS_APPNAME 33
@ -51,8 +26,6 @@
#define ID_DEBUG_REGISTERS 120
#define ID_DEBUG_LOG 121
#define ID_DEBUG_BREAKPOINTS 122
#define ID_FILE_LOAD_BIN 123
#define ID_FILE_LOAD_ISO 125
#define ID_FILE_LOADSTATEFILE 126
#define ID_FILE_SAVESTATEFILE 127
#define ID_EMULATION_RESET 130
@ -68,21 +41,14 @@
#define IDD_MEMORY 160
#define ID_DEBUG_MEMORYVIEW 161
#define IDR_ACCELS 162
#define ID_FILE_LOAD_ELF 165
#define ID_FILE_BOOTDVD 166
#define ID_OPTIONS_ENABLEFRAMEBUFFER 167
#define IDR_POPUPMENUS 169
#define ID_CHEATS_ACTIONREPLAYCODES 171
#define ID_DEBUG_MEMORYCHECKS 173
#define ID_DVD_INSERTISO 175
#define ID_FILE_LOAD_GCM 175
#define ID_DVD_EJECT 176
#define ID_DVD_ 177
#define ID_DVD_OPENLID 178
#define ID_PLUGINS_CONFIGUREGFXPLUGIN 179
#define ID_PLUGINS_CONFIGUREAUDIOPLUGIN 180
#define ID_PLUGINS_INPUTPLUGINSETTINGS 182
#define ID_PLUGINS_CONFIGUREPADPLUGIN 182
#define ID_DVD_BOOT 183
#define ID_DVD_HLEBOOT 184
#define ID_Menu185 185
@ -120,7 +86,6 @@
#define IDC_STEP 1009
#define IDC_VERSION 1010
#define IDC_UP 1014
#define IDC_DIRTREE 1014
#define IDC_DOWN 1015
#define IDC_BREAKPOINTS_LIST 1015
#define IDC_ADD 1016
@ -157,25 +122,16 @@
#define IDC_BROWSE 1159
#define IDC_SHOWVFPU 1161
#define IDC_LISTCONTROLS 1162
#define ID_FILE_BOOTISO 40001
#define ID_FILE_EXIT 40002
#define ID_CONFIG_SELECT_PLUGINS 40003
#define ID_BUTTON40013 40013
#define ID_BUTTON40014 40014
#define ID_BUTTON40015 40015
#define ID_FILE_BOOTBIOS 40018
#define ID_COMPARE_STARTSERVER 40019
#define ID_COMPARE_CONNECTASCLIENT 40020
#define ID_CPU_COMPARE_CLOSECONNECTION 40022
#define ID_OPTIONS_EMULATESYSCALL 40023
#define ID_DEBUG_LOCATESYMBOLS 40025
#define ID_HELP_TOPICS 40026
#define ID_PLUGINS_DVDPLUGINSETTINGS 40027
#define ID_PLUGINS_CONFIGUREDVDPLUGIN 40027
#define ID_DEBUG_SAVEMAPFILE 40028
#define ID_DEBUG_ 40029
#define ID_BUTTON40030 40030
#define ID_BUTTON40031 40031
#define ID_BUTTON40032 40032
#define ID_BUTTON40033 40033
#define ID_BUTTON40034 40034
@ -199,7 +155,6 @@
#define ID_DISASM_COPYINSTRUCTIONDISASM 40059
#define ID_DISASM_COPYINSTRUCTIONHEX 40060
#define ID_OPTIONS_CONFIGURATIONWIZARD 40064
#define ID_TOOLS_GCMSHRINKER 40065
#define ID_BUTTON40066 40066
#define ID_GAMELIST_SHRINK 40067
#define ID_GAMELIST_PROPERTIES 40068

View File

@ -58,8 +58,10 @@ EmuScreen::EmuScreen(const std::string &filename) : invalid_(true)
coreParam.enableDebugging = false;
coreParam.printfEmuLog = false;
coreParam.headLess = false;
#ifndef _WIN32
if (g_Config.iWindowZoom < 1 || g_Config.iWindowZoom > 2)
g_Config.iWindowZoom = 1;
#endif
coreParam.renderWidth = 480 * g_Config.iWindowZoom;
coreParam.renderHeight = 272 * g_Config.iWindowZoom;
coreParam.outputWidth = dp_xres;
@ -126,6 +128,7 @@ inline float clamp1(float x) {
void EmuScreen::update(InputState &input)
{
globalUIState = UISTATE_INGAME;
if (errorMessage_.size()) {
screenManager()->push(new ErrorScreen(
"Error loading file",

View File

@ -19,6 +19,12 @@
#include <string>
#include <cstdio>
#ifdef _WIN32
namespace MainWindow {
void BrowseAndBoot(std::string defaultPath);
}
#endif
#ifdef _MSC_VER
#define snprintf _snprintf
#endif
@ -39,12 +45,13 @@
#include "UIShader.h"
#include "Common/StringUtil.h"
#include "../../GPU/ge_constants.h"
#include "../../GPU/GPUState.h"
#include "../../GPU/GPUInterface.h"
#include "../../Core/Config.h"
#include "../../Core/CoreParameter.h"
#include "../../Core/SaveState.h"
#include "Core/System.h"
#include "GPU/ge_constants.h"
#include "GPU/GPUState.h"
#include "GPU/GPUInterface.h"
#include "Core/Config.h"
#include "Core/CoreParameter.h"
#include "Core/SaveState.h"
#include "MenuScreens.h"
#include "EmuScreen.h"
@ -157,9 +164,16 @@ void LogoScreen::render() {
// ==================
void MenuScreen::update(InputState &input_state) {
globalUIState = UISTATE_MENU;
frames_++;
}
void MenuScreen::sendMessage(const char *message, const char *value) {
if (!strcmp(message, "boot")) {
screenManager()->switchScreen(new EmuScreen(value));
}
}
void MenuScreen::render() {
UIShader_Prepare();
UIBegin();
@ -189,6 +203,8 @@ void MenuScreen::render() {
g_Config.Save();
screenManager()->switchScreen(new EmuScreen(fileName.toStdString()));
}
#elif _WIN32
MainWindow::BrowseAndBoot("");
#else
FileSelectScreenOptions options;
options.allowChooseDirectory = true;
@ -203,10 +219,12 @@ void MenuScreen::render() {
UIReset();
}
#ifndef _WIN32
if (UIButton(GEN_ID, vlinear, w, "Settings", ALIGN_RIGHT)) {
screenManager()->push(new SettingsScreen(), 0);
UIReset();
}
#endif
if (UIButton(GEN_ID, vlinear, w, "Credits", ALIGN_RIGHT)) {
screenManager()->switchScreen(new CreditsScreen());
@ -245,6 +263,7 @@ void MenuScreen::render() {
void PauseScreen::update(InputState &input) {
globalUIState = UISTATE_PAUSEMENU;
if (input.pad_buttons_down & PAD_BUTTON_BACK) {
screenManager()->finishDialog(this, DR_CANCEL);
}
@ -306,9 +325,11 @@ void PauseScreen::render() {
if (UIButton(GEN_ID, vlinear, LARGE_BUTTON_WIDTH, "Continue", ALIGN_RIGHT)) {
screenManager()->finishDialog(this, DR_CANCEL);
}
#ifndef _WIN32
if (UIButton(GEN_ID, vlinear, LARGE_BUTTON_WIDTH, "Settings", ALIGN_RIGHT)) {
screenManager()->push(new SettingsScreen(), 0);
}
#endif
if (UIButton(GEN_ID, vlinear, LARGE_BUTTON_WIDTH, "Return to Menu", ALIGN_RIGHT)) {
screenManager()->finishDialog(this, DR_OK);
}
@ -327,6 +348,7 @@ void PauseScreen::render() {
}
void SettingsScreen::update(InputState &input) {
globalUIState = UISTATE_MENU;
if (input.pad_buttons_down & PAD_BUTTON_BACK) {
g_Config.Save();
screenManager()->finishDialog(this, DR_OK);
@ -527,6 +549,7 @@ void FileSelectScreen::render() {
}
void CreditsScreen::update(InputState &input_state) {
globalUIState = UISTATE_MENU;
if (input_state.pad_buttons_down & PAD_BUTTON_BACK) {
screenManager()->switchScreen(new MenuScreen());
}

View File

@ -45,6 +45,7 @@ public:
MenuScreen() : frames_(0) {}
void update(InputState &input);
void render();
void sendMessage(const char *message, const char *value);
private:
int frames_;