diff --git a/Source/Core/Common/CommonPaths.h b/Source/Core/Common/CommonPaths.h index e641b33294..2255b594f5 100644 --- a/Source/Core/Common/CommonPaths.h +++ b/Source/Core/Common/CommonPaths.h @@ -47,6 +47,7 @@ #define DUMP_DIR "Dump" #define DUMP_TEXTURES_DIR "Textures" #define DUMP_FRAMES_DIR "Frames" +#define DUMP_OBJECTS_DIR "Objects" #define DUMP_AUDIO_DIR "Audio" #define DUMP_DSP_DIR "DSP" #define DUMP_SSL_DIR "SSL" diff --git a/Source/Core/Common/FileUtil.cpp b/Source/Core/Common/FileUtil.cpp index 3b8ea2a84e..41cc73240e 100644 --- a/Source/Core/Common/FileUtil.cpp +++ b/Source/Core/Common/FileUtil.cpp @@ -767,6 +767,7 @@ static void RebuildUserDirectories(unsigned int dir_index) s_user_paths[D_HIRESTEXTURES_IDX] = s_user_paths[D_LOAD_IDX] + HIRES_TEXTURES_DIR DIR_SEP; s_user_paths[D_DUMP_IDX] = s_user_paths[D_USER_IDX] + DUMP_DIR DIR_SEP; s_user_paths[D_DUMPFRAMES_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_FRAMES_DIR DIR_SEP; + s_user_paths[D_DUMPOBJECTS_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_OBJECTS_DIR DIR_SEP; s_user_paths[D_DUMPAUDIO_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_AUDIO_DIR DIR_SEP; s_user_paths[D_DUMPTEXTURES_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_TEXTURES_DIR DIR_SEP; s_user_paths[D_DUMPDSP_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_DSP_DIR DIR_SEP; @@ -822,6 +823,7 @@ static void RebuildUserDirectories(unsigned int dir_index) case D_DUMP_IDX: s_user_paths[D_DUMPFRAMES_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_FRAMES_DIR DIR_SEP; + s_user_paths[D_DUMPOBJECTS_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_OBJECTS_DIR DIR_SEP; s_user_paths[D_DUMPAUDIO_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_AUDIO_DIR DIR_SEP; s_user_paths[D_DUMPTEXTURES_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_TEXTURES_DIR DIR_SEP; s_user_paths[D_DUMPDSP_IDX] = s_user_paths[D_DUMP_IDX] + DUMP_DSP_DIR DIR_SEP; diff --git a/Source/Core/Common/FileUtil.h b/Source/Core/Common/FileUtil.h index bc7ec4e70c..035cecb48f 100644 --- a/Source/Core/Common/FileUtil.h +++ b/Source/Core/Common/FileUtil.h @@ -36,6 +36,7 @@ enum D_HIRESTEXTURES_IDX, D_DUMP_IDX, D_DUMPFRAMES_IDX, + D_DUMPOBJECTS_IDX, D_DUMPAUDIO_IDX, D_DUMPTEXTURES_IDX, D_DUMPDSP_IDX, diff --git a/Source/Core/DolphinQt2/Config/Graphics/AdvancedWidget.cpp b/Source/Core/DolphinQt2/Config/Graphics/AdvancedWidget.cpp index 65217ef8c2..5808a58174 100644 --- a/Source/Core/DolphinQt2/Config/Graphics/AdvancedWidget.cpp +++ b/Source/Core/DolphinQt2/Config/Graphics/AdvancedWidget.cpp @@ -141,42 +141,42 @@ void AdvancedWidget::OnEmulationStateChanged(bool running) void AdvancedWidget::AddDescriptions() { - static const char* TR_WIREFRAME_DESCRIPTION = + static const char TR_WIREFRAME_DESCRIPTION[] = QT_TR_NOOP("Render the scene as a wireframe.\n\nIf unsure, leave this unchecked."); - static const char* TR_SHOW_STATS_DESCRIPTION = + static const char TR_SHOW_STATS_DESCRIPTION[] = QT_TR_NOOP("Show various rendering statistics.\n\nIf unsure, leave this unchecked."); - static const char* TR_TEXTURE_FORMAT_DECRIPTION = + static const char TR_TEXTURE_FORMAT_DECRIPTION[] = QT_TR_NOOP("Modify textures to show the format they're encoded in. Needs an emulation reset " "in most cases.\n\nIf unsure, leave this unchecked."); - static const char* TR_VALIDATION_LAYER_DESCRIPTION = + static const char TR_VALIDATION_LAYER_DESCRIPTION[] = QT_TR_NOOP("Enables validation of API calls made by the video backend, which may assist in " "debugging graphical issues.\n\nIf unsure, leave this unchecked."); - static const char* TR_DUMP_TEXTURE_DESCRIPTION = + static const char TR_DUMP_TEXTURE_DESCRIPTION[] = QT_TR_NOOP("Dump decoded game textures to User/Dump/Textures//.\n\nIf unsure, leave " "this unchecked."); - static const char* TR_LOAD_CUSTOM_TEXTURE_DESCRIPTION = QT_TR_NOOP( + static const char TR_LOAD_CUSTOM_TEXTURE_DESCRIPTION[] = QT_TR_NOOP( "Load custom textures from User/Load/Textures//.\n\nIf unsure, leave this " "unchecked."); - static const char* TR_CACHE_CUSTOM_TEXTURE_DESCRIPTION = + static const char TR_CACHE_CUSTOM_TEXTURE_DESCRIPTION[] = QT_TR_NOOP("Cache custom textures to system RAM on startup.\nThis can require exponentially " "more RAM but fixes possible stuttering.\n\nIf unsure, leave this unchecked."); - static const char* TR_DUMP_EFB_DESCRIPTION = + static const char TR_DUMP_EFB_DESCRIPTION[] = QT_TR_NOOP("Dump the contents of EFB copies to User/Dump/Textures/.\n\nIf unsure, leave this " "unchecked."); - static const char* TR_DISABLE_VRAM_COPIES_DESCRIPTION = + static const char TR_DISABLE_VRAM_COPIES_DESCRIPTION[] = QT_TR_NOOP("Disables the VRAM copy of the EFB, forcing a round-trip to RAM. Inhibits all " "upscaling.\n\nIf unsure, leave this unchecked."); - static const char* TR_INTERNAL_RESOLUTION_FRAME_DUMPING_DESCRIPTION = QT_TR_NOOP( + static const char TR_INTERNAL_RESOLUTION_FRAME_DUMPING_DESCRIPTION[] = QT_TR_NOOP( "Create frame dumps and screenshots at the internal resolution of the renderer, rather than " "the size of the window it is displayed within. If the aspect ratio is widescreen, the " "output " "image will be scaled horizontally to preserve the vertical resolution.\n\nIf unsure, leave " "this unchecked."); #if defined(HAVE_FFMPEG) - static const char* TR_USE_FFV1_DESCRIPTION = + static const char TR_USE_FFV1_DESCRIPTION[] = QT_TR_NOOP("Encode frame dumps using the FFV1 codec.\n\nIf unsure, leave this unchecked."); #endif - static const char* TR_FREE_LOOK_DESCRIPTION = QT_TR_NOOP( + static const char TR_FREE_LOOK_DESCRIPTION[] = QT_TR_NOOP( "This feature allows you to change the game's camera.\nMove the mouse while holding the " "right " "mouse button to pan and while holding the middle button to move.\nHold SHIFT and press " @@ -184,14 +184,14 @@ void AdvancedWidget::AddDescriptions() "the WASD keys to move the camera by a certain step distance (SHIFT+2 to move faster and " "SHIFT+1 to move slower). Press SHIFT+R to reset the camera and SHIFT+F to reset the " "speed.\n\nIf unsure, leave this unchecked."); - static const char* TR_CROPPING_DESCRIPTION = + static const char TR_CROPPING_DESCRIPTION[] = QT_TR_NOOP("Crop the picture from its native aspect ratio to 4:3 or " "16:9.\n\nIf unsure, leave this unchecked."); - static const char* TR_PROGRESSIVE_SCAN_DESCRIPTION = QT_TR_NOOP( + static const char TR_PROGRESSIVE_SCAN_DESCRIPTION[] = QT_TR_NOOP( "Enables progressive scan if supported by the emulated software.\nMost games don't " "care about this.\n\nIf unsure, leave this unchecked."); #ifdef _WIN32 - static const char* TR_BORDERLESS_FULLSCREEN_DESCRIPTION = QT_TR_NOOP( + static const char TR_BORDERLESS_FULLSCREEN_DESCRIPTION[] = QT_TR_NOOP( "Implement fullscreen mode with a borderless window spanning the whole screen instead of " "using " "exclusive mode.\nAllows for faster transitions between fullscreen and windowed mode, but " diff --git a/Source/Core/DolphinQt2/Config/Graphics/EnhancementsWidget.cpp b/Source/Core/DolphinQt2/Config/Graphics/EnhancementsWidget.cpp index 3203a656f2..752770ab9a 100644 --- a/Source/Core/DolphinQt2/Config/Graphics/EnhancementsWidget.cpp +++ b/Source/Core/DolphinQt2/Config/Graphics/EnhancementsWidget.cpp @@ -273,70 +273,70 @@ void EnhancementsWidget::SaveSettings() void EnhancementsWidget::AddDescriptions() { - static const char* TR_INTERNAL_RESOLUTION_DESCRIPTION = + static const char TR_INTERNAL_RESOLUTION_DESCRIPTION[] = QT_TR_NOOP("Specifies the resolution used to render at. A high resolution greatly improves " "visual quality, but also greatly increases GPU load and can cause issues in " "certain games. Generally speaking, the lower the internal resolution is, the " "better your performance will be.\n\nIf unsure, select Native."); - static const char* TR_ANTIALIAS_DESCRIPTION = + static const char TR_ANTIALIAS_DESCRIPTION[] = QT_TR_NOOP("Reduces the amount of aliasing caused by rasterizing 3D graphics. This smooths " "out jagged edges on objects.\nIncreases GPU load and sometimes causes graphical " "issues. SSAA is significantly more demanding than MSAA, but provides top quality " "geometry anti-aliasing and also applies anti-aliasing to lighting, shader " "effects, and textures.\n\nIf unsure, select None."); - static const char* TR_ANISOTROPIC_FILTERING_DESCRIPTION = QT_TR_NOOP( + static const char TR_ANISOTROPIC_FILTERING_DESCRIPTION[] = QT_TR_NOOP( "Enable anisotropic filtering.\nEnhances visual quality of textures that are at oblique " "viewing angles.\nMight cause issues in a small number of games.\n\nIf unsure, select 1x."); - static const char* TR_POSTPROCESSING_DESCRIPTION = QT_TR_NOOP( + static const char TR_POSTPROCESSING_DESCRIPTION[] = QT_TR_NOOP( "Apply a post-processing effect after finishing a frame.\n\nIf unsure, select (off)."); - static const char* TR_SCALED_EFB_COPY_DESCRIPTION = QT_TR_NOOP( + static const char TR_SCALED_EFB_COPY_DESCRIPTION[] = QT_TR_NOOP( "Greatly increases quality of textures generated using render-to-texture " "effects.\nRaising the " "internal resolution will improve the effect of this setting.\nSlightly increases GPU " "load and " "causes relatively few graphical issues.\n\nIf unsure, leave this checked."); - static const char* TR_PER_PIXEL_LIGHTING_DESCRIPTION = QT_TR_NOOP( + static const char TR_PER_PIXEL_LIGHTING_DESCRIPTION[] = QT_TR_NOOP( "Calculates lighting of 3D objects per-pixel rather than per-vertex, smoothing out the " "appearance of lit polygons and making individual triangles less noticeable.\nRarely causes " "slowdowns or graphical issues.\n\nIf unsure, leave this unchecked."); - static const char* TR_WIDESCREEN_HACK_DESCRIPTION = QT_TR_NOOP( + static const char TR_WIDESCREEN_HACK_DESCRIPTION[] = QT_TR_NOOP( "Forces the game to output graphics for any aspect ratio.\nUse with \"Aspect Ratio\" set to " "\"Force 16:9\" to force 4:3-only games to run at 16:9.\nRarely produces good results and " "often partially breaks graphics and game UIs.\nUnnecessary (and detrimental) if using any " "AR/Gecko-code widescreen patches.\n\nIf unsure, leave this unchecked."); - static const char* TR_REMOVE_FOG_DESCRIPTION = + static const char TR_REMOVE_FOG_DESCRIPTION[] = QT_TR_NOOP("Makes distant objects more visible by removing fog, thus increasing the overall " "detail.\nDisabling fog will break some games which rely on proper fog " "emulation.\n\nIf unsure, leave this unchecked."); - static const char* TR_3D_MODE_DESCRIPTION = QT_TR_NOOP( + static const char TR_3D_MODE_DESCRIPTION[] = QT_TR_NOOP( "Selects the stereoscopic 3D mode. Stereoscopy allows you to get a better feeling " "of depth if you have the necessary hardware.\nSide-by-Side and Top-and-Bottom are " "used by most 3D TVs.\nAnaglyph is used for Red-Cyan colored glasses.\nHDMI 3D is " "used when your monitor supports 3D display resolutions.\nHeavily decreases " "emulation speed and sometimes causes issues.\n\nIf unsure, select Off."); - static const char* TR_3D_DEPTH_DESCRIPTION = + static const char TR_3D_DEPTH_DESCRIPTION[] = QT_TR_NOOP("Controls the separation distance between the virtual cameras.\nA higher value " "creates a stronger feeling of depth while a lower value is more comfortable."); - static const char* TR_3D_CONVERGENCE_DESCRIPTION = QT_TR_NOOP( + static const char TR_3D_CONVERGENCE_DESCRIPTION[] = QT_TR_NOOP( "Controls the distance of the convergence plane. This is the distance at which " "virtual objects will appear to be in front of the screen.\nA higher value creates " "stronger out-of-screen effects while a lower value is more comfortable."); - static const char* TR_3D_SWAP_EYES_DESCRIPTION = + static const char TR_3D_SWAP_EYES_DESCRIPTION[] = QT_TR_NOOP("Swaps the left and right eye. Mostly useful if you want to view side-by-side " "cross-eyed.\n\nIf unsure, leave this unchecked."); - static const char* TR_FORCE_24BIT_DESCRIPTION = + static const char TR_FORCE_24BIT_DESCRIPTION[] = QT_TR_NOOP("Forces the game to render the RGB color channels in 24-bit, thereby increasing " "quality by reducing color banding.\nIt has no impact on performance and causes " "few graphical issues.\n\n\nIf unsure, leave this checked."); - static const char* TR_FORCE_TEXTURE_FILTERING_DESCRIPTION = + static const char TR_FORCE_TEXTURE_FILTERING_DESCRIPTION[] = QT_TR_NOOP("Filter all textures, including any that the game explicitly set as " "unfiltered.\nMay improve quality of certain textures in some games, but will " "cause issues in others.\n\nIf unsure, leave this unchecked."); - static const char* TR_DISABLE_COPY_FILTER_DESCRIPTION = + static const char TR_DISABLE_COPY_FILTER_DESCRIPTION[] = QT_TR_NOOP("Disables the blending of adjacent rows when copying the EFB. This is known in " "some games as \"deflickering\" or \"smoothing\". Disabling the filter has no " "effect on performance, but may result in a sharper image, and causes few " diff --git a/Source/Core/DolphinQt2/Config/Graphics/GeneralWidget.cpp b/Source/Core/DolphinQt2/Config/Graphics/GeneralWidget.cpp index adafde738e..e238a137fa 100644 --- a/Source/Core/DolphinQt2/Config/Graphics/GeneralWidget.cpp +++ b/Source/Core/DolphinQt2/Config/Graphics/GeneralWidget.cpp @@ -231,68 +231,68 @@ void GeneralWidget::AddDescriptions() { // We need QObject::tr #if defined(_WIN32) - static const char* TR_BACKEND_DESCRIPTION = + static const char TR_BACKEND_DESCRIPTION[] = QT_TR_NOOP("Selects what graphics API to use internally.\nThe software renderer is extremely " "slow and only useful for debugging, so you'll want to use either Direct3D or " "OpenGL. Different games and different GPUs will behave differently on each " "backend, so for the best emulation experience it's recommended to try both and " "choose the one that's less problematic.\n\nIf unsure, select OpenGL."); #else - static const char* TR_BACKEND_DESCRIPTION = + static const char TR_BACKEND_DESCRIPTION[] = QT_TR_NOOP("Selects what graphics API to use internally.\nThe software renderer is extremely " "slow and only useful for debugging, so unless you have a reason to use it you'll " "want to select OpenGL here.\n\nIf unsure, select OpenGL."); #endif - static const char* TR_ADAPTER_DESCRIPTION = + static const char TR_ADAPTER_DESCRIPTION[] = QT_TR_NOOP("Selects a hardware adapter to use.\n\nIf unsure, use the first one."); - static const char* TR_FULLSCREEN_DESCRIPTION = QT_TR_NOOP( + static const char TR_FULLSCREEN_DESCRIPTION[] = QT_TR_NOOP( "Enable this if you want the whole screen to be used for rendering.\nIf this is disabled, a " "render window will be created instead.\n\nIf unsure, leave this unchecked."); - static const char* TR_AUTOSIZE_DESCRIPTION = + static const char TR_AUTOSIZE_DESCRIPTION[] = QT_TR_NOOP("Automatically adjusts the window size to your internal resolution.\n\nIf unsure, " "leave this unchecked."); - static const char* TR_RENDER_TO_MAINWINDOW_DESCRIPTION = + static const char TR_RENDER_TO_MAINWINDOW_DESCRIPTION[] = QT_TR_NOOP("Enable this if you want to use the main Dolphin window for rendering rather than " "a separate render window.\n\nIf unsure, leave this unchecked."); - static const char* TR_ASPECT_RATIO_DESCRIPTION = QT_TR_NOOP( + static const char TR_ASPECT_RATIO_DESCRIPTION[] = QT_TR_NOOP( "Select what aspect ratio to use when rendering:\nAuto: Use the native aspect " "ratio\nForce 16:9: Mimic an analog TV with a widescreen aspect ratio.\nForce 4:3: " "Mimic a standard 4:3 analog TV.\nStretch to Window: Stretch the picture to the " "window size.\n\nIf unsure, select Auto."); - static const char* TR_VSYNC_DESCRIPTION = + static const char TR_VSYNC_DESCRIPTION[] = QT_TR_NOOP("Wait for vertical blanks in order to reduce tearing.\nDecreases performance if " "emulation speed is below 100%.\n\nIf unsure, leave this unchecked."); - static const char* TR_SHOW_FPS_DESCRIPTION = + static const char TR_SHOW_FPS_DESCRIPTION[] = QT_TR_NOOP("Show the number of frames rendered per second as a measure of " "emulation speed.\n\nIf unsure, leave this unchecked."); - static const char* TR_SHOW_NETPLAY_PING_DESCRIPTION = + static const char TR_SHOW_NETPLAY_PING_DESCRIPTION[] = QT_TR_NOOP("Show the players' maximum Ping while playing on " "NetPlay.\n\nIf unsure, leave this unchecked."); - static const char* TR_LOG_RENDERTIME_DESCRIPTION = + static const char TR_LOG_RENDERTIME_DESCRIPTION[] = QT_TR_NOOP("Log the render time of every frame to User/Logs/render_time.txt. Use this " "feature when you want to measure the performance of Dolphin.\n\nIf " "unsure, leave this unchecked."); - static const char* TR_SHOW_NETPLAY_MESSAGES_DESCRIPTION = + static const char TR_SHOW_NETPLAY_MESSAGES_DESCRIPTION[] = QT_TR_NOOP("When playing on NetPlay, show chat messages, buffer changes and " "desync alerts.\n\nIf unsure, leave this unchecked."); - static const char* TR_SHADER_COMPILE_SYNC_DESCRIPTION = + static const char TR_SHADER_COMPILE_SYNC_DESCRIPTION[] = QT_TR_NOOP("Ubershaders are never used. Stuttering will occur during shader " "compilation, but GPU demands are low. Recommended for low-end hardware.\n\nIf " "unsure, select this mode."); - static const char* TR_SHADER_COMPILE_UBER_ONLY_DESCRIPTION = QT_TR_NOOP( + static const char TR_SHADER_COMPILE_UBER_ONLY_DESCRIPTION[] = QT_TR_NOOP( "Ubershaders will always be used. Provides a near stutter-free experience at the cost of " "high GPU performance requirements. Only recommended for high-end systems."); - static const char* TR_SHADER_COMPILE_ASYNC_UBER_DESCRIPTION = + static const char TR_SHADER_COMPILE_ASYNC_UBER_DESCRIPTION[] = QT_TR_NOOP("Ubershaders will be used to prevent stuttering during shader compilation, but " "specialized shaders will be used when they will not cause stuttering. In the " "best case it eliminates shader compilation stuttering while having minimal " "performance impact, but results depend on video driver behavior."); - static const char* TR_SHADER_COMPILE_ASYNC_SKIP_DESCRIPTION = QT_TR_NOOP( + static const char TR_SHADER_COMPILE_ASYNC_SKIP_DESCRIPTION[] = QT_TR_NOOP( "Prevents shader compilation stuttering by not rendering waiting objects. Can work in " "scenarios where Ubershaders doesn't, at the cost of introducing visual glitches and broken " "effects. Not recommended, only use if the other options give poor results on your system."); - static const char* TR_SHADER_COMPILE_BEFORE_START_DESCRIPTION = + static const char TR_SHADER_COMPILE_BEFORE_START_DESCRIPTION[] = QT_TR_NOOP("Waits for all shaders to finish compiling before starting a game. Enabling this " "option may reduce stuttering or hitching for a short time after the game is " "started, at the cost of a longer delay before the game starts. For systems with " diff --git a/Source/Core/DolphinQt2/Config/Graphics/HacksWidget.cpp b/Source/Core/DolphinQt2/Config/Graphics/HacksWidget.cpp index fb53177636..1a0217319c 100644 --- a/Source/Core/DolphinQt2/Config/Graphics/HacksWidget.cpp +++ b/Source/Core/DolphinQt2/Config/Graphics/HacksWidget.cpp @@ -190,50 +190,50 @@ void HacksWidget::SaveSettings() void HacksWidget::AddDescriptions() { - static const char* TR_SKIP_EFB_CPU_ACCESS_DESCRIPTION = + static const char TR_SKIP_EFB_CPU_ACCESS_DESCRIPTION[] = QT_TR_NOOP("Ignore any requests from the CPU to read from or write to the EFB.\nImproves " "performance in some games, but might disable some gameplay-related features or " "graphical effects.\n\nIf unsure, leave this unchecked."); - static const char* TR_IGNORE_FORMAT_CHANGE_DESCRIPTION = QT_TR_NOOP( + static const char TR_IGNORE_FORMAT_CHANGE_DESCRIPTION[] = QT_TR_NOOP( "Ignore any changes to the EFB format.\nImproves performance in many games without " "any negative effect. Causes graphical defects in a small number of other " "games.\n\nIf unsure, leave this checked."); - static const char* TR_STORE_EFB_TO_TEXTURE_DESCRIPTION = QT_TR_NOOP( + static const char TR_STORE_EFB_TO_TEXTURE_DESCRIPTION[] = QT_TR_NOOP( "Stores EFB Copies exclusively on the GPU, bypassing system memory. Causes graphical defects " "in a small number of games.\n\nEnabled = EFB Copies to Texture\nDisabled = EFB Copies to " "RAM " "(and Texture)\n\nIf unsure, leave this checked."); - static const char* TR_ACCUARCY_DESCRIPTION = QT_TR_NOOP( + static const char TR_ACCUARCY_DESCRIPTION[] = QT_TR_NOOP( "The \"Safe\" setting eliminates the likelihood of the GPU missing texture updates " "from RAM.\nLower accuracies cause in-game text to appear garbled in certain " "games.\n\nIf unsure, use the rightmost value."); - static const char* TR_STORE_XFB_TO_TEXTURE_DESCRIPTION = QT_TR_NOOP( + static const char TR_STORE_XFB_TO_TEXTURE_DESCRIPTION[] = QT_TR_NOOP( "Stores XFB Copies exclusively on the GPU, bypassing system memory. Causes graphical defects " "in a small number of games that need to readback from memory.\n\nEnabled = XFB Copies to " "Texture\nDisabled = XFB Copies to RAM " "(and Texture)\n\nIf unsure, leave this checked."); - static const char* TR_IMMEDIATE_XFB_DESCRIPTION = + static const char TR_IMMEDIATE_XFB_DESCRIPTION[] = QT_TR_NOOP("Displays the XFB copies as soon as they are created, without waiting for " "scanout. Can cause graphical defects " "in some games if the game doesn't expect all XFB copies to be displayed. " "However, turning this setting on reduces latency." "\n\nIf unsure, leave this unchecked."); - static const char* TR_GPU_DECODING_DESCRIPTION = + static const char TR_GPU_DECODING_DESCRIPTION[] = QT_TR_NOOP("Enables texture decoding using the GPU instead of the CPU. This may result in " "performance gains in some scenarios, or on systems where the CPU is the " "bottleneck.\n\nIf unsure, leave this unchecked."); - static const char* TR_FAST_DEPTH_CALC_DESCRIPTION = QT_TR_NOOP( + static const char TR_FAST_DEPTH_CALC_DESCRIPTION[] = QT_TR_NOOP( "Use a less accurate algorithm to calculate depth values.\nCauses issues in a few " "games, but can give a decent speedup depending on the game and/or your GPU.\n\nIf " "unsure, leave this checked."); - static const char* TR_DISABLE_BOUNDINGBOX_DESCRIPTION = + static const char TR_DISABLE_BOUNDINGBOX_DESCRIPTION[] = QT_TR_NOOP("Disable the bounding box emulation.\nThis may improve the GPU performance a lot, " "but some games will break.\n\nIf unsure, leave this checked."); - static const char* TR_VERTEX_ROUNDING_DESCRIPTION = + static const char TR_VERTEX_ROUNDING_DESCRIPTION[] = QT_TR_NOOP("Rounds 2D vertices to whole pixels. Fixes graphical problems in some games at " "higher internal resolutions. This setting has no effect when native internal " "resolution is used.\n\nIf unsure, leave this unchecked."); diff --git a/Source/Core/DolphinQt2/Config/Graphics/SoftwareRendererWidget.cpp b/Source/Core/DolphinQt2/Config/Graphics/SoftwareRendererWidget.cpp index b9a6dd0f0b..1a1fb2b1a7 100644 --- a/Source/Core/DolphinQt2/Config/Graphics/SoftwareRendererWidget.cpp +++ b/Source/Core/DolphinQt2/Config/Graphics/SoftwareRendererWidget.cpp @@ -147,21 +147,26 @@ void SoftwareRendererWidget::SaveSettings() void SoftwareRendererWidget::AddDescriptions() { - static const char* TR_BACKEND_DESCRIPTION = + static const char TR_BACKEND_DESCRIPTION[] = QT_TR_NOOP("Selects what graphics API to use internally.\nThe software renderer is extremely " "slow and only useful for debugging, so you'll want to use either Direct3D or " "OpenGL. Different games and different GPUs will behave differently on each " "backend, so for the best emulation experience it's recommended to try both and " "choose the one that's less problematic.\n\nIf unsure, select OpenGL."); - static const char* TR_SHOW_STATISTICS_DESCRIPTION = + static const char TR_SHOW_STATISTICS_DESCRIPTION[] = QT_TR_NOOP("Show various rendering statistics.\n\nIf unsure, leave this unchecked."); - static const char* TR_DUMP_TEXTURES_DESCRIPTION = + static const char TR_DUMP_TEXTURES_DESCRIPTION[] = QT_TR_NOOP("Dump decoded game textures to User/Dump/Textures//.\n\nIf unsure, leave " "this unchecked."); + static const char TR_DUMP_OBJECTS_DESCRIPTION[] = + QT_TR_NOOP("Dump objects to User/Dump/Objects/.\n\nIf unsure, leave " + "this unchecked."); + AddDescription(m_backend_combo, TR_BACKEND_DESCRIPTION); AddDescription(m_show_statistics, TR_SHOW_STATISTICS_DESCRIPTION); AddDescription(m_dump_textures, TR_DUMP_TEXTURES_DESCRIPTION); + AddDescription(m_dump_objects, TR_DUMP_OBJECTS_DESCRIPTION); } diff --git a/Source/Core/UICommon/UICommon.cpp b/Source/Core/UICommon/UICommon.cpp index 16fd08bad0..a9453882dc 100644 --- a/Source/Core/UICommon/UICommon.cpp +++ b/Source/Core/UICommon/UICommon.cpp @@ -50,13 +50,13 @@ namespace UICommon { static void CreateDumpPath(const std::string& path) { - if (path.empty()) - return; - File::SetUserPath(D_DUMP_IDX, path + '/'); + if (!path.empty()) + File::SetUserPath(D_DUMP_IDX, path + '/'); File::CreateFullPath(File::GetUserPath(D_DUMPAUDIO_IDX)); File::CreateFullPath(File::GetUserPath(D_DUMPDSP_IDX)); File::CreateFullPath(File::GetUserPath(D_DUMPSSL_IDX)); File::CreateFullPath(File::GetUserPath(D_DUMPFRAMES_IDX)); + File::CreateFullPath(File::GetUserPath(D_DUMPOBJECTS_IDX)); File::CreateFullPath(File::GetUserPath(D_DUMPTEXTURES_IDX)); } diff --git a/Source/Core/VideoBackends/Software/DebugUtil.cpp b/Source/Core/VideoBackends/Software/DebugUtil.cpp index ecd82f6dbd..54fe476f16 100644 --- a/Source/Core/VideoBackends/Software/DebugUtil.cpp +++ b/Source/Core/VideoBackends/Software/DebugUtil.cpp @@ -200,7 +200,7 @@ void OnObjectEnd() { if (g_ActiveConfig.bDumpObjects && stats.thisFrame.numDrawnObjects >= g_ActiveConfig.drawStart && stats.thisFrame.numDrawnObjects < g_ActiveConfig.drawEnd) - DumpEfb(StringFromFormat("%sobject%i.png", File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), + DumpEfb(StringFromFormat("%sobject%i.png", File::GetUserPath(D_DUMPOBJECTS_IDX).c_str(), stats.thisFrame.numDrawnObjects)); for (int i = 0; i < NUM_OBJECT_BUFFERS; i++) @@ -209,7 +209,7 @@ void OnObjectEnd() { DrawnToBuffer[i] = false; std::string filename = - StringFromFormat("%sobject%i_%s(%i).png", File::GetUserPath(D_DUMPFRAMES_IDX).c_str(), + StringFromFormat("%sobject%i_%s(%i).png", File::GetUserPath(D_DUMPOBJECTS_IDX).c_str(), stats.thisFrame.numDrawnObjects, ObjectBufferName[i], i - BufferBase[i]); TextureToPng((u8*)ObjectBuffer[i], EFB_WIDTH * 4, filename, EFB_WIDTH, EFB_HEIGHT, true);