Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create options tab for PCSX2 #50

Closed
beaumanvienna opened this issue Nov 6, 2020 · 20 comments
Closed

create options tab for PCSX2 #50

beaumanvienna opened this issue Nov 6, 2020 · 20 comments
Assignees
Labels
enhancement New feature or request

Comments

@beaumanvienna
Copy link
Owner

beaumanvienna commented Nov 6, 2020

  • VSync yes/no
  • Aspect ratio
  • OpenGL HW or OpenGL software renderer
  • upscale factor
  • bios North America/Japan/EU
@beaumanvienna
Copy link
Owner Author

Anthing else @Shoegzer?

@Shoegzer
Copy link
Contributor

Shoegzer commented Nov 9, 2020

My thought was essentially that anything exposed through the existing UI that preserves the original PS2 eperience or is necessary for game performance or accuracy could be handled here, though I would personally remove aspect ratio and upscale as they aren't native PS2 features. Also BIOS selection could be any BIOS found in the BIOS directory (IIRC each region has many versions).

Areas to consider:

  • EE/VU options
  • Speedhack options
  • Game Fixes (unless automatically applied)
  • Audio latency/expension mode/timestretch options
  • DEV9 options
  • GSdx options (all tabs of the current GSdx plugin)
  • Multitap

@beaumanvienna
Copy link
Owner Author

@Shoegzer
I've been working on this topic since Sunday https://streamable.com/5kfy60

It's easy to create the screens, however, it is actual work to extract the screens from ppsspp. It is connected to the OpenGL context, event loop, their atlas texture, etc. I'm trying to strip everything away from ppsspp so that I have the bare minimum needed for the screens. I am a bit worried that it could affect the release date for X-Mas. Hopefully, this is not too much scope creep. I guess after the weekend we know more.

@Shoegzer
Copy link
Contributor

Great start! I'd standardize on fonts etc. so for example "Core" and "Emulation" might use the same font as "Continue", in a header bar vs. below, so the eye is cast more naturally on it. Notwithstanding technical challenges wrt the OpenGL context, hopefully this can be standardized over all cores vs. just the PPSSPP as RA does with its Ozone UI/Quick Menu.

And yes, careful on scope creep! It's okay to put off anything that isn't high priority. Most important is that really nice features are being added and will find their way in eventually. Christmas or no, people will still download and use Marley any time of year if they love it.

@beaumanvienna beaumanvienna self-assigned this Nov 14, 2020
@beaumanvienna beaumanvienna added the enhancement New feature or request label Nov 14, 2020
@beaumanvienna
Copy link
Owner Author

beaumanvienna commented Nov 15, 2020

@Shoegzer
I created a repository for the new UI screen engine here: https://github.com/beaumanvienna/diag_screen

It is similar to a core but can only provide settings screens. Currently, it runs as a unit test. Hooking it up to Marley eventually should be plug&play. It still looks identical to the video I posted above. However, it is now a stand-alone Cmake project that has only a few source files.

I separated the namespaces to avoid collisions with PPSSPP. There are quite a few classes left that I have to rename so that they don't clash with Marley's global scope.

@beaumanvienna
Copy link
Owner Author

@Shoegzer
A draft version of the settings screen can be found in v0.2.0.1 in the PPA. It's still a dummy - there are no actual setting changes connected to the screen.

Here's also a video demo: https://streamable.com/n2a7a0

The version in the PPA is not re-entry capable, which I fixed in the meantime with commit 8d0d6e3.

I'd say the new framework for the settings screens is now operational and I can proceed to the functional implementation per your recommendations.

@Shoegzer
Copy link
Contributor

Looking great! I think the layout will prove to be a great decision as it not only will be familiar to a wide audience already, but also that it's well-designed and clutter free.

@beaumanvienna
Copy link
Owner Author

Thanks, Shoegzer!

OK, so I hooked up the first settings to PCSX2 (beab71d)

I was wondering how to call the two renderer modes "OpenGL" and "Software". I think they are both OpenGL-based, not? I find that "Software" works better. I named them "OpenGL Hardware" and "OpenGL Hardware+Software" so that people understand they both are based on hardware acceleration. I have to admit I don't know what the difference is between the two. I only know that both work great, except that "OpenGL Hardware" doesn't work with Spiderman.

Below are the remaining settings. Which ones do you also want? AspectRatio I think is ok. And then you said we need the user hacks? I never used them myself. How do you know to enable or disable a user hack? Except for AspectRatio, I have no clue what those settings are about... LOL

AspectRatio = 1
MaxAnisotropy = 0
NTSC_Saturation = 1
ShadeBoost = 0
ShadeBoost_Brightness = 50
ShadeBoost_Contrast = 50
ShadeBoost_Saturation = 50
UserHacks = 0
UserHacks_AutoFlush = 0
UserHacks_CPU_FB_Conversion = 0
UserHacks_DisableDepthSupport = 0
UserHacks_DisablePartialInvalidation = 0
UserHacks_Disable_Safe_Features = 0
UserHacks_HalfPixelOffset = 0
UserHacks_Half_Bottom_Override = -1
UserHacks_SkipDraw = 0
UserHacks_SkipDraw_Offset = 0
UserHacks_TCOffsetX = 0
UserHacks_TCOffsetY = 0
UserHacks_TriFilter = 0
UserHacks_WildHack = 0
UserHacks_align_sprite_X = 0
UserHacks_merge_pp_sprite = 0
UserHacks_round_sprite_offset = 0
aa1 = 0
accurate_blending_unit = 1
accurate_date = 1
autoflush_sw = 1
clut_load_before_draw = 0
crc_hack_level = -1
disable_hw_gl_draw = 0
dithering_ps2 = 2
dump = 0
extrathreads = 2
extrathreads_height = 4
filter = 2
force_texture_clear = 0
fxaa = 0
interlace = 7
large_framebuffer = 0
linear_present = 1
mipmap = 1
mipmap_hw = -1
osd_monitor_enabled = 0
override_geometry_shader = -1
paltex = 0
preload_frame_with_gs_data = 0
save = 0
savef = 0
savel = 5000
saven = 0
savet = 0
savez = 0
shaderfx = 0
shaderfx_conf = shaders/GSdx_FX_Settings.ini
shaderfx_glsl = shaders/GSdx.fx

@Shoegzer
Copy link
Contributor

I would just leave them as "OpenGL" and "Software" as I believe software mode uses the CPU rather than GPU to render 3D hence OpenGL would not be involved. This also seems consistent with the name scheme others have worked towards lately, such as here.

Those settings you've posted above seem related to graphics exclusively, so I'd look at others too. Generally speaking I'd recommend referring to the UI to see what options are exposed to the majority of users and then map them to the settings above as the UI has always worked out fine for me (of course with the exception of inaccurate anti-features such as aspect ratio and resolution scaler which should not be exposed, but you already know my strong feelings there).

Also hope we don't get confused between UserHacks and GameFixes:

  • UserHacks: Used with OpenGL (hardware) mode only, permits tuning for optimal visuals given the accuracy imperfections of this rendering mode. The general setting ("UserHacks = 0" from your list above) could be toggled, subsequently revealing a submenu of options currently exposed in the "Advanced Settings" tab of the PCSX2 video menu. Software is the most accurate renderer to PS2 hardware, but since it rarely renders at fullspeed I usually switch to OpenGL - but them I'm always fiddling with these settings such as "Fast Texture Invalidation" and "Skipdraw Range" as so many games don't look right "out of the box".

  • GameFixes: AFAIK this is based on the external gamedb entries that can be automatically applied via simple toggle to auto apply or not. I don't think it's necessary to expose manual game fixes to the user, at least I've never used them.

@beaumanvienna
Copy link
Owner Author

Maybe it is easier to describe what the pros & cons are:

Screenshot from 2020-11-24 10-24-45

@Shoegzer
Copy link
Contributor

That seems a bit too simplified and may be more appropriate as a tooltip than an actual setting? I'd also stick with parallel comparative statements, so you might have:

Rendering Backend:

  • CPU: Higher graphics accuracy, slower rendering speed
  • GPU: Lower graphics accuracy, higher rendering speed (uses OpenGL)

@beaumanvienna
Copy link
Owner Author

Ok, this looks great :-) CPU is actually "CPU+GPU", see Kojin's and Ref's answers to my question in the PR you linked above.
I also changed the wording to fast/faster and high/higher, so that folks can feel good about whatever they choose, yet understand the difference

"GPU: High gfx accuracy, faster",
"GPU+CPU: Higher gfx accuracy, fast"};

@Shoegzer
Copy link
Contributor

Thanks! At the risk of being pedantic: what I said above still seems to hold true given what Ref said about software mode not using OpenGL for scene rendering/rasterization (which is why I categorized the options under "Rendering Backend"). :-) That said, if you change the category to "Display Mode" or "Display and Rendering Mode" (either of which are more generalized), then I think your option names are just fine.

Incidentally, I would consider keeping wording at "higher/slower" and "lower/higher" to avoid confusion. Even in recent builds of PCSX2, I've found many cases where hardware mode is highly inaccurate (spiky polygon syndrome, missing skybox etc.), and likewise where software mode is quite slow (even rendering at half-speed or worse especially in rendering scenes where volumetric fogging or high-volume particle effects are involved)! So to say these options are "high" and "fast" just seems disingenuous / misleading to users who know better.

@beaumanvienna
Copy link
Owner Author

@Shoegzer I am still working on the 4:3 mode for fullscreen but in windowed mode, 4:3 should be ok.

I programmed standard settings and advanced settings. Hopefully, this is what you had in mind. The user hacks need to be enabled on top of that.

Please review version 0.2.3 from the PPA. It is still work in progress but I figure it would be time you looked over it. Thanks! :-)

@Shoegzer
Copy link
Contributor

Yup, I'm on it - nice job overall! I realize you're just getting started with the options but here are my thoughts so far:

  1. Consider a "tooltips" style info bar at the bottom, with the transparency slightly tuned down.

  2. Next to where you have "PCSX2'" now, I visualize tabs across the top for "Audio", "Video", "Input", "Network" etc, as perhaps roughly mapping to the old plugins. The settings type "Basic | Advanced | Developer" would expose new options in each of those respective areas, rather than just added to the bottom. Also rather than an "Advanced Settings" checkbox, it would be a "Settings" pulldown with those three (or two if you prefer) options exposed the user.

  3. May want to give thought to how often a user is likely to toggle a feature, especially given limited screen real estate, and let that guide what options are basic vs. advanced. For example VSYNC is likely to be toggled only once, yet it takes up a lot of space as a basic feature. Just a thought, not something I feel necessarily strongly about because I know you could argue either way works.

  4. Thinking of it now, some PS2 games offered a 16:9 widescreen option (Gran Turismo 4?). Is that why you were thinking to give users the ability to change aspect? I wonder if Marley could auto-detect internal aspect and modify external aspect accordingly, rather than leave it to the user, because if there can ever be a way to stop users from trying to stretch their screen aspect out I'm all for it - I've seen way too many videos of games like GTA San Andreas where the radar is stretched to an ugly oval shape just to remove the bars and it makes me ill. :-)

@beaumanvienna
Copy link
Owner Author

Does PCSX2 as a core work for you in 0.2.3?

@Shoegzer
Copy link
Contributor

Funny you mention that - I accidentally reset my "Games folder" setting to my home dir, and now Marley just freezes when I try to change it from that. I can provide logs in case it isn't clear what's going on.

@beaumanvienna
Copy link
Owner Author

beaumanvienna commented Nov 27, 2020

About 4:3, I wasn't really aware of this topic. I looked into it yesterday for the first time. Yes, we can make 4:3 permanent and remove the option. Or detect it automatically.

What you described above would be a different issue. This is not related to the PCSX2 core. I would check ~/.marley/marley.cfg and remove the incorrect entry.

I tried this morning the PCSX2 core from the PPA version 0.2.3. It is not working. I saw that before and believed I had fixed it with removing additional compile options that the build server is injecting. Version 0.2.3 works when I build it locally. I built a new version 0.2.3.1 a few minutes ago in the PPA. Its release is pending; should be any minute now. I added -DPACKAGE_MODE=TRUE to the cmake options.

Thanks for all the feedback BTW!! :-) :-) Tools tips I have to check. Not sure where they would show. Probably doable. Multiple tabs yes, but only one per core. If needed. If it works automatically, even better. Plus a general tab??? (bios and games path, input setup, etc.) As you said, the settings are still early days. I can move VSync to the bottom. Good idea.

@beaumanvienna
Copy link
Owner Author

beaumanvienna commented Nov 28, 2020

PPA version 0.2.4.3 (Santa Cruz Edition) is available:

  • PPA bug fixed
  • aspect ratio fixed for fullscreen mode. 16:9 option removed for good. I love the 4:3 aspect ratio look. Lara Croft looks much better now, LOL
  • VSync moved to the end of the settings list
  • background picture fixed for settings tab
  • PCSX2 launched into Marley's main window (No more window tear down. It looks smoother and means improved mouse pointer disabling
  • activity indication added when searching files during Marley's startup + ESC key input added to exit Marley during the search

The majority of PCSX2 options for #50 should be implemented by now. "Audio", "Input", and "Network" need to be looked at in new tickets.

  • "Audio" would go on a new general screen tab. I really like the idea, though. This will be a central setting on the general screen. (Output device/volume)
  • "Input" can be currently found under Main Window -> Setup. The current "Setup" screen should be merged into the general setup screen. (not scope of create options tab for PCSX2 #50)
  • "Network": future feature
  • "dev" features won't be supported. The only option I sometimes use as a developer is to change the EE to interpreter because of the segfault in gdb. The segfault can be suppressed in gdb, so there is no real reason to switch to interpreter. Also, a developer can still enable this feature in the ini files.

Is there anything essential that is missing in version 0.2.4.3 in terms of PCSX2 settings?

@Shoegzer
Copy link
Contributor

You're quite welcome for the feedback.

  • Tool tips could be rendered into a translucent single-line horizontal bar at the bottom.

  • I think it would be best to have multple tabs for all major settings (general, audio, video, input etc.) globally, but also present those same tabs per core, supporting localized settings from the core itself. For example, the general audio tab could have an "Audio driver" (SDL, Pulse, etc.) setting, but the core audio tab could have things like timestretching in the case of PCSX2.

  • Auto-detecting aspect sounds like a great feature to me, and I'm glad you like the look of proper aspect! :-)

I removed ~/.marley but then after attempting to set the games folder, Marley [0.2.4.3] tries its recursive search through all folders under my home directory. ESC did not stop this so I had to kill the process. Subsequent attempts to restart Marley don't work wihtout removing ~/.marley again. I don't like this method of automatic recursive searching, which could take a very long time even if the feature were desired. I'd rather choose the directory manually from a file tree.

This brings to mind another major improvement that Marley's own resolution should be much higher, with improved font size/style and selection windows for example to allow more configuration etc. lines per screen, as RA does it. I know Marley is in early alpha, but doing this now would help future testing efforts as it is quite difficult to navigate as-is.

I'll take a look at PCSX2 settings once I can get into Marley again, but I can offer some preliminary thoughts. First I think "Audio" settings would work best in a separate "audio" tab rather than a general screen tab. Second, those "dev" features are actually needed for many games to work - if you look at the PCSX2 game compatibility wiki you'll see frequent references to change EE/IOP/VU to interpreter for example, in order to get a specific game to work, either in general, or to advance past a certain point in the game where more precision is required than the recompiler affords.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants