libretro / beetle-psx-libretro

Standalone port/fork of Mednafen PSX to the Libretro API.
GNU General Public License v2.0
303 stars 130 forks source link

Metal Gear Solid - Facility Entrance/Helicopter Cutscenes graphic glitches #768

Open LukasThyWalls opened 3 years ago

LukasThyWalls commented 3 years ago

Description

Playing MGS1 (Spanish version), reaching the second play scene (after the elevetor, the facility entrance), it began to appears graphical glitches and strange behaviours in the image during the cutscenes. Passing those cutscenes all seems to be fine again (i didn't try later cutscenes yet), but here is when it began to happen, because in the docks, i didn't see anything of this.

I tried to change settings (PGXP On/Off, Texture Filters, MSAA...) and both things looks exactly the same with every setting.

Expected behavior

I tried this with mednafen, but it doesn't do anything like that, all seems fine, because i can't increasing the internal GPU resolution, and i didn't find any way to do it there. Both glitches doesn't show in the last version 1.26.1 using MedGui Reborn GUI.

Here is a video from Mednafen 1.26.1 with no glitches https://youtu.be/M7v5ApSayK0

Also tried Duckstation to see if it does something similar (It can increase the internal GPU resolution), but it looks fine. No distorsion squares, and the movement/vibration effect is lighter and not over the place like with Beetle PSX HW, it's like it shows in Mednafen with 1x internal GPU resolution, but with higher resolution.

Actual behavior

These are screenshots from RetroArch 1.9.0 with Beetle PSX HW 0.9.44.1 dd97d81, with the settings used below

From the first graphical glitch noted: MetalGearSolid-201130-223735 MetalGearSolid-201130-223710

From the second one: MetalGearSolid-201130-223703

An a video, which i think is more useful to see both glitches https://youtu.be/sQHEtVhw55k

Version/Commit

Beetle PSX HW 0.9.44.1 dd97d81

Core options

Beetle PSX HW Configuration file (Click to view): ``` beetle_psx_hw_adaptive_smoothing = "disabled" beetle_psx_hw_analog_calibration = "disabled" beetle_psx_hw_analog_toggle = "disabled" beetle_psx_hw_aspect_ratio = "corrected" beetle_psx_hw_cd_access_method = "sync" beetle_psx_hw_cd_fastload = "2x(native)" beetle_psx_hw_core_timing_fps = "force_progressive" beetle_psx_hw_cpu_dynarec = "disabled" beetle_psx_hw_cpu_freq_scale = "100%(native)" beetle_psx_hw_crop_overscan = "enabled" beetle_psx_hw_depth = "16bpp(native)" beetle_psx_hw_display_internal_fps = "disabled" beetle_psx_hw_display_vram = "disabled" beetle_psx_hw_dither_mode = "internal resolution" beetle_psx_hw_dump_textures = "disabled" beetle_psx_hw_dynarec_eventcycles = "128" beetle_psx_hw_dynarec_invalidate = "full" beetle_psx_hw_enable_memcard1 = "enabled" beetle_psx_hw_enable_multitap_port1 = "disabled" beetle_psx_hw_enable_multitap_port2 = "disabled" beetle_psx_hw_filter = "SABR" beetle_psx_hw_filter_exclude_2d_polygon = "all" beetle_psx_hw_filter_exclude_sprite = "all" beetle_psx_hw_frame_duping = "disabled" beetle_psx_hw_gpu_overclock = "1x(native)" beetle_psx_hw_gte_overclock = "disabled" beetle_psx_hw_gun_cursor = "cross" beetle_psx_hw_gun_input_mode = "lightgun" beetle_psx_hw_image_crop = "disabled" beetle_psx_hw_image_offset = "disabled" beetle_psx_hw_image_offset_cycles = "0" beetle_psx_hw_initial_scanline = "0" beetle_psx_hw_initial_scanline_pal = "0" beetle_psx_hw_internal_resolution = "4x" beetle_psx_hw_last_scanline = "239" beetle_psx_hw_last_scanline_pal = "287" beetle_psx_hw_line_render = "disabled" beetle_psx_hw_mdec_yuv = "disabled" beetle_psx_hw_memcard_left_index = "0" beetle_psx_hw_memcard_right_index = "1" beetle_psx_hw_mouse_sensitivity = "100%" beetle_psx_hw_msaa = "4x" beetle_psx_hw_negcon_deadzone = "0%" beetle_psx_hw_negcon_response = "linear" beetle_psx_hw_pal_video_timing_override = "disabled" beetle_psx_hw_pgxp_2d_tol = "8px" beetle_psx_hw_pgxp_mode = "memory + CPU" beetle_psx_hw_pgxp_nclip = "enabled" beetle_psx_hw_pgxp_texture = "enabled" beetle_psx_hw_pgxp_vertex = "disabled" beetle_psx_hw_renderer = "hardware" beetle_psx_hw_renderer_software_fb = "enabled" beetle_psx_hw_replace_textures = "disabled" beetle_psx_hw_scaled_uv_offset = "disabled" beetle_psx_hw_shared_memory_cards = "disabled" beetle_psx_hw_skip_bios = "disabled" beetle_psx_hw_super_sampling = "disabled" beetle_psx_hw_track_textures = "disabled" beetle_psx_hw_use_mednafen_memcard0_method = "libretro" beetle_psx_hw_widescreen_hack = "disabled" beetle_psx_hw_wireframe = "disabled" ```
Video Options in RetroArch (If it's needed more, i can upload the entire config file, click to view): ``` video_adaptive_vsync = "false" video_allow_rotate = "true" video_aspect_ratio = "-1.000000" video_aspect_ratio_auto = "false" video_black_frame_insertion = "false" video_context_driver = "" video_crop_overscan = "true" video_ctx_scaling = "false" video_disable_composition = "false" video_driver = "vulkan" video_filter = ":\filters\video\Normal2x.filt" video_filter_dir = ":\filters\video" video_font_enable = "true" video_font_path = "" video_font_size = "32.000000" video_force_aspect = "true" video_force_srgb_disable = "false" video_frame_delay = "0" video_fullscreen = "false" video_fullscreen_x = "1280" video_fullscreen_y = "960" video_gpu_record = "false" video_gpu_screenshot = "true" video_hard_sync = "false" video_hard_sync_frames = "0" video_layout_directory = ":\layouts" video_layout_enable = "true" video_layout_path = "" video_layout_selected_view = "0" video_max_swapchain_images = "3" video_message_color = "ffff00" video_message_pos_x = "0.050000" video_message_pos_y = "0.050000" video_monitor_index = "0" video_msg_bgcolor_blue = "0" video_msg_bgcolor_enable = "false" video_msg_bgcolor_green = "0" video_msg_bgcolor_opacity = "1.000000" video_msg_bgcolor_red = "0" video_post_filter_record = "false" video_record_config = "" video_record_quality = "4" video_record_scale_factor = "1" video_record_threads = "2" video_refresh_rate = "60.000000" video_rotation = "0" video_scale = "1.000000" video_scale_integer = "false" video_shader_delay = "0" video_shader_dir = ":\shaders" video_shader_enable = "false" video_shader_watch_files = "false" video_shared_context = "false" video_smooth = "false" video_stream_config = "" video_stream_port = "56400" video_stream_quality = "10" video_stream_scale_factor = "1" video_stream_url = "" video_swap_interval = "1" video_threaded = "false" video_vsync = "false" video_window_opacity = "100" video_window_save_positions = "true" video_window_show_decorations = "true" video_windowed_fullscreen = "true" video_windowed_position_height = "960" video_windowed_position_width = "1280" video_windowed_position_x = "210" video_windowed_position_y = "10" ```

Environment information

LukasThyWalls commented 3 years ago

MetalGearSolid-201130-223703

Although there is any feedback at all, i have continued testing things, and now i can say i was wrong and this exagerated movement effect is created by the PGXP Primitive Culling option. I don't know why i didn't pick that out with my other testings.

However, If i disable that in this game, all the texture movements and holes it should be fixing appears. I made a video showing the difference https://youtu.be/N3TXvBnxA0s

About the first glitch (Squares distorting the image), they appear when the internal resolution is more than 1x. I didn't find other option what changes the behaviour.

Thanks.

Edit: That video is using Bettle PSX HW 0.9.44.1 4b66169.

LukasThyWalls commented 3 years ago

MetalGearSolid-201130-223735 MetalGearSolid-201130-223710

I continued testing, and with PCSXR-PGXP (1.9.95.0, 02-03-2019), and this scene looks different. In fact, when appears the "pixels" in Bettle PSX HW, in PCSXR-PGXP (With PGXP with all options enabled) the entire screen becomes pixelated. You can see this here https://youtu.be/J7b171E6WEI