mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-23 13:30:02 +00:00
Merge branch 'master' into armjit-fpu
Conflicts: Core/MIPS/x86/CompFPU.cpp
This commit is contained in:
commit
30318a4a4d
@ -18,6 +18,10 @@
|
||||
#ifndef _ATOMIC_GCC_H_
|
||||
#define _ATOMIC_GCC_H_
|
||||
|
||||
#ifdef BLACKBERRY
|
||||
#include <atomic.h>
|
||||
#endif
|
||||
|
||||
#include "Common.h"
|
||||
|
||||
// Atomic operations are performed in a single step by the CPU. It is
|
||||
@ -73,7 +77,11 @@ inline void AtomicStore(volatile u32& dest, u32 value) {
|
||||
dest = value; // 32-bit writes are always atomic.
|
||||
}
|
||||
inline void AtomicStoreRelease(volatile u32& dest, u32 value) {
|
||||
#ifdef BLACKBERRY
|
||||
atomic_set(&dest, value);
|
||||
#else
|
||||
__sync_lock_test_and_set(&dest, value); // TODO: Wrong! This function is has acquire semantics.
|
||||
#endif
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -41,7 +41,7 @@
|
||||
#include "FileUtil.h"
|
||||
#include "../ext/snappy/snappy-c.h"
|
||||
|
||||
#ifdef ANDROID
|
||||
#if defined(ANDROID) || defined(IOS)
|
||||
namespace std {
|
||||
using tr1::is_pointer;
|
||||
}
|
||||
|
@ -5,24 +5,20 @@
|
||||
#define GCC_VER(x,y,z) ((x) * 10000 + (y) * 100 + (z))
|
||||
#define GCC_VERSION GCC_VER(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__)
|
||||
|
||||
#if GCC_VERSION >= GCC_VER(4,4,0) && __GXX_EXPERIMENTAL_CXX0X__ && !defined(ANDROID) && !defined(__SYMBIAN32__) || defined(__APPLE__)
|
||||
// GCC 4.4 provides <mutex>
|
||||
#if (GCC_VERSION >= GCC_VER(4,4,0) && __GXX_EXPERIMENTAL_CXX0X__ || defined(__APPLE__)) \
|
||||
/* GCC 4.4 provides <mutex>, except on these platforms: */ \
|
||||
&& !defined(ANDROID) && !defined(__SYMBIAN32__) && !defined(IOS)
|
||||
#include <mutex>
|
||||
#else
|
||||
|
||||
// partial <mutex> implementation for win32/pthread
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#if defined(_WIN32)
|
||||
// WIN32
|
||||
#if defined(_WIN32) // WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <Windows.h>
|
||||
|
||||
#else
|
||||
// POSIX
|
||||
#else // POSIX
|
||||
#include <pthread.h>
|
||||
|
||||
#endif
|
||||
|
||||
#if (_MSC_VER >= 1600) || (GCC_VERSION >= GCC_VER(4,3,0) && __GXX_EXPERIMENTAL_CXX0X__)
|
||||
|
@ -75,6 +75,7 @@ void CConfig::Load(const char *iniFileName)
|
||||
graphics->Get("DisableG3DLog", &bDisableG3DLog, false);
|
||||
graphics->Get("VertexCache", &bVertexCache, true);
|
||||
graphics->Get("FullScreen", &bFullScreen, false);
|
||||
graphics->Get("StretchToDisplay", &bStretchToDisplay, false);
|
||||
|
||||
IniFile::Section *sound = iniFile.GetOrCreateSection("Sound");
|
||||
sound->Get("Enable", &bEnableSound, true);
|
||||
@ -132,6 +133,7 @@ void CConfig::Save()
|
||||
graphics->Set("DisableG3DLog", bDisableG3DLog);
|
||||
graphics->Set("VertexCache", bVertexCache);
|
||||
graphics->Set("FullScreen", bFullScreen);
|
||||
graphics->Set("StretchToDisplay", bStretchToDisplay);
|
||||
|
||||
IniFile::Section *sound = iniFile.GetOrCreateSection("Sound");
|
||||
sound->Set("Enable", bEnableSound);
|
||||
|
@ -57,6 +57,8 @@ public:
|
||||
bool bDrawWireframe;
|
||||
bool bLinearFiltering;
|
||||
bool bUseVBO;
|
||||
bool bStretchToDisplay;
|
||||
|
||||
int iWindowZoom; // for Windows
|
||||
bool SSAntiAliasing; //for Windows, too
|
||||
bool bDisableG3DLog;
|
||||
|
@ -337,7 +337,7 @@ u32 ISOFileSystem::OpenFile(std::string filename, FileAccess access)
|
||||
return 0;
|
||||
}
|
||||
|
||||
INFO_LOG(FILESYS, "Got a raw sector open: %s, sector %08x, size %08x", filename.c_str(), sectorStart, readSize);
|
||||
DEBUG_LOG(FILESYS, "Got a raw sector open: %s, sector %08x, size %08x", filename.c_str(), sectorStart, readSize);
|
||||
u32 newHandle = hAlloc->GetNewHandle();
|
||||
entry.seekPos = 0;
|
||||
entry.file = 0;
|
||||
|
@ -131,6 +131,12 @@ template<int func(u32, u32)> void WrapI_UU() {
|
||||
RETURN(retval);
|
||||
}
|
||||
|
||||
template<int func(u32, float, float)> void WrapI_UFF() {
|
||||
// Not sure about the float arguments.
|
||||
int retval = func(PARAM(0), currentMIPS->f[0], currentMIPS->f[1]);
|
||||
RETURN(retval);
|
||||
}
|
||||
|
||||
template<int func(u32, u32, u32)> void WrapI_UUU() {
|
||||
int retval = func(PARAM(0), PARAM(1), PARAM(2));
|
||||
RETURN(retval);
|
||||
|
@ -86,6 +86,7 @@ static int hCountTotal; //unused
|
||||
static int vCount;
|
||||
static int isVblank;
|
||||
static bool hasSetMode;
|
||||
// Don't include this in the state, time increases regardless of state.
|
||||
static double lastFrameTime;
|
||||
|
||||
std::vector<WaitVBlankInfo> vblankWaitingThreads;
|
||||
@ -137,7 +138,6 @@ void __DisplayDoState(PointerWrap &p) {
|
||||
p.Do(vCount);
|
||||
p.Do(isVblank);
|
||||
p.Do(hasSetMode);
|
||||
p.Do(lastFrameTime);
|
||||
WaitVBlankInfo wvi(0);
|
||||
p.Do(vblankWaitingThreads, wvi);
|
||||
|
||||
@ -242,7 +242,6 @@ void hleEnterVblank(u64 userdata, int cyclesLate) {
|
||||
char stats[2048];
|
||||
|
||||
sprintf(stats,
|
||||
"FPS: %0.1f\n"
|
||||
"Frames: %i\n"
|
||||
"DL processing time: %0.2f ms\n"
|
||||
"Kernel processing time: %0.2f ms\n"
|
||||
@ -260,7 +259,6 @@ void hleEnterVblank(u64 userdata, int cyclesLate) {
|
||||
"Vertex shaders loaded: %i\n"
|
||||
"Fragment shaders loaded: %i\n"
|
||||
"Combined shaders loaded: %i\n",
|
||||
calculateFPS(),
|
||||
gpuStats.numFrames,
|
||||
gpuStats.msProcessingDisplayLists * 1000.0f,
|
||||
kernelStats.msInSyscalls * 1000.0f,
|
||||
@ -299,14 +297,19 @@ void hleEnterVblank(u64 userdata, int cyclesLate) {
|
||||
if (g_Config.bShowFPSCounter) {
|
||||
char stats[50];
|
||||
|
||||
sprintf(stats, "FPS: %0.1f", calculateFPS());
|
||||
sprintf(stats, "%0.1f", calculateFPS());
|
||||
|
||||
float zoom = 0.3f; /// g_Config.iWindowZoom;
|
||||
float soff = 0.3f;
|
||||
#ifdef USING_GLES2
|
||||
float zoom = 0.7f; /// g_Config.iWindowZoom;
|
||||
float soff = 0.7f;
|
||||
#else
|
||||
float zoom = 0.5f; /// g_Config.iWindowZoom;
|
||||
float soff = 0.5f;
|
||||
#endif
|
||||
PPGeBegin();
|
||||
PPGeDrawText(stats, soff, soff, 0, zoom, 0xCC000000);
|
||||
PPGeDrawText(stats, -soff, -soff, 0, zoom, 0xCC000000);
|
||||
PPGeDrawText(stats, 0, 0, 0, zoom, 0xFFFFFFFF);
|
||||
PPGeDrawText(stats, 476 + soff, 4 + soff, PPGE_ALIGN_RIGHT, zoom, 0xCC000000);
|
||||
PPGeDrawText(stats, 476 + -soff, 4 -soff, PPGE_ALIGN_RIGHT, zoom, 0xCC000000);
|
||||
PPGeDrawText(stats, 476, 4, PPGE_ALIGN_RIGHT, zoom, 0xFF30FF30);
|
||||
PPGeEnd();
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
typedef u32 FontLibraryHandle;
|
||||
typedef u32 FontHandle;
|
||||
|
||||
typedef struct {
|
||||
struct FontNewLibParams {
|
||||
u32 userDataAddr;
|
||||
u32 numFonts;
|
||||
u32 cacheDataAddr;
|
||||
@ -23,28 +23,28 @@ typedef struct {
|
||||
u32 seekFuncAddr;
|
||||
u32 errorFuncAddr;
|
||||
u32 ioFinishFuncAddr;
|
||||
} FontNewLibParams;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
typedef enum Family {
|
||||
FONT_FAMILY_SANS_SERIF = 1,
|
||||
FONT_FAMILY_SERIF = 2,
|
||||
} Family;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
typedef enum Style {
|
||||
FONT_STYLE_REGULAR = 1,
|
||||
FONT_STYLE_ITALIC = 2,
|
||||
FONT_STYLE_BOLD = 5,
|
||||
FONT_STYLE_BOLD_ITALIC = 6,
|
||||
FONT_STYLE_DB = 103, // Demi-Bold / semi-bold
|
||||
} Style;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
typedef enum Language {
|
||||
FONT_LANGUAGE_JAPANESE = 1,
|
||||
FONT_LANGUAGE_LATIN = 2,
|
||||
FONT_LANGUAGE_KOREAN = 3,
|
||||
} Language;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct FontStyle {
|
||||
float fontH;
|
||||
float fontV;
|
||||
float fontHRes;
|
||||
@ -61,9 +61,9 @@ typedef struct {
|
||||
char fontFileName[64];
|
||||
u32 fontAttributes;
|
||||
u32 fontExpire;
|
||||
} FontStyle;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct FontInfo {
|
||||
// Glyph metrics (in 26.6 signed fixed-point).
|
||||
u32 maxGlyphWidthI;
|
||||
u32 maxGlyphHeightI;
|
||||
@ -99,9 +99,9 @@ typedef struct {
|
||||
|
||||
u8 BPP; // Font's BPP.
|
||||
u8 pad[3];
|
||||
} FontInfo;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct CharInfo {
|
||||
u32 bitmapWidth;
|
||||
u32 bitmapHeight;
|
||||
u32 bitmapLeft;
|
||||
@ -118,17 +118,17 @@ typedef struct {
|
||||
s32 spf26AdvanceH;
|
||||
s32 spf26AdvanceV;
|
||||
u8 pad[4];
|
||||
} CharInfo;
|
||||
};
|
||||
|
||||
typedef enum {
|
||||
enum FontPixelFormat {
|
||||
PSP_FONT_PIXELFORMAT_4 = 0,
|
||||
PSP_FONT_PIXELFORMAT_4_REV = 1,
|
||||
PSP_FONT_PIXELFORMAT_8 = 2,
|
||||
PSP_FONT_PIXELFORMAT_24 = 3,
|
||||
PSP_FONT_PIXELFORMAT_32 = 4
|
||||
} FontPixelFormat;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
struct GlyphImage {
|
||||
FontPixelFormat pixelFormat;
|
||||
s32 xPos64;
|
||||
s32 yPos64;
|
||||
@ -137,7 +137,7 @@ typedef struct {
|
||||
u16 bytesPerLine;
|
||||
u16 pad;
|
||||
u32 bufferPtr;
|
||||
} GlyphImage;
|
||||
};
|
||||
|
||||
FontNewLibParams fontLib;
|
||||
|
||||
@ -209,17 +209,6 @@ int sceFontClose(u32 fontHandle)
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int sceFontGetNumFontList(u32 libHandle, u32 errorCodePtr)
|
||||
{
|
||||
ERROR_LOG(HLE, "sceFontGetNumFontList %x, %x", libHandle, errorCodePtr);
|
||||
if (Memory::IsValidAddress(errorCodePtr))
|
||||
{
|
||||
Memory::Write_U32(0, errorCodePtr);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sceFontFindOptimumFont(u32 libHandlePtr, u32 fontStylePtr, u32 errorCodePtr)
|
||||
{
|
||||
ERROR_LOG(HLE, "sceFontFindOptimumFont %x, %x, %x", libHandlePtr, fontStylePtr, errorCodePtr);
|
||||
@ -273,11 +262,11 @@ int sceFontGetFontInfo(u32 fontHandle, u32 fontInfoPtr)
|
||||
fi.fontStyle.fontCountry= 1;
|
||||
fi.fontStyle.fontExpire= 1;
|
||||
fi.fontStyle.fontFamily= 1;
|
||||
//fi.fontStyle.fontFileName="asd";
|
||||
strcpy(fi.fontStyle.fontFileName, "asd");
|
||||
fi.fontStyle.fontH=32;
|
||||
fi.fontStyle.fontHRes=32;
|
||||
fi.fontStyle.fontLanguage=1;
|
||||
// fi.fontStyle.fontName="ppsspp";
|
||||
strcpy(fi.fontStyle.fontName, "ppsspp");
|
||||
fi.fontStyle.fontRegion=9;
|
||||
fi.fontStyle.fontV=32;
|
||||
fi.fontStyle.fontVRes=32;
|
||||
@ -290,7 +279,7 @@ int sceFontGetFontInfo(u32 fontHandle, u32 fontInfoPtr)
|
||||
|
||||
int sceFontGetFontInfoByIndexNumber(u32 libHandle, u32 fontInfoPtr, u32 unknown, u32 fontIndex)
|
||||
{
|
||||
ERROR_LOG(HLE, "sceFontGetFontInfoByIndexNumber %x, %x, %x, %x", libHandle, fontInfoPtr, unknown, fontIndex);
|
||||
ERROR_LOG(HLE, "HACK sceFontGetFontInfoByIndexNumber %x, %x, %x, %x", libHandle, fontInfoPtr, unknown, fontIndex);
|
||||
// clearly wrong..
|
||||
return sceFontGetFontInfo(libHandle, fontInfoPtr);
|
||||
|
||||
@ -298,13 +287,13 @@ int sceFontGetFontInfoByIndexNumber(u32 libHandle, u32 fontInfoPtr, u32 unknown,
|
||||
|
||||
int sceFontGetCharInfo(u32 fontHandle, u32 charCode, u32 charInfoPtr)
|
||||
{
|
||||
ERROR_LOG(HLE, "sceFontGetCharInfo %x, %x, %x", fontHandle, charCode, charInfoPtr);
|
||||
ERROR_LOG(HLE, "HACK sceFontGetCharInfo %x, %x, %x", fontHandle, charCode, charInfoPtr);
|
||||
if (Memory::IsValidAddress(charInfoPtr))
|
||||
{
|
||||
CharInfo pspCharInfo;
|
||||
memset(&pspCharInfo, 0, sizeof(pspCharInfo));
|
||||
pspCharInfo.bitmapWidth = 32;
|
||||
pspCharInfo.bitmapHeight = 32;
|
||||
pspCharInfo.bitmapWidth = 16;
|
||||
pspCharInfo.bitmapHeight = 16;
|
||||
|
||||
pspCharInfo.spf26Width = pspCharInfo.bitmapWidth << 6;
|
||||
pspCharInfo.spf26Height = pspCharInfo.bitmapHeight << 6;
|
||||
@ -316,15 +305,18 @@ int sceFontGetCharInfo(u32 fontHandle, u32 charCode, u32 charInfoPtr)
|
||||
}
|
||||
|
||||
int sceFontGetCharImageRect(u32 fontHandle, u32 charCode, u32 charRectPtr)
|
||||
// finish this
|
||||
{
|
||||
ERROR_LOG(HLE, "sceFontGetCharImageRect %x, %x (%c)", fontHandle, charRectPtr, charCode);
|
||||
ERROR_LOG(HLE, "HACK sceFontGetCharImageRect %x, %x (%c)", fontHandle, charRectPtr, charCode);
|
||||
if (Memory::IsValidAddress(charRectPtr)) {
|
||||
Memory::Write_U16(16, charRectPtr); // character bitmap width in pixels
|
||||
Memory::Write_U16(16, charRectPtr + 2); // character bitmap height in pixels
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sceFontGetCharGlyphImage(u32 fontHandle, u32 charCode, u32 glyphImagePtr)
|
||||
{
|
||||
ERROR_LOG(HLE, "sceFontGetCharGlyphImage %x, %x, %x (%c)", fontHandle, charCode, glyphImagePtr, charCode);
|
||||
ERROR_LOG(HLE, "HACK sceFontGetCharGlyphImage %x, %x, %x (%c)", fontHandle, charCode, glyphImagePtr, charCode);
|
||||
|
||||
int pixelFormat = Memory::Read_U32(glyphImagePtr);
|
||||
int xPos64 = Memory::Read_U32(glyphImagePtr+4);
|
||||
@ -332,13 +324,17 @@ int sceFontGetCharGlyphImage(u32 fontHandle, u32 charCode, u32 glyphImagePtr)
|
||||
int bufWidth = Memory::Read_U16(glyphImagePtr+12);
|
||||
int bufHeight = Memory::Read_U16(glyphImagePtr+14);
|
||||
int bytesPerLine = Memory::Read_U16(glyphImagePtr+16);
|
||||
int buffer =Memory::Read_U32(glyphImagePtr+20);
|
||||
int buffer = Memory::Read_U32(glyphImagePtr+20);
|
||||
|
||||
for (int y= 0; y < bufHeight; y++)
|
||||
// Small chessboard. Does not respect pixelformat currently...
|
||||
|
||||
// Actually should be really easy to substitute in a proper font here...
|
||||
// could even grab pixel data from the PPGe one.
|
||||
for (int y = 0; y < bufHeight; y++)
|
||||
{
|
||||
for (int x=0; x<bytesPerLine; x++)
|
||||
for (int x = 0; x < bytesPerLine; x++)
|
||||
{
|
||||
Memory::Write_U8(0xff, buffer + (x * y));
|
||||
Memory::Write_U8((((x >> 1) ^ (y >> 1)) & 1) ? 0xff : 0x00, buffer + (y * bytesPerLine + x));
|
||||
}
|
||||
}
|
||||
|
||||
@ -360,7 +356,7 @@ int sceFontSetAltCharacterCode(u32 libHandle, u32 charCode)
|
||||
|
||||
int sceFontFlush(u32 fontHandle)
|
||||
{
|
||||
ERROR_LOG(HLE, "sceFontFlush %x", fontHandle);
|
||||
DEBUG_LOG(HLE, "sceFontFlush(%i)", fontHandle);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -376,24 +372,48 @@ int sceFontGetFontList(u32 fontLibHandle, u32 fontStylePtr, u32 numFonts)
|
||||
style.fontHRes = 20 / 64.f;
|
||||
style.fontVRes = 20 / 64.f;
|
||||
style.fontStyle = 1;
|
||||
//style.fontFamily
|
||||
|
||||
for (u32 i = 0; i < numFonts; i++)
|
||||
{
|
||||
Memory::WriteStruct(fontStylePtr+ (sizeof(style)), &style);
|
||||
Memory::WriteStruct(fontStylePtr + (sizeof(style)) * i, &style);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sceFontGetNumFontList(u32 libHandle, u32 errorCodePtr)
|
||||
{
|
||||
ERROR_LOG(HLE, "UNIMPL sceFontGetNumFontList %x, %x", libHandle, errorCodePtr);
|
||||
if (Memory::IsValidAddress(errorCodePtr))
|
||||
{
|
||||
Memory::Write_U32(0, errorCodePtr);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
int sceFontSetResolution(u32 fontLibHandle, float hRes, float vRes)
|
||||
{
|
||||
ERROR_LOG(HLE, "UNIMPL sceFontSetResolution(%i, %f, %f)", fontLibHandle, hRes, vRes);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int sceFontCalcMemorySize() {
|
||||
ERROR_LOG(HLE, "UNIMPL sceFontCalcMemorySize()");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const HLEFunction sceLibFont[] =
|
||||
{
|
||||
{0x67f17ed7, WrapU_UU<sceFontNewLib>, "sceFontNewLib"},
|
||||
{0x574b6fbc, WrapI_U<sceFontDoneLib>, "sceFontDoneLib"},
|
||||
{0x48293280, 0, "sceFontSetResolution"},
|
||||
{0x48293280, WrapI_UFF<sceFontSetResolution>, "sceFontSetResolution"},
|
||||
{0x27f6e642, WrapI_UU<sceFontGetNumFontList>, "sceFontGetNumFontList"},
|
||||
{0xbc75d85b, WrapI_UUU<sceFontGetFontList>, "sceFontGetFontList"},
|
||||
{0x099ef33c, WrapI_UUU<sceFontFindOptimumFont>, "sceFontFindOptimumFont"},
|
||||
{0x681e61a7, WrapI_UUU<sceFontFindFont>, "sceFontFindFont"},
|
||||
{0x2f67356a, 0, "sceFontCalcMemorySize"},
|
||||
{0x2f67356a, WrapI_V<sceFontCalcMemorySize>, "sceFontCalcMemorySize"},
|
||||
{0x5333322d, WrapI_UUUU<sceFontGetFontInfoByIndexNumber>, "sceFontGetFontInfoByIndexNumber"},
|
||||
{0xa834319d, WrapU_UUUU<sceFontOpen>, "sceFontOpen"},
|
||||
{0x57fcb733, WrapU_UUUU<sceFontOpenUserFile>, "sceFontOpenUserFile"},
|
||||
|
@ -112,8 +112,13 @@ void __GeShutdown()
|
||||
|
||||
}
|
||||
|
||||
void __GeTriggerInterrupt(int listid, u32 pc, u32 subIntrBase, u16 subIntrToken)
|
||||
void __GeTriggerInterrupt(int listid, u32 pc, int subIntrBase, u16 subIntrToken)
|
||||
{
|
||||
// ClaDun X2 does not expect sceGeListEnqueue to reschedule (which it does not on the PSP.)
|
||||
// Once PPSSPP's GPU is multithreaded, we can remove this check.
|
||||
if (subIntrBase < 0)
|
||||
return;
|
||||
|
||||
GeInterruptData intrdata;
|
||||
intrdata.listid = listid;
|
||||
intrdata.pc = pc;
|
||||
|
@ -39,7 +39,7 @@ void Register_sceGe_user();
|
||||
void __GeInit();
|
||||
void __GeDoState(PointerWrap &p);
|
||||
void __GeShutdown();
|
||||
void __GeTriggerInterrupt(int listid, u32 pc, u32 subIntrBase, u16 subIntrToken);
|
||||
void __GeTriggerInterrupt(int listid, u32 pc, int subIntrBase, u16 subIntrToken);
|
||||
bool __GeHasPendingInterrupt();
|
||||
|
||||
|
||||
|
@ -27,6 +27,13 @@
|
||||
#include "../HLE/HLE.h"
|
||||
#include "../System.h"
|
||||
|
||||
#ifdef __APPLE__
|
||||
using std::isnan;
|
||||
#endif
|
||||
#ifdef _MSC_VER
|
||||
#define isnan _isnan
|
||||
#endif
|
||||
|
||||
#define R(i) (currentMIPS->r[i])
|
||||
#define RF(i) (*(float*)(&(currentMIPS->r[i])))
|
||||
#define F(i) (currentMIPS->f[i])
|
||||
@ -832,33 +839,45 @@ namespace MIPSInt
|
||||
switch (op & 0xf)
|
||||
{
|
||||
case 0: //f
|
||||
case 1: //un
|
||||
case 8: //sf
|
||||
case 9: //ngle
|
||||
cond = false;
|
||||
break;
|
||||
|
||||
case 1: //un
|
||||
case 9: //ngle
|
||||
cond = isnan(F(fs)) || isnan(F(ft));
|
||||
break;
|
||||
|
||||
case 2: //eq
|
||||
case 10: //seq
|
||||
case 3: //ueq
|
||||
case 11: //ngl
|
||||
cond = (F(fs) == F(ft));
|
||||
break;
|
||||
|
||||
case 3: //ueq
|
||||
case 11: //ngl
|
||||
cond = (F(fs) == F(ft)) || isnan(F(fs)) || isnan(F(ft));
|
||||
break;
|
||||
|
||||
case 4: //olt
|
||||
case 5: //ult
|
||||
case 12: //lt
|
||||
case 13: //nge
|
||||
cond = (F(fs) < F(ft));
|
||||
break;
|
||||
|
||||
case 5: //ult
|
||||
case 13: //nge
|
||||
cond = (F(fs) < F(ft)) || isnan(F(fs)) || isnan(F(ft));
|
||||
break;
|
||||
|
||||
case 6: //ole
|
||||
case 7: //ule
|
||||
case 14: //le
|
||||
case 15: //ngt
|
||||
cond = (F(fs) <= F(ft));
|
||||
break;
|
||||
|
||||
case 7: //ule
|
||||
case 15: //ngt
|
||||
cond = (F(fs) <= F(ft)) || isnan(F(fs)) || isnan(F(ft));
|
||||
break;
|
||||
|
||||
default:
|
||||
_dbg_assert_msg_(CPU,0,"Trying to interpret FPUComp instruction that can't be interpreted");
|
||||
cond = false;
|
||||
|
@ -46,24 +46,27 @@ void Jit::CompFPTriArith(u32 op, void (XEmitter::*arith)(X64Reg reg, OpArg), boo
|
||||
int ft = _FT;
|
||||
int fs = _FS;
|
||||
int fd = _FD;
|
||||
fpr.SpillLock(ft, fs, fd);
|
||||
fpr.SpillLock(fd, fs, ft);
|
||||
|
||||
if (false && fs == fd)
|
||||
if (fs == fd)
|
||||
{
|
||||
fpr.BindToRegister(fd, true, true);
|
||||
(this->*arith)(fpr.RX(fd), fpr.R(ft));
|
||||
}
|
||||
else
|
||||
else if (ft == fd && !orderMatters)
|
||||
{
|
||||
/*
|
||||
fpr.BindToRegister(fd, true, true);
|
||||
if (fd != fs)
|
||||
MOVSS(fpr.RX(fd), fpr.R(fs));
|
||||
(this->*arith)(fpr.RX(fd), fpr.R(ft));*/
|
||||
(this->*arith)(fpr.RX(fd), fpr.R(fs));
|
||||
}
|
||||
else if (ft != fd && fs != fd && ft != fs) {
|
||||
fpr.BindToRegister(fd, false, true);
|
||||
MOVSS(fpr.RX(fd), fpr.R(fs));
|
||||
(this->*arith)(fpr.RX(fd), fpr.R(ft));
|
||||
}
|
||||
else {
|
||||
fpr.BindToRegister(fd, true, true);
|
||||
MOVSS(XMM0, fpr.R(fs));
|
||||
MOVSS(XMM1, fpr.R(ft));
|
||||
fpr.BindToRegister(fd, true, true);
|
||||
(this->*arith)(XMM0, R(XMM1));
|
||||
(this->*arith)(XMM0, fpr.R(ft));
|
||||
MOVSS(fpr.RX(fd), R(XMM0));
|
||||
}
|
||||
fpr.ReleaseSpillLocks();
|
||||
@ -148,57 +151,91 @@ static const u64 GC_ALIGNED16(ssOneBits[2]) = {0x0000000100000001ULL, 0x00000001
|
||||
static const u64 GC_ALIGNED16(ssSignBits2[2]) = {0x8000000080000000ULL, 0x8000000080000000ULL};
|
||||
static const u64 GC_ALIGNED16(ssNoSignMask[2]) = {0x7FFFFFFF7FFFFFFFULL, 0x7FFFFFFF7FFFFFFFULL};
|
||||
|
||||
void Jit::Comp_FPUComp(u32 op) {
|
||||
// TODO: Doesn't work yet.
|
||||
DISABLE;
|
||||
static u32 ssCompareTemp;
|
||||
|
||||
enum
|
||||
{
|
||||
CMPEQSS = 0,
|
||||
CMPLTSS = 1,
|
||||
CMPLESS = 2,
|
||||
CMPUNORDSS = 3,
|
||||
CMPNEQSS = 4,
|
||||
CMPNLTSS = 5,
|
||||
CMPNLESS = 6,
|
||||
CMPORDSS = 7,
|
||||
};
|
||||
|
||||
void Jit::CompFPComp(int lhs, int rhs, u8 compare, bool allowNaN)
|
||||
{
|
||||
CONDITIONAL_DISABLE;
|
||||
|
||||
MOVSS(XMM0, fpr.R(lhs));
|
||||
CMPSS(XMM0, fpr.R(rhs), compare);
|
||||
MOVSS(M((void *) ¤tMIPS->fpcond), XMM0);
|
||||
|
||||
// This means that NaN also means true, e.g. !<> or !>, etc.
|
||||
if (allowNaN)
|
||||
{
|
||||
MOVSS(XMM0, fpr.R(lhs));
|
||||
CMPSS(XMM0, fpr.R(rhs), CMPUNORDSS);
|
||||
MOVSS(M((void *) &ssCompareTemp), XMM0);
|
||||
|
||||
MOV(32, R(EAX), M((void *) &ssCompareTemp));
|
||||
OR(32, M((void *) ¤tMIPS->fpcond), R(EAX));
|
||||
}
|
||||
}
|
||||
|
||||
void Jit::Comp_FPUComp(u32 op)
|
||||
{
|
||||
CONDITIONAL_DISABLE;
|
||||
|
||||
// TODO: Compile this more efficiently by combining with the following branch, which usually is there.
|
||||
// In that case, probably want to use COMISS rather than CMPSS.
|
||||
int fs = _FS;
|
||||
int ft = _FT;
|
||||
|
||||
switch (op & 0xf)
|
||||
{
|
||||
case 0: //f
|
||||
case 1: //un
|
||||
case 8: //sf
|
||||
case 9: //ngle
|
||||
// cond = false;
|
||||
MOV(32, M(¤tMIPS->fpcond), Imm32(0));
|
||||
MOV(32, M((void *) ¤tMIPS->fpcond), Imm32(0));
|
||||
break;
|
||||
|
||||
case 2: //eq // fs == ft
|
||||
case 1: //un
|
||||
case 9: //ngle
|
||||
CompFPComp(fs, ft, CMPUNORDSS);
|
||||
break;
|
||||
|
||||
case 2: //eq
|
||||
case 10: //seq
|
||||
CompFPComp(fs, ft, CMPEQSS);
|
||||
break;
|
||||
|
||||
case 3: //ueq
|
||||
case 11: //ngl
|
||||
fpr.BindToRegister(fs, true, false);
|
||||
CMPSS(fpr.RX(fs), fpr.R(ft), 0);
|
||||
ANDPS(fpr.RX(fs), M((void *)&ssOneBits));
|
||||
MOVSS(M(¤tMIPS->fpcond), fpr.RX(fs));
|
||||
CompFPComp(fs, ft, CMPEQSS, true);
|
||||
break;
|
||||
|
||||
case 4: //olt // fs < ft
|
||||
case 5: //ult
|
||||
case 4: //olt
|
||||
case 12: //lt
|
||||
case 13: //nge
|
||||
fpr.BindToRegister(fs, true, false);
|
||||
CMPSS(fpr.RX(fs), fpr.R(ft), 1);
|
||||
ANDPS(fpr.RX(fs), M((void *)&ssOneBits));
|
||||
MOVSS(M(¤tMIPS->fpcond), fpr.RX(fs));
|
||||
CompFPComp(fs, ft, CMPLTSS);
|
||||
break;
|
||||
|
||||
case 6: //ole // fs >= ft (ft < fs)
|
||||
case 7: //ule
|
||||
case 5: //ult
|
||||
case 13: //nge
|
||||
CompFPComp(ft, fs, CMPNLESS);
|
||||
break;
|
||||
|
||||
case 6: //ole
|
||||
case 14: //le
|
||||
CompFPComp(fs, ft, CMPLESS);
|
||||
break;
|
||||
|
||||
case 7: //ule
|
||||
case 15: //ngt
|
||||
fpr.BindToRegister(ft, true, false);
|
||||
CMPSS(fpr.RX(ft), fpr.R(fs), 1);
|
||||
ANDPS(fpr.RX(ft), M((void *)&ssOneBits));
|
||||
MOVSS(M(¤tMIPS->fpcond), fpr.RX(ft));
|
||||
CompFPComp(ft, fs, CMPNLTSS);
|
||||
break;
|
||||
|
||||
default:
|
||||
_dbg_assert_msg_(CPU,0,"Trying to interpret FPUComp instruction that can't be interpreted");
|
||||
break;
|
||||
DISABLE;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -183,6 +183,7 @@ private:
|
||||
void CompITypeMemWrite(u32 op, u32 bits, void *safeFunc);
|
||||
|
||||
void CompFPTriArith(u32 op, void (XEmitter::*arith)(X64Reg reg, OpArg), bool orderMatters);
|
||||
void CompFPComp(int lhs, int rhs, u8 compare, bool allowNaN = false);
|
||||
|
||||
JitBlockCache blocks;
|
||||
JitOptions jo;
|
||||
|
@ -605,11 +605,7 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) {
|
||||
break;
|
||||
|
||||
case GE_CMD_FRAMEBUFPTR:
|
||||
break;
|
||||
|
||||
case GE_CMD_FRAMEBUFWIDTH:
|
||||
break;
|
||||
|
||||
case GE_CMD_FRAMEBUFPIXFORMAT:
|
||||
break;
|
||||
|
||||
@ -636,21 +632,13 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) {
|
||||
break;
|
||||
|
||||
case GE_CMD_CLUTADDR:
|
||||
gstate_c.textureChanged = true;
|
||||
break;
|
||||
|
||||
case GE_CMD_CLUTADDRUPPER:
|
||||
gstate_c.textureChanged = true;
|
||||
break;
|
||||
|
||||
case GE_CMD_LOADCLUT:
|
||||
gstate_c.textureChanged = true;
|
||||
// This could be used to "dirty" textures with clut.
|
||||
break;
|
||||
|
||||
case GE_CMD_TEXMAPMODE:
|
||||
break;
|
||||
|
||||
case GE_CMD_TEXSHADELS:
|
||||
break;
|
||||
|
||||
@ -698,6 +686,8 @@ void GLES_GPU::ExecuteOp(u32 op, u32 diff) {
|
||||
|
||||
case GE_CMD_AMBIENTCOLOR:
|
||||
case GE_CMD_AMBIENTALPHA:
|
||||
if (diff)
|
||||
shaderManager_->DirtyUniform(DIRTY_AMBIENT);
|
||||
break;
|
||||
|
||||
case GE_CMD_MATERIALAMBIENT:
|
||||
@ -1065,6 +1055,7 @@ void GLES_GPU::DoState(PointerWrap &p) {
|
||||
GPUCommon::DoState(p);
|
||||
|
||||
textureCache_.Clear(true);
|
||||
transformDraw_.ClearTrackedVertexArrays();
|
||||
|
||||
gstate_c.textureChanged = true;
|
||||
framebufferManager_.DestroyAllFBOs();
|
||||
|
@ -183,13 +183,13 @@ void GenerateFragmentShader(char *buffer)
|
||||
|
||||
// Disabled for now until we actually find a need for it.
|
||||
/*
|
||||
if (gstate.colorTestEnable & 1) {
|
||||
if (enableColorTest) {
|
||||
// TODO: There are some colortestmasks we could handle.
|
||||
int colorTestFunc = gstate.colortest & 3;
|
||||
const char *colorTestFuncs[] = { "#", "#", " == ", " != " }; // never/always don't make sense}
|
||||
int colorTestMask = gstate.colormask;
|
||||
if (colorTestFuncs[colorTestFunc][0] != '#')
|
||||
WRITE(p, "if (!(v.rgb %s u_alphacolorref.rgb)) discard;", colorTestFuncs[colorTestFunc]);
|
||||
WRITE(p, "if (!(v.rgb %s u_alphacolorref.rgb)) discard;\n", colorTestFuncs[colorTestFunc]);
|
||||
}*/
|
||||
|
||||
if (enableFog) {
|
||||
|
@ -64,6 +64,41 @@ static bool MaskedEqual(u32 addr1, u32 addr2) {
|
||||
return (addr1 & 0x3FFFFFF) == (addr2 & 0x3FFFFFF);
|
||||
}
|
||||
|
||||
static void CenterRect(float *x, float *y, float *w, float *h,
|
||||
float origW, float origH, float frameW, float frameH)
|
||||
{
|
||||
if (g_Config.bStretchToDisplay)
|
||||
{
|
||||
*x = 0;
|
||||
*y = 0;
|
||||
*w = frameW;
|
||||
*h = frameH;
|
||||
return;
|
||||
}
|
||||
|
||||
float origRatio = origW/origH;
|
||||
float frameRatio = frameW/frameH;
|
||||
|
||||
if (origRatio > frameRatio)
|
||||
{
|
||||
// Image is wider than frame. Center vertically.
|
||||
float scale = origW / frameW;
|
||||
*x = 0.0f;
|
||||
*w = frameW;
|
||||
*h = frameW / origRatio;
|
||||
*y = (frameH - *h) / 2.0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Image is taller than frame. Center horizontally.
|
||||
float scale = origH / frameH;
|
||||
*y = 0.0f;
|
||||
*h = frameH;
|
||||
*w = frameH * origRatio;
|
||||
*x = (frameW - *w) / 2.0f;
|
||||
}
|
||||
}
|
||||
|
||||
FramebufferManager::FramebufferManager() :
|
||||
displayFramebufPtr_(0),
|
||||
prevDisplayFramebuf_(0),
|
||||
@ -170,20 +205,23 @@ void FramebufferManager::DrawPixels(const u8 *framebuf, int pixelFormat, int lin
|
||||
|
||||
glBindTexture(GL_TEXTURE_2D,backbufTex);
|
||||
glTexSubImage2D(GL_TEXTURE_2D,0,0,0,480,272, GL_RGBA, GL_UNSIGNED_BYTE, convBuf);
|
||||
DrawActiveTexture(480, 272);
|
||||
|
||||
float x, y, w, h;
|
||||
CenterRect(&x, &y, &w, &h, 480.0f, 272.0f, (float)PSP_CoreParameter().pixelWidth, (float)PSP_CoreParameter().pixelHeight);
|
||||
DrawActiveTexture(x, y, w, h);
|
||||
}
|
||||
|
||||
void FramebufferManager::DrawActiveTexture(float w, float h, bool flip) {
|
||||
void FramebufferManager::DrawActiveTexture(float x, float y, float w, float h, bool flip) {
|
||||
float u2 = 1.0f;
|
||||
float v1 = flip ? 1.0f : 0.0f;
|
||||
float v2 = flip ? 0.0f : 1.0f;
|
||||
|
||||
const float pos[12] = {0,0,0, w,0,0, w,h,0, 0,h,0};
|
||||
const float pos[12] = {x,y,0, x+w,y,0, x+w,y+h,0, x,y+h,0};
|
||||
const float texCoords[8] = {0, v1, u2, v1, u2, v2, 0, v2};
|
||||
|
||||
glsl_bind(draw2dprogram);
|
||||
Matrix4x4 ortho;
|
||||
ortho.setOrtho(0, 480, 272, 0, -1, 1);
|
||||
ortho.setOrtho(0, (float)PSP_CoreParameter().pixelWidth, (float)PSP_CoreParameter().pixelHeight, 0, -1, 1);
|
||||
glUniformMatrix4fv(draw2dprogram->u_viewproj, 1, GL_FALSE, ortho.getReadPtr());
|
||||
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
||||
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
|
||||
@ -369,8 +407,14 @@ void FramebufferManager::CopyDisplayToOutput() {
|
||||
|
||||
fbo_bind_color_as_texture(vfb->fbo, 0);
|
||||
|
||||
if (resized_) {
|
||||
glClearColor(0,0,0,1);
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||
}
|
||||
// These are in the output display coordinates
|
||||
DrawActiveTexture(480, 272, true);
|
||||
float x, y, w, h;
|
||||
CenterRect(&x, &y, &w, &h, 480.0f, 272.0f, (float)PSP_CoreParameter().pixelWidth, (float)PSP_CoreParameter().pixelHeight);
|
||||
DrawActiveTexture(x, y, w, h, true);
|
||||
|
||||
if (resized_) {
|
||||
DestroyAllFBOs();
|
||||
|
@ -66,7 +66,7 @@ public:
|
||||
};
|
||||
|
||||
void DrawPixels(const u8 *framebuf, int pixelFormat, int linesize);
|
||||
void DrawActiveTexture(float w, float h, bool flip = false);
|
||||
void DrawActiveTexture(float x, float y, float w, float h, bool flip = false);
|
||||
|
||||
void DestroyAllFBOs();
|
||||
void DecimateFBOs();
|
||||
|
@ -249,7 +249,7 @@ void LinkedShader::updateUniforms() {
|
||||
SetColorUniform3(u_texenv, gstate.texenvcolor);
|
||||
}
|
||||
if (u_alphacolorref != -1 && (dirtyUniforms & DIRTY_ALPHACOLORREF)) {
|
||||
SetColorUniform3Alpha(u_alphacolorref, gstate.colortest, (gstate.alphatest >> 8) & 0xFF);
|
||||
SetColorUniform3Alpha(u_alphacolorref, gstate.colorref, (gstate.alphatest >> 8) & 0xFF);
|
||||
}
|
||||
if (u_fogcolor != -1 && (dirtyUniforms & DIRTY_FOGCOLOR)) {
|
||||
SetColorUniform3(u_fogcolor, gstate.fogcolor);
|
||||
@ -351,6 +351,7 @@ void ShaderManager::Clear() {
|
||||
fsCache.clear();
|
||||
vsCache.clear();
|
||||
globalDirty = 0xFFFFFFFF;
|
||||
DirtyShader();
|
||||
}
|
||||
|
||||
void ShaderManager::ClearCache(bool deleteThem)
|
||||
|
@ -29,6 +29,7 @@
|
||||
float maxAnisotropyLevel ;
|
||||
|
||||
TextureCache::TextureCache() {
|
||||
lastBoundTexture = -1;
|
||||
// TODO: Switch to aligned allocations for alignment. AllocateMemoryPages would do the trick.
|
||||
// This is 5MB of temporary storage. Might be possible to shrink it.
|
||||
tmpTexBuf32 = new u32[1024 * 512]; // 2MB
|
||||
@ -123,7 +124,7 @@ void TextureCache::NotifyFramebuffer(u32 address, FBO *fbo) {
|
||||
// Must be in VRAM so | 0x04000000 it is.
|
||||
TexCacheEntry *entry = GetEntryAt(address | 0x04000000);
|
||||
if (entry) {
|
||||
// INFO_LOG(HLE, "Render to texture detected at %08x!", address);
|
||||
DEBUG_LOG(HLE, "Render to texture detected at %08x!", address);
|
||||
if (!entry->fbo)
|
||||
entry->fbo = fbo;
|
||||
// TODO: Delete the original non-fbo texture too.
|
||||
@ -442,24 +443,6 @@ void TextureCache::UpdateSamplingParams(TexCacheEntry &entry, bool force) {
|
||||
}
|
||||
}
|
||||
|
||||
// Todo: Make versions of these that do two pixels at a time within a 32-bit register.
|
||||
|
||||
// Convert from PSP bit order to GLES bit order
|
||||
static inline u16 convert565(u16 c) {
|
||||
return (c >> 11) | (c & 0x07E0) | (c << 11);
|
||||
}
|
||||
|
||||
// Convert from PSP bit order to GLES bit order
|
||||
static inline u16 convert4444(u16 c) {
|
||||
return (c >> 12) | ((c >> 4) & 0xF0) | ((c << 4) & 0xF00) | (c << 12);
|
||||
}
|
||||
|
||||
// Convert from PSP bit order to GLES bit order
|
||||
static inline u16 convert5551(u16 c) {
|
||||
return ((c & 0x8000) >> 15) | (c << 1);
|
||||
}
|
||||
|
||||
|
||||
// All these DXT structs are in the reverse order, as compared to PC.
|
||||
// On PC, alpha comes before color, and interpolants are before the tile data.
|
||||
|
||||
@ -575,33 +558,40 @@ static void decodeDXT5Block(u32 *dst, const DXT5Block *src, int pitch) {
|
||||
}
|
||||
|
||||
static void convertColors(u8 *finalBuf, GLuint dstFmt, int numPixels) {
|
||||
// TODO: All these can be massively sped up with SSE, or even
|
||||
// somewhat sped up using "manual simd" in 32 or 64-bit gprs.
|
||||
// TODO: All these can be further sped up with SSE or NEON.
|
||||
switch (dstFmt) {
|
||||
case GL_UNSIGNED_SHORT_4_4_4_4:
|
||||
{
|
||||
u16 *p = (u16 *)finalBuf;
|
||||
for (int i = 0; i < numPixels; i++) {
|
||||
u16 c = p[i];
|
||||
p[i] = (c >> 12) | ((c >> 4) & 0xF0) | ((c << 4) & 0xF00) | (c << 12);
|
||||
u32 *p = (u32 *)finalBuf;
|
||||
for (int i = 0; i < (numPixels + 1) / 2; i++) {
|
||||
u32 c = p[i];
|
||||
p[i] = ((c >> 12) & 0x000F000F) |
|
||||
((c >> 4) & 0x00F000F0) |
|
||||
((c << 4) & 0x0F000F00) |
|
||||
((c << 12) & 0xF000F000);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GL_UNSIGNED_SHORT_5_5_5_1:
|
||||
{
|
||||
u16 *p = (u16 *)finalBuf;
|
||||
for (int i = 0; i < numPixels; i++) {
|
||||
u16 c = p[i];
|
||||
p[i] = ((c & 0x8000) >> 15) | ((c >> 9) & 0x3E) | ((c << 1) & 0x7C0) | ((c << 11) & 0xF800);
|
||||
u32 *p = (u32 *)finalBuf;
|
||||
for (int i = 0; i < (numPixels + 1) / 2; i++) {
|
||||
u32 c = p[i];
|
||||
p[i] = ((c >> 15) & 0x00010001) |
|
||||
((c >> 9) & 0x003E003E) |
|
||||
((c << 1) & 0x07C007C0) |
|
||||
((c << 11) & 0xF800F800);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GL_UNSIGNED_SHORT_5_6_5:
|
||||
{
|
||||
u16 *p = (u16 *)finalBuf;
|
||||
for (int i = 0; i < numPixels; i++) {
|
||||
u16 c = p[i];
|
||||
p[i] = (c >> 11) | (c & 0x07E0) | (c << 11);
|
||||
u32 *p = (u32 *)finalBuf;
|
||||
for (int i = 0; i < (numPixels + 1) / 2; i++) {
|
||||
u32 c = p[i];
|
||||
p[i] = ((c >> 11) & 0x001F001F) |
|
||||
(c & 0x07E007E0) |
|
||||
((c << 11) & 0xF800F800);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@ -613,8 +603,6 @@ static void convertColors(u8 *finalBuf, GLuint dstFmt, int numPixels) {
|
||||
}
|
||||
}
|
||||
|
||||
int lastBoundTexture = -1;
|
||||
|
||||
void TextureCache::StartFrame() {
|
||||
lastBoundTexture = -1;
|
||||
Decimate();
|
||||
@ -653,25 +641,17 @@ static inline u32 MiniHash(const u32 *ptr) {
|
||||
}
|
||||
|
||||
static inline u32 QuickTexHash(u32 addr, int bufw, int w, int h, u32 format) {
|
||||
int pixToBytes = (bitsPerPixel[format < 11 ? format : 0] + 7) / 8;
|
||||
int w32 = (w * pixToBytes + 3) / 4;
|
||||
int pad32 = ((bufw * pixToBytes + 3) / 4) - w32;
|
||||
|
||||
u32 sizeInRAM = (bitsPerPixel[format < 11 ? format : 0] * bufw * h / 2) / 8;
|
||||
const u32 *checkp = (const u32 *) Memory::GetPointer(addr);
|
||||
u32 check = 0;
|
||||
for (int y = 0; y < h; ++y) {
|
||||
for (int x = 0; x < w32; ++x) {
|
||||
check += *checkp++;
|
||||
}
|
||||
checkp += pad32;
|
||||
}
|
||||
for (u32 i = 0; i < (sizeInRAM * 2) / 4; ++i)
|
||||
check += *checkp++;
|
||||
|
||||
return check;
|
||||
}
|
||||
|
||||
void TextureCache::SetTexture() {
|
||||
u32 texaddr = (gstate.texaddr[0] & 0xFFFFF0) | ((gstate.texbufwidth[0]<<8) & 0x0F000000);
|
||||
|
||||
if (!Memory::IsValidAddress(texaddr)) {
|
||||
// Bind a null texture and return.
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
@ -686,32 +666,19 @@ void TextureCache::SetTexture() {
|
||||
bool hasClut = formatUsesClut[format];
|
||||
|
||||
const u8 *texptr = Memory::GetPointer(texaddr);
|
||||
|
||||
u32 clutformat = gstate.clutformat & 3;
|
||||
u32 clutaddr = GetClutAddr(clutformat == GE_CMODE_32BIT_ABGR8888 ? 4 : 2);
|
||||
|
||||
u64 cachekey = texaddr;
|
||||
if (formatUsesClut[format])
|
||||
|
||||
u32 clutformat, clutaddr;
|
||||
if (hasClut) {
|
||||
clutformat = gstate.clutformat & 3;
|
||||
clutaddr = GetClutAddr(clutformat == GE_CMODE_32BIT_ABGR8888 ? 4 : 2);
|
||||
cachekey |= (u64)clutaddr << 32;
|
||||
}
|
||||
|
||||
int maxLevel = ((gstate.texmode >> 16) & 0x7);
|
||||
|
||||
// Adjust maxLevel to actually present levels..
|
||||
for (int i = 0; i <= maxLevel; i++) {
|
||||
// If encountering levels pointing to nothing, adjust max level.
|
||||
u32 levelTexaddr = (gstate.texaddr[i] & 0xFFFFF0) | ((gstate.texbufwidth[i] << 8) & 0x0F000000);
|
||||
if (!Memory::IsValidAddress(levelTexaddr)) {
|
||||
maxLevel = i - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
u32 texhash = MiniHash((const u32 *)Memory::GetPointer(texaddr));
|
||||
|
||||
int w = 1 << (gstate.texsize[0] & 0xf);
|
||||
int h = 1 << ((gstate.texsize[0] >> 8) & 0xf);
|
||||
int bufw = gstate.texbufwidth[0] & 0x3ff;
|
||||
|
||||
TexCache::iterator iter = cache.find(cachekey);
|
||||
TexCacheEntry *entry = NULL;
|
||||
if (iter != cache.end()) {
|
||||
@ -737,17 +704,14 @@ void TextureCache::SetTexture() {
|
||||
bool rehash = entry->status == TexCacheEntry::STATUS_UNRELIABLE;
|
||||
|
||||
//TODO: Check more texture parameters, compute real texture hash
|
||||
if (dim != entry->dim || entry->hash != texhash || entry->format != format)
|
||||
match = false;
|
||||
|
||||
//TODO: Check more clut parameters, compute clut hash
|
||||
if (match && (format >= GE_TFMT_CLUT4 && format <= GE_TFMT_CLUT32) &&
|
||||
(entry->clutformat != clutformat ||
|
||||
if (dim != entry->dim ||
|
||||
entry->hash != texhash ||
|
||||
entry->format != format ||
|
||||
entry->maxLevel != maxLevel ||
|
||||
((format >= GE_TFMT_CLUT4 && format <= GE_TFMT_CLUT32) &&
|
||||
(entry->clutformat != clutformat ||
|
||||
entry->clutaddr != clutaddr ||
|
||||
entry->cluthash != Memory::Read_U32(entry->clutaddr)))
|
||||
match = false;
|
||||
|
||||
if (entry->maxLevel != maxLevel)
|
||||
entry->cluthash != Memory::Read_U32(entry->clutaddr))))
|
||||
match = false;
|
||||
|
||||
if (match) {
|
||||
@ -770,6 +734,9 @@ void TextureCache::SetTexture() {
|
||||
}
|
||||
|
||||
if (rehash && entry->status != TexCacheEntry::STATUS_RELIABLE) {
|
||||
int w = 1 << (gstate.texsize[0] & 0xf);
|
||||
int h = 1 << ((gstate.texsize[0] >> 8) & 0xf);
|
||||
int bufw = gstate.texbufwidth[0] & 0x3ff;
|
||||
u32 check = QuickTexHash(texaddr, bufw, w, h, format);
|
||||
if (check != entry->fullhash) {
|
||||
match = false;
|
||||
@ -794,6 +761,9 @@ void TextureCache::SetTexture() {
|
||||
return; //Done!
|
||||
} else {
|
||||
INFO_LOG(G3D, "Texture different or overwritten, reloading at %08x", texaddr);
|
||||
if (entry->texture == lastBoundTexture)
|
||||
lastBoundTexture = -1;
|
||||
|
||||
glDeleteTextures(1, &entry->texture);
|
||||
if (entry->status == TexCacheEntry::STATUS_RELIABLE) {
|
||||
entry->status = TexCacheEntry::STATUS_HASHING;
|
||||
@ -808,6 +778,11 @@ void TextureCache::SetTexture() {
|
||||
entry->status = TexCacheEntry::STATUS_HASHING;
|
||||
}
|
||||
|
||||
int w = 1 << (gstate.texsize[0] & 0xf);
|
||||
int h = 1 << ((gstate.texsize[0] >> 8) & 0xf);
|
||||
|
||||
int bufw = gstate.texbufwidth[0] & 0x3ff;
|
||||
|
||||
//we have to decode it
|
||||
entry->addr = texaddr;
|
||||
entry->hash = texhash;
|
||||
@ -817,6 +792,7 @@ void TextureCache::SetTexture() {
|
||||
entry->maxLevel = maxLevel;
|
||||
entry->lodBias = 0.0f;
|
||||
|
||||
|
||||
if (format >= GE_TFMT_CLUT4 && format <= GE_TFMT_CLUT32) {
|
||||
entry->clutformat = clutformat;
|
||||
entry->clutaddr = GetClutAddr(clutformat == GE_CMODE_32BIT_ABGR8888 ? 4 : 2);
|
||||
@ -839,7 +815,18 @@ void TextureCache::SetTexture() {
|
||||
|
||||
glGenTextures(1, &entry->texture);
|
||||
glBindTexture(GL_TEXTURE_2D, entry->texture);
|
||||
lastBoundTexture = entry->texture;
|
||||
|
||||
// Adjust maxLevel to actually present levels..
|
||||
for (int i = 0; i <= maxLevel; i++) {
|
||||
// If encountering levels pointing to nothing, adjust max level.
|
||||
u32 levelTexaddr = (gstate.texaddr[i] & 0xFFFFF0) | ((gstate.texbufwidth[i] << 8) & 0x0F000000);
|
||||
if (!Memory::IsValidAddress(levelTexaddr)) {
|
||||
maxLevel = i - 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef USING_GLES2
|
||||
// GLES2 doesn't have support for a "Max lod" which is critical as PSP games often
|
||||
// don't specify mips all the way down. As a result, we either need to manually generate
|
||||
@ -850,15 +837,15 @@ void TextureCache::SetTexture() {
|
||||
// As is usual, GLES3 will solve this problem nicely but wide distribution of that is
|
||||
// years away.
|
||||
LoadTextureLevel(*entry, 0);
|
||||
if (entry->maxLevel > 0)
|
||||
if (maxLevel > 0)
|
||||
glGenerateMipmap(GL_TEXTURE_2D);
|
||||
#else
|
||||
for (int i = 0; i <= entry->maxLevel; i++) {
|
||||
for (int i = 0; i <= maxLevel; i++) {
|
||||
LoadTextureLevel(*entry, i);
|
||||
}
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, entry->maxLevel);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, maxLevel);
|
||||
#endif
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, (float)entry->maxLevel);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_LOD, (float)maxLevel);
|
||||
float anisotropyLevel = (float) g_Config.iAnisotropyLevel > maxAnisotropyLevel ? maxAnisotropyLevel : (float) g_Config.iAnisotropyLevel;
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, anisotropyLevel);
|
||||
// NOTICE_LOG(G3D,"AnisotropyLevel = %0.1f , MaxAnisotropyLevel = %0.1f ", anisotropyLevel, maxAnisotropyLevel );
|
||||
|
@ -99,5 +99,7 @@ private:
|
||||
|
||||
u32 *clutBuf32;
|
||||
u16 *clutBuf16;
|
||||
|
||||
int lastBoundTexture;
|
||||
};
|
||||
|
||||
|
@ -149,8 +149,46 @@ void TransformDrawEngine::DrawBezier(int ucount, int vcount) {
|
||||
Flush(); // as our vertex storage here is temporary, it will only survive one draw.
|
||||
}
|
||||
|
||||
// Copy code from bezier. This is not right, but allow to display something.
|
||||
void TransformDrawEngine::DrawSpline(int ucount, int vcount, int utype, int vtype) {
|
||||
// TODO
|
||||
u16 indices[3 * 3 * 6];
|
||||
|
||||
// Generate indices for a rectangular mesh.
|
||||
int c = 0;
|
||||
for (int y = 0; y < 3; y++) {
|
||||
for (int x = 0; x < 3; x++) {
|
||||
indices[c++] = y * 4 + x;
|
||||
indices[c++] = y * 4 + x + 1;
|
||||
indices[c++] = (y + 1) * 4 + x + 1;
|
||||
indices[c++] = (y + 1) * 4 + x + 1;
|
||||
indices[c++] = (y + 1) * 4 + x;
|
||||
indices[c++] = y * 4 + x;
|
||||
}
|
||||
}
|
||||
|
||||
// We are free to use the "decoded" buffer here.
|
||||
// Let's split it into two to get a second buffer, there's enough space.
|
||||
u8 *decoded2 = decoded + 65536 * 24;
|
||||
|
||||
// Alright, now for the vertex data.
|
||||
// For now, we will simply inject UVs.
|
||||
|
||||
float customUV[4 * 4 * 2];
|
||||
for (int y = 0; y < 4; y++) {
|
||||
for (int x = 0; x < 4; x++) {
|
||||
customUV[(y * 4 + x) * 2 + 0] = (float)x/3.0f;
|
||||
customUV[(y * 4 + x) * 2 + 1] = (float)y/3.0f;
|
||||
}
|
||||
}
|
||||
|
||||
if (!(gstate.vertType & GE_VTYPE_TC_MASK)) {
|
||||
dec.SetVertexType(gstate.vertType);
|
||||
u32 newVertType = dec.InjectUVs(decoded2, Memory::GetPointer(gstate_c.vertexAddr), customUV, 16);
|
||||
SubmitPrim(decoded2, &indices[0], GE_PRIM_TRIANGLES, c, newVertType, GE_VTYPE_IDX_16BIT, 0);
|
||||
} else {
|
||||
SubmitPrim(Memory::GetPointer(gstate_c.vertexAddr), &indices[0], GE_PRIM_TRIANGLES, c, gstate.vertType, GE_VTYPE_IDX_16BIT, 0);
|
||||
}
|
||||
Flush(); // as our vertex storage here is temporary, it will only survive one draw.
|
||||
}
|
||||
|
||||
// Convenient way to do precomputation to save the parts of the lighting calculation
|
||||
@ -509,6 +547,14 @@ void TransformDrawEngine::SoftwareTransformAndDraw(
|
||||
|
||||
if (gstate.lightingEnable & 1) {
|
||||
// Don't ignore gstate.lmode - we should send two colors in that case
|
||||
if (reader.hasColor0()) {
|
||||
reader.ReadColor0(litColor0);
|
||||
} else {
|
||||
litColor0[0] = (gstate.materialambient & 0xFF) / 255.f;
|
||||
litColor0[1] = ((gstate.materialambient >> 8) & 0xFF) / 255.f;
|
||||
litColor0[2] = ((gstate.materialambient >> 16) & 0xFF) / 255.f;
|
||||
litColor0[3] = (gstate.materialalpha & 0xFF) / 255.f;
|
||||
}
|
||||
if (gstate.lmode & 1) {
|
||||
// Separate colors
|
||||
for (int j = 0; j < 4; j++) {
|
||||
@ -913,7 +959,6 @@ void TransformDrawEngine::Flush() {
|
||||
vai->decFmt = dec.GetDecVtxFmt();
|
||||
vai_[id] = vai;
|
||||
}
|
||||
vai->lastFrame = gpuStats.numFrames;
|
||||
|
||||
switch (vai->status) {
|
||||
case VertexArrayInfo::VAI_NEW:
|
||||
@ -922,7 +967,7 @@ void TransformDrawEngine::Flush() {
|
||||
u32 dataHash = ComputeHash();
|
||||
vai->hash = dataHash;
|
||||
vai->status = VertexArrayInfo::VAI_HASHING;
|
||||
vai->framesUntilNextFullHash = 0;
|
||||
vai->drawsUntilNextFullHash = 0;
|
||||
DecodeVerts(); // writes to indexGen
|
||||
goto rotateVBO;
|
||||
}
|
||||
@ -935,14 +980,8 @@ void TransformDrawEngine::Flush() {
|
||||
if (vai->lastFrame != gpuStats.numFrames) {
|
||||
vai->numFrames++;
|
||||
}
|
||||
if (vai->framesUntilNextFullHash == 0) {
|
||||
if (vai->drawsUntilNextFullHash == 0) {
|
||||
u32 newHash = ComputeHash();
|
||||
// exponential backoff up to 16 frames
|
||||
vai->framesUntilNextFullHash = std::min(16, vai->numFrames);
|
||||
// TODO: tweak
|
||||
//if (vai->numFrames > 1000) {
|
||||
// vai->status = VertexArrayInfo::VAI_RELIABLE;
|
||||
//}
|
||||
if (newHash != vai->hash) {
|
||||
vai->status = VertexArrayInfo::VAI_UNRELIABLE;
|
||||
if (vai->vbo) {
|
||||
@ -956,8 +995,19 @@ void TransformDrawEngine::Flush() {
|
||||
DecodeVerts();
|
||||
goto rotateVBO;
|
||||
}
|
||||
if (vai->numVerts > 100) {
|
||||
// exponential backoff up to 16 draws, then every 24
|
||||
vai->drawsUntilNextFullHash = std::min(24, vai->numFrames);
|
||||
} else {
|
||||
// Lower numbers seem much more likely to change.
|
||||
vai->drawsUntilNextFullHash = 0;
|
||||
}
|
||||
// TODO: tweak
|
||||
//if (vai->numFrames > 1000) {
|
||||
// vai->status = VertexArrayInfo::VAI_RELIABLE;
|
||||
//}
|
||||
} else {
|
||||
vai->framesUntilNextFullHash--;
|
||||
vai->drawsUntilNextFullHash--;
|
||||
// TODO: "mini-hashing" the first 32 bytes of the vertex/index data or something.
|
||||
}
|
||||
|
||||
@ -1025,6 +1075,8 @@ void TransformDrawEngine::Flush() {
|
||||
goto rotateVBO;
|
||||
}
|
||||
}
|
||||
|
||||
vai->lastFrame = gpuStats.numFrames;
|
||||
} else {
|
||||
DecodeVerts();
|
||||
rotateVBO:
|
||||
|
@ -58,7 +58,7 @@ public:
|
||||
numFrames = 0;
|
||||
lastFrame = gpuStats.numFrames;
|
||||
numVerts = 0;
|
||||
framesUntilNextFullHash = 0;
|
||||
drawsUntilNextFullHash = 0;
|
||||
}
|
||||
~VertexArrayInfo();
|
||||
enum Status {
|
||||
@ -87,7 +87,7 @@ public:
|
||||
int numDraws;
|
||||
int numFrames;
|
||||
int lastFrame; // So that we can forget.
|
||||
u16 framesUntilNextFullHash;
|
||||
u16 drawsUntilNextFullHash;
|
||||
};
|
||||
|
||||
|
||||
|
@ -142,6 +142,23 @@ void GPUCommon::PreExecuteOp(u32 op, u32 diff) {
|
||||
void GPUCommon::DoState(PointerWrap &p) {
|
||||
p.Do(dlIdGenerator);
|
||||
p.Do<DisplayList>(dlQueue);
|
||||
int currentID = currentList == NULL ? 0 : currentList->id;
|
||||
p.Do(currentID);
|
||||
if (currentID == 0) {
|
||||
currentList = 0;
|
||||
} else {
|
||||
for (auto it = dlQueue.begin(), end = dlQueue.end(); it != end; ++it) {
|
||||
if (it->id == currentID) {
|
||||
currentList = &*it;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
p.Do(interruptRunning);
|
||||
p.Do(prev);
|
||||
p.Do(stack);
|
||||
p.Do(stackptr);
|
||||
p.Do(finished);
|
||||
p.DoMarker("GPUCommon");
|
||||
}
|
||||
|
||||
|
@ -44,7 +44,7 @@ protected:
|
||||
public:
|
||||
virtual DisplayList* getList(int listid)
|
||||
{
|
||||
if(currentList->id == listid)
|
||||
if (currentList && currentList->id == listid)
|
||||
return currentList;
|
||||
for(auto it = dlQueue.begin(); it != dlQueue.end(); ++it)
|
||||
{
|
||||
|
@ -242,7 +242,7 @@ struct GPUStateCache
|
||||
float lightpos[4][3];
|
||||
float lightdir[4][3];
|
||||
float lightatt[4][3];
|
||||
float lightColor[3][4][3]; //Amtient Diffuse Specular
|
||||
float lightColor[3][4][3]; // Ambient Diffuse Specular
|
||||
float morphWeights[8];
|
||||
|
||||
u32 curTextureWidth;
|
||||
|
@ -6,7 +6,7 @@ CONFIG += staticlib
|
||||
|
||||
include(Settings.pri)
|
||||
|
||||
INCLUDEPATH += ../native ../Core/MIPS ../Common ../
|
||||
INCLUDEPATH += ../native ../Core/MIPS ../
|
||||
|
||||
arm {
|
||||
SOURCES += ../Core/MIPS/ARM/*.cpp \ #CoreARM
|
||||
|
@ -52,7 +52,10 @@ namespace
|
||||
static void DrawBackground(float alpha) {
|
||||
static float xbase[100] = {0};
|
||||
static float ybase[100] = {0};
|
||||
if (xbase[0] == 0.0f) {
|
||||
static int old_dp_xres = dp_xres;
|
||||
// if window was resized, recalculate animation coordinates
|
||||
if (xbase[0] == 0.0f || dp_xres != old_dp_xres) {
|
||||
old_dp_xres = dp_xres;
|
||||
GMRng rng;
|
||||
for (int i = 0; i < 100; i++) {
|
||||
xbase[i] = rng.F() * dp_xres;
|
||||
@ -316,6 +319,7 @@ void EmuThread::run()
|
||||
ReapplyGfxState();
|
||||
|
||||
UIShader_Prepare();
|
||||
glViewport(0, 0, pixel_xres, pixel_yres);
|
||||
UIBegin();
|
||||
DrawBackground(alpha);
|
||||
|
||||
|
@ -9,7 +9,6 @@ include(Settings.pri)
|
||||
!mobile_platform: {
|
||||
SOURCES += ../native/ext/glew/glew.c
|
||||
HEADERS += ../native/ext/glew/GL/*.h
|
||||
INCLUDEPATH += ../native/ext/glew
|
||||
}
|
||||
|
||||
# Backtrace
|
||||
@ -55,7 +54,6 @@ INCLUDEPATH += ../ext/snappy
|
||||
!symbian: {
|
||||
SOURCES += ../ext/zlib/*.c
|
||||
HEADERS += ../ext/zlib/*.h
|
||||
INCLUDEPATH += ../ext/zlib
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,16 +3,17 @@ TARGET = PPSSPPQt
|
||||
QT += core gui opengl
|
||||
CONFIG += mobility
|
||||
MOBILITY += multimedia
|
||||
win32: QT += multimedia
|
||||
|
||||
include(Settings.pri)
|
||||
|
||||
# Libs
|
||||
symbian: LIBS += -lCore.lib -lCommon.lib -lNative.lib -lcone -leikcore -lavkon -lezlib
|
||||
blackberry: LIBS += -L. -lCore -lCommon -lNative -lscreen -lsocket -lstdc++
|
||||
win32: LIBS += -L. -lCore -lCommon -lNative -lwinmm -lws2_32 -lkernel32 -luser32 -lgdi32 -lshell32 -lcomctl32 -ldsound -lxinput
|
||||
win32: LIBS += -L$$OUT_PWD/release -lCore -lCommon -lNative -lwinmm -lws2_32 -lkernel32 -luser32 -lgdi32 -lshell32 -lcomctl32 -ldsound -lxinput
|
||||
linux: LIBS += -L. -lCore -lCommon -lNative
|
||||
|
||||
desktop_ui {
|
||||
linux:!mobile_platform {
|
||||
PRE_TARGETDEPS += ./libCommon.a ./libCore.a ./libNative.a
|
||||
CONFIG += link_pkgconfig
|
||||
packagesExist(sdl) {
|
||||
@ -21,9 +22,7 @@ desktop_ui {
|
||||
}
|
||||
}
|
||||
|
||||
TRANSLATIONS = languages/ppsspp_en.ts \
|
||||
languages/ppsspp_pl.ts \
|
||||
languages/ppsspp_fr.ts
|
||||
TRANSLATIONS = $$files(languages/ppsspp_*.ts)
|
||||
|
||||
# Main
|
||||
SOURCES += ../native/base/QtMain.cpp
|
||||
@ -39,15 +38,17 @@ SOURCES += ../android/jni/EmuScreen.cpp \
|
||||
INCLUDEPATH += .. ../Common ../native
|
||||
|
||||
# Temporarily only use new UI for Linux desktop
|
||||
desktop_ui {
|
||||
mobile_platform {
|
||||
SOURCES += ../android/jni/NativeApp.cpp
|
||||
} else {
|
||||
MOC_DIR = moc
|
||||
UI_DIR = ui
|
||||
RCC_DIR = rcc
|
||||
SOURCES += *.cpp
|
||||
HEADERS += *.h
|
||||
FORMS += *.ui
|
||||
RESOURCES += resources.qrc
|
||||
} else {
|
||||
SOURCES += ../android/jni/NativeApp.cpp
|
||||
INCLUDEPATH += ../Qt
|
||||
}
|
||||
|
||||
# Packaging
|
||||
|
@ -1,15 +1,24 @@
|
||||
DEFINES += USING_QT_UI
|
||||
blackberry|symbian|contains(MEEGO_EDITION,harmattan): CONFIG += mobile_platform
|
||||
unix:!blackberry:!symbian:!macx: CONFIG += linux
|
||||
linux:!mobile_platform: CONFIG += desktop_ui
|
||||
|
||||
# Global specific
|
||||
QMAKE_CXXFLAGS += -Wno-unused-function -Wno-unused-variable -Wno-multichar -Wno-uninitialized -Wno-ignored-qualifiers -Wno-missing-field-initializers -Wno-unused-parameter
|
||||
QMAKE_CXXFLAGS += -std=c++0x -ffast-math -fno-strict-aliasing
|
||||
DEFINES -= UNICODE
|
||||
INCLUDEPATH += ../ext/zlib ../native/ext/glew ../Common
|
||||
|
||||
win32-msvc* {
|
||||
QMAKE_CXXFLAGS_RELEASE += /O2 /arch:SSE2 /fp:fast
|
||||
DEFINES += _MBCS GLEW_STATIC NOMINMAX
|
||||
PRECOMPILED_HEADER = ../Windows/stdafx.h
|
||||
PRECOMPILED_SOURCE = ../Windows/stdafx.cpp
|
||||
} else {
|
||||
QMAKE_CXXFLAGS += -Wno-unused-function -Wno-unused-variable -Wno-multichar -Wno-uninitialized -Wno-ignored-qualifiers -Wno-missing-field-initializers -Wno-unused-parameter
|
||||
QMAKE_CXXFLAGS += -std=c++0x -ffast-math -fno-strict-aliasing
|
||||
}
|
||||
|
||||
# Arch specific
|
||||
contains(QT_ARCH, i686)|contains(QT_ARCH, x86)|contains(QT_ARCH, x86_64): {
|
||||
QMAKE_CXXFLAGS += -msse2
|
||||
contains(QT_ARCH, i686)|contains(QT_ARCH, x86)|contains(QT_ARCH, x86_64)|contains(QT_ARCH, windows): {
|
||||
!win32-msvc*: QMAKE_CXXFLAGS += -msse2
|
||||
CONFIG += x86
|
||||
}
|
||||
else { # Assume ARM
|
||||
|
1009
Qt/languages/ppsspp_cn.ts
Normal file
1009
Qt/languages/ppsspp_cn.ts
Normal file
File diff suppressed because it is too large
Load Diff
988
Qt/languages/ppsspp_de.ts
Normal file
988
Qt/languages/ppsspp_de.ts
Normal file
@ -0,0 +1,988 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS>
|
||||
<TS version="2.0" language="de_DE">
|
||||
<context>
|
||||
<name>Controls</name>
|
||||
<message>
|
||||
<location filename="../controls.ui" line="20"/>
|
||||
<source>Controls</source>
|
||||
<comment>Controls window title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CtrlDisAsmView</name>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="106"/>
|
||||
<source>Copy &address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="110"/>
|
||||
<source>Copy instruction (&hex)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="114"/>
|
||||
<source>Copy instruction (&disasm)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="120"/>
|
||||
<source>&Run to here</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="124"/>
|
||||
<source>&Set Next Statement</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="128"/>
|
||||
<source>&Toggle breakpoint</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="132"/>
|
||||
<source>&Follow branch</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="142"/>
|
||||
<source>Go to in &Memory View</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="152"/>
|
||||
<source>&Rename function...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="240"/>
|
||||
<source>New function name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrldisasmview.cpp" line="241"/>
|
||||
<source>New function name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CtrlMemView</name>
|
||||
<message>
|
||||
<location filename="../ctrlmemview.cpp" line="215"/>
|
||||
<source>Go to in &disasm</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrlmemview.cpp" line="221"/>
|
||||
<source>&Copy value</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrlmemview.cpp" line="225"/>
|
||||
<source>Dump...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CtrlRegisterList</name>
|
||||
<message>
|
||||
<location filename="../ctrlregisterlist.cpp" line="274"/>
|
||||
<source>Go to in &memory view</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrlregisterlist.cpp" line="278"/>
|
||||
<source>Go to in &disasm</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrlregisterlist.cpp" line="284"/>
|
||||
<source>&Copy value</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrlregisterlist.cpp" line="288"/>
|
||||
<source>C&hange...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrlregisterlist.cpp" line="352"/>
|
||||
<source>Set new value</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../ctrlregisterlist.cpp" line="353"/>
|
||||
<source>Set new value:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Debugger_Disasm</name>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="17"/>
|
||||
<source>Disassembler</source>
|
||||
<comment>Window title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="30"/>
|
||||
<source>Ctr:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="43"/>
|
||||
<source>&Go to</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="78"/>
|
||||
<source>&PC</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="91"/>
|
||||
<source>&LR</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="128"/>
|
||||
<source>Show VFPU</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="147"/>
|
||||
<source>Regs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="198"/>
|
||||
<source>Funcs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="223"/>
|
||||
<source>&Go</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="236"/>
|
||||
<source>Stop</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="249"/>
|
||||
<source>Step &Into</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="265"/>
|
||||
<source>Step &Over</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="278"/>
|
||||
<source>S&kip</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="291"/>
|
||||
<source>Next &HLE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="320"/>
|
||||
<source>Breakpoints</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="339"/>
|
||||
<source>Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="362"/>
|
||||
<source>Clear All</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="372"/>
|
||||
<source>Callstack</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="382"/>
|
||||
<source>Display Lists</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="408"/>
|
||||
<location filename="../debugger_disasm.ui" line="519"/>
|
||||
<source>Id</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="413"/>
|
||||
<location filename="../debugger_disasm.ui" line="529"/>
|
||||
<source>Status</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="418"/>
|
||||
<source>Start Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="423"/>
|
||||
<source>Current Address</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="476"/>
|
||||
<source>Run</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="483"/>
|
||||
<source>Step</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="497"/>
|
||||
<source>Threads</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="524"/>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="534"/>
|
||||
<source>Current PC</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.ui" line="539"/>
|
||||
<source>Entry point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.cpp" line="401"/>
|
||||
<source>Remove breakpoint</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.cpp" line="480"/>
|
||||
<source>Go to entry point</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.cpp" line="486"/>
|
||||
<source>Running</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.cpp" line="490"/>
|
||||
<source>Wait</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.cpp" line="494"/>
|
||||
<source>Suspend</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_disasm.cpp" line="626"/>
|
||||
<source>Show code</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Debugger_Memory</name>
|
||||
<message>
|
||||
<location filename="../debugger_memory.ui" line="14"/>
|
||||
<source>Dialog</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_memory.ui" line="22"/>
|
||||
<source>Goto:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_memory.ui" line="35"/>
|
||||
<source>Mode</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_memory.ui" line="41"/>
|
||||
<source>Normal</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_memory.ui" line="48"/>
|
||||
<source>Symbols</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_memory.cpp" line="15"/>
|
||||
<source>Memory Viewer - %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>Debugger_VFPU</name>
|
||||
<message>
|
||||
<location filename="../debugger_vfpu.ui" line="14"/>
|
||||
<source>VFPU</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_vfpu.ui" line="23"/>
|
||||
<source>Float</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_vfpu.ui" line="28"/>
|
||||
<source>HalfFloat</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_vfpu.ui" line="33"/>
|
||||
<source>Hex</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_vfpu.ui" line="38"/>
|
||||
<source>Bytes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_vfpu.ui" line="43"/>
|
||||
<source>Shorts</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../debugger_vfpu.ui" line="48"/>
|
||||
<source>Ints</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>GamePadDialog</name>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="14"/>
|
||||
<source>Gamepad Configuration</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="22"/>
|
||||
<source>GamePad List</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="46"/>
|
||||
<source>Refresh</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="53"/>
|
||||
<source>Select</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="62"/>
|
||||
<source>Gamepad Values :</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="86"/>
|
||||
<source>TextLabel</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="98"/>
|
||||
<source>Assign Gamepad input</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="108"/>
|
||||
<source> to PSP button/axis</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="118"/>
|
||||
<source>Assign</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.ui" line="127"/>
|
||||
<source>Press buttons on your gamePad to verify mapping :</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="134"/>
|
||||
<location filename="../gamepaddialog.cpp" line="366"/>
|
||||
<source><b>No gamepad</b></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="146"/>
|
||||
<source><b>Unknown gamepad</b></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="287"/>
|
||||
<source>Buttons</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="301"/>
|
||||
<location filename="../gamepaddialog.cpp" line="344"/>
|
||||
<source>Button %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="304"/>
|
||||
<source>Axes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="310"/>
|
||||
<source>%1 Neg</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="317"/>
|
||||
<source>Axes %1 Neg</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="320"/>
|
||||
<source>%1 Pos</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="327"/>
|
||||
<source>Axes %1 Pos</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="331"/>
|
||||
<source>Hats</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="368"/>
|
||||
<source><b>Current gamepad: %1</b></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="20"/>
|
||||
<source>PPSSPP</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="52"/>
|
||||
<source>&File</source>
|
||||
<translation type="unfinished">&Datei</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="66"/>
|
||||
<source>&Emulation</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="81"/>
|
||||
<source>Debu&g</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="95"/>
|
||||
<source>&Options</source>
|
||||
<translation type="unfinished">&Optionen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="99"/>
|
||||
<source>&Log Levels</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="103"/>
|
||||
<source>G3D</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="112"/>
|
||||
<source>HLE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="121"/>
|
||||
<source>Default</source>
|
||||
<translation type="unfinished">Standard</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="135"/>
|
||||
<source>Zoom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="144"/>
|
||||
<source>Language</source>
|
||||
<translation type="unfinished">Sprache</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="149"/>
|
||||
<source>Anisotropic filtering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="185"/>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished">&Hilfe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="200"/>
|
||||
<source>&Open...</source>
|
||||
<translation type="unfinished">&Öffnen...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="205"/>
|
||||
<source>&Close</source>
|
||||
<translation type="unfinished">&Schließen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="210"/>
|
||||
<source>-</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="215"/>
|
||||
<source>Quickload state</source>
|
||||
<translation type="unfinished">Schnellladen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="218"/>
|
||||
<source>F4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="223"/>
|
||||
<source>Quicksave state</source>
|
||||
<translation type="unfinished">Schnellspeichern</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="226"/>
|
||||
<source>F2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="231"/>
|
||||
<source>&Load State File...</source>
|
||||
<translation type="unfinished">&Lade Spielstand...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="236"/>
|
||||
<source>&Save State File...</source>
|
||||
<translation type="unfinished">&Speichere Spielstand...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="241"/>
|
||||
<source>E&xit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="246"/>
|
||||
<source>&Run</source>
|
||||
<translation type="unfinished">&Starte</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="249"/>
|
||||
<source>F7</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="254"/>
|
||||
<source>&Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="257"/>
|
||||
<source>F8</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="262"/>
|
||||
<source>R&eset</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="270"/>
|
||||
<source>&Interpreter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="278"/>
|
||||
<source>&Slightly Faster Interpreter</source>
|
||||
<translation type="unfinished">&etwas scnellerer Interpreter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="286"/>
|
||||
<source>&Dynarec</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="294"/>
|
||||
<source>Load &Map File...</source>
|
||||
<translation type="unfinished">Lade &Map Dateien...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="302"/>
|
||||
<source>&Save Map File...</source>
|
||||
<translation type="unfinished">&Speichere Map Dateien...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="310"/>
|
||||
<source>&Reset Symbol Table</source>
|
||||
<translation type="unfinished">&Setze Symboltabelle zurück</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="315"/>
|
||||
<source>&Disassembly</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="318"/>
|
||||
<source>Ctrl+D</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="326"/>
|
||||
<source>&Log Console</source>
|
||||
<translation type="unfinished">&Log Konsole</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="329"/>
|
||||
<source>Ctrl+L</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="334"/>
|
||||
<source>Memory &View...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="337"/>
|
||||
<source>Ctrl+M</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="342"/>
|
||||
<source>Keyboard &Controls</source>
|
||||
<translation type="unfinished">Tastatur &Tastenbelegung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="347"/>
|
||||
<source>&Toggle Full Screen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="350"/>
|
||||
<source>F12</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="358"/>
|
||||
<source>&Buffered Rendering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="361"/>
|
||||
<source>F5</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="369"/>
|
||||
<source>&Hardware Transform</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="372"/>
|
||||
<source>F6</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="380"/>
|
||||
<source>&Linear Filtering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="388"/>
|
||||
<source>&Wireframe (experimental)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="396"/>
|
||||
<source>&Display Raw Framebuffer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="404"/>
|
||||
<source>&Show Debug Statistics</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="412"/>
|
||||
<source>Screen &1x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="415"/>
|
||||
<source>Ctrl+1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="423"/>
|
||||
<source>Screen &2x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="426"/>
|
||||
<source>Ctrl+2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="434"/>
|
||||
<source>Screen &3x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="437"/>
|
||||
<source>Ctrl+3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="445"/>
|
||||
<source>Screen &4x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="448"/>
|
||||
<source>Ctrl+4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="456"/>
|
||||
<source>&Fast Memory (dynarec, unstable)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="464"/>
|
||||
<source>&Ignore illegal reads/writes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="469"/>
|
||||
<source>&Go to http://www.ppsspp.org/</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="474"/>
|
||||
<source>&About PPSSPP...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="482"/>
|
||||
<source>&Use VBO</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="490"/>
|
||||
<location filename="../mainwindow.ui" line="522"/>
|
||||
<location filename="../mainwindow.ui" line="554"/>
|
||||
<source>Debug</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="498"/>
|
||||
<location filename="../mainwindow.ui" line="530"/>
|
||||
<location filename="../mainwindow.ui" line="562"/>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="506"/>
|
||||
<location filename="../mainwindow.ui" line="546"/>
|
||||
<location filename="../mainwindow.ui" line="578"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="514"/>
|
||||
<location filename="../mainwindow.ui" line="538"/>
|
||||
<location filename="../mainwindow.ui" line="570"/>
|
||||
<source>Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="583"/>
|
||||
<source>GamePad Controls</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="588"/>
|
||||
<source>&Run on load</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="593"/>
|
||||
<source>D&ump next frame to log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="601"/>
|
||||
<source>&Vertex Cache</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="606"/>
|
||||
<source>Memory View Texture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="614"/>
|
||||
<source>Simple 2xAA</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="622"/>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="630"/>
|
||||
<source>2x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="638"/>
|
||||
<source>4x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="646"/>
|
||||
<source>8x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="654"/>
|
||||
<source>16x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="662"/>
|
||||
<source>Show FPS counter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="840"/>
|
||||
<source>No translations</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>gamepadMapping</name>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="19"/>
|
||||
<source>Cross</source>
|
||||
<translation type="unfinished">Kreuz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="20"/>
|
||||
<source>Circle</source>
|
||||
<translation type="unfinished">Kreis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="21"/>
|
||||
<source>Square</source>
|
||||
<translation type="unfinished">Viereck</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="22"/>
|
||||
<source>Triangle</source>
|
||||
<translation type="unfinished">Dreieck</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="23"/>
|
||||
<source>Left Trigger</source>
|
||||
<translation type="unfinished">Linke Schultertaste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="24"/>
|
||||
<source>Right Trigger</source>
|
||||
<translation type="unfinished">Rechte Schultertaste</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="25"/>
|
||||
<source>Start</source>
|
||||
<translation type="unfinished">Start</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="26"/>
|
||||
<source>Select</source>
|
||||
<translation type="unfinished">Select</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="27"/>
|
||||
<source>Up</source>
|
||||
<translation type="unfinished">Hoch</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="28"/>
|
||||
<source>Down</source>
|
||||
<translation type="unfinished">Runter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="29"/>
|
||||
<source>Left</source>
|
||||
<translation type="unfinished">Links</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="30"/>
|
||||
<source>Right</source>
|
||||
<translation type="unfinished">Rechts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="32"/>
|
||||
<source>Home</source>
|
||||
<translation type="unfinished">Home</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="35"/>
|
||||
<source>Stick left</source>
|
||||
<translation type="unfinished">Analogstick links</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="36"/>
|
||||
<source>Stick right</source>
|
||||
<translation type="unfinished">Analogstick rechts</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="37"/>
|
||||
<source>Stick up</source>
|
||||
<translation type="unfinished">Analogstick oben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../gamepaddialog.cpp" line="38"/>
|
||||
<source>Stick bottom</source>
|
||||
<translation type="unfinished">Analogstick unten</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
@ -6,7 +6,7 @@
|
||||
<message>
|
||||
<location filename="../controls.ui" line="20"/>
|
||||
<source>Controls</source>
|
||||
<comment>Control window title</comment>
|
||||
<comment>Controls window title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -539,320 +539,360 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="172"/>
|
||||
<location filename="../mainwindow.ui" line="149"/>
|
||||
<source>Anisotropic filtering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="185"/>
|
||||
<source>&Help</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="187"/>
|
||||
<location filename="../mainwindow.ui" line="200"/>
|
||||
<source>&Open...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="192"/>
|
||||
<location filename="../mainwindow.ui" line="205"/>
|
||||
<source>&Close</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="197"/>
|
||||
<location filename="../mainwindow.ui" line="210"/>
|
||||
<source>-</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="202"/>
|
||||
<location filename="../mainwindow.ui" line="215"/>
|
||||
<source>Quickload state</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="205"/>
|
||||
<location filename="../mainwindow.ui" line="218"/>
|
||||
<source>F4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="210"/>
|
||||
<location filename="../mainwindow.ui" line="223"/>
|
||||
<source>Quicksave state</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="213"/>
|
||||
<location filename="../mainwindow.ui" line="226"/>
|
||||
<source>F2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="218"/>
|
||||
<location filename="../mainwindow.ui" line="231"/>
|
||||
<source>&Load State File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="223"/>
|
||||
<location filename="../mainwindow.ui" line="236"/>
|
||||
<source>&Save State File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="228"/>
|
||||
<location filename="../mainwindow.ui" line="241"/>
|
||||
<source>E&xit</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="233"/>
|
||||
<location filename="../mainwindow.ui" line="246"/>
|
||||
<source>&Run</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="236"/>
|
||||
<location filename="../mainwindow.ui" line="249"/>
|
||||
<source>F7</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="241"/>
|
||||
<location filename="../mainwindow.ui" line="254"/>
|
||||
<source>&Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="244"/>
|
||||
<location filename="../mainwindow.ui" line="257"/>
|
||||
<source>F8</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="249"/>
|
||||
<location filename="../mainwindow.ui" line="262"/>
|
||||
<source>R&eset</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="257"/>
|
||||
<location filename="../mainwindow.ui" line="270"/>
|
||||
<source>&Interpreter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="265"/>
|
||||
<location filename="../mainwindow.ui" line="278"/>
|
||||
<source>&Slightly Faster Interpreter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="273"/>
|
||||
<location filename="../mainwindow.ui" line="286"/>
|
||||
<source>&Dynarec</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="281"/>
|
||||
<location filename="../mainwindow.ui" line="294"/>
|
||||
<source>Load &Map File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="289"/>
|
||||
<location filename="../mainwindow.ui" line="302"/>
|
||||
<source>&Save Map File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="297"/>
|
||||
<location filename="../mainwindow.ui" line="310"/>
|
||||
<source>&Reset Symbol Table</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="302"/>
|
||||
<location filename="../mainwindow.ui" line="315"/>
|
||||
<source>&Disassembly</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="305"/>
|
||||
<location filename="../mainwindow.ui" line="318"/>
|
||||
<source>Ctrl+D</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="313"/>
|
||||
<location filename="../mainwindow.ui" line="326"/>
|
||||
<source>&Log Console</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="316"/>
|
||||
<location filename="../mainwindow.ui" line="329"/>
|
||||
<source>Ctrl+L</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="321"/>
|
||||
<location filename="../mainwindow.ui" line="334"/>
|
||||
<source>Memory &View...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="324"/>
|
||||
<location filename="../mainwindow.ui" line="337"/>
|
||||
<source>Ctrl+M</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="329"/>
|
||||
<location filename="../mainwindow.ui" line="342"/>
|
||||
<source>Keyboard &Controls</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="334"/>
|
||||
<location filename="../mainwindow.ui" line="347"/>
|
||||
<source>&Toggle Full Screen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="337"/>
|
||||
<location filename="../mainwindow.ui" line="350"/>
|
||||
<source>F12</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="345"/>
|
||||
<location filename="../mainwindow.ui" line="358"/>
|
||||
<source>&Buffered Rendering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="348"/>
|
||||
<location filename="../mainwindow.ui" line="361"/>
|
||||
<source>F5</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="356"/>
|
||||
<location filename="../mainwindow.ui" line="369"/>
|
||||
<source>&Hardware Transform</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="359"/>
|
||||
<location filename="../mainwindow.ui" line="372"/>
|
||||
<source>F6</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="367"/>
|
||||
<location filename="../mainwindow.ui" line="380"/>
|
||||
<source>&Linear Filtering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="375"/>
|
||||
<location filename="../mainwindow.ui" line="388"/>
|
||||
<source>&Wireframe (experimental)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="383"/>
|
||||
<location filename="../mainwindow.ui" line="396"/>
|
||||
<source>&Display Raw Framebuffer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="391"/>
|
||||
<location filename="../mainwindow.ui" line="404"/>
|
||||
<source>&Show Debug Statistics</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="399"/>
|
||||
<location filename="../mainwindow.ui" line="412"/>
|
||||
<source>Screen &1x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="402"/>
|
||||
<location filename="../mainwindow.ui" line="415"/>
|
||||
<source>Ctrl+1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="410"/>
|
||||
<location filename="../mainwindow.ui" line="423"/>
|
||||
<source>Screen &2x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="413"/>
|
||||
<location filename="../mainwindow.ui" line="426"/>
|
||||
<source>Ctrl+2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="421"/>
|
||||
<location filename="../mainwindow.ui" line="434"/>
|
||||
<source>Screen &3x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="424"/>
|
||||
<location filename="../mainwindow.ui" line="437"/>
|
||||
<source>Ctrl+3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="432"/>
|
||||
<location filename="../mainwindow.ui" line="445"/>
|
||||
<source>Screen &4x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="435"/>
|
||||
<location filename="../mainwindow.ui" line="448"/>
|
||||
<source>Ctrl+4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="443"/>
|
||||
<location filename="../mainwindow.ui" line="456"/>
|
||||
<source>&Fast Memory (dynarec, unstable)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="451"/>
|
||||
<location filename="../mainwindow.ui" line="464"/>
|
||||
<source>&Ignore illegal reads/writes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="456"/>
|
||||
<location filename="../mainwindow.ui" line="469"/>
|
||||
<source>&Go to http://www.ppsspp.org/</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="461"/>
|
||||
<location filename="../mainwindow.ui" line="474"/>
|
||||
<source>&About PPSSPP...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="466"/>
|
||||
<location filename="../mainwindow.ui" line="482"/>
|
||||
<source>&Use VBO</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="474"/>
|
||||
<location filename="../mainwindow.ui" line="506"/>
|
||||
<location filename="../mainwindow.ui" line="538"/>
|
||||
<location filename="../mainwindow.ui" line="490"/>
|
||||
<location filename="../mainwindow.ui" line="522"/>
|
||||
<location filename="../mainwindow.ui" line="554"/>
|
||||
<source>Debug</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="482"/>
|
||||
<location filename="../mainwindow.ui" line="514"/>
|
||||
<location filename="../mainwindow.ui" line="546"/>
|
||||
<location filename="../mainwindow.ui" line="498"/>
|
||||
<location filename="../mainwindow.ui" line="530"/>
|
||||
<location filename="../mainwindow.ui" line="562"/>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="490"/>
|
||||
<location filename="../mainwindow.ui" line="530"/>
|
||||
<location filename="../mainwindow.ui" line="562"/>
|
||||
<location filename="../mainwindow.ui" line="506"/>
|
||||
<location filename="../mainwindow.ui" line="546"/>
|
||||
<location filename="../mainwindow.ui" line="578"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="498"/>
|
||||
<location filename="../mainwindow.ui" line="522"/>
|
||||
<location filename="../mainwindow.ui" line="554"/>
|
||||
<location filename="../mainwindow.ui" line="514"/>
|
||||
<location filename="../mainwindow.ui" line="538"/>
|
||||
<location filename="../mainwindow.ui" line="570"/>
|
||||
<source>Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="567"/>
|
||||
<location filename="../mainwindow.ui" line="583"/>
|
||||
<source>GamePad Controls</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="572"/>
|
||||
<location filename="../mainwindow.ui" line="588"/>
|
||||
<source>&Run on load</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="577"/>
|
||||
<location filename="../mainwindow.ui" line="593"/>
|
||||
<source>D&ump next frame to log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="582"/>
|
||||
<location filename="../mainwindow.ui" line="601"/>
|
||||
<source>&Vertex Cache</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="587"/>
|
||||
<location filename="../mainwindow.ui" line="606"/>
|
||||
<source>Memory View Texture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="843"/>
|
||||
<location filename="../mainwindow.ui" line="614"/>
|
||||
<source>Simple 2xAA</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="622"/>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="630"/>
|
||||
<source>2x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="638"/>
|
||||
<source>4x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="646"/>
|
||||
<source>8x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="654"/>
|
||||
<source>16x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="662"/>
|
||||
<source>Show FPS counter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="840"/>
|
||||
<source>No translations</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<message>
|
||||
<location filename="../controls.ui" line="20"/>
|
||||
<source>Controls</source>
|
||||
<comment>Control window title</comment>
|
||||
<comment>Controls window title</comment>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
@ -539,320 +539,360 @@
|
||||
<translation>Langue</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="172"/>
|
||||
<location filename="../mainwindow.ui" line="149"/>
|
||||
<source>Anisotropic filtering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="185"/>
|
||||
<source>&Help</source>
|
||||
<translation>&Aide</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="187"/>
|
||||
<location filename="../mainwindow.ui" line="200"/>
|
||||
<source>&Open...</source>
|
||||
<translation>&Ouvrir...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="192"/>
|
||||
<location filename="../mainwindow.ui" line="205"/>
|
||||
<source>&Close</source>
|
||||
<translation>&Fermer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="197"/>
|
||||
<location filename="../mainwindow.ui" line="210"/>
|
||||
<source>-</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="202"/>
|
||||
<location filename="../mainwindow.ui" line="215"/>
|
||||
<source>Quickload state</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="205"/>
|
||||
<location filename="../mainwindow.ui" line="218"/>
|
||||
<source>F4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="210"/>
|
||||
<location filename="../mainwindow.ui" line="223"/>
|
||||
<source>Quicksave state</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="213"/>
|
||||
<location filename="../mainwindow.ui" line="226"/>
|
||||
<source>F2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="218"/>
|
||||
<location filename="../mainwindow.ui" line="231"/>
|
||||
<source>&Load State File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="223"/>
|
||||
<location filename="../mainwindow.ui" line="236"/>
|
||||
<source>&Save State File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="228"/>
|
||||
<location filename="../mainwindow.ui" line="241"/>
|
||||
<source>E&xit</source>
|
||||
<translation>&Quitter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="233"/>
|
||||
<location filename="../mainwindow.ui" line="246"/>
|
||||
<source>&Run</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="236"/>
|
||||
<location filename="../mainwindow.ui" line="249"/>
|
||||
<source>F7</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="241"/>
|
||||
<location filename="../mainwindow.ui" line="254"/>
|
||||
<source>&Pause</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="244"/>
|
||||
<location filename="../mainwindow.ui" line="257"/>
|
||||
<source>F8</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="249"/>
|
||||
<location filename="../mainwindow.ui" line="262"/>
|
||||
<source>R&eset</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="257"/>
|
||||
<location filename="../mainwindow.ui" line="270"/>
|
||||
<source>&Interpreter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="265"/>
|
||||
<location filename="../mainwindow.ui" line="278"/>
|
||||
<source>&Slightly Faster Interpreter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="273"/>
|
||||
<location filename="../mainwindow.ui" line="286"/>
|
||||
<source>&Dynarec</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="281"/>
|
||||
<location filename="../mainwindow.ui" line="294"/>
|
||||
<source>Load &Map File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="289"/>
|
||||
<location filename="../mainwindow.ui" line="302"/>
|
||||
<source>&Save Map File...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="297"/>
|
||||
<location filename="../mainwindow.ui" line="310"/>
|
||||
<source>&Reset Symbol Table</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="302"/>
|
||||
<location filename="../mainwindow.ui" line="315"/>
|
||||
<source>&Disassembly</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="305"/>
|
||||
<location filename="../mainwindow.ui" line="318"/>
|
||||
<source>Ctrl+D</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="313"/>
|
||||
<location filename="../mainwindow.ui" line="326"/>
|
||||
<source>&Log Console</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="316"/>
|
||||
<location filename="../mainwindow.ui" line="329"/>
|
||||
<source>Ctrl+L</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="321"/>
|
||||
<location filename="../mainwindow.ui" line="334"/>
|
||||
<source>Memory &View...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="324"/>
|
||||
<location filename="../mainwindow.ui" line="337"/>
|
||||
<source>Ctrl+M</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="329"/>
|
||||
<location filename="../mainwindow.ui" line="342"/>
|
||||
<source>Keyboard &Controls</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="334"/>
|
||||
<location filename="../mainwindow.ui" line="347"/>
|
||||
<source>&Toggle Full Screen</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="337"/>
|
||||
<location filename="../mainwindow.ui" line="350"/>
|
||||
<source>F12</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="345"/>
|
||||
<location filename="../mainwindow.ui" line="358"/>
|
||||
<source>&Buffered Rendering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="348"/>
|
||||
<location filename="../mainwindow.ui" line="361"/>
|
||||
<source>F5</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="356"/>
|
||||
<location filename="../mainwindow.ui" line="369"/>
|
||||
<source>&Hardware Transform</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="359"/>
|
||||
<location filename="../mainwindow.ui" line="372"/>
|
||||
<source>F6</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="367"/>
|
||||
<location filename="../mainwindow.ui" line="380"/>
|
||||
<source>&Linear Filtering</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="375"/>
|
||||
<location filename="../mainwindow.ui" line="388"/>
|
||||
<source>&Wireframe (experimental)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="383"/>
|
||||
<location filename="../mainwindow.ui" line="396"/>
|
||||
<source>&Display Raw Framebuffer</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="391"/>
|
||||
<location filename="../mainwindow.ui" line="404"/>
|
||||
<source>&Show Debug Statistics</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="399"/>
|
||||
<location filename="../mainwindow.ui" line="412"/>
|
||||
<source>Screen &1x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="402"/>
|
||||
<location filename="../mainwindow.ui" line="415"/>
|
||||
<source>Ctrl+1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="410"/>
|
||||
<location filename="../mainwindow.ui" line="423"/>
|
||||
<source>Screen &2x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="413"/>
|
||||
<location filename="../mainwindow.ui" line="426"/>
|
||||
<source>Ctrl+2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="421"/>
|
||||
<location filename="../mainwindow.ui" line="434"/>
|
||||
<source>Screen &3x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="424"/>
|
||||
<location filename="../mainwindow.ui" line="437"/>
|
||||
<source>Ctrl+3</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="432"/>
|
||||
<location filename="../mainwindow.ui" line="445"/>
|
||||
<source>Screen &4x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="435"/>
|
||||
<location filename="../mainwindow.ui" line="448"/>
|
||||
<source>Ctrl+4</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="443"/>
|
||||
<location filename="../mainwindow.ui" line="456"/>
|
||||
<source>&Fast Memory (dynarec, unstable)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="451"/>
|
||||
<location filename="../mainwindow.ui" line="464"/>
|
||||
<source>&Ignore illegal reads/writes</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="456"/>
|
||||
<location filename="../mainwindow.ui" line="469"/>
|
||||
<source>&Go to http://www.ppsspp.org/</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="461"/>
|
||||
<location filename="../mainwindow.ui" line="474"/>
|
||||
<source>&About PPSSPP...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="466"/>
|
||||
<location filename="../mainwindow.ui" line="482"/>
|
||||
<source>&Use VBO</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="474"/>
|
||||
<location filename="../mainwindow.ui" line="506"/>
|
||||
<location filename="../mainwindow.ui" line="538"/>
|
||||
<location filename="../mainwindow.ui" line="490"/>
|
||||
<location filename="../mainwindow.ui" line="522"/>
|
||||
<location filename="../mainwindow.ui" line="554"/>
|
||||
<source>Debug</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="482"/>
|
||||
<location filename="../mainwindow.ui" line="514"/>
|
||||
<location filename="../mainwindow.ui" line="546"/>
|
||||
<location filename="../mainwindow.ui" line="498"/>
|
||||
<location filename="../mainwindow.ui" line="530"/>
|
||||
<location filename="../mainwindow.ui" line="562"/>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="490"/>
|
||||
<location filename="../mainwindow.ui" line="530"/>
|
||||
<location filename="../mainwindow.ui" line="562"/>
|
||||
<location filename="../mainwindow.ui" line="506"/>
|
||||
<location filename="../mainwindow.ui" line="546"/>
|
||||
<location filename="../mainwindow.ui" line="578"/>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="498"/>
|
||||
<location filename="../mainwindow.ui" line="522"/>
|
||||
<location filename="../mainwindow.ui" line="554"/>
|
||||
<location filename="../mainwindow.ui" line="514"/>
|
||||
<location filename="../mainwindow.ui" line="538"/>
|
||||
<location filename="../mainwindow.ui" line="570"/>
|
||||
<source>Info</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="567"/>
|
||||
<location filename="../mainwindow.ui" line="583"/>
|
||||
<source>GamePad Controls</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="572"/>
|
||||
<location filename="../mainwindow.ui" line="588"/>
|
||||
<source>&Run on load</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="577"/>
|
||||
<location filename="../mainwindow.ui" line="593"/>
|
||||
<source>D&ump next frame to log</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="582"/>
|
||||
<location filename="../mainwindow.ui" line="601"/>
|
||||
<source>&Vertex Cache</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="587"/>
|
||||
<location filename="../mainwindow.ui" line="606"/>
|
||||
<source>Memory View Texture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="843"/>
|
||||
<location filename="../mainwindow.ui" line="614"/>
|
||||
<source>Simple 2xAA</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="622"/>
|
||||
<source>Off</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="630"/>
|
||||
<source>2x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="638"/>
|
||||
<source>4x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="646"/>
|
||||
<source>8x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="654"/>
|
||||
<source>16x</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="662"/>
|
||||
<source>Show FPS counter</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="840"/>
|
||||
<source>No translations</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -6,8 +6,8 @@
|
||||
<message>
|
||||
<location filename="../controls.ui" line="20"/>
|
||||
<source>Controls</source>
|
||||
<comment>Control window title</comment>
|
||||
<translation>Układ klawiszy</translation>
|
||||
<comment>Controls window title</comment>
|
||||
<translation type="unfinished">Układ klawiszy</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@ -539,320 +539,360 @@
|
||||
<translation>Język</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="172"/>
|
||||
<location filename="../mainwindow.ui" line="149"/>
|
||||
<source>Anisotropic filtering</source>
|
||||
<translation>Filtrowanie anizotropowe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="185"/>
|
||||
<source>&Help</source>
|
||||
<translation>Pomo&c</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="187"/>
|
||||
<location filename="../mainwindow.ui" line="200"/>
|
||||
<source>&Open...</source>
|
||||
<translation>&Otwórz...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="192"/>
|
||||
<location filename="../mainwindow.ui" line="205"/>
|
||||
<source>&Close</source>
|
||||
<translation>&Zamknij</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="197"/>
|
||||
<location filename="../mainwindow.ui" line="210"/>
|
||||
<source>-</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="202"/>
|
||||
<location filename="../mainwindow.ui" line="215"/>
|
||||
<source>Quickload state</source>
|
||||
<translation>Wczytaj stan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="205"/>
|
||||
<location filename="../mainwindow.ui" line="218"/>
|
||||
<source>F4</source>
|
||||
<translation>F4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="210"/>
|
||||
<location filename="../mainwindow.ui" line="223"/>
|
||||
<source>Quicksave state</source>
|
||||
<translation>Zapisz stan</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="213"/>
|
||||
<location filename="../mainwindow.ui" line="226"/>
|
||||
<source>F2</source>
|
||||
<translation>F2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="218"/>
|
||||
<location filename="../mainwindow.ui" line="231"/>
|
||||
<source>&Load State File...</source>
|
||||
<translation>&Wczytaj plik stanu...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="223"/>
|
||||
<location filename="../mainwindow.ui" line="236"/>
|
||||
<source>&Save State File...</source>
|
||||
<translation>&Zapisz plik stanu...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="228"/>
|
||||
<location filename="../mainwindow.ui" line="241"/>
|
||||
<source>E&xit</source>
|
||||
<translation>Wyj&dź</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="233"/>
|
||||
<location filename="../mainwindow.ui" line="246"/>
|
||||
<source>&Run</source>
|
||||
<translation>&Uruchom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="236"/>
|
||||
<location filename="../mainwindow.ui" line="249"/>
|
||||
<source>F7</source>
|
||||
<translation>F7</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="241"/>
|
||||
<location filename="../mainwindow.ui" line="254"/>
|
||||
<source>&Pause</source>
|
||||
<translation>&Pauza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="244"/>
|
||||
<location filename="../mainwindow.ui" line="257"/>
|
||||
<source>F8</source>
|
||||
<translation>F8</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="249"/>
|
||||
<location filename="../mainwindow.ui" line="262"/>
|
||||
<source>R&eset</source>
|
||||
<translation>&Reset</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="257"/>
|
||||
<location filename="../mainwindow.ui" line="270"/>
|
||||
<source>&Interpreter</source>
|
||||
<translation>&Interpreter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="265"/>
|
||||
<location filename="../mainwindow.ui" line="278"/>
|
||||
<source>&Slightly Faster Interpreter</source>
|
||||
<translation>&Szybszy interpreter</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="273"/>
|
||||
<location filename="../mainwindow.ui" line="286"/>
|
||||
<source>&Dynarec</source>
|
||||
<translation>R&ekompilacja (Dynarec)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="281"/>
|
||||
<location filename="../mainwindow.ui" line="294"/>
|
||||
<source>Load &Map File...</source>
|
||||
<translation>&Wczytaj plik mapy...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="289"/>
|
||||
<location filename="../mainwindow.ui" line="302"/>
|
||||
<source>&Save Map File...</source>
|
||||
<translation>&Zapisz plik mapy...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="297"/>
|
||||
<location filename="../mainwindow.ui" line="310"/>
|
||||
<source>&Reset Symbol Table</source>
|
||||
<translation>Zresetuj &tablicę symboli</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="302"/>
|
||||
<location filename="../mainwindow.ui" line="315"/>
|
||||
<source>&Disassembly</source>
|
||||
<translation>&Deasembler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="305"/>
|
||||
<location filename="../mainwindow.ui" line="318"/>
|
||||
<source>Ctrl+D</source>
|
||||
<translation>Ctrl+D</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="313"/>
|
||||
<location filename="../mainwindow.ui" line="326"/>
|
||||
<source>&Log Console</source>
|
||||
<translation>&Konsola logowania</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="316"/>
|
||||
<location filename="../mainwindow.ui" line="329"/>
|
||||
<source>Ctrl+L</source>
|
||||
<translation>Ctrl+L</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="321"/>
|
||||
<location filename="../mainwindow.ui" line="334"/>
|
||||
<source>Memory &View...</source>
|
||||
<translation>Widok &pamięci...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="324"/>
|
||||
<location filename="../mainwindow.ui" line="337"/>
|
||||
<source>Ctrl+M</source>
|
||||
<translation>Ctrl+M</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="329"/>
|
||||
<location filename="../mainwindow.ui" line="342"/>
|
||||
<source>Keyboard &Controls</source>
|
||||
<translation>Ustawienia &klawiatury</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="334"/>
|
||||
<location filename="../mainwindow.ui" line="347"/>
|
||||
<source>&Toggle Full Screen</source>
|
||||
<translation>&Pełny ekran</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="337"/>
|
||||
<location filename="../mainwindow.ui" line="350"/>
|
||||
<source>F12</source>
|
||||
<translation>F12</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="345"/>
|
||||
<location filename="../mainwindow.ui" line="358"/>
|
||||
<source>&Buffered Rendering</source>
|
||||
<translation>&Buforowane renderowanie</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="348"/>
|
||||
<location filename="../mainwindow.ui" line="361"/>
|
||||
<source>F5</source>
|
||||
<translation>F5</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="356"/>
|
||||
<location filename="../mainwindow.ui" line="369"/>
|
||||
<source>&Hardware Transform</source>
|
||||
<translation>Sprzętowa &transformacja</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="359"/>
|
||||
<location filename="../mainwindow.ui" line="372"/>
|
||||
<source>F6</source>
|
||||
<translation>F6</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="367"/>
|
||||
<location filename="../mainwindow.ui" line="380"/>
|
||||
<source>&Linear Filtering</source>
|
||||
<translation>Filtrowanie &liniowe</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="375"/>
|
||||
<location filename="../mainwindow.ui" line="388"/>
|
||||
<source>&Wireframe (experimental)</source>
|
||||
<translation>&Widok siatki (eksperymentalny)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="383"/>
|
||||
<location filename="../mainwindow.ui" line="396"/>
|
||||
<source>&Display Raw Framebuffer</source>
|
||||
<translation>Wyświetl &surowy framebuffer</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="391"/>
|
||||
<location filename="../mainwindow.ui" line="404"/>
|
||||
<source>&Show Debug Statistics</source>
|
||||
<translation>Pokaż statystyki &emulacji</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="399"/>
|
||||
<location filename="../mainwindow.ui" line="412"/>
|
||||
<source>Screen &1x</source>
|
||||
<translation>&1x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="402"/>
|
||||
<location filename="../mainwindow.ui" line="415"/>
|
||||
<source>Ctrl+1</source>
|
||||
<translation>Ctrl+1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="410"/>
|
||||
<location filename="../mainwindow.ui" line="423"/>
|
||||
<source>Screen &2x</source>
|
||||
<translation>&2x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="413"/>
|
||||
<location filename="../mainwindow.ui" line="426"/>
|
||||
<source>Ctrl+2</source>
|
||||
<translation>Ctrl+2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="421"/>
|
||||
<location filename="../mainwindow.ui" line="434"/>
|
||||
<source>Screen &3x</source>
|
||||
<translation>&3x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="424"/>
|
||||
<location filename="../mainwindow.ui" line="437"/>
|
||||
<source>Ctrl+3</source>
|
||||
<translation>Ctrl+3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="432"/>
|
||||
<location filename="../mainwindow.ui" line="445"/>
|
||||
<source>Screen &4x</source>
|
||||
<translation>&4x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="435"/>
|
||||
<location filename="../mainwindow.ui" line="448"/>
|
||||
<source>Ctrl+4</source>
|
||||
<translation>Ctrl+4</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="443"/>
|
||||
<location filename="../mainwindow.ui" line="456"/>
|
||||
<source>&Fast Memory (dynarec, unstable)</source>
|
||||
<translation>S&zybka pamięć (wymagany Dynarec, niestabilne)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="451"/>
|
||||
<location filename="../mainwindow.ui" line="464"/>
|
||||
<source>&Ignore illegal reads/writes</source>
|
||||
<translation>&Ignoruj nieprawidłowe odczyty/zapisy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="456"/>
|
||||
<location filename="../mainwindow.ui" line="469"/>
|
||||
<source>&Go to http://www.ppsspp.org/</source>
|
||||
<translation>&Idź do http://www.ppsspp.org</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="461"/>
|
||||
<location filename="../mainwindow.ui" line="474"/>
|
||||
<source>&About PPSSPP...</source>
|
||||
<translation>&O PPSSPP...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="466"/>
|
||||
<location filename="../mainwindow.ui" line="482"/>
|
||||
<source>&Use VBO</source>
|
||||
<translation>Użyj &VBO</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="474"/>
|
||||
<location filename="../mainwindow.ui" line="506"/>
|
||||
<location filename="../mainwindow.ui" line="538"/>
|
||||
<location filename="../mainwindow.ui" line="490"/>
|
||||
<location filename="../mainwindow.ui" line="522"/>
|
||||
<location filename="../mainwindow.ui" line="554"/>
|
||||
<source>Debug</source>
|
||||
<translation>Debug</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="482"/>
|
||||
<location filename="../mainwindow.ui" line="514"/>
|
||||
<location filename="../mainwindow.ui" line="546"/>
|
||||
<location filename="../mainwindow.ui" line="498"/>
|
||||
<location filename="../mainwindow.ui" line="530"/>
|
||||
<location filename="../mainwindow.ui" line="562"/>
|
||||
<source>Warning</source>
|
||||
<translation>Ostrzeżenia</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="490"/>
|
||||
<location filename="../mainwindow.ui" line="530"/>
|
||||
<location filename="../mainwindow.ui" line="562"/>
|
||||
<location filename="../mainwindow.ui" line="506"/>
|
||||
<location filename="../mainwindow.ui" line="546"/>
|
||||
<location filename="../mainwindow.ui" line="578"/>
|
||||
<source>Error</source>
|
||||
<translation>Błędy</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="498"/>
|
||||
<location filename="../mainwindow.ui" line="522"/>
|
||||
<location filename="../mainwindow.ui" line="554"/>
|
||||
<location filename="../mainwindow.ui" line="514"/>
|
||||
<location filename="../mainwindow.ui" line="538"/>
|
||||
<location filename="../mainwindow.ui" line="570"/>
|
||||
<source>Info</source>
|
||||
<translation>Info</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="567"/>
|
||||
<location filename="../mainwindow.ui" line="583"/>
|
||||
<source>GamePad Controls</source>
|
||||
<translation>Ustawienia pada</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="572"/>
|
||||
<location filename="../mainwindow.ui" line="588"/>
|
||||
<source>&Run on load</source>
|
||||
<translation>Uruchom po &załadowaniu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="577"/>
|
||||
<location filename="../mainwindow.ui" line="593"/>
|
||||
<source>D&ump next frame to log</source>
|
||||
<translation>Z&rzuć następną ramkę do logu</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="582"/>
|
||||
<location filename="../mainwindow.ui" line="601"/>
|
||||
<source>&Vertex Cache</source>
|
||||
<translation>&Cache wierzchołków</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="587"/>
|
||||
<location filename="../mainwindow.ui" line="606"/>
|
||||
<source>Memory View Texture...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="843"/>
|
||||
<location filename="../mainwindow.ui" line="614"/>
|
||||
<source>Simple 2xAA</source>
|
||||
<translation>Prosty antyaliasing 2x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="622"/>
|
||||
<source>Off</source>
|
||||
<translation>Wyłączone</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="630"/>
|
||||
<source>2x</source>
|
||||
<translation>2x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="638"/>
|
||||
<source>4x</source>
|
||||
<translation>4x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="646"/>
|
||||
<source>8x</source>
|
||||
<translation>8x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="654"/>
|
||||
<source>16x</source>
|
||||
<translation>16x</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.ui" line="662"/>
|
||||
<source>Show FPS counter</source>
|
||||
<translation>Pokaż licznik FPS</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../mainwindow.cpp" line="840"/>
|
||||
<source>No translations</source>
|
||||
<translation>Brak tłumaczeń</translation>
|
||||
</message>
|
||||
|
1009
Qt/languages/ppsspp_tc.ts
Normal file
1009
Qt/languages/ppsspp_tc.ts
Normal file
File diff suppressed because it is too large
Load Diff
@ -38,18 +38,15 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
gamePadDlg = new GamePadDialog(&input_state, this);
|
||||
#endif
|
||||
|
||||
SetPlaying(0);
|
||||
|
||||
host = new QtHost(this);
|
||||
w = ui->widget;
|
||||
w->init(&input_state);
|
||||
w->resize(pixel_xres, pixel_yres);
|
||||
w->setMinimumSize(pixel_xres, pixel_yres);
|
||||
w->setMaximumSize(pixel_xres, pixel_yres);
|
||||
QObject::connect( w, SIGNAL(doubleClick()), this, SLOT(on_action_OptionsFullScreen_triggered()) );
|
||||
emugl = ui->widget;
|
||||
emugl->init(&input_state);
|
||||
emugl->resize(pixel_xres, pixel_yres);
|
||||
emugl->setMinimumSize(pixel_xres, pixel_yres);
|
||||
emugl->setMaximumSize(pixel_xres, pixel_yres);
|
||||
QObject::connect( emugl, SIGNAL(doubleClick()), this, SLOT(on_action_OptionsFullScreen_triggered()) );
|
||||
|
||||
createLanguageMenu();
|
||||
|
||||
UpdateMenus();
|
||||
|
||||
int zoom = g_Config.iWindowZoom;
|
||||
@ -57,19 +54,20 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
if (zoom > 4) zoom = 4;
|
||||
SetZoom(zoom);
|
||||
|
||||
EmuThread_Start(w);
|
||||
EmuThread_Start(emugl);
|
||||
|
||||
if (!fileToStart.isNull())
|
||||
{
|
||||
SetPlaying(fileToStart);
|
||||
//Update();
|
||||
SetGameTitle(fileToStart);
|
||||
UpdateMenus();
|
||||
|
||||
EmuThread_StartGame(fileToStart);
|
||||
}
|
||||
|
||||
if (!fileToStart.isNull() && stateToLoad != NULL)
|
||||
SaveState::Load(stateToLoad);
|
||||
if (stateToLoad != NULL)
|
||||
SaveState::Load(stateToLoad);
|
||||
}
|
||||
else
|
||||
SetGameTitle("");
|
||||
}
|
||||
|
||||
MainWindow::~MainWindow()
|
||||
@ -164,26 +162,17 @@ void NativeInit(int argc, const char *argv[], const char *savegame_directory, co
|
||||
g_Config.memCardDirectory = std::string(getenv("HOME"))+"/.ppsspp/";
|
||||
g_Config.flashDirectory = g_Config.memCardDirectory+"/flash/";
|
||||
|
||||
|
||||
LogManager::Init();
|
||||
if (fileToLog != NULL)
|
||||
LogManager::GetInstance()->ChangeFileLog(fileToLog);
|
||||
//LogManager::GetInstance()->GetConsoleListener()->Open(hideLog, 150, 120, "PPSSPP Debug Console");
|
||||
LogManager::GetInstance()->SetLogLevel(LogTypes::G3D, LogTypes::LERROR);
|
||||
}
|
||||
LogManager::GetInstance()->ChangeFileLog(fileToLog);
|
||||
|
||||
void MainWindow::SetPlaying(QString text)
|
||||
{
|
||||
if (text == 0)
|
||||
{
|
||||
QString title = "PPSSPP " + QString(PPSSPP_VERSION_STR);
|
||||
setWindowTitle(title);
|
||||
}
|
||||
else
|
||||
{
|
||||
QString title = "PPSSPP " + QString(PPSSPP_VERSION_STR) + "-" + text;
|
||||
setWindowTitle(title);
|
||||
}
|
||||
LogManager::GetInstance()->SetLogLevel(LogTypes::G3D, LogTypes::LERROR);
|
||||
|
||||
#if !defined(USING_GLES2)
|
||||
// Start Desktop UI
|
||||
MainWindow* mainWindow = new MainWindow();
|
||||
mainWindow->show();
|
||||
#endif
|
||||
}
|
||||
|
||||
void MainWindow::SetNextState(CoreState state)
|
||||
@ -191,6 +180,15 @@ void MainWindow::SetNextState(CoreState state)
|
||||
nextState = state;
|
||||
}
|
||||
|
||||
void MainWindow::SetGameTitle(QString text)
|
||||
{
|
||||
QString title = "PPSSPP " + QString(PPSSPP_VERSION_STR);
|
||||
if (text != "")
|
||||
title += QString(" - %1").arg(text);
|
||||
|
||||
setWindowTitle(title);
|
||||
}
|
||||
|
||||
void MainWindow::BrowseAndBoot(void)
|
||||
{
|
||||
QString filename = QFileDialog::getOpenFileName(NULL, "Load File", g_Config.currentDirectory.c_str(), "PSP ROMs (*.pbp *.elf *.iso *.cso *.prx)");
|
||||
@ -245,6 +243,12 @@ void MainWindow::UpdateMenus()
|
||||
ui->action_EmulationRunLoad->setChecked(g_Config.bAutoRun);
|
||||
ui->action_OptionsUseVBO->setChecked(g_Config.bUseVBO);
|
||||
ui->action_OptionsVertexCache->setChecked(g_Config.bVertexCache);
|
||||
ui->action_AFOff->setChecked(g_Config.iAnisotropyLevel == 0);
|
||||
ui->action_AF2x->setChecked(g_Config.iAnisotropyLevel == 2);
|
||||
ui->action_AF4x->setChecked(g_Config.iAnisotropyLevel == 4);
|
||||
ui->action_AF8x->setChecked(g_Config.iAnisotropyLevel == 8);
|
||||
ui->action_AF16x->setChecked(g_Config.iAnisotropyLevel == 16);
|
||||
ui->action_Show_FPS_counter->setChecked(g_Config.bShowFPSCounter);
|
||||
|
||||
bool enable = !Core_IsStepping() ? false : true;
|
||||
ui->action_EmulationRun->setEnabled(g_State.bEmuThreadStarted ? enable : false);
|
||||
@ -261,6 +265,9 @@ void MainWindow::UpdateMenus()
|
||||
ui->action_CPUInterpreter->setEnabled(enable);
|
||||
ui->action_CPUFastInterpreter->setEnabled(enable);
|
||||
ui->action_EmulationStop->setEnabled(!enable);
|
||||
ui->action_DebugDumpFrame->setEnabled(!enable);
|
||||
ui->action_DebugDisassembly->setEnabled(!enable);
|
||||
ui->action_DebugMemoryView->setEnabled(!enable);
|
||||
|
||||
ui->action_OptionsScreen1x->setChecked(0 == (g_Config.iWindowZoom - 1));
|
||||
ui->action_OptionsScreen2x->setChecked(1 == (g_Config.iWindowZoom - 1));
|
||||
@ -292,9 +299,9 @@ void MainWindow::SetZoom(float zoom) {
|
||||
dp_xres = pixel_xres;
|
||||
dp_yres = pixel_yres;
|
||||
|
||||
w->resize(pixel_xres, pixel_yres);
|
||||
w->setMinimumSize(pixel_xres, pixel_yres);
|
||||
w->setMaximumSize(pixel_xres, pixel_yres);
|
||||
emugl->resize(pixel_xres, pixel_yres);
|
||||
emugl->setMinimumSize(pixel_xres, pixel_yres);
|
||||
emugl->setMaximumSize(pixel_xres, pixel_yres);
|
||||
|
||||
ui->centralwidget->setFixedSize(pixel_xres, pixel_yres);
|
||||
ui->centralwidget->resize(pixel_xres, pixel_yres);
|
||||
@ -339,8 +346,7 @@ void MainWindow::on_action_EmulationStop_triggered()
|
||||
memoryWindow->close();
|
||||
|
||||
EmuThread_StopGame();
|
||||
SetPlaying(0);
|
||||
Update();
|
||||
SetGameTitle("");
|
||||
UpdateMenus();
|
||||
}
|
||||
|
||||
@ -596,8 +602,8 @@ void MainWindow::on_action_OptionsFullScreen_triggered()
|
||||
ui->statusbar->setVisible(false);
|
||||
|
||||
// Remove constraint
|
||||
w->setMinimumSize(0, 0);
|
||||
w->setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
|
||||
emugl->setMinimumSize(0, 0);
|
||||
emugl->setMaximumSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
|
||||
ui->centralwidget->setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
|
||||
setFixedSize(QWIDGETSIZE_MAX, QWIDGETSIZE_MAX);
|
||||
|
||||
@ -820,7 +826,7 @@ void MainWindow::loadLanguage(const QString& language)
|
||||
QLocale locale = QLocale(currentLanguage);
|
||||
QLocale::setDefault(locale);
|
||||
QString languageName = QLocale::languageToString(locale.language());
|
||||
switchTranslator(translator, QString("languages/ppsspp_%1.qm").arg(language));
|
||||
switchTranslator(translator, QString(":/languages/ppsspp_%1.qm").arg(language));
|
||||
}
|
||||
}
|
||||
|
||||
@ -833,10 +839,7 @@ void MainWindow::createLanguageMenu()
|
||||
|
||||
QString defaultLocale = QLocale::system().name();
|
||||
defaultLocale.truncate(defaultLocale.lastIndexOf('_'));
|
||||
languagePath = QApplication::applicationDirPath();
|
||||
languagePath.append("/languages");
|
||||
QDir langDir(languagePath);
|
||||
QStringList fileNames = langDir.entryList(QStringList("ppsspp_*.qm"));
|
||||
QStringList fileNames = QDir(":/languages").entryList(QStringList("ppsspp_*.qm"));
|
||||
|
||||
if (fileNames.size() == 0)
|
||||
{
|
||||
@ -853,8 +856,11 @@ void MainWindow::createLanguageMenu()
|
||||
locale.truncate(locale.lastIndexOf('.'));
|
||||
locale.remove(0, locale.indexOf('_') + 1);
|
||||
|
||||
//QString language = QLocale::languageToString(QLocale(locale).language());
|
||||
#if QT_VERSION >= 0x040800
|
||||
QString language = QLocale(locale).nativeLanguageName();
|
||||
#else
|
||||
QString language = QLocale::languageToString(QLocale(locale).language());
|
||||
#endif
|
||||
QAction *action = new QAction(language, this);
|
||||
action->setCheckable(true);
|
||||
action->setData(locale);
|
||||
@ -946,3 +952,45 @@ void MainWindow::on_action_OptionsUseVBO_triggered()
|
||||
g_Config.bUseVBO = !g_Config.bUseVBO;
|
||||
UpdateMenus();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_Simple_2xAA_triggered()
|
||||
{
|
||||
g_Config.SSAntiAliasing = !g_Config.SSAntiAliasing;
|
||||
UpdateMenus();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_AFOff_triggered()
|
||||
{
|
||||
g_Config.iAnisotropyLevel = 0;
|
||||
UpdateMenus();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_AF2x_triggered()
|
||||
{
|
||||
g_Config.iAnisotropyLevel = 2;
|
||||
UpdateMenus();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_AF4x_triggered()
|
||||
{
|
||||
g_Config.iAnisotropyLevel = 4;
|
||||
UpdateMenus();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_AF8x_triggered()
|
||||
{
|
||||
g_Config.iAnisotropyLevel = 8;
|
||||
UpdateMenus();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_AF16x_triggered()
|
||||
{
|
||||
g_Config.iAnisotropyLevel = 16;
|
||||
UpdateMenus();
|
||||
}
|
||||
|
||||
void MainWindow::on_action_Show_FPS_counter_triggered()
|
||||
{
|
||||
g_Config.bShowFPSCounter = !g_Config.bShowFPSCounter;
|
||||
UpdateMenus();
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ public:
|
||||
void Create(int argc, const char *argv[], const char *savegame_directory, const char *external_directory, const char *installID);
|
||||
void BrowseAndBoot();
|
||||
void SetNextState(CoreState state);
|
||||
void SetPlaying(QString text);
|
||||
void SetGameTitle(QString text);
|
||||
|
||||
Debugger_Disasm* GetDialogDisasm() { return dialogDisasm; }
|
||||
Debugger_Memory* GetDialogMemory() { return memoryWindow; }
|
||||
@ -153,6 +153,20 @@ private slots:
|
||||
|
||||
void on_action_OptionsUseVBO_triggered();
|
||||
|
||||
void on_action_Simple_2xAA_triggered();
|
||||
|
||||
void on_action_AFOff_triggered();
|
||||
|
||||
void on_action_AF2x_triggered();
|
||||
|
||||
void on_action_AF4x_triggered();
|
||||
|
||||
void on_action_AF8x_triggered();
|
||||
|
||||
void on_action_AF16x_triggered();
|
||||
|
||||
void on_action_Show_FPS_counter_triggered();
|
||||
|
||||
private:
|
||||
void loadLanguage(const QString &language);
|
||||
void createLanguageMenu();
|
||||
@ -163,9 +177,9 @@ private:
|
||||
QString currentLanguage;
|
||||
QString languagePath;
|
||||
|
||||
Ui::MainWindow *ui;
|
||||
Ui::MainWindow *ui;
|
||||
|
||||
QtEmuGL* w;
|
||||
QtEmuGL* emugl;
|
||||
CoreState nextState;
|
||||
|
||||
InputState input_state;
|
||||
|
@ -144,6 +144,16 @@
|
||||
<string>Language</string>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QMenu" name="menuAnisotropic_filtering">
|
||||
<property name="title">
|
||||
<string>Anisotropic filtering</string>
|
||||
</property>
|
||||
<addaction name="action_AFOff"/>
|
||||
<addaction name="action_AF2x"/>
|
||||
<addaction name="action_AF4x"/>
|
||||
<addaction name="action_AF8x"/>
|
||||
<addaction name="action_AF16x"/>
|
||||
</widget>
|
||||
<addaction name="action_OptionsControls"/>
|
||||
<addaction name="action_OptionsGamePadControls"/>
|
||||
<addaction name="separator"/>
|
||||
@ -151,12 +161,15 @@
|
||||
<addaction name="action_OptionsBufferedRendering"/>
|
||||
<addaction name="action_OptionsHardwareTransform"/>
|
||||
<addaction name="action_OptionsLinearFiltering"/>
|
||||
<addaction name="action_Simple_2xAA"/>
|
||||
<addaction name="menuAnisotropic_filtering"/>
|
||||
<addaction name="action_OptionsUseVBO"/>
|
||||
<addaction name="action_OptionsVertexCache"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="action_OptionsWireframe"/>
|
||||
<addaction name="action_OptionsDisplayRawFramebuffer"/>
|
||||
<addaction name="action_OptionsShowDebugStatistics"/>
|
||||
<addaction name="action_Show_FPS_counter"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="menu_Log_Levels"/>
|
||||
<addaction name="separator"/>
|
||||
@ -462,6 +475,9 @@
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_OptionsUseVBO">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Use VBO</string>
|
||||
</property>
|
||||
@ -578,6 +594,9 @@
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_OptionsVertexCache">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>&Vertex Cache</string>
|
||||
</property>
|
||||
@ -587,6 +606,62 @@
|
||||
<string>Memory View Texture...</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_Simple_2xAA">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Simple 2xAA</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_AFOff">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Off</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_AF2x">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>2x</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_AF4x">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>4x</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_AF8x">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>8x</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_AF16x">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>16x</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="action_Show_FPS_counter">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Show FPS counter</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
@ -17,4 +17,10 @@
|
||||
<file alias="breakpointDisable">resources/stop1.ico</file>
|
||||
<file alias="breakpoint">resources/icon1.ico</file>
|
||||
</qresource>
|
||||
<qresource prefix="/">
|
||||
<file>languages/ppsspp_cn.qm</file>
|
||||
<file>languages/ppsspp_en.qm</file>
|
||||
<file>languages/ppsspp_fr.qm</file>
|
||||
<file>languages/ppsspp_pl.qm</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
15
README.md
15
README.md
@ -100,15 +100,30 @@ to get Eclipse to rebuild the project.
|
||||
Also note that the `Visual Studio` generators aren't compatible with compilers
|
||||
other than Microsoft's, but `NMake Makefiles` works fine.
|
||||
|
||||
Building for iOS
|
||||
----------------
|
||||
|
||||
Note: This does not work yet.
|
||||
|
||||
Create a `build-ios` directory and inside it run:
|
||||
|
||||
cmake -DCMAKE_TOOLCHAIN_FILE=../ios/ios.toolchain.cmake -GXcode ..
|
||||
|
||||
Then open the generated project in Xcode.
|
||||
|
||||
For more information, see: http://code.google.com/p/ios-cmake/wiki/HowTo
|
||||
|
||||
Building for Blackberry
|
||||
-----------------------
|
||||
|
||||
To build for Blackberry, you must first have the [latest Native SDK][blackberry-ndk] installed.
|
||||
|
||||
To set up your environment for cross-compiling you must then use:
|
||||
|
||||
source ~/bbndk/bbndk-env.sh
|
||||
|
||||
Finally, you are ready to compile. Go to ppsspp/Blackberry/ and run:
|
||||
|
||||
./build.sh
|
||||
|
||||
If you are on Windows, you will need GNU and CMake to run the bash script.
|
||||
|
@ -441,6 +441,12 @@ namespace MainWindow
|
||||
UpdateMenus();
|
||||
break;
|
||||
|
||||
case ID_OPTIONS_STRETCHDISPLAY:
|
||||
g_Config.bStretchToDisplay = !g_Config.bStretchToDisplay;
|
||||
UpdateMenus();
|
||||
gpu->Resized(); // easy way to force a clear...
|
||||
break;
|
||||
|
||||
case ID_FILE_EXIT:
|
||||
DestroyWindow(hWnd);
|
||||
break;
|
||||
@ -705,6 +711,7 @@ namespace MainWindow
|
||||
CHECKITEM(ID_OPTIONS_FASTMEMORY, g_Config.bFastMemory);
|
||||
CHECKITEM(ID_OPTIONS_LINEARFILTERING, g_Config.bLinearFiltering);
|
||||
CHECKITEM(ID_OPTIONS_SIMPLE2XSSAA, g_Config.SSAntiAliasing);
|
||||
CHECKITEM(ID_OPTIONS_STRETCHDISPLAY, g_Config.bStretchToDisplay);
|
||||
CHECKITEM(ID_EMULATION_RUNONLOAD, g_Config.bAutoRun);
|
||||
CHECKITEM(ID_OPTIONS_USEVBO, g_Config.bUseVBO);
|
||||
CHECKITEM(ID_OPTIONS_DISABLEG3DLOG, g_Config.bDisableG3DLog);
|
||||
|
@ -253,6 +253,7 @@ BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Toggle Full Screen\tF12", ID_OPTIONS_FULLSCREEN
|
||||
MENUITEM "&Buffered Rendering\tF5", ID_OPTIONS_BUFFEREDRENDERING
|
||||
MENUITEM "&Stretch to display", ID_OPTIONS_STRETCHDISPLAY
|
||||
MENUITEM "&Hardware Transform\tF6", ID_OPTIONS_HARDWARETRANSFORM
|
||||
MENUITEM "&Linear Filtering", ID_OPTIONS_LINEARFILTERING
|
||||
MENUITEM "Si&mple 2x SSAA", ID_OPTIONS_SIMPLE2XSSAA
|
||||
|
@ -259,6 +259,7 @@
|
||||
#define ID_OPTIONS_DISABLEG3DLOG 40135
|
||||
#define ID_OPTIONS_VERTEXCACHE 40136
|
||||
#define ID_OPTIONS_SHOWFPS 40137
|
||||
#define ID_OPTIONS_STRETCHDISPLAY 40138
|
||||
#define IDC_STATIC -1
|
||||
|
||||
// Next default values for new objects
|
||||
@ -266,7 +267,7 @@
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 233
|
||||
#define _APS_NEXT_COMMAND_VALUE 40138
|
||||
#define _APS_NEXT_COMMAND_VALUE 40139
|
||||
#define _APS_NEXT_CONTROL_VALUE 1163
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
|
@ -32,6 +32,9 @@ TouchButton buttonLeft(&ui_atlas, I_DIR, I_ARROW, PAD_BUTTON_LEFT, 0);
|
||||
TouchButton buttonUp(&ui_atlas, I_DIR, I_ARROW, PAD_BUTTON_UP, 90);
|
||||
TouchButton buttonRight(&ui_atlas, I_DIR, I_ARROW, PAD_BUTTON_RIGHT, 180);
|
||||
TouchButton buttonDown(&ui_atlas, I_DIR, I_ARROW, PAD_BUTTON_DOWN, 270);
|
||||
#ifdef __SYMBIAN32__
|
||||
TouchButton buttonPause(&ui_atlas, I_RECT, I_ARROW, PAD_BUTTON_BACK, 90);
|
||||
#endif
|
||||
|
||||
TouchStick leftStick(&ui_atlas, I_STICKBG, I_STICK, 0);
|
||||
|
||||
@ -72,6 +75,10 @@ void LayoutGamepad(int w, int h)
|
||||
buttonLShoulder.setPos(button_spacing + 10 * controlScale, 15 * controlScale, controlScale);
|
||||
buttonRShoulder.setPos(w - button_spacing - 10 * controlScale, 15 * controlScale, controlScale);
|
||||
|
||||
#ifdef __SYMBIAN32__
|
||||
buttonPause.setPos(halfW, 15 * controlScale, controlScale);
|
||||
#endif
|
||||
|
||||
leftStick.setPos(stickX, stickY, controlScale);
|
||||
}
|
||||
|
||||
@ -94,6 +101,10 @@ void UpdateGamepad(InputState &input_state)
|
||||
buttonLShoulder.update(input_state);
|
||||
buttonRShoulder.update(input_state);
|
||||
|
||||
#ifdef __SYMBIAN32__
|
||||
buttonPause.update(input_state);
|
||||
#endif
|
||||
|
||||
if (g_Config.bShowAnalogStick)
|
||||
leftStick.update(input_state);
|
||||
}
|
||||
@ -117,6 +128,10 @@ void DrawGamepad(DrawBuffer &db)
|
||||
buttonLShoulder.draw(db, color, colorOverlay);
|
||||
buttonRShoulder.draw(db, color, colorOverlay);
|
||||
|
||||
#ifdef __SYMBIAN32__
|
||||
buttonPause.draw(db, color, colorOverlay);
|
||||
#endif
|
||||
|
||||
if (g_Config.bShowAnalogStick)
|
||||
leftStick.draw(db, color);
|
||||
}
|
||||
|
@ -170,7 +170,7 @@ void MenuScreen::render() {
|
||||
VLinear vlinear(dp_xres + xoff, 95, 20);
|
||||
|
||||
if (UIButton(GEN_ID, vlinear, w, "Load...", ALIGN_RIGHT)) {
|
||||
#if defined(USING_QT_UI) && defined(__SYMBIAN32__)
|
||||
#if defined(USING_QT_UI)
|
||||
QString fileName = QFileDialog::getOpenFileName(NULL, "Load ROM", g_Config.currentDirectory.c_str(), "PSP ROMs (*.iso *.cso *.pbp *.elf)");
|
||||
if (QFile::exists(fileName)) {
|
||||
QDir newPath;
|
||||
@ -245,6 +245,11 @@ void InGameMenuScreen::render() {
|
||||
int x = 30;
|
||||
int y = 50;
|
||||
UICheckBox(GEN_ID, x, y += 50, "Show Debug Statistics", ALIGN_TOPLEFT, &g_Config.bShowDebugStats);
|
||||
UICheckBox(GEN_ID, x, y += 50, "Show FPS", ALIGN_TOPLEFT, &g_Config.bShowFPSCounter);
|
||||
|
||||
// TODO: Maybe shouldn't show this if the screen ratios are very close...
|
||||
UICheckBox(GEN_ID, x, y += 50, "Stretch to display", ALIGN_TOPLEFT, &g_Config.bStretchToDisplay);
|
||||
|
||||
UICheckBox(GEN_ID, x, y += 50, "Hardware Transform", ALIGN_TOPLEFT, &g_Config.bHardwareTransform);
|
||||
|
||||
// TODO: Add UI for more than one slot.
|
||||
@ -461,7 +466,8 @@ static const char *credits[] =
|
||||
"Android SDK + NDK",
|
||||
#elif defined(BLACKBERRY)
|
||||
"Blackberry NDK",
|
||||
#elif defined(USING_QT_UI)
|
||||
#endif
|
||||
#if defined(USING_QT_UI)
|
||||
"Qt",
|
||||
#else
|
||||
"SDL",
|
||||
|
@ -89,6 +89,7 @@ void UIShader_Prepare()
|
||||
glstate.depthTest.disable();
|
||||
glstate.scissorTest.disable();
|
||||
glstate.stencilTest.disable();
|
||||
glstate.dither.enable();
|
||||
|
||||
glstate.blend.enable();
|
||||
glstate.blendFunc.set(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
190
ios/ios.toolchain.cmake
Normal file
190
ios/ios.toolchain.cmake
Normal file
@ -0,0 +1,190 @@
|
||||
# This file is based off of the Platform/Darwin.cmake and Platform/UnixPaths.cmake
|
||||
# files which are included with CMake 2.8.4
|
||||
# It has been altered for iOS development
|
||||
|
||||
# Options:
|
||||
#
|
||||
# IOS_PLATFORM = OS (default) or SIMULATOR
|
||||
# This decides if SDKS will be selected from the iPhoneOS.platform or iPhoneSimulator.platform folders
|
||||
# OS - the default, used to build for iPhone and iPad physical devices, which have an arm arch.
|
||||
# SIMULATOR - used to build for the Simulator platforms, which have an x86 arch.
|
||||
#
|
||||
# CMAKE_IOS_DEVELOPER_ROOT = automatic(default) or /path/to/platform/Developer folder
|
||||
# By default this location is automatcially chosen based on the IOS_PLATFORM value above.
|
||||
# If set manually, it will override the default location and force the user of a particular Developer Platform
|
||||
#
|
||||
# CMAKE_IOS_SDK_ROOT = automatic(default) or /path/to/platform/Developer/SDKs/SDK folder
|
||||
# By default this location is automatcially chosen based on the CMAKE_IOS_DEVELOPER_ROOT value.
|
||||
# In this case it will always be the most up-to-date SDK found in the CMAKE_IOS_DEVELOPER_ROOT path.
|
||||
# If set manually, this will force the use of a specific SDK version
|
||||
|
||||
# Macros:
|
||||
#
|
||||
# set_xcode_property (TARGET XCODE_PROPERTY XCODE_VALUE)
|
||||
# A convenience macro for setting xcode specific properties on targets
|
||||
# example: set_xcode_property (myioslib IPHONEOS_DEPLOYMENT_TARGET "3.1")
|
||||
#
|
||||
# find_host_package (PROGRAM ARGS)
|
||||
# A macro used to find executable programs on the host system, not within the iOS environment.
|
||||
# Thanks to the android-cmake project for providing the command
|
||||
|
||||
|
||||
# Standard settings
|
||||
set (CMAKE_SYSTEM_NAME Darwin)
|
||||
set (CMAKE_SYSTEM_VERSION 1)
|
||||
set (UNIX True)
|
||||
set (APPLE True)
|
||||
set (IOS True)
|
||||
|
||||
# Determine the cmake host system version so we know where to find the iOS SDKs
|
||||
find_program (CMAKE_UNAME uname /bin /usr/bin /usr/local/bin)
|
||||
if (CMAKE_UNAME)
|
||||
exec_program(uname ARGS -r OUTPUT_VARIABLE CMAKE_HOST_SYSTEM_VERSION)
|
||||
string (REGEX REPLACE "^([0-9]+)\\.([0-9]+).*$" "\\1" DARWIN_MAJOR_VERSION "${CMAKE_HOST_SYSTEM_VERSION}")
|
||||
endif (CMAKE_UNAME)
|
||||
|
||||
# Force the compilers to gcc for iOS
|
||||
include (CMakeForceCompiler)
|
||||
CMAKE_FORCE_C_COMPILER (gcc gcc)
|
||||
CMAKE_FORCE_CXX_COMPILER (g++ g++)
|
||||
|
||||
# Skip the platform compiler checks for cross compiling
|
||||
set (CMAKE_CXX_COMPILER_WORKS TRUE)
|
||||
set (CMAKE_C_COMPILER_WORKS TRUE)
|
||||
|
||||
# All iOS/Darwin specific settings - some may be redundant
|
||||
set (CMAKE_SHARED_LIBRARY_PREFIX "lib")
|
||||
set (CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
|
||||
set (CMAKE_SHARED_MODULE_PREFIX "lib")
|
||||
set (CMAKE_SHARED_MODULE_SUFFIX ".so")
|
||||
set (CMAKE_MODULE_EXISTS 1)
|
||||
set (CMAKE_DL_LIBS "")
|
||||
|
||||
set (CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
|
||||
set (CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
|
||||
set (CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
|
||||
set (CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
|
||||
|
||||
# Hidden visibilty is required for cxx on iOS
|
||||
set (CMAKE_C_FLAGS_INIT "")
|
||||
set (CMAKE_CXX_FLAGS_INIT "-headerpad_max_install_names -fvisibility=hidden -fvisibility-inlines-hidden")
|
||||
|
||||
set (CMAKE_C_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_C_LINK_FLAGS}")
|
||||
set (CMAKE_CXX_LINK_FLAGS "-Wl,-search_paths_first ${CMAKE_CXX_LINK_FLAGS}")
|
||||
|
||||
set (CMAKE_PLATFORM_HAS_INSTALLNAME 1)
|
||||
set (CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib -headerpad_max_install_names")
|
||||
set (CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle -headerpad_max_install_names")
|
||||
set (CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
|
||||
set (CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
|
||||
set (CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a")
|
||||
|
||||
# hack: if a new cmake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old build tree
|
||||
# (where install_name_tool was hardcoded) and where CMAKE_INSTALL_NAME_TOOL isn't in the cache
|
||||
# and still cmake didn't fail in CMakeFindBinUtils.cmake (because it isn't rerun)
|
||||
# hardcode CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did before, Alex
|
||||
if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
|
||||
find_program(CMAKE_INSTALL_NAME_TOOL install_name_tool)
|
||||
endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
|
||||
|
||||
# Setup iOS platform unless specified manually with IOS_PLATFORM
|
||||
if (NOT DEFINED IOS_PLATFORM)
|
||||
set (IOS_PLATFORM "OS")
|
||||
endif (NOT DEFINED IOS_PLATFORM)
|
||||
set (IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS Platform")
|
||||
|
||||
# Check the platform selection and setup for developer root
|
||||
if (${IOS_PLATFORM} STREQUAL "OS")
|
||||
set (IOS_PLATFORM_LOCATION "iPhoneOS.platform")
|
||||
|
||||
# This causes the installers to properly locate the output libraries
|
||||
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphoneos")
|
||||
elseif (${IOS_PLATFORM} STREQUAL "SIMULATOR")
|
||||
set (IOS_PLATFORM_LOCATION "iPhoneSimulator.platform")
|
||||
|
||||
# This causes the installers to properly locate the output libraries
|
||||
set (CMAKE_XCODE_EFFECTIVE_PLATFORMS "-iphonesimulator")
|
||||
else (${IOS_PLATFORM} STREQUAL "OS")
|
||||
message (FATAL_ERROR "Unsupported IOS_PLATFORM value selected. Please choose OS or SIMULATOR")
|
||||
endif (${IOS_PLATFORM} STREQUAL "OS")
|
||||
|
||||
# Setup iOS developer location unless specified manually with CMAKE_IOS_DEVELOPER_ROOT
|
||||
# Note Xcode 4.3 changed the installation location, choose the most recent one available
|
||||
set (XCODE_POST_43_ROOT "/Applications/Xcode.app/Contents/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer")
|
||||
set (XCODE_PRE_43_ROOT "/Developer/Platforms/${IOS_PLATFORM_LOCATION}/Developer")
|
||||
if (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT)
|
||||
if (EXISTS ${XCODE_POST_43_ROOT})
|
||||
set (CMAKE_IOS_DEVELOPER_ROOT ${XCODE_POST_43_ROOT})
|
||||
elseif(EXISTS ${XCODE_PRE_43_ROOT})
|
||||
set (CMAKE_IOS_DEVELOPER_ROOT ${XCODE_PRE_43_ROOT})
|
||||
endif (EXISTS ${XCODE_POST_43_ROOT})
|
||||
endif (NOT DEFINED CMAKE_IOS_DEVELOPER_ROOT)
|
||||
set (CMAKE_IOS_DEVELOPER_ROOT ${CMAKE_IOS_DEVELOPER_ROOT} CACHE PATH "Location of iOS Platform")
|
||||
|
||||
# Find and use the most recent iOS sdk unless specified manually with CMAKE_IOS_SDK_ROOT
|
||||
if (NOT DEFINED CMAKE_IOS_SDK_ROOT)
|
||||
file (GLOB _CMAKE_IOS_SDKS "${CMAKE_IOS_DEVELOPER_ROOT}/SDKs/*")
|
||||
if (_CMAKE_IOS_SDKS)
|
||||
list (SORT _CMAKE_IOS_SDKS)
|
||||
list (REVERSE _CMAKE_IOS_SDKS)
|
||||
list (GET _CMAKE_IOS_SDKS 0 CMAKE_IOS_SDK_ROOT)
|
||||
else (_CMAKE_IOS_SDKS)
|
||||
message (FATAL_ERROR "No iOS SDK's found in default seach path ${CMAKE_IOS_DEVELOPER_ROOT}. Manually set CMAKE_IOS_SDK_ROOT or install the iOS SDK.")
|
||||
endif (_CMAKE_IOS_SDKS)
|
||||
message (STATUS "Toolchain using default iOS SDK: ${CMAKE_IOS_SDK_ROOT}")
|
||||
endif (NOT DEFINED CMAKE_IOS_SDK_ROOT)
|
||||
set (CMAKE_IOS_SDK_ROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Location of the selected iOS SDK")
|
||||
|
||||
# Set the sysroot default to the most recent SDK
|
||||
set (CMAKE_OSX_SYSROOT ${CMAKE_IOS_SDK_ROOT} CACHE PATH "Sysroot used for iOS support")
|
||||
|
||||
# set the architecture for iOS
|
||||
# NOTE: Currently both ARCHS_STANDARD_32_BIT and ARCHS_UNIVERSAL_IPHONE_OS set armv7 only, so set both manually
|
||||
if (${IOS_PLATFORM} STREQUAL "OS")
|
||||
set (IOS_ARCH armv6 armv7)
|
||||
else (${IOS_PLATFORM} STREQUAL "OS")
|
||||
set (IOS_ARCH i386)
|
||||
endif (${IOS_PLATFORM} STREQUAL "OS")
|
||||
|
||||
set (CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE string "Build architecture for iOS")
|
||||
|
||||
# Set the find root to the iOS developer roots and to user defined paths
|
||||
set (CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT} ${CMAKE_IOS_SDK_ROOT} ${CMAKE_PREFIX_PATH} CACHE string "iOS find search path root")
|
||||
|
||||
# default to searching for frameworks first
|
||||
set (CMAKE_FIND_FRAMEWORK FIRST)
|
||||
|
||||
# set up the default search directories for frameworks
|
||||
set (CMAKE_SYSTEM_FRAMEWORK_PATH
|
||||
${CMAKE_IOS_SDK_ROOT}/System/Library/Frameworks
|
||||
${CMAKE_IOS_SDK_ROOT}/System/Library/PrivateFrameworks
|
||||
${CMAKE_IOS_SDK_ROOT}/Developer/Library/Frameworks
|
||||
)
|
||||
|
||||
# only search the iOS sdks, not the remainder of the host filesystem
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
|
||||
|
||||
# This little macro lets you set any XCode specific property
|
||||
macro (set_xcode_property TARGET XCODE_PROPERTY XCODE_VALUE)
|
||||
set_property (TARGET ${TARGET} PROPERTY XCODE_ATTRIBUTE_${XCODE_PROPERTY} ${XCODE_VALUE})
|
||||
endmacro (set_xcode_property)
|
||||
|
||||
|
||||
# This macro lets you find executable programs on the host system
|
||||
macro (find_host_package)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY NEVER)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE NEVER)
|
||||
set (IOS FALSE)
|
||||
|
||||
find_package(${ARGN})
|
||||
|
||||
set (IOS TRUE)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
endmacro (find_host_package)
|
||||
|
2
native
2
native
@ -1 +1 @@
|
||||
Subproject commit 3caced8524c06cabcf968942a7780d80337de7bf
|
||||
Subproject commit f5e7bd5a9c3e4b39a4eac71b577f06ad54f2bc96
|
Loading…
Reference in New Issue
Block a user