mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-24 05:49:58 +00:00
Merge pull request #16445 from hrydgard/new-screen-size-controls
New screen size controls on Display Layout & Effects screen
This commit is contained in:
commit
11c1b539e0
@ -226,11 +226,13 @@ void Clickable::FocusChanged(int focusFlags) {
|
||||
}
|
||||
}
|
||||
|
||||
void Clickable::Touch(const TouchInput &input) {
|
||||
bool Clickable::Touch(const TouchInput &input) {
|
||||
bool contains = bounds_.Contains(input.x, input.y);
|
||||
|
||||
if (!IsEnabled()) {
|
||||
dragging_ = false;
|
||||
down_ = false;
|
||||
return;
|
||||
return contains;
|
||||
}
|
||||
|
||||
if (input.flags & TOUCH_DOWN) {
|
||||
@ -255,6 +257,7 @@ void Clickable::Touch(const TouchInput &input) {
|
||||
downCountDown_ = 0;
|
||||
dragging_ = false;
|
||||
}
|
||||
return contains;
|
||||
}
|
||||
|
||||
static bool MatchesKeyDef(const std::vector<KeyDef> &defs, const KeyInput &key) {
|
||||
@ -350,21 +353,24 @@ bool Clickable::Key(const KeyInput &key) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void StickyChoice::Touch(const TouchInput &input) {
|
||||
bool StickyChoice::Touch(const TouchInput &touch) {
|
||||
bool contains = bounds_.Contains(touch.x, touch.y);
|
||||
dragging_ = false;
|
||||
if (!IsEnabled()) {
|
||||
down_ = false;
|
||||
return;
|
||||
return contains;
|
||||
}
|
||||
|
||||
if (input.flags & TOUCH_DOWN) {
|
||||
if (bounds_.Contains(input.x, input.y)) {
|
||||
if (touch.flags & TOUCH_DOWN) {
|
||||
if (contains) {
|
||||
if (IsFocusMovementEnabled())
|
||||
SetFocusedView(this);
|
||||
down_ = true;
|
||||
Click();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool StickyChoice::Key(const KeyInput &key) {
|
||||
@ -1069,12 +1075,14 @@ static std::string FirstLine(const std::string &text) {
|
||||
return text;
|
||||
}
|
||||
|
||||
void TextEdit::Touch(const TouchInput &touch) {
|
||||
bool TextEdit::Touch(const TouchInput &touch) {
|
||||
if (touch.flags & TOUCH_DOWN) {
|
||||
if (bounds_.Contains(touch.x, touch.y)) {
|
||||
SetFocusedView(this, true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool TextEdit::Key(const KeyInput &input) {
|
||||
@ -1259,14 +1267,15 @@ void Spinner::Draw(UIContext &dc) {
|
||||
}
|
||||
}
|
||||
|
||||
void TriggerButton::Touch(const TouchInput &input) {
|
||||
bool TriggerButton::Touch(const TouchInput &input) {
|
||||
bool contains = bounds_.Contains(input.x, input.y);
|
||||
if (input.flags & TOUCH_DOWN) {
|
||||
if (bounds_.Contains(input.x, input.y)) {
|
||||
if (contains) {
|
||||
down_ |= 1 << input.id;
|
||||
}
|
||||
}
|
||||
if (input.flags & TOUCH_MOVE) {
|
||||
if (bounds_.Contains(input.x, input.y))
|
||||
if (contains)
|
||||
down_ |= 1 << input.id;
|
||||
else
|
||||
down_ &= ~(1 << input.id);
|
||||
@ -1281,6 +1290,8 @@ void TriggerButton::Touch(const TouchInput &input) {
|
||||
} else {
|
||||
*bitField_ &= ~bit_;
|
||||
}
|
||||
|
||||
return contains;
|
||||
}
|
||||
|
||||
void TriggerButton::Draw(UIContext &dc) {
|
||||
@ -1344,9 +1355,10 @@ bool Slider::ApplyKey(int keyCode) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void Slider::Touch(const TouchInput &input) {
|
||||
bool Slider::Touch(const TouchInput &input) {
|
||||
// Calling it afterwards, so dragging_ hasn't been set false yet when checking it above.
|
||||
Clickable::Touch(input);
|
||||
bool contains = Clickable::Touch(input);
|
||||
|
||||
if (dragging_) {
|
||||
float relativeX = (input.x - (bounds_.x + paddingLeft_)) / (bounds_.w - paddingLeft_ - paddingRight_);
|
||||
*value_ = floorf(relativeX * (maxValue_ - minValue_) + minValue_ + 0.5f);
|
||||
@ -1360,6 +1372,7 @@ void Slider::Touch(const TouchInput &input) {
|
||||
|
||||
// Cancel any key repeat.
|
||||
repeat_ = -1;
|
||||
return contains;
|
||||
}
|
||||
|
||||
void Slider::Clamp() {
|
||||
@ -1470,8 +1483,8 @@ bool SliderFloat::ApplyKey(int keyCode) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void SliderFloat::Touch(const TouchInput &input) {
|
||||
Clickable::Touch(input);
|
||||
bool SliderFloat::Touch(const TouchInput &input) {
|
||||
bool contains = Clickable::Touch(input);
|
||||
if (dragging_) {
|
||||
float relativeX = (input.x - (bounds_.x + paddingLeft_)) / (bounds_.w - paddingLeft_ - paddingRight_);
|
||||
*value_ = (relativeX * (maxValue_ - minValue_) + minValue_);
|
||||
@ -1485,6 +1498,7 @@ void SliderFloat::Touch(const TouchInput &input) {
|
||||
|
||||
// Cancel any key repeat.
|
||||
repeat_ = -1;
|
||||
return contains;
|
||||
}
|
||||
|
||||
void SliderFloat::Clamp() {
|
||||
|
@ -375,7 +375,7 @@ public:
|
||||
// Can even be called on a different thread! This is to really minimize latency, and decouple
|
||||
// touch response from the frame rate. Same with Key and Axis.
|
||||
virtual bool Key(const KeyInput &input) { return false; }
|
||||
virtual void Touch(const TouchInput &input) {}
|
||||
virtual bool Touch(const TouchInput &input) { return true; }
|
||||
virtual void Axis(const AxisInput &input) {}
|
||||
virtual void Update();
|
||||
|
||||
@ -501,7 +501,7 @@ public:
|
||||
: View(layoutParams) {}
|
||||
|
||||
bool Key(const KeyInput &input) override { return false; }
|
||||
void Touch(const TouchInput &input) override {}
|
||||
bool Touch(const TouchInput &input) override { return false; }
|
||||
bool CanBeFocused() const override { return false; }
|
||||
};
|
||||
|
||||
@ -512,7 +512,7 @@ public:
|
||||
Clickable(LayoutParams *layoutParams);
|
||||
|
||||
bool Key(const KeyInput &input) override;
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
|
||||
void FocusChanged(int focusFlags) override;
|
||||
|
||||
@ -602,7 +602,7 @@ public:
|
||||
void Draw(UIContext &dc) override;
|
||||
std::string DescribeText() const override;
|
||||
bool Key(const KeyInput &input) override;
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Update() override;
|
||||
void GetContentDimensions(const UIContext &dc, float &w, float &h) const override;
|
||||
void SetShowPercent(bool s) { showPercent_ = s; }
|
||||
@ -633,7 +633,7 @@ public:
|
||||
void Draw(UIContext &dc) override;
|
||||
std::string DescribeText() const override;
|
||||
bool Key(const KeyInput &input) override;
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Update() override;
|
||||
void GetContentDimensions(const UIContext &dc, float &w, float &h) const override;
|
||||
|
||||
@ -661,7 +661,7 @@ public:
|
||||
TriggerButton(uint32_t *bitField, uint32_t bit, ImageID imageBackground, ImageID imageForeground, LayoutParams *layoutParams)
|
||||
: View(layoutParams), down_(0.0), bitField_(bitField), bit_(bit), imageBackground_(imageBackground), imageForeground_(imageForeground) {}
|
||||
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Draw(UIContext &dc) override;
|
||||
void GetContentDimensions(const UIContext &dc, float &w, float &h) const override;
|
||||
|
||||
@ -755,7 +755,7 @@ public:
|
||||
: Choice(buttonImage, layoutParams) {}
|
||||
|
||||
bool Key(const KeyInput &key) override;
|
||||
void Touch(const TouchInput &touch) override;
|
||||
bool Touch(const TouchInput &touch) override;
|
||||
void FocusChanged(int focusFlags) override;
|
||||
|
||||
void Press() { down_ = true; dragging_ = false; }
|
||||
@ -943,7 +943,7 @@ public:
|
||||
void Draw(UIContext &dc) override;
|
||||
std::string DescribeText() const override;
|
||||
bool Key(const KeyInput &key) override;
|
||||
void Touch(const TouchInput &touch) override;
|
||||
bool Touch(const TouchInput &touch) override;
|
||||
|
||||
Event OnTextChange;
|
||||
Event OnEnter;
|
||||
|
@ -87,13 +87,20 @@ void ViewGroup::PersistData(PersistStatus status, std::string anonId, PersistMap
|
||||
}
|
||||
}
|
||||
|
||||
void ViewGroup::Touch(const TouchInput &input) {
|
||||
bool ViewGroup::Touch(const TouchInput &input) {
|
||||
std::lock_guard<std::mutex> guard(modifyLock_);
|
||||
bool any = false;
|
||||
for (auto iter = views_.begin(); iter != views_.end(); ++iter) {
|
||||
// TODO: If there is a transformation active, transform input coordinates accordingly.
|
||||
if ((*iter)->GetVisibility() == V_VISIBLE)
|
||||
(*iter)->Touch(input);
|
||||
if ((*iter)->GetVisibility() == V_VISIBLE) {
|
||||
bool touch = (*iter)->Touch(input);
|
||||
any = any || touch;
|
||||
if (exclusiveTouch_ && touch) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return any;
|
||||
}
|
||||
|
||||
void ViewGroup::Query(float x, float y, std::vector<View *> &list) {
|
||||
@ -850,7 +857,7 @@ bool ScrollView::Key(const KeyInput &input) {
|
||||
const float friction = 0.92f;
|
||||
const float stop_threshold = 0.1f;
|
||||
|
||||
void ScrollView::Touch(const TouchInput &input) {
|
||||
bool ScrollView::Touch(const TouchInput &input) {
|
||||
if ((input.flags & TOUCH_DOWN) && scrollTouchId_ == -1) {
|
||||
scrollStart_ = scrollPos_;
|
||||
inertia_ = 0.0f;
|
||||
@ -884,7 +891,9 @@ void ScrollView::Touch(const TouchInput &input) {
|
||||
}
|
||||
|
||||
if (!(input.flags & TOUCH_DOWN) || bounds_.Contains(input.x, input.y)) {
|
||||
ViewGroup::Touch(input2);
|
||||
return ViewGroup::Touch(input2);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ public:
|
||||
|
||||
// Pass through external events to children.
|
||||
virtual bool Key(const KeyInput &input) override;
|
||||
virtual void Touch(const TouchInput &input) override;
|
||||
virtual bool Touch(const TouchInput &input) override;
|
||||
virtual void Axis(const AxisInput &input) override;
|
||||
|
||||
// By default, a container will layout to its own bounds.
|
||||
@ -77,6 +77,7 @@ public:
|
||||
int GetNumSubviews() const { return (int)views_.size(); }
|
||||
void SetHasDropShadow(bool has) { hasDropShadow_ = has; }
|
||||
void SetDropShadowExpand(float s) { dropShadowExpand_ = s; }
|
||||
void SetExclusiveTouch(bool exclusive) { exclusiveTouch_ = exclusive; }
|
||||
|
||||
void Lock() { modifyLock_.lock(); }
|
||||
void Unlock() { modifyLock_.unlock(); }
|
||||
@ -96,6 +97,7 @@ protected:
|
||||
float dropShadowExpand_ = 0.0f;
|
||||
bool hasDropShadow_ = false;
|
||||
bool clip_ = false;
|
||||
bool exclusiveTouch_ = false;
|
||||
};
|
||||
|
||||
// A frame layout contains a single child view (normally).
|
||||
@ -270,7 +272,7 @@ public:
|
||||
void Layout() override;
|
||||
|
||||
bool Key(const KeyInput &input) override;
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Draw(UIContext &dc) override;
|
||||
std::string DescribeLog() const override { return "ScrollView: " + View::DescribeLog(); }
|
||||
|
||||
|
@ -911,10 +911,10 @@ static ConfigSetting graphicsSettings[] = {
|
||||
ConfigSetting("FullScreenMulti", &g_Config.bFullScreenMulti, false),
|
||||
#endif
|
||||
|
||||
ConfigSetting("SmallDisplayZoomType", &g_Config.iSmallDisplayZoomType, &DefaultZoomType, true, true),
|
||||
ConfigSetting("SmallDisplayOffsetX", &g_Config.fSmallDisplayOffsetX, 0.5f, true, true),
|
||||
ConfigSetting("SmallDisplayOffsetY", &g_Config.fSmallDisplayOffsetY, 0.5f, true, true),
|
||||
ConfigSetting("SmallDisplayZoomLevel", &g_Config.fSmallDisplayZoomLevel, 1.0f, true, true),
|
||||
ConfigSetting("DisplayOffsetX", &g_Config.fDisplayOffsetX, 0.5f, true, true),
|
||||
ConfigSetting("DisplayOffsetY", &g_Config.fDisplayOffsetY, 0.5f, true, true),
|
||||
ConfigSetting("DisplayScale", &g_Config.fDisplayScale, 1.0f, true, true),
|
||||
ConfigSetting("DisplayAspectRatio", &g_Config.fDisplayAspectRatio, 1.0f, true, true),
|
||||
ConfigSetting("ImmersiveMode", &g_Config.bImmersiveMode, true, true, true),
|
||||
ConfigSetting("SustainedPerformanceMode", &g_Config.bSustainedPerformanceMode, false, true, true),
|
||||
ConfigSetting("IgnoreScreenInsets", &g_Config.bIgnoreScreenInsets, true, true, false),
|
||||
|
@ -171,11 +171,14 @@ public:
|
||||
|
||||
int iTexFiltering; // 1 = auto , 2 = nearest , 3 = linear , 4 = auto max quality
|
||||
int iBufFilter; // 1 = linear, 2 = nearest
|
||||
int iSmallDisplayZoomType; // Used to fit display into screen 0 = stretch, 1 = partial stretch, 2 = auto scaling, 3 = manual scaling.
|
||||
float fSmallDisplayOffsetX; // Along with Y it goes from 0.0 to 1.0, XY (0.5, 0.5) = center of the screen
|
||||
float fSmallDisplayOffsetY;
|
||||
float fSmallDisplayZoomLevel; //This is used for zoom values, both in and out.
|
||||
bool bImmersiveMode; // Mode on Android Kitkat 4.4 that hides the back button etc.
|
||||
|
||||
bool bDisplayStretch; // Automatically matches the aspect ratio of the window.
|
||||
float fDisplayOffsetX;
|
||||
float fDisplayOffsetY;
|
||||
float fDisplayScale; // Relative to the most constraining axis (x or y).
|
||||
float fDisplayAspectRatio; // Stored relative to the PSP's native ratio, so 1.0 is the normal pixel aspect ratio.
|
||||
|
||||
bool bImmersiveMode; // Mode on Android Kitkat 4.4 and later that hides the back button etc.
|
||||
bool bSustainedPerformanceMode; // Android: Slows clocks down to avoid overheating/speed fluctuations.
|
||||
bool bIgnoreScreenInsets; // Android: Center screen disregarding insets if this is enabled.
|
||||
bool bVSync;
|
||||
|
@ -2045,15 +2045,17 @@ static u32 sceIoDevctl(const char *name, int cmd, u32 argAddr, int argLen, u32 o
|
||||
PSP_CoreParameter().fastForward = false;
|
||||
return 0;
|
||||
case EMULATOR_DEVCTL__GET_ASPECT_RATIO:
|
||||
if (Memory::IsValidAddress(outPtr))
|
||||
{
|
||||
float ar = static_cast<float>(PSP_CoreParameter().pixelWidth) / static_cast<float>(PSP_CoreParameter().pixelHeight);
|
||||
if (Memory::IsValidAddress(outPtr)) {
|
||||
float ar = g_Config.fDisplayAspectRatio * (480.0f / 272.0f);
|
||||
Memory::Write_U32(*(reinterpret_cast<u32*>(&ar)), outPtr);
|
||||
}
|
||||
return 0;
|
||||
case EMULATOR_DEVCTL__GET_SCALE:
|
||||
if (Memory::IsValidAddress(outPtr))
|
||||
Memory::Write_U32(static_cast<float>(dp_xres) / 480.0f, outPtr);
|
||||
if (Memory::IsValidAddress(outPtr)) {
|
||||
// TODO: Maybe do something more sophisticated taking the longest side and screen rotation
|
||||
// into account, etc.
|
||||
Memory::Write_U32(static_cast<float>(dp_xres) * g_Config.fDisplayScale / 480.0f, outPtr);
|
||||
}
|
||||
return 0;
|
||||
case EMULATOR_DEVCTL__GET_LTRIGGER:
|
||||
//To-do
|
||||
|
@ -75,73 +75,66 @@ void CenterDisplayOutputRect(FRect *rc, float origW, float origH, const FRect &f
|
||||
|
||||
bool rotated = rotation == ROTATION_LOCKED_VERTICAL || rotation == ROTATION_LOCKED_VERTICAL180;
|
||||
|
||||
SmallDisplayZoom zoomType = (SmallDisplayZoom)g_Config.iSmallDisplayZoomType;
|
||||
bool stretch = g_Config.bDisplayStretch;
|
||||
|
||||
float offsetX = g_Config.fDisplayOffsetX;
|
||||
float offsetY = g_Config.fDisplayOffsetY;
|
||||
// Have to invert Y for GL
|
||||
if (GetGPUBackend() == GPUBackend::OPENGL) {
|
||||
offsetY = offsetY * -1.0f;
|
||||
}
|
||||
|
||||
float scale = g_Config.fDisplayScale;
|
||||
float aspectRatioAdjust = g_Config.fDisplayAspectRatio;
|
||||
|
||||
if (IsVREnabled()) {
|
||||
zoomType = SmallDisplayZoom::STRETCH;
|
||||
stretch = 0;
|
||||
rotated = false;
|
||||
offsetX = 0.0f;
|
||||
offsetY = 0.0f;
|
||||
scale = 1.0f;
|
||||
aspectRatioAdjust = 1.0f;
|
||||
}
|
||||
|
||||
if (zoomType == SmallDisplayZoom::STRETCH) {
|
||||
outW = frame.w;
|
||||
outH = frame.h;
|
||||
} else {
|
||||
if (zoomType == SmallDisplayZoom::MANUAL) {
|
||||
float offsetX = (g_Config.fSmallDisplayOffsetX - 0.5f) * 2.0f * frame.w + frame.x;
|
||||
float offsetY = (g_Config.fSmallDisplayOffsetY - 0.5f) * 2.0f * frame.h + frame.y;
|
||||
// Have to invert Y for GL
|
||||
if (GetGPUBackend() == GPUBackend::OPENGL) {
|
||||
offsetY = offsetY * -1.0f;
|
||||
}
|
||||
float customZoom = g_Config.fSmallDisplayZoomLevel;
|
||||
float smallDisplayW = origW * customZoom;
|
||||
float smallDisplayH = origH * customZoom;
|
||||
if (!rotated) {
|
||||
rc->x = floorf(((frame.w - smallDisplayW) / 2.0f) + offsetX);
|
||||
rc->y = floorf(((frame.h - smallDisplayH) / 2.0f) + offsetY);
|
||||
rc->w = floorf(smallDisplayW);
|
||||
rc->h = floorf(smallDisplayH);
|
||||
return;
|
||||
} else {
|
||||
rc->x = floorf(((frame.w - smallDisplayH) / 2.0f) + offsetX);
|
||||
rc->y = floorf(((frame.h - smallDisplayW) / 2.0f) + offsetY);
|
||||
rc->w = floorf(smallDisplayH);
|
||||
rc->h = floorf(smallDisplayW);
|
||||
return;
|
||||
}
|
||||
} else if (zoomType == SmallDisplayZoom::AUTO) {
|
||||
// Stretch to 1080 for 272*4. But don't distort if not widescreen (i.e. ultrawide of halfwide.)
|
||||
float pixelCrop = frame.h / 270.0f;
|
||||
float resCommonWidescreen = pixelCrop - floor(pixelCrop);
|
||||
if (!rotated && resCommonWidescreen == 0.0f && frame.w >= pixelCrop * 480.0f) {
|
||||
rc->x = floorf((frame.w - pixelCrop * 480.0f) * 0.5f + frame.x);
|
||||
rc->y = floorf(-pixelCrop + frame.y);
|
||||
rc->w = floorf(pixelCrop * 480.0f);
|
||||
rc->h = floorf(pixelCrop * 272.0f);
|
||||
return;
|
||||
}
|
||||
// Ye olde 1080p hack, new version: If everything is setup to exactly cover the screen (defaults), and the screen display aspect ratio is 16:9,
|
||||
// stretch the PSP's aspect ratio veeery slightly to fill it completely.
|
||||
if (scale == 1.0f && offsetX == 0.5f && offsetY == 0.5f && aspectRatioAdjust == 1.0f) {
|
||||
if (fabsf(frame.w / frame.h - 16.0f / 9.0f) < 0.0001f) {
|
||||
aspectRatioAdjust = (frame.w / frame.h) / (480.0f / 272.0f);
|
||||
}
|
||||
}
|
||||
|
||||
float origRatio = !rotated ? origW / origH : origH / origW;
|
||||
float frameRatio = frame.w / frame.h;
|
||||
float origRatio = !rotated ? origW / origH : origH / origW;
|
||||
float frameRatio = frame.w / frame.h;
|
||||
|
||||
if (origRatio > frameRatio) {
|
||||
// Image is wider than frame. Center vertically.
|
||||
outW = frame.w;
|
||||
outH = frame.w / origRatio;
|
||||
// Stretch a little bit
|
||||
if (!rotated && zoomType == SmallDisplayZoom::PARTIAL_STRETCH)
|
||||
outH = (frame.h + outH) / 2.0f; // (408 + 720) / 2 = 564
|
||||
if (stretch) {
|
||||
// Automatically set aspect ratio to match the display, IF the rotation matches the output display ratio! Otherwise, just
|
||||
// sets standard aspect ratio because actually stretching will just look silly.
|
||||
bool globalRotated = g_display_rotation == DisplayRotation::ROTATE_90 || g_display_rotation == DisplayRotation::ROTATE_270;
|
||||
if (rotated == dp_yres > dp_xres) {
|
||||
origRatio = frameRatio;
|
||||
} else {
|
||||
// Image is taller than frame. Center horizontally.
|
||||
outW = frame.h * origRatio;
|
||||
outH = frame.h;
|
||||
if (rotated && zoomType == SmallDisplayZoom::PARTIAL_STRETCH)
|
||||
outW = (frame.h + outH) / 2.0f; // (408 + 720) / 2 = 564
|
||||
origRatio *= aspectRatioAdjust;
|
||||
}
|
||||
} else {
|
||||
origRatio *= aspectRatioAdjust;
|
||||
}
|
||||
|
||||
rc->x = floorf((frame.w - outW) / 2.0f + frame.x);
|
||||
rc->y = floorf((frame.h - outH) / 2.0f + frame.y);
|
||||
float scaledWidth = frame.w * scale;
|
||||
float scaledHeight = frame.h * scale;
|
||||
|
||||
if (origRatio > frameRatio) {
|
||||
// Image is wider than frame. Center vertically.
|
||||
outW = scaledWidth;
|
||||
outH = scaledWidth / origRatio;
|
||||
} else {
|
||||
// Image is taller than frame. Center horizontally.
|
||||
outW = scaledHeight * origRatio;
|
||||
outH = scaledHeight;
|
||||
}
|
||||
|
||||
rc->x = floorf(frame.x + frame.w * offsetX - outW * 0.5f);
|
||||
rc->y = floorf(frame.y + frame.h * offsetY - outH * 0.5f);
|
||||
rc->w = floorf(outW);
|
||||
rc->h = floorf(outH);
|
||||
}
|
||||
|
@ -122,6 +122,9 @@ void DrawEngineGLES::InitDeviceObjects() {
|
||||
}
|
||||
|
||||
void DrawEngineGLES::DestroyDeviceObjects() {
|
||||
if (!draw_) {
|
||||
return;
|
||||
}
|
||||
draw_->SetInvalidationCallback(InvalidationCallback());
|
||||
|
||||
// Beware: this could be called twice in a row, sometimes.
|
||||
|
@ -589,7 +589,7 @@ void MainWindow::createMenus()
|
||||
MenuTree* gameSettingsMenu = new MenuTree(this, menuBar(), QT_TR_NOOP("&Game settings"));
|
||||
gameSettingsMenu->add(new MenuAction(this, SLOT(languageAct()), QT_TR_NOOP("La&nguage...")));
|
||||
gameSettingsMenu->add(new MenuAction(this, SLOT(controlMappingAct()), QT_TR_NOOP("C&ontrol mapping...")));
|
||||
gameSettingsMenu->add(new MenuAction(this, SLOT(displayLayoutEditorAct()), QT_TR_NOOP("Display layout editor...")));
|
||||
gameSettingsMenu->add(new MenuAction(this, SLOT(displayLayoutEditorAct()), QT_TR_NOOP("Display layout & effects...")));
|
||||
gameSettingsMenu->add(new MenuAction(this, SLOT(moreSettingsAct()), QT_TR_NOOP("&More settings...")));
|
||||
gameSettingsMenu->addSeparator();
|
||||
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
|
||||
|
@ -130,10 +130,6 @@ private slots:
|
||||
}
|
||||
void windowGroup_triggered(QAction *action) { SetWindowScale(action->data().toInt()); }
|
||||
|
||||
void displayLayoutGroup_triggered(QAction *action) {
|
||||
g_Config.iSmallDisplayZoomType = action->data().toInt();
|
||||
NativeMessageReceived("gpu_displayResized", "");
|
||||
}
|
||||
void autoframeskipAct() {
|
||||
g_Config.bAutoFrameSkip = !g_Config.bAutoFrameSkip;
|
||||
if (g_Config.bSkipBufferEffects) {
|
||||
|
@ -18,6 +18,10 @@ enum Command {
|
||||
CopyMissingLines {},
|
||||
CommentUnknownLines {},
|
||||
RemoveUnknownLines {},
|
||||
AddNewKey {
|
||||
section: String,
|
||||
key: String,
|
||||
},
|
||||
MoveKey {
|
||||
old: String,
|
||||
new: String,
|
||||
@ -89,6 +93,15 @@ fn remove_key(target_ini: &mut IniFile, section: &str, key: &str) -> io::Result<
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn add_new_key(target_ini: &mut IniFile, section: &str, key: &str) -> io::Result<()> {
|
||||
if let Some(section) = target_ini.get_section_mut(section) {
|
||||
let _ = section.insert_line_if_missing(&format!("{} = {}", key, key));
|
||||
} else {
|
||||
println!("No section {}", section);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let opt = Opt::from_args();
|
||||
|
||||
@ -97,15 +110,15 @@ fn main() {
|
||||
let mut filenames = args;
|
||||
|
||||
let root = "../../assets/lang";
|
||||
let reference_file = "en_US.ini";
|
||||
let reference_ini_filename = "en_US.ini";
|
||||
|
||||
let reference_ini = IniFile::parse(&format!("{}/{}", root, reference_file)).unwrap();
|
||||
let mut reference_ini = IniFile::parse(&format!("{}/{}", root, reference_ini_filename)).unwrap();
|
||||
|
||||
if filenames.is_empty() {
|
||||
// Grab them all.
|
||||
for path in std::fs::read_dir(root).unwrap() {
|
||||
let path = path.unwrap();
|
||||
if path.file_name() == reference_file {
|
||||
if path.file_name() == reference_ini_filename {
|
||||
continue;
|
||||
}
|
||||
let filename = path.file_name();
|
||||
@ -118,6 +131,7 @@ fn main() {
|
||||
}
|
||||
|
||||
for filename in filenames {
|
||||
let reference_ini = &reference_ini;
|
||||
if filename == "langtool" {
|
||||
// Get this from cargo run for some reason.
|
||||
continue;
|
||||
@ -137,12 +151,16 @@ fn main() {
|
||||
Command::RemoveUnknownLines {} => {
|
||||
deal_with_unknown_lines(&reference_ini, &mut target_ini, true).unwrap();
|
||||
}
|
||||
Command::AddNewKey {
|
||||
ref section,
|
||||
ref key,
|
||||
} => add_new_key(&mut target_ini, section, key).unwrap(),
|
||||
Command::MoveKey {
|
||||
ref old,
|
||||
ref new,
|
||||
ref key,
|
||||
} => {
|
||||
move_key(&mut target_ini, &old, &new, &key).unwrap();
|
||||
move_key(&mut target_ini, old, new, key).unwrap();
|
||||
}
|
||||
Command::RemoveKey {
|
||||
ref section,
|
||||
@ -155,5 +173,31 @@ fn main() {
|
||||
target_ini.write().unwrap();
|
||||
}
|
||||
|
||||
println!("Langtool processing {}", reference_ini_filename);
|
||||
|
||||
// Some commands also apply to the reference ini.
|
||||
match opt.cmd {
|
||||
Command::AddNewKey {
|
||||
ref section,
|
||||
ref key,
|
||||
} => {
|
||||
add_new_key(&mut reference_ini, section, key).unwrap();
|
||||
}
|
||||
Command::MoveKey {
|
||||
ref old,
|
||||
ref new,
|
||||
ref key,
|
||||
} => {
|
||||
move_key(&mut reference_ini, old, new, key).unwrap();
|
||||
}
|
||||
Command::RemoveKey {
|
||||
ref section,
|
||||
ref key,
|
||||
} => {
|
||||
remove_key(&mut reference_ini, section, key).unwrap();
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
||||
// println!("{:#?}", target_ini);
|
||||
}
|
||||
|
@ -55,6 +55,63 @@ static Bounds FRectToBounds(FRect rc) {
|
||||
return b;
|
||||
}
|
||||
|
||||
class DisplayLayoutBackground : public UI::View {
|
||||
public:
|
||||
DisplayLayoutBackground(UI::ChoiceStrip *mode, UI::LayoutParams *layoutParams) : UI::View(layoutParams), mode_(mode) {}
|
||||
|
||||
bool Touch(const TouchInput &touch) {
|
||||
int mode = mode_ ? mode_->GetSelection() : 0;
|
||||
|
||||
const Bounds &screenBounds = bounds_;
|
||||
if ((touch.flags & TOUCH_MOVE) != 0 && dragging_) {
|
||||
float relativeTouchX = touch.x - startX_;
|
||||
float relativeTouchY = touch.y - startY_;
|
||||
|
||||
switch (mode) {
|
||||
case MODE_MOVE:
|
||||
{
|
||||
g_Config.fDisplayOffsetX = startDisplayOffsetX_ + relativeTouchX / screenBounds.w;
|
||||
g_Config.fDisplayOffsetY = startDisplayOffsetY_ + relativeTouchY / screenBounds.h;
|
||||
break;
|
||||
}
|
||||
case MODE_RESIZE:
|
||||
{
|
||||
// Resize. Vertical = scaling; Up should be bigger so let's negate in that direction
|
||||
float diffYProp = -relativeTouchY * 0.007f;
|
||||
g_Config.fDisplayScale = startScale_ * powf(2.0f, diffYProp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((touch.flags & TOUCH_DOWN) != 0 && !dragging_) {
|
||||
dragging_ = true;
|
||||
startX_ = touch.x;
|
||||
startY_ = touch.y;
|
||||
startDisplayOffsetX_ = g_Config.fDisplayOffsetX;
|
||||
startDisplayOffsetY_ = g_Config.fDisplayOffsetY;
|
||||
startScale_ = g_Config.fDisplayScale;
|
||||
}
|
||||
|
||||
if ((touch.flags & TOUCH_UP) != 0 && dragging_) {
|
||||
dragging_ = false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private:
|
||||
UI::ChoiceStrip *mode_;
|
||||
bool dragging_ = false;
|
||||
|
||||
// Touch down state for drag to resize etc
|
||||
float startX_ = 0.0f;
|
||||
float startY_ = 0.0f;
|
||||
float startScale_ = -1.0f;
|
||||
float startDisplayOffsetX_ = -1.0f;
|
||||
float startDisplayOffsetY_ = -1.0f;
|
||||
};
|
||||
|
||||
DisplayLayoutScreen::DisplayLayoutScreen(const Path &filename) : UIDialogScreenWithGameBackground(filename) {
|
||||
// Ignore insets - just couldn't get the logic to work.
|
||||
ignoreInsets_ = true;
|
||||
@ -82,81 +139,10 @@ void DisplayLayoutScreen::DrawBackground(UIContext &dc) {
|
||||
}
|
||||
}
|
||||
|
||||
bool DisplayLayoutScreen::touch(const TouchInput &touch) {
|
||||
UIScreen::touch(touch);
|
||||
|
||||
using namespace UI;
|
||||
|
||||
int mode = mode_ ? mode_->GetSelection() : 0;
|
||||
if (g_Config.iSmallDisplayZoomType == (int)SmallDisplayZoom::AUTO) {
|
||||
mode = -1;
|
||||
}
|
||||
|
||||
const Bounds &screenBounds = screenManager()->getUIContext()->GetBounds();
|
||||
if ((touch.flags & TOUCH_MOVE) != 0 && dragging_) {
|
||||
float relativeTouchX = touch.x - startX_;
|
||||
float relativeTouchY = touch.y - startY_;
|
||||
|
||||
switch (mode) {
|
||||
case MODE_MOVE:
|
||||
{
|
||||
g_Config.fSmallDisplayOffsetX = startDisplayOffsetX_ + relativeTouchX * 0.5f / screenBounds.w;
|
||||
g_Config.fSmallDisplayOffsetY = startDisplayOffsetY_ + relativeTouchY * 0.5f / screenBounds.h;
|
||||
break;
|
||||
}
|
||||
case MODE_RESIZE:
|
||||
{
|
||||
// Resize. Vertical = scaling; Up should be bigger so let's negate in that direction
|
||||
float diffYProp = -relativeTouchY * 0.007f;
|
||||
g_Config.fSmallDisplayZoomLevel = startScale_ * powf(2.0f, diffYProp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((touch.flags & TOUCH_DOWN) != 0 && !dragging_) {
|
||||
dragging_ = true;
|
||||
startX_ = touch.x;
|
||||
startY_ = touch.y;
|
||||
startDisplayOffsetX_ = g_Config.fSmallDisplayOffsetX;
|
||||
startDisplayOffsetY_ = g_Config.fSmallDisplayOffsetY;
|
||||
startScale_ = g_Config.fSmallDisplayZoomLevel;
|
||||
}
|
||||
|
||||
if ((touch.flags & TOUCH_UP) != 0 && dragging_) {
|
||||
dragging_ = false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void DisplayLayoutScreen::onFinish(DialogResult reason) {
|
||||
g_Config.Save("DisplayLayoutScreen::onFinish");
|
||||
}
|
||||
|
||||
UI::EventReturn DisplayLayoutScreen::OnCenter(UI::EventParams &e) {
|
||||
g_Config.fSmallDisplayOffsetX = 0.5f;
|
||||
g_Config.fSmallDisplayOffsetY = 0.5f;
|
||||
RecreateViews();
|
||||
return UI::EVENT_DONE;
|
||||
};
|
||||
|
||||
UI::EventReturn DisplayLayoutScreen::OnZoomTypeChange(UI::EventParams &e) {
|
||||
switch (g_Config.iSmallDisplayZoomType) {
|
||||
case (int)SmallDisplayZoom::AUTO:
|
||||
case (int)SmallDisplayZoom::PARTIAL_STRETCH:
|
||||
case (int)SmallDisplayZoom::STRETCH:
|
||||
g_Config.fSmallDisplayOffsetX = 0.5f;
|
||||
g_Config.fSmallDisplayOffsetY = 0.5f;
|
||||
break;
|
||||
default:
|
||||
// Not SmallDisplayZoom::MANUAL
|
||||
break;
|
||||
}
|
||||
RecreateViews();
|
||||
return UI::EVENT_DONE;
|
||||
};
|
||||
|
||||
void DisplayLayoutScreen::dialogFinished(const Screen *dialog, DialogResult result) {
|
||||
RecreateViews();
|
||||
}
|
||||
@ -204,71 +190,50 @@ void DisplayLayoutScreen::CreateViews() {
|
||||
|
||||
root_ = new AnchorLayout(new LayoutParams(FILL_PARENT, FILL_PARENT));
|
||||
|
||||
// Make it so that a touch can only affect one view. Makes manipulating the background through the buttons
|
||||
// impossible.
|
||||
root_->SetExclusiveTouch(true);
|
||||
|
||||
ScrollView *leftScrollView = new ScrollView(ORIENT_VERTICAL, new AnchorLayoutParams(300.0f, FILL_PARENT, 10.f, 10.f, NONE, 10.f, false));
|
||||
ViewGroup *leftColumn = new LinearLayout(ORIENT_VERTICAL);
|
||||
leftScrollView->Add(leftColumn);
|
||||
root_->Add(leftScrollView);
|
||||
|
||||
ScrollView *rightScrollView = new ScrollView(ORIENT_VERTICAL, new AnchorLayoutParams(300.0f, FILL_PARENT, NONE, 10.f, 10.f, 10.f, false));
|
||||
ViewGroup *rightColumn = new LinearLayout(ORIENT_VERTICAL);
|
||||
rightScrollView->Add(rightColumn);
|
||||
root_->Add(rightScrollView);
|
||||
|
||||
// We manually implement insets here for the buttons. This file defied refactoring :(
|
||||
float leftInset = System_GetPropertyFloat(SYSPROP_DISPLAY_SAFE_INSET_LEFT);
|
||||
PopupSliderChoiceFloat *aspectRatio = new PopupSliderChoiceFloat(&g_Config.fDisplayAspectRatio, 0.5f, 2.0f, di->T("Aspect Ratio"), screenManager());
|
||||
leftColumn->Add(aspectRatio);
|
||||
|
||||
bool displayRotEnable = !g_Config.bSkipBufferEffects || g_Config.bSoftwareRendering;
|
||||
bRotated_ = false;
|
||||
if (displayRotEnable && (g_Config.iInternalScreenRotation == ROTATION_LOCKED_VERTICAL || g_Config.iInternalScreenRotation == ROTATION_LOCKED_VERTICAL180)) {
|
||||
bRotated_ = true;
|
||||
}
|
||||
auto stretch = new CheckBox(&g_Config.bDisplayStretch, gr->T("Stretch"));
|
||||
leftColumn->Add(stretch);
|
||||
|
||||
mode_ = nullptr;
|
||||
if (g_Config.iSmallDisplayZoomType >= (int)SmallDisplayZoom::AUTO) { // Scaling
|
||||
if (g_Config.iSmallDisplayZoomType == (int)SmallDisplayZoom::AUTO) {
|
||||
float autoBound = bounds.h / 270.0f;
|
||||
// Case of screen rotated ~ only works with buffered rendering
|
||||
if (bRotated_) {
|
||||
autoBound = bounds.h / 480.0f;
|
||||
} else { // Without rotation in common cases like 1080p we cut off 2 pixels of height, this reflects other cases
|
||||
float resCommonWidescreen = autoBound - floor(autoBound);
|
||||
if (resCommonWidescreen != 0.0f) {
|
||||
float ratio = bounds.w / bounds.h;
|
||||
if (ratio < orgRatio) {
|
||||
autoBound = bounds.w / 480.0f;
|
||||
}
|
||||
else {
|
||||
autoBound = bounds.h / 272.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
g_Config.fSmallDisplayZoomLevel = autoBound;
|
||||
g_Config.fSmallDisplayOffsetX = 0.5f;
|
||||
g_Config.fSmallDisplayOffsetY = 0.5f;
|
||||
} else { // Manual Scaling
|
||||
Choice *center = new Choice(di->T("Center"), "", false, new AnchorLayoutParams(leftColumnWidth, WRAP_CONTENT, 10 + leftInset, NONE, NONE, 74));
|
||||
center->OnClick.Handle(this, &DisplayLayoutScreen::OnCenter);
|
||||
root_->Add(center);
|
||||
float minZoom = 1.0f;
|
||||
PopupSliderChoiceFloat *zoomlvl = new PopupSliderChoiceFloat(&g_Config.fSmallDisplayZoomLevel, minZoom, 10.0f, di->T("Zoom"), 1.0f, screenManager(), di->T("* PSP res"), new AnchorLayoutParams(leftColumnWidth, WRAP_CONTENT, 10 + leftInset, NONE, NONE, 10 + 64 + 64));
|
||||
root_->Add(zoomlvl);
|
||||
mode_ = new ChoiceStrip(ORIENT_VERTICAL, new AnchorLayoutParams(leftColumnWidth, WRAP_CONTENT, 10 + leftInset, NONE, NONE, 158 + 64 + 10));
|
||||
mode_->AddChoice(di->T("Move"));
|
||||
mode_->AddChoice(di->T("Resize"));
|
||||
mode_->SetSelection(0, false);
|
||||
}
|
||||
}
|
||||
|
||||
if (mode_) {
|
||||
root_->Add(mode_);
|
||||
}
|
||||
|
||||
static const char *zoomLevels[] = { "Stretching", "Partial Stretch", "Auto Scaling", "Manual Scaling" };
|
||||
auto zoom = new PopupMultiChoice(&g_Config.iSmallDisplayZoomType, gr->T("Mode"), zoomLevels, 0, ARRAY_SIZE(zoomLevels), gr->GetName(), screenManager(), new AnchorLayoutParams(400, WRAP_CONTENT, bounds.w / 2.0f - 200.0f, NONE, NONE, 10));
|
||||
zoom->OnChoice.Handle(this, &DisplayLayoutScreen::OnZoomTypeChange);
|
||||
rightColumn->Add(zoom);
|
||||
mode_ = new ChoiceStrip(ORIENT_VERTICAL);
|
||||
mode_->AddChoice(di->T("Move"));
|
||||
mode_->AddChoice(di->T("Resize"));
|
||||
mode_->SetSelection(0, false);
|
||||
leftColumn->Add(mode_);
|
||||
|
||||
static const char *displayRotation[] = { "Landscape", "Portrait", "Landscape Reversed", "Portrait Reversed" };
|
||||
auto rotation = new PopupMultiChoice(&g_Config.iInternalScreenRotation, gr->T("Rotation"), displayRotation, 1, ARRAY_SIZE(displayRotation), co->GetName(), screenManager());
|
||||
rotation->SetEnabledFunc([] {
|
||||
return !g_Config.bSkipBufferEffects || g_Config.bSoftwareRendering;
|
||||
});
|
||||
rightColumn->Add(rotation);
|
||||
leftColumn->Add(rotation);
|
||||
|
||||
leftColumn->Add(new Spacer(12.0f));
|
||||
|
||||
Choice *center = new Choice(di->T("Reset"));
|
||||
center->OnClick.Add([&](UI::EventParams &) {
|
||||
g_Config.fDisplayAspectRatio = 1.0f;
|
||||
g_Config.fDisplayScale = 1.0f;
|
||||
g_Config.fDisplayOffsetX = 0.5f;
|
||||
g_Config.fDisplayOffsetY = 0.5f;
|
||||
return UI::EVENT_DONE;
|
||||
});
|
||||
leftColumn->Add(center);
|
||||
|
||||
static const char *bufFilters[] = { "Linear", "Nearest", };
|
||||
rightColumn->Add(new PopupMultiChoice(&g_Config.iBufFilter, gr->T("Screen Scaling Filter"), bufFilters, 1, ARRAY_SIZE(bufFilters), gr->GetName(), screenManager()));
|
||||
@ -335,4 +300,6 @@ void DisplayLayoutScreen::CreateViews() {
|
||||
Choice *back = new Choice(di->T("Back"), "", false);
|
||||
back->OnClick.Handle<UIScreen>(this, &UIScreen::OnBack);
|
||||
rightColumn->Add(back);
|
||||
|
||||
root_->Add(new DisplayLayoutBackground(mode_, new AnchorLayoutParams(FILL_PARENT, FILL_PARENT, 0.0f, 0.0f, 0.0f, 0.0f)));
|
||||
}
|
||||
|
@ -25,7 +25,6 @@ class DisplayLayoutScreen : public UIDialogScreenWithGameBackground {
|
||||
public:
|
||||
DisplayLayoutScreen(const Path &filename);
|
||||
void CreateViews() override;
|
||||
bool touch(const TouchInput &touch) override;
|
||||
void dialogFinished(const Screen *dialog, DialogResult result) override;
|
||||
void onFinish(DialogResult reason) override;
|
||||
|
||||
@ -38,9 +37,6 @@ public:
|
||||
const char *tag() const override { return "DisplayLayout"; }
|
||||
|
||||
protected:
|
||||
virtual UI::EventReturn OnCenter(UI::EventParams &e);
|
||||
virtual UI::EventReturn OnZoomTypeChange(UI::EventParams &e);
|
||||
|
||||
UI::EventReturn OnPostProcShaderChange(UI::EventParams &e);
|
||||
|
||||
void sendMessage(const char *message, const char *value) override;
|
||||
@ -49,14 +45,4 @@ private:
|
||||
UI::ChoiceStrip *mode_ = nullptr;
|
||||
UI::Choice *postProcChoice_ = nullptr;
|
||||
std::string shaderNames_[256];
|
||||
|
||||
bool dragging_ = false;
|
||||
bool bRotated_ = false;
|
||||
|
||||
// Touch down state for drag to resize etc
|
||||
float startX_ = 0.0f;
|
||||
float startY_ = 0.0f;
|
||||
float startScale_ = -1.0f;
|
||||
float startDisplayOffsetX_ = -1.0f;
|
||||
float startDisplayOffsetY_ = -1.0f;
|
||||
};
|
||||
|
@ -45,8 +45,9 @@ GamepadView::GamepadView(const char *key, UI::LayoutParams *layoutParams) : UI::
|
||||
lastFrameTime_ = time_now_d();
|
||||
}
|
||||
|
||||
void GamepadView::Touch(const TouchInput &input) {
|
||||
bool GamepadView::Touch(const TouchInput &input) {
|
||||
secondsWithoutTouch_ = 0.0f;
|
||||
return true;
|
||||
}
|
||||
|
||||
void GamepadView::Update() {
|
||||
@ -96,8 +97,8 @@ void MultiTouchButton::GetContentDimensions(const UIContext &dc, float &w, float
|
||||
}
|
||||
}
|
||||
|
||||
void MultiTouchButton::Touch(const TouchInput &input) {
|
||||
GamepadView::Touch(input);
|
||||
bool MultiTouchButton::Touch(const TouchInput &input) {
|
||||
bool retval = GamepadView::Touch(input);
|
||||
if ((input.flags & TOUCH_DOWN) && bounds_.Contains(input.x, input.y)) {
|
||||
pointerDownMask_ |= 1 << input.id;
|
||||
usedPointerMask |= 1 << input.id;
|
||||
@ -116,6 +117,7 @@ void MultiTouchButton::Touch(const TouchInput &input) {
|
||||
pointerDownMask_ = 0;
|
||||
usedPointerMask = 0;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
void MultiTouchButton::Draw(UIContext &dc) {
|
||||
@ -152,9 +154,9 @@ void MultiTouchButton::Draw(UIContext &dc) {
|
||||
dc.Draw()->DrawImageRotated(img_, bounds_.centerX(), y, scale, angle_ * (M_PI * 2 / 360.0f), color);
|
||||
}
|
||||
|
||||
void BoolButton::Touch(const TouchInput &input) {
|
||||
bool BoolButton::Touch(const TouchInput &input) {
|
||||
bool lastDown = pointerDownMask_ != 0;
|
||||
MultiTouchButton::Touch(input);
|
||||
bool retval = MultiTouchButton::Touch(input);
|
||||
bool down = pointerDownMask_ != 0;
|
||||
|
||||
if (down != lastDown) {
|
||||
@ -163,11 +165,12 @@ void BoolButton::Touch(const TouchInput &input) {
|
||||
params.a = down;
|
||||
OnChange.Trigger(params);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
void PSPButton::Touch(const TouchInput &input) {
|
||||
bool PSPButton::Touch(const TouchInput &input) {
|
||||
bool lastDown = pointerDownMask_ != 0;
|
||||
MultiTouchButton::Touch(input);
|
||||
bool retval = MultiTouchButton::Touch(input);
|
||||
bool down = pointerDownMask_ != 0;
|
||||
if (down && !lastDown) {
|
||||
if (g_Config.bHapticFeedback) {
|
||||
@ -177,6 +180,7 @@ void PSPButton::Touch(const TouchInput &input) {
|
||||
} else if (lastDown && !down) {
|
||||
__CtrlButtonUp(pspButtonBit_);
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
bool ComboKey::IsDown() {
|
||||
@ -192,10 +196,10 @@ void ComboKey::GetContentDimensions(const UIContext &dc, float &w, float &h) con
|
||||
}
|
||||
}
|
||||
|
||||
void ComboKey::Touch(const TouchInput &input) {
|
||||
bool ComboKey::Touch(const TouchInput &input) {
|
||||
using namespace CustomKey;
|
||||
bool lastDown = pointerDownMask_ != 0;
|
||||
MultiTouchButton::Touch(input);
|
||||
bool retval = MultiTouchButton::Touch(input);
|
||||
bool down = pointerDownMask_ != 0;
|
||||
|
||||
if (down && !lastDown) {
|
||||
@ -220,6 +224,7 @@ void ComboKey::Touch(const TouchInput &input) {
|
||||
}
|
||||
on_ = false;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
void ComboKey::Update() {
|
||||
@ -272,8 +277,8 @@ void PSPDpad::GetContentDimensions(const UIContext &dc, float &w, float &h) cons
|
||||
}
|
||||
}
|
||||
|
||||
void PSPDpad::Touch(const TouchInput &input) {
|
||||
GamepadView::Touch(input);
|
||||
bool PSPDpad::Touch(const TouchInput &input) {
|
||||
bool retval = GamepadView::Touch(input);
|
||||
|
||||
if (input.flags & TOUCH_DOWN) {
|
||||
if (dragPointerId_ == -1 && bounds_.Contains(input.x, input.y)) {
|
||||
@ -297,6 +302,7 @@ void PSPDpad::Touch(const TouchInput &input) {
|
||||
ProcessTouch(input.x, input.y, false);
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
void PSPDpad::ProcessTouch(float x, float y, bool down) {
|
||||
@ -438,8 +444,8 @@ void PSPStick::Draw(UIContext &dc) {
|
||||
dc.Draw()->DrawImage(stickImageIndex_, stickX + dx * stick_size_ * scale_, stickY - dy * stick_size_ * scale_, 1.0f * scale_ * headScale, colorBg, ALIGN_CENTER);
|
||||
}
|
||||
|
||||
void PSPStick::Touch(const TouchInput &input) {
|
||||
GamepadView::Touch(input);
|
||||
bool PSPStick::Touch(const TouchInput &input) {
|
||||
bool retval = GamepadView::Touch(input);
|
||||
if (input.flags & TOUCH_RELEASE_ALL) {
|
||||
dragPointerId_ = -1;
|
||||
centerX_ = bounds_.centerX();
|
||||
@ -447,7 +453,7 @@ void PSPStick::Touch(const TouchInput &input) {
|
||||
__CtrlSetAnalogXY(stick_, 0.0f, 0.0f);
|
||||
usedPointerMask = 0;
|
||||
analogPointerMask = 0;
|
||||
return;
|
||||
return retval;
|
||||
}
|
||||
if (input.flags & TOUCH_DOWN) {
|
||||
float fac = 0.5f*(stick_ ? g_Config.fRightStickHeadScale : g_Config.fLeftStickHeadScale)-0.5f;
|
||||
@ -463,11 +469,13 @@ void PSPStick::Touch(const TouchInput &input) {
|
||||
usedPointerMask |= 1 << input.id;
|
||||
analogPointerMask |= 1 << input.id;
|
||||
ProcessTouch(input.x, input.y, true);
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
if (input.flags & TOUCH_MOVE) {
|
||||
if (input.id == dragPointerId_) {
|
||||
ProcessTouch(input.x, input.y, true);
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
if (input.flags & TOUCH_UP) {
|
||||
@ -478,8 +486,10 @@ void PSPStick::Touch(const TouchInput &input) {
|
||||
usedPointerMask &= ~(1 << input.id);
|
||||
analogPointerMask &= ~(1 << input.id);
|
||||
ProcessTouch(input.x, input.y, false);
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
void PSPStick::ProcessTouch(float x, float y, bool down) {
|
||||
@ -542,8 +552,8 @@ void PSPCustomStick::Draw(UIContext &dc) {
|
||||
dc.Draw()->DrawImage(stickImageIndex_, stickX + dx * stick_size_ * scale_, stickY - dy * stick_size_ * scale_, 1.0f*scale_*g_Config.fRightStickHeadScale, colorBg, ALIGN_CENTER);
|
||||
}
|
||||
|
||||
void PSPCustomStick::Touch(const TouchInput &input) {
|
||||
GamepadView::Touch(input);
|
||||
bool PSPCustomStick::Touch(const TouchInput &input) {
|
||||
bool retval = GamepadView::Touch(input);
|
||||
if (input.flags & TOUCH_RELEASE_ALL) {
|
||||
dragPointerId_ = -1;
|
||||
centerX_ = bounds_.centerX();
|
||||
@ -552,7 +562,7 @@ void PSPCustomStick::Touch(const TouchInput &input) {
|
||||
posY_ = 0.0f;
|
||||
usedPointerMask = 0;
|
||||
analogPointerMask = 0;
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
if (input.flags & TOUCH_DOWN) {
|
||||
float fac = 0.5f*g_Config.fRightStickHeadScale-0.5f;
|
||||
@ -568,11 +578,13 @@ void PSPCustomStick::Touch(const TouchInput &input) {
|
||||
usedPointerMask |= 1 << input.id;
|
||||
analogPointerMask |= 1 << input.id;
|
||||
ProcessTouch(input.x, input.y, true);
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
if (input.flags & TOUCH_MOVE) {
|
||||
if (input.id == dragPointerId_) {
|
||||
ProcessTouch(input.x, input.y, true);
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
if (input.flags & TOUCH_UP) {
|
||||
@ -583,8 +595,10 @@ void PSPCustomStick::Touch(const TouchInput &input) {
|
||||
usedPointerMask &= ~(1 << input.id);
|
||||
analogPointerMask &= ~(1 << input.id);
|
||||
ProcessTouch(input.x, input.y, false);
|
||||
retval = true;
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
void PSPCustomStick::ProcessTouch(float x, float y, bool down) {
|
||||
@ -890,17 +904,16 @@ UI::ViewGroup *CreatePadLayout(float xres, float yres, bool *pause, bool showPau
|
||||
return root;
|
||||
}
|
||||
|
||||
|
||||
void GestureGamepad::Touch(const TouchInput &input) {
|
||||
bool GestureGamepad::Touch(const TouchInput &input) {
|
||||
if (usedPointerMask & (1 << input.id)) {
|
||||
if (input.id == dragPointerId_)
|
||||
dragPointerId_ = -1;
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (input.flags & TOUCH_RELEASE_ALL) {
|
||||
dragPointerId_ = -1;
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (input.flags & TOUCH_DOWN) {
|
||||
@ -940,6 +953,7 @@ void GestureGamepad::Touch(const TouchInput &input) {
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void GestureGamepad::Update() {
|
||||
|
@ -29,7 +29,7 @@ class GamepadView : public UI::View {
|
||||
public:
|
||||
GamepadView(const char *key, UI::LayoutParams *layoutParams);
|
||||
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
bool Key(const KeyInput &input) override {
|
||||
return false;
|
||||
}
|
||||
@ -50,7 +50,7 @@ public:
|
||||
: GamepadView(key, layoutParams), scale_(scale), bgImg_(bgImg), bgDownImg_(bgDownImg), img_(img) {
|
||||
}
|
||||
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Draw(UIContext &dc) override;
|
||||
void GetContentDimensions(const UIContext &dc, float &w, float &h) const override;
|
||||
virtual bool IsDown() { return pointerDownMask_ != 0; }
|
||||
@ -78,7 +78,7 @@ public:
|
||||
: MultiTouchButton(key, bgImg, bgDownImg, img, scale, layoutParams), value_(value) {
|
||||
|
||||
}
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
bool IsDown() override { return *value_; }
|
||||
|
||||
UI::Event OnChange;
|
||||
@ -92,7 +92,7 @@ public:
|
||||
PSPButton(int pspButtonBit, const char *key, ImageID bgImg, ImageID bgDownImg, ImageID img, float scale, UI::LayoutParams *layoutParams)
|
||||
: MultiTouchButton(key, bgImg, bgDownImg, img, scale, layoutParams), pspButtonBit_(pspButtonBit) {
|
||||
}
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
bool IsDown() override;
|
||||
|
||||
private:
|
||||
@ -103,7 +103,7 @@ class PSPDpad : public GamepadView {
|
||||
public:
|
||||
PSPDpad(ImageID arrowIndex, const char *key, ImageID arrowDownIndex, ImageID overlayIndex, float scale, float spacing, UI::LayoutParams *layoutParams);
|
||||
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Draw(UIContext &dc) override;
|
||||
void GetContentDimensions(const UIContext &dc, float &w, float &h) const override;
|
||||
|
||||
@ -124,7 +124,7 @@ class PSPStick : public GamepadView {
|
||||
public:
|
||||
PSPStick(ImageID bgImg, const char *key, ImageID stickImg, ImageID stickDownImg, int stick, float scale, UI::LayoutParams *layoutParams);
|
||||
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Draw(UIContext &dc) override;
|
||||
void GetContentDimensions(const UIContext &dc, float &w, float &h) const override;
|
||||
|
||||
@ -149,7 +149,7 @@ class PSPCustomStick : public PSPStick {
|
||||
public:
|
||||
PSPCustomStick(ImageID bgImg, const char *key, ImageID stickImg, ImageID stickDownImg, float scale, UI::LayoutParams *layoutParams);
|
||||
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Draw(UIContext &dc) override;
|
||||
|
||||
private:
|
||||
@ -172,7 +172,7 @@ public:
|
||||
ComboKey(uint64_t pspButtonBit, const char *key, bool toggle, bool repeat, ControlMapper* controllMapper, ImageID bgImg, ImageID bgDownImg, ImageID img, float scale, bool invertedContextDimension, UI::LayoutParams *layoutParams)
|
||||
: MultiTouchButton(key, bgImg, bgDownImg, img, scale, layoutParams), pspButtonBit_(pspButtonBit), toggle_(toggle), repeat_(repeat), controlMapper_(controllMapper), on_(false), invertedContextDimension_(invertedContextDimension) {
|
||||
}
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Update() override;
|
||||
bool IsDown() override;
|
||||
|
||||
@ -191,7 +191,7 @@ class GestureGamepad : public UI::View {
|
||||
public:
|
||||
GestureGamepad(ControlMapper* controllMapper) : controlMapper_(controllMapper) {};
|
||||
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void Update() override;
|
||||
|
||||
protected:
|
||||
|
@ -136,8 +136,8 @@ public:
|
||||
void SetHoldEnabled(bool hold) {
|
||||
holdEnabled_ = hold;
|
||||
}
|
||||
void Touch(const TouchInput &input) override {
|
||||
UI::Clickable::Touch(input);
|
||||
bool Touch(const TouchInput &input) override {
|
||||
bool retval = UI::Clickable::Touch(input);
|
||||
hovering_ = bounds_.Contains(input.x, input.y);
|
||||
if (hovering_ && (input.flags & TOUCH_DOWN)) {
|
||||
holdStart_ = time_now_d();
|
||||
@ -145,6 +145,7 @@ public:
|
||||
if (input.flags & TOUCH_UP) {
|
||||
holdStart_ = 0;
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
|
||||
bool Key(const KeyInput &key) override {
|
||||
|
@ -359,7 +359,7 @@ public:
|
||||
: UI::AnchorLayout(layoutParams) {
|
||||
}
|
||||
|
||||
void Touch(const TouchInput &input) override;
|
||||
bool Touch(const TouchInput &input) override;
|
||||
void CreateViews();
|
||||
bool HasCreatedViews() const {
|
||||
return !controls_.empty();
|
||||
@ -384,7 +384,7 @@ static Point ClampTo(const Point &p, const Bounds &b) {
|
||||
return Point(clamp_value(p.x, b.x, b.x + b.w), clamp_value(p.y, b.y, b.y + b.h));
|
||||
}
|
||||
|
||||
void ControlLayoutView::Touch(const TouchInput &touch) {
|
||||
bool ControlLayoutView::Touch(const TouchInput &touch) {
|
||||
using namespace UI;
|
||||
|
||||
if ((touch.flags & TOUCH_MOVE) && pickedControl_ != nullptr) {
|
||||
@ -452,6 +452,7 @@ void ControlLayoutView::Touch(const TouchInput &touch) {
|
||||
pickedControl_->SavePosition();
|
||||
pickedControl_ = 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void ControlLayoutView::CreateViews() {
|
||||
|
@ -464,6 +464,7 @@ Aggressive = عنيف
|
||||
Alternative Speed = سرعة ثانوية (في %, 0 = غير محدود)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = فلتر الحواف
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = تلقائي
|
||||
Auto (1:1) = تلقائي (1:1)
|
||||
Auto (same as Rendering) = تلقائي (مثل حجم التصيير)
|
||||
@ -554,7 +555,7 @@ Software Skinning = طلاء برمجي
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = السرعة
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = المط
|
||||
Stretch = المط
|
||||
Texture Filter = منقي الرسوم
|
||||
Texture Filtering = مفلتر الرسوم
|
||||
Texture Scaling = تكبير الرسوم
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = Alternative speed (in %, 0 = unlimited)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropic filtering
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Speed
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Texture filtering
|
||||
Texture Filtering = Texture filtering
|
||||
Texture Scaling = Texture scaling
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = Алтернативна скорост
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropic филтриране
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Автоматично
|
||||
Auto (1:1) = Автоматично (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Скорост
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Текстурно филтриране
|
||||
Texture Filtering = Текстурно филтриране
|
||||
Texture Scaling = Текстурно мащабиране
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = Alternative speed (in %, 0 = unlimited)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Filtrat anisotròpic
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Speed
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Texture filtering
|
||||
Texture Filtering = Texture filtering
|
||||
Texture Scaling = Texture scaling
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresivní
|
||||
Alternative Speed = Alternativní rychlost (v %, 0 = neomezeno)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anizotropní filtrování
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automaticky
|
||||
Auto (1:1) = Automatické (1:1)
|
||||
Auto (same as Rendering) = Automaticky (stejné jako rozlišení vykreslování)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Textury aplikuje software
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Rychlost
|
||||
Speed Hacks = Speed Hacks (Mohou způsobit problémy)
|
||||
Stretching = Roztažení
|
||||
Stretch = Roztažení
|
||||
Texture Filter = Filtr textur
|
||||
Texture Filtering = Filtrování textur
|
||||
Texture Scaling = Změna velikosti textur
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressiv
|
||||
Alternative Speed = Alternativ hastighed (i %, 0 = ubegrænset)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropisk filtrering
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automatisk
|
||||
Auto (1:1) = Automatisk (1:1)
|
||||
Auto (same as Rendering) = Automatisk (Samme som renderingsopløsning)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Kombiner begrænset model tegning af CPU, hurtigere i fleste spil
|
||||
Speed = Hastighed
|
||||
Speed Hacks = Speed Hacks (kan give fejl)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Texturfilter
|
||||
Texture Filtering = Texturfiltrering
|
||||
Texture Scaling = Texturskalering
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressiv
|
||||
Alternative Speed = Alternative Geschwindigkeit
|
||||
Alternative Speed 2 = Alternative Geschwindigkeit 2 (in %, 0 = unlimitiert)
|
||||
Anisotropic Filtering = Anisotropischer Filter
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automatisch
|
||||
Auto (1:1) = Automatisch (1:1)
|
||||
Auto (same as Rendering) = Automatisch (Renderauflösung)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software Skinning
|
||||
SoftwareSkinning Tip = Reduziert Grafikbefehle und schneller in Spielen mit erweiterter Skinning-Technik, in anderen Spielen langsamer
|
||||
Speed = Geschwindigkeit
|
||||
Speed Hacks = Speed Hacks (kann zu Fehlern führen)
|
||||
Stretching = Strecken
|
||||
Stretch = Strecken
|
||||
Texture Filter = Texturfilter
|
||||
Texture Filtering = Texturfilterung
|
||||
Texture Scaling = Texturskalierung
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = Lassi to leko'napa
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Panyaring Anisotropic
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Ia mesa
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Lassinna
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Panyaring Texture
|
||||
Texture Filtering = Saring i Texture
|
||||
Texture Scaling = Petonggoi Texture
|
||||
|
@ -173,6 +173,7 @@ File = &File
|
||||
Frame Skipping = &Frame skipping
|
||||
Frame Skipping Type = Frame skipping type
|
||||
Fullscreen = Fu&llscreen
|
||||
Geometry shader culling = Geometry shader culling
|
||||
Game Settings = &Game settings
|
||||
GE Debugger... = GE debugge&r...
|
||||
GitHub = Git&Hub
|
||||
@ -256,7 +257,6 @@ DevMenu = DevMenu
|
||||
Disabled JIT functionality = Disabled JIT functionality
|
||||
Draw Frametimes Graph = Draw frametimes graph
|
||||
Dump Decrypted Eboot = Dump decrypted EBOOT.BIN on game boot
|
||||
Dump Frame GPU Commands = Dump frame GPU commands
|
||||
Enable driver bug workarounds = Enable driver bug workarounds
|
||||
Enable Logging = Enable debug logging
|
||||
Enter address = Enter address
|
||||
@ -268,8 +268,6 @@ GPU Profile = GPU profile
|
||||
GPU Log Profiler = GPU Log Profiler
|
||||
Jit Compare = JIT compare
|
||||
JIT debug tools = JIT debug tools
|
||||
Language = Language
|
||||
Load language ini = Load language ini
|
||||
Log Dropped Frame Statistics = Log dropped frame statistics
|
||||
Log Level = Log level
|
||||
Log View = Log view
|
||||
@ -285,7 +283,6 @@ RestoreDefaultSettings = Are you sure you want to restore all settings back to t
|
||||
RestoreGameDefaultSettings = Are you sure you want to restore the game-specific settings\nback to the PPSSPP defaults?
|
||||
Resume = Resume
|
||||
Run CPU Tests = Run CPU tests
|
||||
Save language ini = Save language ini
|
||||
Save new textures = Save new textures
|
||||
Shader Viewer = Shader viewer
|
||||
Show Developer Menu = Show developer menu
|
||||
@ -514,7 +511,6 @@ Direct3D 11 = Direct3D 11
|
||||
Disabled = Disabled
|
||||
Display Layout && Effects = Display layout && effects
|
||||
Display Resolution (HW scaler) = Display resolution (HW scaler)
|
||||
Dump next frame to log = Dump next frame to log
|
||||
Enable Cardboard VR = Enable Cardboard VR
|
||||
FPS = FPS
|
||||
Frame Rate Control = Framerate control
|
||||
@ -564,7 +560,6 @@ Rendering Resolution = Rendering resolution
|
||||
RenderingMode NonBuffered Tip = Faster, but nothing may draw in some games
|
||||
Rotation = Rotation
|
||||
Safe = Safe
|
||||
Screen layout = Screen layout
|
||||
Screen Scaling Filter = Screen scaling filter
|
||||
Show Debug Statistics = Show debug statistics
|
||||
Show FPS Counter = Show FPS counter
|
||||
@ -574,7 +569,9 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Speed
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stereo display shader = Stereo display shader
|
||||
Stereo rendering = Stereo rendering
|
||||
Stretch = Stretch
|
||||
Texture Filter = Texture filtering
|
||||
Texture Filtering = Texture filtering
|
||||
Texture Scaling = Texture scaling
|
||||
@ -829,11 +826,13 @@ Bloom = Bloom
|
||||
Brightness = Brightness
|
||||
Cartoon = Cartoon
|
||||
ColorCorrection = Color correction
|
||||
ColorPreservation = Color preservation
|
||||
Contrast = Contrast
|
||||
CRT = CRT scanlines
|
||||
FXAA = FXAA Antialiasing
|
||||
Gamma = Gamma
|
||||
Grayscale = Grayscale
|
||||
GreenLevel = GreenLevel
|
||||
Intensity = Intensity
|
||||
InverseColors = Inverse Colors
|
||||
Natural = Natural Colors
|
||||
@ -841,9 +840,11 @@ NaturalA = Natural Colors (no blur)
|
||||
Off = Off
|
||||
Power = Power
|
||||
PSPColor = PSP color
|
||||
RedBlue = Red/Blue
|
||||
Saturation = Saturation
|
||||
Scanlines = Scanlines (CRT)
|
||||
Sharpen = Sharpen
|
||||
SideBySide = Side by side (SBS)
|
||||
SSAA(Gauss) = Supersampling AA (Gauss)
|
||||
Tex4xBRZ = 4xBRZ
|
||||
TexMMPX = MMPX
|
||||
@ -1139,6 +1140,7 @@ Fast Memory = Fast memory (unstable)
|
||||
Floating symbols = Floating symbols
|
||||
Force real clock sync (slower, less lag) = Force real clock sync (slower, less lag)
|
||||
frames, 0:off = frames, 0 = off
|
||||
Game crashed = Game crashed
|
||||
Games list settings = Games list settings
|
||||
General = General
|
||||
Grid icon size = Grid icon size
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresivo
|
||||
Alternative Speed = Velocidad alternativa (%, 0 = ilimitada)
|
||||
Alternative Speed 2 = Velocidad alternativa 2 (%, 0 = ilimitada)
|
||||
Anisotropic Filtering = Filtrado anisotrópico
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automático
|
||||
Auto (1:1) = Automático (1:1)
|
||||
Auto (same as Rendering) = Automático (igual a la de renderizado)
|
||||
@ -546,7 +547,7 @@ Software Skinning = "Skinning" por software
|
||||
SoftwareSkinning Tip = Reduce la carga de dibujado, rápido en juegos con técnicas de skinning avanzadas, pero lento en otros.
|
||||
Speed = Velocidad
|
||||
Speed Hacks = Speed Hacks (causarán errores gráficos)
|
||||
Stretching = Estirar
|
||||
Stretch = Estirar
|
||||
Texture Filter = Filtro de texturas
|
||||
Texture Filtering = Filtrado de texturas
|
||||
Texture Scaling = Escalado de texturas
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresivo
|
||||
Alternative Speed = Velocidad alternativa (en %, 0 = ilimitada)
|
||||
Alternative Speed 2 = Velocidad alternativa 2 (en %, 0 = ilimitada)
|
||||
Anisotropic Filtering = Filtrado Anisotrópico
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automático
|
||||
Auto (1:1) = Automático (1:1)
|
||||
Auto (same as Rendering) = Automático (igual a la de renderizado)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Skineado por software
|
||||
SoftwareSkinning Tip = Combina dibujados de modelo de skineado en la CPU. Acelera muchos juegos pero ralentiza otros.
|
||||
Speed = Velocidad
|
||||
Speed Hacks = Speed Hacks (puede causar glitches)
|
||||
Stretching = Estirar
|
||||
Stretch = Estirar
|
||||
Texture Filter = Filtro de texturas
|
||||
Texture Filtering = Filtrado de texturas
|
||||
Texture Scaling = Escalado de texturas
|
||||
|
@ -456,6 +456,7 @@ Aggressive = شدید
|
||||
Alternative Speed = سرعت ثانویه
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropic فیلتر
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = اتوماتیک
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = خودکار (مانند رزولوشن رندرینگ)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = در اکثر بازی ها سریع تر ،CPU دار در skin ترکیب رسم مدل های
|
||||
Speed = سرعت
|
||||
Speed Hacks = Speed Hacks (میتواند باعث باگ شود)
|
||||
Stretching = کشیدن
|
||||
Stretch = کشیدن
|
||||
Texture Filter = فیلتر تکسچر
|
||||
Texture Filtering = فیلتر کردن تکسچر
|
||||
Texture Scaling = تغییر سایز تکسچر ها
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = Vaihtoehtoinen nopeus
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotrooppisen suodatus
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Nopeus
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Tekstuurisuodatin
|
||||
Texture Filtering = Tekstuurin suodatus
|
||||
Texture Scaling = Tekstuurin skaalaus
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agressif
|
||||
Alternative Speed = Vitesse alternative 1 (en %, 0 = illimitée)
|
||||
Alternative Speed 2 = Vitesse alternative 2 (en %, 0 = illimitée)
|
||||
Anisotropic Filtering = Filtrage anisotrope
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automatique
|
||||
Auto (1:1) = Automatique (1:1)
|
||||
Auto (same as Rendering) = Automatique (comme la définition du rendu)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Enveloppe logicielle
|
||||
SoftwareSkinning Tip = Combine l'affichage des modèles enveloppés sur le CPU, plus rapide dans la plupart des jeux
|
||||
Speed = Vitesse
|
||||
Speed Hacks = Speed Hacks (crée des bugs graphiques)
|
||||
Stretching = Étirement
|
||||
Stretch = Étirement
|
||||
Texture Filter = Filtre de textures
|
||||
Texture Filtering = Filtrage des textures
|
||||
Texture Scaling = Mise à l'échelle des textures
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresivo
|
||||
Alternative Speed = Velocidade alternativa (%, 0 = ilimitada)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Filtrado anisotrópico
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automático
|
||||
Auto (1:1) = Automático (1:1)
|
||||
Auto (same as Rendering) = Automático (igual á de renderizado)
|
||||
@ -546,7 +547,7 @@ Software Skinning = «Skinning» por software
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Velocidade
|
||||
Speed Hacks = Speed Hacks (causarán erros gráficos)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Filtro de texturas
|
||||
Texture Filtering = Filtrado de texturas
|
||||
Texture Scaling = Escalado de texturas
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Εξαναγκαστική
|
||||
Alternative Speed = Εναλακτική προβολή ταχύτητας (στα %, 0 = απεριόριστη)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Ανισοτροπικό Φιλτράρισμα
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Αυτόματο
|
||||
Auto (1:1) = Αυτόματο (1:1)
|
||||
Auto (same as Rendering) = Αυτόματο (ίσο με την Ανάλυση Απεικόνισης)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Εκδορά Λογισμικού
|
||||
SoftwareSkinning Tip = Συνδυασμός μοντέλου στην CPU, γρηγορότερο στα περισσότερα παιχνίδια
|
||||
Speed = Ταχύτητα
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Επέκταση
|
||||
Stretch = Επέκταση
|
||||
Texture Filter = Φίλτρο Υφών
|
||||
Texture Filtering = Φιλτράρισμα Υφών
|
||||
Texture Scaling = Κλιμάκωση Υφών
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = הגבלת מהירות
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropic filtering
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = אוטומטי
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = מהירות
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = קידוד טקסטורה
|
||||
Texture Filtering = קידוד טקסטורה
|
||||
Texture Scaling = מידת טקסטורה
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = תוריהמ תלבגה
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropic filtering
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = יטמוטוא
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = תוריהמ
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = הרוטסקט דודיק
|
||||
Texture Filtering = הרוטסקט דודיק
|
||||
Texture Scaling = הרוטסקט תדימ
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresivno
|
||||
Alternative Speed = Alternativna brzina (u %, 0 = unlimited)
|
||||
Alternative Speed 2 = Alternativna brzina 2 (u %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anizotropno filtriranje
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (isto kao Prikazna rezolucija)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Skiniranje softvera
|
||||
SoftwareSkinning Tip = Kombiniraj skinirane modele crteža na CPU, brže u većini igara
|
||||
Speed = Brzina
|
||||
Speed Hacks = Speed Hacks (može uzrokovati glitcheve)
|
||||
Stretching = Rastezanje
|
||||
Stretch = Rastezanje
|
||||
Texture Filter = Filtar tekstura
|
||||
Texture Filtering = Filtriranje tekstura
|
||||
Texture Scaling = Mjerenje tekstura
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresszív
|
||||
Alternative Speed = Alternatív sebesség
|
||||
Alternative Speed 2 = Alternatív sebesség 2 (%-ban, 0 = korlátlan)
|
||||
Anisotropic Filtering = Anizotropikus szűrés
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (renderelési felbontással megegyező)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Szoftveres "skinning"
|
||||
SoftwareSkinning Tip = "Skinning" művelet elvégzése a processzoron. Sok játék esetében gyorsabb.
|
||||
Speed = Sebesség
|
||||
Speed Hacks = Speed Hacks (ezek HIBÁKAT OKOZHATNAK)
|
||||
Stretching = Nyújtás
|
||||
Stretch = Nyújtás
|
||||
Texture Filter = Textúra szűrés
|
||||
Texture Filtering = Textúra szűrés
|
||||
Texture Scaling = Textúra nagyítás
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresif
|
||||
Alternative Speed = Kecepatan alternatif (dalam %, 0 = tak terbatas)
|
||||
Alternative Speed 2 = Kecepatan alternatif 2 (dalam %, 0 = tak terbatas)
|
||||
Anisotropic Filtering = Pemfilteran anisotropik
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Otomatis
|
||||
Auto (1:1) = Otomatis (1:1)
|
||||
Auto (same as Rendering) = Otomatis (sama dengan resolusi pelukis)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Pengkulitan perangkat lunak
|
||||
SoftwareSkinning Tip = Menggabungkan model berkulit pada CPU, lebih cepat di kebanyakan permainan
|
||||
Speed = Kecepatan
|
||||
Speed Hacks = Speed Hacks (menyebabkan kecacatan)
|
||||
Stretching = Peregangan
|
||||
Stretch = Peregangan
|
||||
Texture Filter = Filter tekstur
|
||||
Texture Filtering = Pemfilteran tekstur
|
||||
Texture Scaling = Penskala tekstur
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressivo
|
||||
Alternative Speed = Velocità Alternativa (in %, 0 = illimitata)
|
||||
Alternative Speed 2 = Velocità Alternativa 2 (in %, 0 = illimitata)
|
||||
Anisotropic Filtering = Filtro Anisotropico
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automatico
|
||||
Auto (1:1) = Automatico (1:1)
|
||||
Auto (same as Rendering) = Automatico (stessa risoluzione del rendering)
|
||||
@ -547,7 +548,7 @@ Software Skinning = Software Skinning
|
||||
SoftwareSkinning Tip = Combina la visualizzazione di modelli disegnati dalla CPU, più veloce nella maggior parte dei giochi
|
||||
Speed = Velocità
|
||||
Speed Hacks = Speed Hacks (causerà dei problemi)
|
||||
Stretching = Adatta al Display
|
||||
Stretch = Adatta al Display
|
||||
Texture Filter = Filtro delle texture
|
||||
Texture Filtering = Filtraggio delle texture
|
||||
Texture Scaling = Scalatura delle texture
|
||||
|
@ -456,6 +456,7 @@ Aggressive = 最大限
|
||||
Alternative Speed = カスタム速度1 (%で指定、0 = 無制限)
|
||||
Alternative Speed 2 = カスタム速度2 (%で指定、0 = 無制限)
|
||||
Anisotropic Filtering = 異方性フィルタリング
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = 自動
|
||||
Auto (1:1) = 自動 (1:1)
|
||||
Auto (same as Rendering) = 自動 (レンダリング解像度と同じ)
|
||||
@ -546,7 +547,7 @@ Software Skinning = ソフトウェアスキニング
|
||||
SoftwareSkinning Tip = スキンモデルの描画をCPUでまとめて行う。ほとんどのゲームが高速化します
|
||||
Speed = 速度
|
||||
Speed Hacks = Speed Hacks (不具合あり)
|
||||
Stretching = 拡大
|
||||
Stretch = 拡大
|
||||
Texture Filter = テクスチャフィルタ
|
||||
Texture Filtering = テクスチャフィルタリング
|
||||
Texture Scaling = テクスチャスケーリング
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresif
|
||||
Alternative Speed = Kacepetan Alternatif
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Penyaring Anisotropis
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Otomatis
|
||||
Auto (1:1) = Otomatis (1:1)
|
||||
Auto (same as Rendering) = Otomatis (padha Rendering)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Kacepetan
|
||||
Speed Hacks = Speed Hacks (nyebabake glitches)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Penyaring Tekstur
|
||||
Texture Filtering = Penyaring Tekstur
|
||||
Texture Scaling = Skala Tekstur
|
||||
|
@ -456,6 +456,7 @@ Aggressive = 과격
|
||||
Alternative Speed = 대체 속도 (%, 0 = 무제한)
|
||||
Alternative Speed 2 = 대체 속도 2 (%, 0 = 무제한)
|
||||
Anisotropic Filtering = 비등방성 필터링
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = 자동
|
||||
Auto (1:1) = 자동 (1:1)
|
||||
Auto (same as Rendering) = 자동 (렌더링 해상도와 동일)
|
||||
@ -545,7 +546,7 @@ Software Skinning = 소프트웨어 스키닝
|
||||
SoftwareSkinning Tip = 대부분의 게임에서 더 빠르게 CPU에서 스킨 모델 드로우를 결합합니다.
|
||||
Speed = 속도
|
||||
Speed Hacks = Speed Hacks (결함을 일으킬 수 있음)
|
||||
Stretching = 늘이기
|
||||
Stretch = 늘이기
|
||||
Texture Filter = 텍스처 필터링
|
||||
Texture Filtering = 텍스처 필터링
|
||||
Texture Scaling = 텍스처 스케일링
|
||||
|
@ -456,6 +456,7 @@ Aggressive = ຮຸນແຮງ
|
||||
Alternative Speed = ຄວາມໄວເສີມ (ໃນ %, 0 = ບໍ່ຈຳກັດ)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = ກຳຈັດຄວາມບໍ່ຄົມຊັດ
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = ອັດຕະໂນມັດ
|
||||
Auto (1:1) = ອັດຕະໂນມັດ (1:1)
|
||||
Auto (same as Rendering) = ອັດຕະໂນມັດ (ແບບດຽວກັບຄວາມລະອຽດການສະແດງຜົນ)
|
||||
@ -546,7 +547,7 @@ Software Skinning = ຊ໋ອບແວຣ໌ສກິນນິງ
|
||||
SoftwareSkinning Tip = ປະສານໂມເດລພື້ນຜິວໃຫ້ຂຽນຜ່ານ CPU, ເກມສ່ວນໃຫຍ່ໃຊ້ແລ້ວໄວຂຶ້ນ
|
||||
Speed = ຄວາມໄວ
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = ດຶງເຕັມຈໍ
|
||||
Stretch = ດຶງເຕັມຈໍ
|
||||
Texture Filter = ໂຕຕອງພື້ນຜິວ
|
||||
Texture Filtering = ຕອງພື້ນຜິວ
|
||||
Texture Scaling = ປັບພື້ນຜິວ
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = Alternatyvus greitis (procentais, 0 procentų = neribotas)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = "Anisotropic" filtravimas
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automatinis
|
||||
Auto (1:1) = Automatinė (1:1)
|
||||
Auto (same as Rendering) = Automatinis (kaip Rodymo rezoliucija)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Programinės įrangos "nulupimas"
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Greitis
|
||||
Speed Hacks = Speed Hacks (gali sukelti problemų)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Tekstūrų filtravimas
|
||||
Texture Filtering = Tekstūrų filtravimas
|
||||
Texture Scaling = Tekstūrų skalė
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = Kelajuan alternatif
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropic filtering
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Pembalutan Perisian
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Laju
|
||||
Speed Hacks = Speed Hacks (mungkin menyebabkan gangguan)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Penapis Tekstur
|
||||
Texture Filtering = Penapisan Tekstur
|
||||
Texture Scaling = Penskalaan Tekstur
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agressief
|
||||
Alternative Speed = Alternatieve snelheid (in %, 0 = onbeperkt)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropische filter
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automatisch
|
||||
Auto (1:1) = Automatisch (1:1)
|
||||
Auto (same as Rendering) = Auto (renderresolutie)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Skinning via software
|
||||
SoftwareSkinning Tip = Vermindert aantal renders en is sneller in games die de geavanceerde skinningtechniek gebruiken, maar voor sommige games trager
|
||||
Speed = Snelheid
|
||||
Speed Hacks = Speed Hacks (kan glitches veroorzaken)
|
||||
Stretching = Uitrekken
|
||||
Stretch = Uitrekken
|
||||
Texture Filter = Texturefilter
|
||||
Texture Filtering = Texturefilter
|
||||
Texture Scaling = Textures schalen
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressive
|
||||
Alternative Speed = Alternativ hastighet
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropisk filtrering
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (same as rendering resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Hastighet
|
||||
Speed Hacks = Speed Hacks (can cause rendering errors!)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Tekstur filtrering
|
||||
Texture Filtering = Tekstur filtrering
|
||||
Texture Scaling = Teksturskalning
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresywne
|
||||
Alternative Speed = Alternatywna prędkość (w %, 0 = bez limitu)
|
||||
Alternative Speed 2 = Alternatywna prędkość 2 (w %, 0 = bez limitu)
|
||||
Anisotropic Filtering = Filtrowanie anizotropowe
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automatyczne
|
||||
Auto (1:1) = Automatyczna (1:1)
|
||||
Auto (same as Rendering) = Auto (jak roz. renderowania)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Programowy skinning
|
||||
SoftwareSkinning Tip = Łączy na CPU wywołania rysujące modele z animacjami, przyspieszenie w większości gier
|
||||
Speed = Prędkość (procentowo)
|
||||
Speed Hacks = Speed Hacks (powodują problemy)
|
||||
Stretching = Rozciąganie
|
||||
Stretch = Rozciąganie
|
||||
Texture Filter = Filtrowanie tekstur
|
||||
Texture Filtering = Filtrowanie tekstur
|
||||
Texture Scaling = Skalowanie tekstur
|
||||
|
@ -480,6 +480,7 @@ Aggressive = Agressivo
|
||||
Alternative Speed = Velocidade alternativa (em %, 0 = ilimitada)
|
||||
Alternative Speed 2 = Velocidade alternativa 2 (em %, 0 = ilimitada)
|
||||
Anisotropic Filtering = Filtragem anisotrópica
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (a mesma que a da resolução de renderização)
|
||||
@ -569,7 +570,7 @@ Software Skinning = Skinning via software
|
||||
SoftwareSkinning Tip = Combina os desenhos dos modelos de skinning na CPU, mais rápido na maioria dos jogos
|
||||
Speed = Velocidade
|
||||
Speed Hacks = Speed Hacks (pode causar erros gráficos)
|
||||
Stretching = Esticamento
|
||||
Stretch = Esticamento
|
||||
Texture Filter = Filtragem das texturas
|
||||
Texture Filtering = Filtragem das texturas
|
||||
Texture Scaling = Dimensionamento das texturas
|
||||
|
@ -480,6 +480,7 @@ Aggressive = Agressivo
|
||||
Alternative Speed = Velocidade alternativa (em %, 0 = ilimitada)
|
||||
Alternative Speed 2 = Segunda Velocidade alternativa (em %, 0 = ilimitada)
|
||||
Anisotropic Filtering = Filtragem anisotrópica
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automático
|
||||
Auto (1:1) = Automático (1:1)
|
||||
Auto (same as Rendering) = Auto (a mesma de que a da resolução de renderização)
|
||||
@ -569,7 +570,7 @@ Software Skinning = Skinning via software
|
||||
SoftwareSkinning Tip = Combina os desenhos dos modelos de skinning na CPU, mais rápido na maioria dos jogos
|
||||
Speed = Velocidade
|
||||
Speed Hacks = Speed Hacks (pode causar erros gráficos)
|
||||
Stretching = Esticamento
|
||||
Stretch = Esticamento
|
||||
Texture Filter = Filtração das texturas
|
||||
Texture Filtering = Filtração das texturas
|
||||
Texture Scaling = Dimensionamento das texturas
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresiv
|
||||
Alternative Speed = Viteză alternativă (în %, 0 = nelimitat)
|
||||
Alternative Speed 2 = Alternative speed 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Filtru Anisotropic
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Automat
|
||||
Auto (1:1) = Automat (1:1)
|
||||
Auto (same as Rendering) = Automat (la fel ca rezoluția de afișare)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Skinning cu software
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Viteză
|
||||
Speed Hacks = Speed Hacks (pot cauza stricăciuni)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Filtru texturi
|
||||
Texture Filtering = Filtrare texturi
|
||||
Texture Scaling = Scalare texturi
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Принудительно
|
||||
Alternative Speed = Другая скорость (в %, 0 = без ограничений)
|
||||
Alternative Speed 2 = Другая скорость 2 (в %, 0 = без ограничений)
|
||||
Anisotropic Filtering = Анизотропная фильтрация
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Авто
|
||||
Auto (1:1) = Авто (1:1)
|
||||
Auto (same as Rendering) = Авто (как разрешение рендеринга)
|
||||
@ -547,7 +548,7 @@ Software Skinning = Программная заливка
|
||||
SoftwareSkinning Tip = Объединяет вызовы отрисовки моделей с заливкой на ЦП, быстрее во многих играх
|
||||
Speed = Скорость
|
||||
Speed Hacks = Speed Hacks (могут вызывать глюки)
|
||||
Stretching = Растягивание
|
||||
Stretch = Растягивание
|
||||
Texture Filter = Текстурный фильтр
|
||||
Texture Filtering = Фильтрация текстур
|
||||
Texture Scaling = Масштабирование текстур
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Aggressiv
|
||||
Alternative Speed = Alternativ hastighet
|
||||
Alternative Speed 2 = Alternativ hastighet 2 (%, 0 = obegränsad)
|
||||
Anisotropic Filtering = Anisotropisk filtrering
|
||||
Aspect Ratio = Sidförhållande
|
||||
Auto = Auto
|
||||
Auto (1:1) = Auto (1:1)
|
||||
Auto (same as Rendering) = Auto (samma som rendering)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software Skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Hastighet
|
||||
Speed Hacks = Speed-hacks (kan orsaka renderingsproblem)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Texturfilter
|
||||
Texture Filtering = Texturfiltrering
|
||||
Texture Scaling = Texturskalning
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Agresibo
|
||||
Alternative Speed = Alternatibong bilis
|
||||
Alternative Speed 2 = Alternatibong bilis 2 (in %, 0 = unlimited)
|
||||
Anisotropic Filtering = Anisotropikong Pagsala
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Awto
|
||||
Auto (1:1) = Awto (1:1)
|
||||
Auto (same as Rendering) = Awto (Kapareho sa Renderig Resolution)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Bilis
|
||||
Speed Hacks = Speed Hacks (maaring magdulot ng pagloloko sa laro)
|
||||
Stretching = Iunat
|
||||
Stretch = Iunat
|
||||
Texture Filter = Panala ng Texture
|
||||
Texture Filtering = Pagsala sa Texture
|
||||
Texture Scaling = Pagsukat sa Texture
|
||||
|
@ -456,6 +456,7 @@ Aggressive = รุนแรง
|
||||
Alternative Speed = เพิ่ม-ลดระดับความเร็ว (ใน %, 0 = ไม่จำกัด)
|
||||
Alternative Speed 2 = เพิ่ม-ลดระดับความเร็ว 2 (ใน %, 0 = ไม่จำกัด)
|
||||
Anisotropic Filtering = ตัวกรองขจัดความไม่คมชัดของพื้นผิว
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = อัตโนมัติ
|
||||
Auto (1:1) = อัตโนมัติ (1:1)
|
||||
Auto (same as Rendering) = อัตโนมัติ (ค่าเดียวกับที่ใช้แสดงผลภาพ)
|
||||
@ -549,7 +550,7 @@ Speed = ความเร็ว
|
||||
Speed Hacks = แฮ็คความเร็ว (อาจแสดงผลผิดพลาด)
|
||||
Stereo display shader = เฉดแสงสีของภาพแบบสามมิติ
|
||||
Stereo rendering = การแสดงผลแบบสามมิติ
|
||||
Stretching = ดึงเต็มจอ
|
||||
Stretch = ดึงเต็มจอ
|
||||
Texture Filter = ตัวกรองพื้นผิว
|
||||
Texture Filtering = การกรองพื้นผิว
|
||||
Texture Scaling = การปรับสเกลพื้นผิว
|
||||
@ -853,7 +854,7 @@ RedBlue = ภาพแว่นแดงฟ้า (สามมิติแบ
|
||||
Saturation = ความอิ่มตัวของสี
|
||||
Scanlines = ภาพออกมัวเป็นเส้นแนวนอน
|
||||
Sharpen = ภาพเน้นขอบคมขึ้น
|
||||
SideBySize = ภาพแยกสองจอแบบสามมิติ
|
||||
SideBySide = ภาพแยกสองจอแบบสามมิติ
|
||||
SSAA(Gauss) = ภาพเน้นความละเอียดให้สูงขึ้น
|
||||
Tex4xBRZ = 4xBRZ
|
||||
TexMMPX = MMPX
|
||||
|
@ -458,6 +458,7 @@ Aggressive = Agresif
|
||||
Alternative Speed = Alternatif Hız (% 0 = sınırsız)
|
||||
Alternative Speed 2 = Alternatif Hız 2 (% 0 = sınırsız)
|
||||
Anisotropic Filtering = Anizotropik filtreleme
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Otomatik
|
||||
Auto (1:1) = Otomatik (1:1)
|
||||
Auto (same as Rendering) = Otomatik (İşleme Çözünürlüğüyle Aynı)
|
||||
@ -548,7 +549,7 @@ Software Skinning = Software skinning
|
||||
SoftwareSkinning Tip = Combine skinned model draws on the CPU, faster in most games
|
||||
Speed = Hız
|
||||
Speed Hacks = Hız Hacks (Küçük teknik problemlere neden olabilir.)
|
||||
Stretching = Serbest tam ekran (sünme)
|
||||
Stretch = Serbest tam ekran (sünme)
|
||||
Texture Filter = Doku filtreleme
|
||||
Texture Filtering = Doku filtreleme
|
||||
Texture Scaling = Doku ölçekleme
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Примусово
|
||||
Alternative Speed = Альтернативна шв. (к %, 0 = необмежено)
|
||||
Alternative Speed 2 = Альтернативна шв. 2 (к %, 0 = необмежено)
|
||||
Anisotropic Filtering = Анізотропна фільтрація
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Авто
|
||||
Auto (1:1) = Авто (1:1)
|
||||
Auto (same as Rendering) = Авто (таке ж як розширення рендерингу)
|
||||
@ -546,7 +547,7 @@ Software Skinning = Програмна заливка
|
||||
SoftwareSkinning Tip = Комбінована модель розібраної моделі яка притягується до процесора, швидше в більшості ігор
|
||||
Speed = Швидкість
|
||||
Speed Hacks = Speed Hacks (можуть викликати глюки)
|
||||
Stretching = Розтягнення
|
||||
Stretch = Розтягнення
|
||||
Texture Filter = Фільтр текстур
|
||||
Texture Filtering = Фільтрація текстур
|
||||
Texture Scaling = Масштабування текстур
|
||||
|
@ -456,6 +456,7 @@ Aggressive = Xâm lược
|
||||
Alternative Speed = Tốc độ luân phiên
|
||||
Alternative Speed 2 = Tốc độ luân phiên 2 (trong %, 0 = không giới hạn)
|
||||
Anisotropic Filtering = Lọc không cùng hướng
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = Tự động
|
||||
Auto (1:1) = Tự động (1:1)
|
||||
Auto (same as Rendering) = Tự động (cùng với kết xuất)
|
||||
@ -546,7 +547,7 @@ Software Skinning = phủ lớp bằng phần mềm
|
||||
SoftwareSkinning Tip = Mô hình kết hợp vẽ trên CPU, nhanh hơn trong hầu hết các trò chơi
|
||||
Speed = Tốc độ
|
||||
Speed Hacks = Tốc độ Hacks (sẽ bị lỗi)
|
||||
Stretching = Stretching
|
||||
Stretch = Stretch
|
||||
Texture Filter = Bộ lọc họa tiết
|
||||
Texture Filtering = Lọc texture
|
||||
Texture Scaling = Họa tiết rộng
|
||||
|
@ -456,6 +456,7 @@ Aggressive = 激进
|
||||
Alternative Speed = 自定义速度
|
||||
Alternative Speed 2 = 自定义速度2
|
||||
Anisotropic Filtering = 各向异性过滤
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = 自动
|
||||
Auto (1:1) = 自动(1:1)
|
||||
Auto (same as Rendering) = 自动(同渲染分辨率)
|
||||
@ -546,7 +547,7 @@ Software Skinning = 软件蒙皮
|
||||
SoftwareSkinning Tip = 合并CPU中已经蒙皮的模型绘制,在部分游戏中更快
|
||||
Speed = 运行速度
|
||||
Speed Hacks = 速度修正 (可能引发故障)
|
||||
Stretching = 拉伸
|
||||
Stretch = 拉伸
|
||||
Texture Filter = 纹理过滤方式
|
||||
Texture Filtering = 纹理过滤
|
||||
Texture Scaling = 纹理缩放
|
||||
|
@ -456,6 +456,7 @@ Aggressive = 積極
|
||||
Alternative Speed = 替代速度 (於 %,0 = 無限制)
|
||||
Alternative Speed 2 = 替代速度 2 (於 %,0 = 無限制)
|
||||
Anisotropic Filtering = 非等向性過濾
|
||||
Aspect Ratio = Aspect Ratio
|
||||
Auto = 自動
|
||||
Auto (1:1) = 自動 (1:1)
|
||||
Auto (same as Rendering) = 自動 (同於轉譯解析度)
|
||||
@ -545,7 +546,7 @@ Software Skinning = 軟體除皮
|
||||
SoftwareSkinning Tip = 結合除皮模組在 CPU 上繪製,在多數遊戲上更快
|
||||
Speed = 速度
|
||||
Speed Hacks = 速度駭客 (可能會造成轉譯錯誤!)
|
||||
Stretching = 延伸
|
||||
Stretch = 延伸
|
||||
Texture Filter = 紋理濾鏡
|
||||
Texture Filtering = 紋理濾鏡
|
||||
Texture Scaling = 紋理縮放
|
||||
|
@ -202,7 +202,7 @@ SettingMinValue2=0.0
|
||||
SettingStep2=0.05
|
||||
Fragment=stereo_red_blue.fsh
|
||||
Vertex=fxaa.vsh
|
||||
[SideBySize]
|
||||
[SideBySide]
|
||||
Type=StereoToMono
|
||||
Name=SideBySide Stereo
|
||||
Author=Henrik Rydgård
|
||||
|
Loading…
Reference in New Issue
Block a user