diff --git a/Source/Android/res/layout/prefs.xml b/Source/Android/res/layout/prefs.xml deleted file mode 100644 index 53dd443300..0000000000 --- a/Source/Android/res/layout/prefs.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Source/Android/res/values-ja/strings.xml b/Source/Android/res/values-ja/strings.xml index 3ab83ed25a..f84e12359c 100644 --- a/Source/Android/res/values-ja/strings.xml +++ b/Source/Android/res/values-ja/strings.xml @@ -73,8 +73,52 @@ ビデオレンダラ 使用するビデオレンダラー + 画質向上の設定 + 内部解像度の変更 + 内部解像度の計算方式を設定します。高解像度に設定することで大きく 画質が向上します。 しかし、ゲームによっては非常に重くなったり描画バグの原因となります。 【ゲーム解像度の倍数】は【ウィンドウサイズに拡大】より少し重くなり ますが、描画バグは発生しにくくなります。 また一般的に内部解像度が低いほど、動作速度は向上します。 + 異方性フィルタリング + 異方性フィルタリングを適用します。 奥行きのあるテクスチャをより精細に描画することが出来ます。 特定のゲームでは描画バグの原因になることがあります。 + Scaled EFB Copy + テクスチャエフェクトを表示するために作成されたテクスチャの品質を著しく向上させます。 特に高解像度出力時に効果が大きく出ます。 動作速度は少々低下し、まれに描画バグの原因にもなることもあります。 + Per-Pixel Lighting + ピクセル単位での光源処理を行います。 GPUの性能にもよりますが、数パーセント程度、動作速度が低下します。 このオプションは通常安全ですが、時に描画バグを引き起こすこともあります + Force Texture Filtering + ゲーム側でフィルタ無効を明示している場面でも、強制的にフィルタリングを行います。 特に高解像度出力時にテクスチャが綺麗になりますが、いくつかのゲームで描画バグを引き起こします。 + 霧を無効 + フォグ処理を無効化します。これにより遠景の高精細化が期待できます。いくつかのタイトルではフォグ処理に頼った画面効果が正しく表示 されなくなります。 + + 高速化(Hacks) + 内蔵フレームバッファ + CPUからEFBアクセスをスキップ + EFBへの読み取り/書き込みにCPUから作られたすべての要求を無視。 + フォーマットの変更を無視 + EFB形式への変更を無視。 + EFBコピー方法 + EFBコピーをエミュレート方法を決定。 + テクスチャ + RAM (キャッシュない) + RAM (キャッシュ) + テクスチャキャッシュ + + この選択をSafe設定しておくと、RAMからのテクスチャ更新に 失敗しにくなります。 + + + + 外部フレームバッファ + XFBをエミュレート方法を決定。 + バーチャル + 実機 + Cache Display Lists + ディスプレイリストをキャッシュすることによりエミュレーション速度を向上。 + Disable Destination Alpha + 多くのタイトルで画面効果に使用されている、アルファ透過処理をスキップ 。 + 高速奥行き計算 + 深度値を計算するために精度の低いアルゴリズムを使用します。 + はい いいえ + 無効 + その他 diff --git a/Source/Android/res/values/arrays.xml b/Source/Android/res/values/arrays.xml index 05d4668b99..2144440a33 100644 --- a/Source/Android/res/values/arrays.xml +++ b/Source/Android/res/values/arrays.xml @@ -45,11 +45,84 @@ - + @string/software_renderer - + Software Renderer + + + + @string/disabled + @string/efb_copy_texture + @string/efb_copy_ram_uncached + @string/efb_copy_ram_cached + + + Off + Texture + RAM (cached) + RAM (uncached) + + + + + @string/texture_cache_accuracy_low + @string/texture_cache_accuracy_medium + @string/texture_cache_accuracy_high + + + 128 + 512 + 0 + + + + + @string/disabled + @string/external_frame_buffer_virtual + @string/external_frame_buffer_real + + + Disabled + Virtual + Real + + + + + 1x Native (640x528) + 1.5x Native (960x792) + 2x Native (1280x1056) + 2.5x Native (1600x1320) + 3x Native (1920x1584) + 4x Native (2560x2112) + + + 2 + 3 + 4 + 5 + 6 + 7 + + + + + 1x + 2x + 4x + 8x + 16x + + + 0 + 1 + 2 + 3 + 4 + + \ No newline at end of file diff --git a/Source/Android/res/values/strings.xml b/Source/Android/res/values/strings.xml index 51a49ace74..6ddd255995 100644 --- a/Source/Android/res/values/strings.xml +++ b/Source/Android/res/values/strings.xml @@ -73,8 +73,53 @@ Video Backend Video backend to use + Enhancements + Internal Resolution + Specifies the resolution used to render at. A high resolution will improve visual quality a lot but is also quite heavy on performance and might cause glitches in certain games. + Anisotropic Filtering + Enhances visual quality of textures that are at oblique viewing angles. Might cause issues in a small number of games. + Scaled EFB Copy + Greatly increases quality of textures generated using render to texture effects. Raising the internal resolution will improve the effect of this setting. Slightly decreases performance and possibly causes issues (although unlikely). + Per-Pixel Lighting + Calculate lighting of 3D graphics per-pixel rather than per vertex. Decreases emulation speed by some percent (depending on your GPU). This usually is a safe enhancement, but might cause issues sometimes. + Force Texture Filtering + Force texture filtering even if the emulated game explicitly disabled it. Improves texture quality slightly but causes glitches in some games. + Disable Fog + Makes distant objects more visible by removing fog, thus increasing the overall detail. Disabling fog will break some games which rely on proper fog emulation. + + Hacks + Embedded Frame Buffer + Skip EFB Access from CPU + Ignore any requests from the CPU to read/write to the EFB. + Ignore Format Changes + Ignore any changes to the EFB format. + EFB Copy Method + Determines how EFB copies will be emulated. + Off + Texture + RAM (uncached) + RAM (cached) + Texture Cache + Texture Cache Accuracy + The safer the selection, the less likely the emulator will be missing any texture updates from RAM. + Low + Medium + High + External Frame Buffer + Determines how the XFB will be emulated. + Virtual + Real + Cache Display Lists + Speeds up emulation a bit by caching display lists. + Disable Destination Alpha + Disables emulation of a hardware feature called destination alpha, which is used in many games for various effects. + Fast Depth Calculation + Uses a less accurate algorithm to calculate depth values. + Yes No + Disabled + Other diff --git a/Source/Android/res/xml/prefs.xml b/Source/Android/res/xml/prefs.xml new file mode 100644 index 0000000000..43a9786a57 --- /dev/null +++ b/Source/Android/res/xml/prefs.xml @@ -0,0 +1,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Source/Android/src/org/dolphinemu/dolphinemu/UserPreferences.java b/Source/Android/src/org/dolphinemu/dolphinemu/UserPreferences.java index ef33905b6b..26644664cc 100644 --- a/Source/Android/src/org/dolphinemu/dolphinemu/UserPreferences.java +++ b/Source/Android/src/org/dolphinemu/dolphinemu/UserPreferences.java @@ -12,7 +12,7 @@ import android.preference.PreferenceManager; * aren't made necessary. */ public final class UserPreferences -{ +{ /** * Writes the config to the Dolphin ini file. * @@ -28,12 +28,115 @@ public final class UserPreferences // Current CPU core being used. Falls back to interpreter upon error. String currentEmuCore = prefs.getString("cpuCorePref", "0"); - // Current video backend being used. Falls back to software rendering upon error + // Current video backend being used. Falls back to software rendering upon error. String currentVideoBackend = prefs.getString("gpuPref", "Software Rendering"); + // Whether or not to ignore all EFB access requests from the CPU. + boolean skipEFBAccess = prefs.getBoolean("skipEFBAccess", false); + // Whether or not to ignore changes to the EFB format. + boolean ignoreFormatChanges = prefs.getBoolean("ignoreFormatChanges", false); + + // EFB copy method to use. + String efbCopyMethod = prefs.getString("efbCopyMethod", "Off"); + + // Texture cache accuracy. Falls back to "Fast" up error. + String textureCacheAccuracy = prefs.getString("textureCacheAccuracy", "128"); + + // External frame buffer emulation. Falls back to disabled upon error. + String externalFrameBuffer = prefs.getString("externalFrameBuffer", "Disabled"); + + // Whether or not display list caching is enabled. + boolean dlistCachingEnabled = prefs.getBoolean("cacheDisplayLists", false); + + // Whether or not to disable destination alpha. + boolean disableDstAlphaPass = prefs.getBoolean("disableDestinationAlpha", false); + + // Whether or not to use fast depth calculation. + boolean useFastDepthCalc = prefs.getBoolean("fastDepthCalculation", true); + + // Internal resolution. Falls back to 1x Native upon error. + String internalResolution = prefs.getString("internalResolution", "2"); + + // Anisotropic Filtering Level. Falls back to 1x upon error. + String anisotropicFiltLevel = prefs.getString("anisotropicFiltering", "0"); + + // Whether or not Scaled EFB copies are used. + boolean usingScaledEFBCopy = prefs.getBoolean("scaledEFBCopy", true); + + // Whether or not per-pixel lighting is used. + boolean usingPerPixelLighting = prefs.getBoolean("perPixelLighting", false); + + // Whether or not texture filtering is being forced. + boolean isForcingTextureFiltering = prefs.getBoolean("forceTextureFiltering", false); + + // Whether or not fog is disabled. + boolean fogIsDisabled = prefs.getBoolean("disableFog", false); + + + // CPU related Settings NativeLibrary.SetConfig("Dolphin.ini", "Core", "CPUCore", currentEmuCore); NativeLibrary.SetConfig("Dolphin.ini", "Core", "CPUThread", isUsingDualCore ? "True" : "False"); + + // General Video Settings NativeLibrary.SetConfig("Dolphin.ini", "Core", "GFXBackend", currentVideoBackend); + + // Video Hack Settings + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBAccessEnable", skipEFBAccess ? "False" : "True"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBEmulateFormatChanges", ignoreFormatChanges ? "True" : "False"); + + // Set EFB Copy Method + if (efbCopyMethod.equals("Off")) + { + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBCopyEnable", "False"); + } + else if (efbCopyMethod.equals("Texture")) + { + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBCopyEnable", "True"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBToTextureEnable", "True"); + } + else if (efbCopyMethod.equals("RAM (uncached)")) + { + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBCopyEnable", "True"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBToTextureEnable", "False"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBCopyCacheEnable", "False"); + } + else if (efbCopyMethod.equals("RAM (cached)")) + { + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBCopyEnable", "True"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBToTextureEnable", "False"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "EFBCopyCacheEnable", "True"); + } + + // Set texture cache accuracy + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "SafeTextureCacheColorSamples", textureCacheAccuracy); + + // Set external frame buffer. + if (externalFrameBuffer.equals("Disabled")) + { + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "UseXFB", "False"); + } + else if (externalFrameBuffer.equals("Virtual")) + { + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "UseXFB", "True"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "UseRealXFB", "False"); + } + else if (externalFrameBuffer.equals("Real")) + { + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "UseXFB", "True"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "UseRealXFB", "True"); + } + + NativeLibrary.SetConfig("gfx_opengl.ini", "Hacks", "DlistCachingEnable", dlistCachingEnabled ? "True" : "False"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "DstAlphaPass", disableDstAlphaPass ? "True" : "False"); + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "FastDepthCalc", useFastDepthCalc ? "True" : "False"); + + //-- Enhancement Settings --// + NativeLibrary.SetConfig("gfx_opengl.ini", "Settings", "EFBScale", internalResolution); + NativeLibrary.SetConfig("gfx_opengl.ini", "Enhancements", "MaxAnisotropy", anisotropicFiltLevel); + NativeLibrary.SetConfig("gfx.opengl.ini", "Hacks", "EFBScaledCopy", usingScaledEFBCopy ? "True" : "False"); + NativeLibrary.SetConfig("gfx.opengl.ini", "Settings", "EnablePixelLighting", usingPerPixelLighting ? "True" : "False"); + NativeLibrary.SetConfig("gfx.opengl.ini", "Enhancements", "ForceFiltering", isForcingTextureFiltering ? "True" : "False"); + NativeLibrary.SetConfig("gfx.opengl.ini", "Settings", "DisableFog", fogIsDisabled ? "True" : "False"); } }