libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.28k stars 1.83k forks source link

Adding cheat codes is now too overcomplicated #7212

Open inactive123 opened 6 years ago

inactive123 commented 6 years ago

@RetroSven I only noticed this when a user alerted me to this -

adding cheatcodes is now way too overcomplicated I'm afraid to say. Maybe with some alterations we can reduce the barrier to entry here.

1) Where is the cheat passes option? This made adding new cheats easy. Why is it gone all of a sudden? I don't like this at all. 2) There is 'Add Cheat to Bottom/Add Cheat To Top'. These are the ONLY options to adding new cheats as opposed to the cheat passes option. This all needs to be made way less cluttered. Not sure of how to do it but there has to be a way to make this less cluttered. 3) There is only 'Delete All Cheats', and this doesn't even refresh the list. So if you select it, you can still see the cheats you added.

Your average enduser has no idea how to add cheatcodes now. Can we make this more accessible yet still have all the additional functionality for the poweruser? I liked how things were before vs. this at least when it came to adding cheatcodes - this feels way too overcomplicated with how I have to add a cheat to the bottom or the top.

inactive123 commented 6 years ago

Also, there is zero documentation for this on the Libretro docs. Users have no idea how to even add cheat codes to begin with.

RetroSven commented 6 years ago

Old way to add new cheats - highlight "cheat passes", press right however many times you want to add new codes

New way to add new cheats - highlight either "add new code to top" or "add new code to bottom", press enter however many times you want to add new codes

I do not see how one is more or less complicated than the other.

Picture yourself as a new user who has never used RA before. What would be more intuitive to you? A menu option that says "Add new code to top" or something called "cheat passes?" I can tell you that shortly before I started making submissions to RA, I had never before used it and I had no idea what "cheat passes" meant. Even now that I know what function it serves, I still don't understand what "passes" has to do with the number of cheats in the list.

andres-asm commented 6 years ago

The passes thing was kinda non-sensical (it was reused from the shaders dialog) I see no problem with the new gui except this:

image

This is... too much for a noob imho. Before it was like... type a few numbers in hex, done.

Now you need to really understand what you're doing. Other than that, I hate title case in all the labels 🤣

image

Like this but I guess it's all over the GUI so not much can be done about it, for some reason it bugs me here.

inactive123 commented 6 years ago

OK, let's forget about the passes thing, but can we please discuss how we can make some of this easier and less intimidating to use for the average enduser? Any thoughts there? Because it does seem overwhelming at first. Any thoughts there @radius @RetroSven ? Perhaps more submenus?

andres-asm commented 6 years ago

Well maybe there could be... two modes to enter cheats Simple would prompt for the user right away

Advanced would show this whole thing I guess.

inactive123 commented 6 years ago

Yeah - the Advanced mode could be what it is right now, and 'Simple' would be something far more simplified.

RobLoach commented 6 years ago

Do any cores use passes for Cheats? In most cases, the ordering seems irrelevant.

RetroSven commented 6 years ago

@RobLoach correct the index number is irrelevant

@twinaphex @fr500 how about we simply change the default handler to the emu-managed (e.g. create a new code, select it, and change the handler type to see what I mean)

RetroSven commented 6 years ago

oh and @fr500 I'm unclear what you mean by title case - are you talking about the capitalization of the menu items?

RobLoach commented 6 years ago

My suggestions on the user interface are annotated below, with an overall goal to simplify the user interface...

cheatui

Annotations

RetroSven commented 6 years ago

@RobLoach the cheat index is irrelevant for the emu-handled cheats, but for the new RA-handled cheats they are potentially used because there are options to do things like "run next cheat if [...]" which will look at the next cheat in the list. Therefore, add to top and bottom are both separately useful.

Also, I'm not sure that load/replace should be the default as opposed to load/append. I think the latter is used more and is potentially less accidentally destructive.

I don't plan on making any changes until there is consensus among all the interested parties as to what exactly needs to change.

Regarding the originating comment about the general complaints - I don't give much weight to their comments because they are essentially complaining about two things. 1) that "cheat passes" has been replacing with more meaningful "add cheat to top/bottom" options and 2) "Delete All Cheats" - which they say does not work, but they are not reading the output message. There is a safeguard to prevent casual/accidental selection of the option. A message appears saying that they must press right five times. This person is apparently of the class of folk who just don't like change in general.

Let's not get immediately swayed by a potentially vocal minority. If there are more comments like the original one will you please post the forum or link to the source? I'd like to read them. Bear in mind you generally don't hear from people when they like things - they're more likely to voice complaints. So hearing more complaints than thanks doesn't necessarily mean that the majority of people don't like something.

Adding @daninthemix as well since I'm sure he has an opinion on the matter

Also - wrt adding new codes in general - this seems like it would (or should) be a very uncommon activity. If someone is manually keying in a cheat code, we should find out what their source is and import all of those codes into the internal RA cheat database. People should just be pulling codes from there instead of manually entering them.

daninthemix commented 6 years ago

I can only speak as a Windows user, but I never, and would never directly edit cheats in Retroarch. for native emu cheats I build the text file and replace or append it (both options need to be readily accessible IMO), and if I were to use the new Retroarch cheats it would be from searching for codes and then adding them. You need to get input from users on other platforms I guess, who can't so easily just edit and then load a text file.

RetroSven commented 6 years ago

@daninthemix where are you sourcing your cheats to build your text files and why do you need to edit a text file at all? Can't you load your cheats from the RA database and just enable/use the ones you want? I want to understand better because it sounds like whatever you're doing could possibly be done via the UI if it's common enough.

daninthemix commented 6 years ago

Typically from gamehacking.org as you can tick the codes you want and then download them in libretro format. Of course, as is always the case many codes don't work, so you end up hunting down codes elsewhere (or just grabbing different codes from the same place) and pasting them into the file (or making a new file and appending, since you added that feature). Or I just find I need additional codes as I proceed through a game, etc.

I have played through dozens of games in Retroarch with cheats, in different cores, and have never entered a code manually nor seen any reason to do so.

RobLoach commented 6 years ago

Got started on some of my suggestions from https://github.com/libretro/RetroArch/issues/7212#issuecomment-421174838 over at this Pull Request.

RetroSven commented 6 years ago

As noted above, I think the default should be load/append rather than load/replace. I think the more common activity is to want to append.

We may need to come up with a better way to manage the visibility of settings. Hiding all kinds of useful functionality under the notion of them being "advanced" doesn't seem 100% correct to me. When I was new to RA, I only found out about "advanced mode" by essentially drilling down into every menu/submenu item because I was curious. It's doubtful the average end-user even knows an "advanced settings" toggle even exists unless they are seeking some specific functionality and end up googling for it. So they miss out on lots of interesting/useful features in the product because they're hidden by default. It's also problematic when all the "advanced" settings reside under one roof. If someone wants some of the advanced features hidden and others visible, there's no way to do that. If the intention is to avoid clutter, then it should really be at the user's discretion on a more granular basis.

How about a menu navigation mode where users can hide/unhide whatever options they want on any screen? Or just assigning some menu keybinds for things like "hide this menu option" and "unhide all menu options on this page"? Then if people feel the menus are too cluttered or they decide they'll never use a particular menu item, they can just hide it themselves. By default, everything is visible.

daninthemix commented 6 years ago

I'm just a mere user but the cheat situation was untouched for years until RetroSven came along and added a bunch of QOL features we'd been asking for for a very long time, like auto-saving + loading the cheat state for each game (an obvious feature and one that only came into being about a month ago), and apply-on-toggle, etc.

I, too, feel like the cheat interface is now cluttered - but all those options are useful and I use them, so what are you going to do?

inactive123 commented 6 years ago

I also don't think just hiding everything behind 'Advanced' is really a good strategy. I disagreed with various things that were moved to 'Advanced' settings before.

How about a menu navigation mode where users can hide/unhide whatever options they want on any screen? Or just assigning some menu keybinds for things like "hide this menu option" and "unhide all menu options on this page"? Then if people feel the menus are too cluttered or they decide they'll never use a particular menu item, they can just hide it themselves. By default, everything is visible.

image

Yuo can acccess this by going to User Interface -> Views. This right now allows you to hide certain categories. However, this still wouldn't help with individual settings/menu entries.

So how are we going to make this work?

RetroSven commented 6 years ago

Change value of "show advanced settings" to off, then remove the advanced setting toggle. Advanced setting functionality will still work, however. Remove the "advanced setting" flag from every menu item that has it. This will result in every menu option being visible.

Add two key/button bindings - one to hide a menu option (which would simply flag it as an advanced feature and, since the advanced settings functionality is still enabled, this will hide the menu item). Another key/button binding will clear the advanced setting flag on all of the menu items on the current menu. This will make everything visible on the current menu.

Then we'd need to have a generic way to track/save these settings, but only save the setting for menu items that have been manually hidden. I.e. no need to clutter up the cfg file with lots of menu items that are visible.

daninthemix commented 6 years ago

@RetroSven this is a great idea. With one button, just hide menu options we don't want. Simple.

RobLoach commented 6 years ago

I also don't think just hiding everything behind 'Advanced' is really a good strategy.

While hiding settings is generally the wrong way of fixing the problem, it does ease the interface for users who are new to RetroArch. Similar to Kodi's Basic/Standard/Advanced/Expert settings switch. I enable Advanced Settings when configuring RetroArch initially, and then I hide the advanced settings afterwards, to ease and simplify the interface.

Change value of "show advanced settings" to off, then remove the advanced setting toggle.

I'm likely misunderstanding what you're proposing, but getting rid of Advanced Settings, and requiring the user to know the keybind to show/hide individual menu items seems more complicated.

We're talking about simplifying the cheat code interface, not just hiding settings. The real problem that we're trying to solve is that the cheat UI is overwhelming to new users.

RetroSven commented 6 years ago

We're talking about simplifying the cheat code interface, not just hiding settings.

Your recent pull request simply hid a bunch of settings under the "Advanced setting" section, though, so I'm unclear why you think this is any different. It's essentially the same thing, just a different way of implementing and allows far more granularity so that everyone has the option to show only the options they want to see as opposed to us making decisions about what we think the user may or may not want to see.

Personally, I want to always see the "Start or Continue" option, but I never want to see either of the "Load" options because I find it more enjoyable to search for them myself. There's no way to anticipate all the permutations of desires that the end-users will want, so instead of a hard-coded set of options flagged as "advanced" (which likely doesn't exactly meet anyone's needs/desires), we open it up and put the power in the user's hands.

RobLoach commented 6 years ago

Your recent pull request simply hid a bunch of settings under the "Advanced setting" section

Correct, and it was a first step. There is more that we'd need to do. Mostly wanted to get some feedback on it initially.... Would be good to get a curate what we'll do here.

"Star or Continue" could stick on, makes sense to me. Updated the branch with that: https://github.com/libretro/RetroArch/pull/7222 :+1:

Smoker1 commented 6 years ago

Actually, the new Cheat System Feature is pretty good. I was able to create tons of Cheats for FBA. However, there is a Issue I would like to address, if possible here. If I need to create a new Issue, let me know. But here is the Issue: For some Games under the FBA (Current Build), when you try to Start Cheat Search, it does not start. when you go to the Add numbered amount Results to the List, it shows 0 instead of a numbered amount. The Games are listed under my Github Page. https://github.com/Smoker1/RetroArch-174-and-above-Cheats

RetroSven commented 6 years ago

@Smoker1 ideally the issue should go in the fb core repo, but I believe I've fixed this - you can either wait until this gets merged:

https://github.com/libretro/fbalpha/pull/241

or you can pull from my fork of fbalpha to try it

barbudreadmon commented 6 years ago

I won't merge this in its current state, and i don't see why you would need things like cps video ram for cheat search. @Smoker1's issue is most likely related to the fact he is trying to search cheat on non cps1/cps2/cps3/neogeo games, only those 4 systems got their ram hooked to the retro_get_memory_data/retro_get_memory_size thing.

ghost commented 6 years ago

I don't think I'm quite a noob at this program, but I cannot figure out the cheats now either.

I go to Quick Menu -> Cheats -> Add New Code to Bottom -> Select "Check #0" -> Now what?

There is no "code" option, unless I change "Handler" to "Emulator" but I have no idea what that means, and clicking on "Code" then doesn't do anything, I cannot figure out how to use this "Code" option at all.

If we're supposed to use the "RetroArch" handler, where does the code go? What's the difference between these handlers?

If we're supposed to be setting both "memory address" and "value" now, that is not acceptable... approximately 0% of casual users have idea any what part of a code is what, and they shouldn't have to.

Also when I tried to delete all cheats I got a message "Press right five times to delete all cheats". What? That is unacceptable. And touch users don't have a right button. "Delete All Codes" should just refresh the menu by itself so all the current cheats are gone.

Over the past few days I have been getting many, many questions from users on discord/etc. on how to use cheats now, and I simply cannot help them because I cannot even figure it out myself.

RetroSven commented 6 years ago

@barbudreadmon @Smoker1 let's please keep this side-conversation in the referenced fba pull request

RetroSven commented 6 years ago

@bparker06 what is the link to the discord channel in question?

I suggest you ask these people what they were doing in the past. All of the previous functionality is still there. If they add a new code and change the handler to "Emulator" that's the exact same screen as they had before. The "Code" option has always been there - before I made any changes whatsoever. If people are complaining about how to use it, then that has nothing to do with the enhancements I've made related to cheat code searching.

The press-right-five-times thing is a safety measure to prevent accidental clicking. If you've been working for hours on a new set of cheat codes and accidentally click that menu item, all your work is gone.

It should be extraordinarily rare for anyone to manually enter data into the code, memory, value fields. People should either being loading codes from the database or searching for new codes (which will automatically populate the memory/value fields). If anyone is trying to enter code data, then we need to find out why they think they need to do that. If it's because they can't find the code in the RA cheat database, then we should find out where their code was obtained from and update the RA cheat database.

RetroSven commented 6 years ago

I think possibly the reason why there are so many more questions about cheat codes is because the updates were prominently mentioned in the release notes. Most of the people with questions are probably first-time users of the cheat system. The ones complaining about what to enter for "code" are definitely first-timers. They just have general questions about cheats in general, not necessarily specifically related to any of the new things I added.

ghost commented 6 years ago

From the frontpage of retroarch.com: https://discord.gg/C4Huaca

ask these people what they were doing in the past

They incremented the number of passes, selected the new pass and entered a code.

The "Code" option has always been there

Except it doesn't work now. Selecting that option does nothing for me. I do not get any dialog to enter a code, or anything at all.

If you say the emulator handler should be used by default, then please make it the default, because right now it is not.

I definitely think we need a docs page for the cheats now.

RetroSven commented 6 years ago

see https://github.com/libretro/RetroArch/pull/7292

RetroSven commented 6 years ago

Also, to be clear, I was completely unaware of this issue with not being able to edit the "code" value until just recently. That was definitely a bug and unintentional. So I hope no one was thinking that I felt that not being able to edit codes was correct behavior. As soon as I knew about that bug I fixed it immediately.

kevinfoley commented 6 years ago

A few comments related to the new system:

RetroSven commented 6 years ago

Thanks for your comments @kevinfoley

re: narrowing down values - we actually have documentation online for an overview of how to search for new cheats here: https://docs.libretro.com/guides/cheat-codes/

The subject of documentation has actually come up before in the context of how to provide information about all the features in RetroArch to new users or for new features. It's generally understood (and there have been some recent scientific papers published confirming) that the vast majority of people don't seek out or read documentation. Perhaps a generic help key (F1) for every page that would display a help popup. Do you think you would have used that or is it more about not even knowing that something existed? (E.g. RetroArch could make you coffee in the morning but you'd never know unless you happened to catch the release notes or blog post)

re: rumble intensity - what controller were you using and what input driver/OS? I did all my development with an X360 controller with dinput on Linux/Windows and it was immediate for me.

re: search option - I might need to hear more details about your particular case. In general searching for text strings is not particularly useful in the context of cheats because it's rare that the actual underlying value stored in the console's memory is a string-representation of the base-10 value. I.e. if you have 89 (base10) hit points that would be stored as the single hexadecimal byte 0x59. Storing it in the console's memory as two bytes ( ascii value of 8 - 0x38 and ascii value of 9 - 0x39 ) is very rare, but I have seen it with things like (IIRC) the timer in super mario bros. Maybe I'm misunderstanding your situation though.

I very much like that idea of displaying certain memory location values while in-game. I'm currently thinking of a new menu item where you can define a start/end range of memory to display on-screen and another option on the cheat search menu for displaying as many of the potential hits on-screen as possible. Would that cover the use cases you envisioned? Ideally it would display the hex and decimal values for the same location, but in order to put as much info on screen as possible I think it will just have to be 2-char hex codes. E.g. 00000000 12 23 AB FE 89 ... next line 00000010 45 23 56 etc (depending on how many values would fit horizontally)

RetroSven commented 6 years ago

re help key - not F1 for RA specifically since that obviously conflicts with the menu - was just the first one that popped into my head since it's a common help key

kevinfoley commented 6 years ago

@RetroSven Yes, that that is the help documentation I ended up finding.

I have never used the F1 help in any software; it never feels natural to me. Typical modern solutions are tooltips (hover the cursor over something to see a floating description, which may not work with your UI when using a console controller), popup dialogs/tutorials the first time you visit a screen, or just having an inline description in the UI - the latter is what I'd suggest here.

I'm using the built-in rumble with a GPD Win 2. I haven't spent a whole lot of time playing around with it so may have misunderstood something or forgotten to hit "Apply", but it seemed like there was no noticeable vibration for a 100ms duration until I pushed the strength up to 1000. It would be nice if we could just type in values; that doesn't seem to be supported currently.

I'm playing an old Game Boy title. I agree that it's odd, but it's displaying the raw hex in the user interface. I verified this by changing the decimal value to 127 in the cheat menu, and it showed up as "7F" in the UI in game. I've seen a few other places where it seems like they may be doing this; they must have some funky math logic. Maybe the original programmers found it too difficult to think in hex while coding the assembly. Maybe you could have a toggle between displaying raw hex, decimal value, or ASCII value, instead of always displaying decimal value.

I'm currently thinking of a new menu item where you can define a start/end range of memory to display on-screen and another option on the cheat search menu for displaying as many of the potential hits on-screen as possible.

That sounds great!

In order to put as much info on screen as possible I think it will just have to be 2-char hex codes

I agree and think that's an acceptable tradeoff.

Sureiya commented 5 years ago

The cheat search is the worst UX I've ever seen on a cheat device; Including my GameGenie from the 80s. It needs to at the very least let you select the digit to increase. None of this hold down the button stuff. This is going to give someone an aneurysm. It should also 100% support keyboard input.

killerz298 commented 4 years ago

The cheat search is the worst UX I've ever seen on a cheat device; Including my GameGenie from the 80s. It needs to at the very least let you select the digit to increase. None of this hold down the button stuff. This is going to give someone an aneurysm. It should also 100% support keyboard input.

I thought this was just me not knowing what I'm doing. Is there really no way to manually input the value we want without having to wait for the numbers to increase/decrease? If not, I can't believe that isn't standard functionality.

zontreck commented 4 years ago

Is there plans to improve this UI because this is still an issue in 2020, and I find it impossible to add/select cheats for any games. I can download a cheat list on android, but nothing changes if i hit reload, delete all, add to top, it just doesn't appear to do anything at all.

lostfictions commented 4 years ago

It's kind of wild to me that if I want to search for a specific 32-bit value, I have to scroll through all possible values? I'm sure folks have noticed, but uhh there's a lot of 32-bit values

Maverynthia commented 4 years ago

2020 and still no manual way to type in the values? I have an address I want to browse but I have to hooooooold the button down for it to slloooooowly got 1 by 1

DjDiabolik commented 2 years ago

It's someone can suggest how i can STOP the search after i found and save a cheat ?

I have found somethigs for a certain games and i have saved into a file............. now apparently when i run the same games i obtain "Cheat Search Engine" every time it's restart........ how i can stop it ? I have already found how i need....... stop it please :)

Lungkisser commented 8 months ago

Adding cheats is terrible, and has been since this was brought up in 2018 and even earlier - it's now 2024 and it's still just terrible.

narakai commented 8 months ago

2020 and still no manual way to type in the values? I have an address I want to browse but I have to hooooooold the button down for it to slloooooowly got 1 by 1

I have to press Right button 5 minutes searching for value 10000...

remino commented 4 months ago

The whole cheat UI is a UX blunder.

Let alone adding cheats, how do you even save them? Cheats are not saved automatically. And “Reload Game Specific Cheats” only clears all your cheats without warning.