Comments (20)
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.
from marley.
@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.
from marley.
@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.
from marley.
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.
from marley.
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)
from marley.
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.
from marley.
Anthing else @Shoegzer?
from marley.
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
from marley.
@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.
from marley.
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
from marley.
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.
from marley.
Maybe it is easier to describe what the pros & cons are:
from marley.
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"};
from marley.
@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! :-)
from marley.
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:
-
Consider a "tooltips" style info bar at the bottom, with the transparency slightly tuned down.
-
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.
-
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.
-
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. :-)
from marley.
Does PCSX2 as a core work for you in 0.2.3?
from marley.
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.
from marley.
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.
from marley.
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 #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?
from marley.
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.
from marley.
Related Issues (20)
- Discord Server HOT 1
- Launch Screen Design HOT 9
- change launch screen pic forma to png HOT 1
- Finalize Marley logo HOT 2
- Upload all working graphical and UI assets. HOT 2
- Blog post (Research): Design critique of PPSSPP. HOT 4
- Wireframes for UI Layout
- Fix Contrast Issue with Icons HOT 4
- native PCSX2 core HOT 1
- fix order of control elements in GUI HOT 1
- scaling for control elements in the GUI according to main window dimensions HOT 1
- add off dialog HOT 1
- Update Dolphin libpng library to properly check length of chunks against user limit HOT 1
- add slider for sound volume under general settings HOT 1
- fix plain theme HOT 1
- create unit test for screen_manager HOT 1
- Keyboard support for emulator cores
- Add axis-controlled movement to front-end
- remove recursive search for games
- Retro theme: create backgrounds on main screen and settings screens
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from marley.