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

Qt/Debugger CodeWidget: Record and find specific functions by differencing #8732

Conversation

dreamsyntax
Copy link
Contributor

@dreamsyntax dreamsyntax commented Apr 9, 2020

UPDATE 2021-12-28, See bottom comments for updated screenshots. This main post does NOT reflect the final state.

For original PR, see #7679
TryTwo has since gone dark.
All credit for initial version of CodeDiff to TryTwo.

The PR, has been changed quite a bit. See final comments in thread.

---original description---
Adds a button to the code widget to open the differencing window.

Uses the profiler to record the functions that run, then the user adds the recording to an exclude or include list. The include list has the excludes subtracted from them, then gets displayed. The lists are symbol-based to avoid capturing a function multiple times. Allows finding specific functions based on when they run.

For example, recording the player standing still then pressing exclude, followed by moving around then pressing include, will find functions related to movement and movement animations. Specifically looking for an action or event can often yield a small amount of functions being returned, which is quite useful.

The profiler is sort of hijacked for this. Building a specific routine for recording the functions might increase efficiency, but I'm not sure how to.
---end original description---

  • Requires a saved symbol map

  • Clicking an item in the Diff jumps to the instruction that was diff'd

  • Right clicking allows:
    ** Go to start of function - Jumps CodeView to function start of the diff'd instruction
    ** Toggle blr - Sticks a blr at the start of the function, colors item red in the list
    ** Delete - Deletes item from the list

  • This feature makes it easy to pinpoint functions that would otherwise be difficult with only memory scans.

Screenshots:

CodeWidget:
CodeWidget_DiffButton

DiffDialog Start:
DiffDialog

DiffDialog Post Recording & Exclude/Include w/Entry Context Menu; Also shows 'isRecording' button
DiffDialog_ContextMenu

@sepalani
Copy link
Contributor

It can probably be a really nice feature but the Diff Window should be improved a little, IMHO.

  • A label should be used (even when recording) for the Included/Excluded values.
  • I feel the way these buttons are placed isn't intuitive. Buttons to Start/Stop recording and to Pause/Resume might be better.

What does the "Reset All" button do? Does it clear the list (or exclude all these items though the Included/Excluded values aren't updated)?

Is there any use-case for "toggle BLR"? Can't it be replaced with "Toggle Breakpoint" instead. Usually, you can see the caller using the callstack and don't need to patch the function with a BLR which can often crash the game.

Here is also an idea (that might be addressed in another PR) to improve this feature:

  • Add a button to filter by hit (like Cheat Engine ultimap)

@dreamsyntax
Copy link
Contributor Author

  • A label should be used (even when recording) for the Included/Excluded values.

I don't understand. Do you mean dynamically populating?

  • I feel the way these buttons are placed isn't intuitive. Buttons to Start/Stop recording and to Pause/Resume might be better.

This can definitely be improved to have more features. But as a first version this meets its intended purpose (I have used it for a year in misc hacking projects).

What does the "Reset All" button do? Does it clear the list (or exclude all these items though the Included/Excluded values aren't updated)?

This resets all the lists. I will add the label update, good catch.

Is there any use-case for "toggle BLR"? Can't it be replaced with "Toggle Breakpoint" instead. Usually, you can see the caller using the callstack and don't need to patch the function with a BLR which can often crash the game.

This is a misunderstanding the intended use of the feature. Toggle BLR is the main reason this exists.
The general flow of using this is:

  • Generate the list
  • Create a savestate
  • blr an item in the list, check if the behavior you are searching for exists. If it doesnt, you found a potentially related function to what you are looking for. From here you inspect the function and make asm patches etc as needed.
  • If the behavior still exists, load state, try next function.
  • Rinse and repeat

Here is also an idea (that might be addressed in another PR) to improve this feature:

  • Add a button to filter by hit (like Cheat Engine ultimap)

To clarify, when you say filter by hit you mean filtering by the caller? I have a few ideas of how this can be improved. I have a very basic save/load of the list implemented for the scenario of Dolphin crashing (which happens a lot when doing deep dive game debugging), but the robustness is lacking so it is not included in this PR.

@sepalani
Copy link
Contributor

Include/Exclude size label

A label should be used (even when recording) for the Included/Excluded values.

I don't understand. Do you mean dynamically populating?

I was referring to m_exclude_size_label and m_include_size_label being replaced from text ("Exclude"/"Include") to bare numbers without keeping the text. IMO, it's very misleading. I also doubt these count values are useful, especially when thread scheduling can pollute the result with threads being resumed at different time. Unless you know precisely when threads and other asynchronous tasks might interrupt you, I don't think it's worth keeping. I don't mind having them if you address the label issue.

Toggle BLR

This is a misunderstanding the intended use of the feature. Toggle BLR is the main reason this exists.
The general flow of using this is:

  • Generate the list
  • Create a savestate
  • blr an item in the list, check if the behavior you are searching for exists. If it doesnt, you found a potentially related function to what you are looking for. From here you inspect the function and make asm patches etc as needed.
  • If the behavior still exists, load state, try next function.
  • Rinse and repeat

I see, that makes sense. You can leave it as is, then.

UI/UX issue

Regarding my UI/UX issue, if we have a look at CE Ultimap: https://wiki.cheatengine.org/index.php?title=Ultimap1
img
The recording part and the filtering part of the ultimap is crystal clear. Buttons are also disabled when there aren't usable which isn't the case in your PR.

Add a button to filter by hit (like Cheat Engine ultimap)

My statement refers to the "Filter our routine(s) where callcount is not" button from CE. As stated, you can leave it for a follow-up PR if you want.

In sum

IMHO, this PR shouldn't be merged as long as these UI/UX issues aren't addressed:

  • Address the size label issue
  • Disable buttons when they shouldn't be used
  • Make the "recording part" clear (ideally, with a start, pause/resume, stop button)
  • Make the "filtering part" clear

Suggestions:

  • The list should be name "Matching results" or something along those lines
  • Add a "Filter our routine(s) where callcount is not" button
  • Add a help button (displaying the info at the start)

Regarding "making the recording/filtering part clear" you can use GroupBox or any other Qt features that are fitting.

@AdmiralCurtiss
Copy link
Contributor

Yeah I played with this for a bit and while it works, it's definitely a bit rough. Some annoyances I ran across:

  • As a colorblind person, the red color for whether we're currently skipping this function is very hard to see. Please add a column with an icon indicating this or something like that.
  • Loading a savestate doesn't seem to update the rows to indicate if they're still blr-replaced or not.
  • Renaming a symbol doesn't update the corresponding symbol in the search table.
  • Similarly, a 'rename this function' option in the context menu would be nice.
  • I don't actually understand what the 'address' column is, exactly. I figured it would be the start of the function, but that doesn't seem to be the case, it just seems like a random address within the function?
  • Hitting 'toggle blr' a second time doesn't seem to actually revert the blr injection.

@AdmiralCurtiss
Copy link
Contributor

Oh and I just right-clicked on the table header and hit 'go to start of function' (meant to click the first row) and then dolphin crashed.

@dreamsyntax
Copy link
Contributor Author

dreamsyntax commented Apr 11, 2020

Thanks for the clarification sepalani. The original PR actually labeled the Include/Exclude as "Code did not get executed" and "Code has been executed". I will revert to that and address your other points.

AdmiralCurtiss

  • As a colorblind person, the red color for whether we're currently skipping this function is very hard to see. Please add a column with an icon indicating this or something like that.
    Similarly, a 'rename this function' option in the context menu would be nice.

Good points. Edit: This would require a larger change, saving for another PR

  • Loading a savestate doesn't seem to update the rows to indicate if they're still blr-replaced or not.

This is not the intended result. The red/indication of a past blr is supposed to be independent of current game state. Think of it checklist and you are marking items you have interacted with. Its very rare you would blr multiple functions when searching.

  • Renaming a symbol doesn't update the corresponding symbol in the search table.

A downside to the way this is currently implemented is expects the symbol map to not change. Typically in my flow if I rename a symbol I have determined its purpose and thus can ignore it in the Diff window list.

  • I don't actually understand what the 'address' column is, exactly. I figured it would be the start of the function, but that doesn't seem to be the case, it just seems like a random address within the function?

This is the address that was diff'd. Think of the scenario of a game with DEBUG flag in a file that is read at init. The same symbol may have a ble/bne that skips over a segment of code when DEBUG is false, but ignores the branch when true. The 'address' is the line of code that was different in such executions. In general, we only care about the function start for most cases but its useful if dealing with very long functions near the mainloop.

  • Hitting 'toggle blr' a second time doesn't seem to actually revert the blr injection.

I'm not sure if TryTwo planned to eventually add this. But given that game behavior will commonly break when blr'ing, it makes little sense to allow restoration. Do you have a suggestion on what to name this?
"patch to blr"
"set blr at start of function"

Oh and I just right-clicked on the table header and hit 'go to start of function' (meant to click the first row) and then dolphin crashed.

You likely renamed the symbol for the function in the table. If the symbol name no longer exists in the table a crash occurs. Edit: This is not what you meant, I found your issue. Addressed both the issue you ran into and the one I thought it was.

Thank you for the review

@dreamsyntax dreamsyntax changed the title Qt/Debugger CodeWidget: Record and find specific functions by differencing WIP: Qt/Debugger CodeWidget: Record and find specific functions by differencing Apr 20, 2020
@leoetlino leoetlino marked this pull request as draft April 27, 2020 14:34
@dreamsyntax dreamsyntax force-pushed the debugger-function-differencing branch from 5ffc046 to 89c2a85 Compare May 11, 2020 18:49
@dreamsyntax
Copy link
Contributor Author

dreamsyntax commented May 11, 2020

IMHO, this PR shouldn't be merged as long as these UI/UX issues aren't addressed:

  • Address the size label issue
  • Disable buttons when they shouldn't be used
  • Make the "recording part" clear (ideally, with a start, pause/resume, stop button)
  • Make the "filtering part" clear

Suggestions:

  • The list should be name "Matching results" or something along those lines
  • Add a "Filter our routine(s) where callcount is not" button
  • Add a help button (displaying the info at the start)

Regarding "making the recording/filtering part clear" you can use GroupBox or any other Qt features that are fitting.


On 'adding an element to the results' instead of coloring red to show Blr, the way its currently done is with just one String tabbed out. It would be quite awkward to inject it after a symbol name given some symbol maps have very long names for functions. I'm looking to address this in an alternative way in my second PR with the Pause/Stop/Resume

I have attempted a start/stop/pause, but the way JitProfiler is used makes this a bit more complicated. I'm holding off on adding this behavior for another PR. As is the behavior meets the minimum requirements as a useful tool for modders and mappers, even if simple.

To support clarity of what's happening when Recording, I modified the help text that starts when Diff is first launched.
Recording currently does not support pausing. When you stop recording, the recorded results are erased. You can only get results by clicking 'Code did not get executed' and 'Code has been executed'. The disabled buttons helps reinforce how usage is expected to the user.

On the topic of the 'Help' I considered moving it to another Dialog or calling MessageBox, but ultimately I think it serves best to 'be in your face' when you launch Diff, especially if you have not used Ultimap before. But this is an opinion and if the majority prefer it gone I'm fine with that.

In sum:

  • I renamed Include/Exclude to match the original counterpart
  • Fixed the misc crashes (nullchecks).
  • Rename list to match behavior
  • Disable/Enable buttons dependent on when its intended to be used
  • Removed some unused QElements / cleanup
  • Renamed Toggle Blr to Set Blr
  • List renamed
  • Experimented with pause/stop/resume etc, but complexity makes me want this moved to the next PR

Supporting images:

regular-size
stretchedout
Reset
recording_results_context_menu

@dreamsyntax dreamsyntax marked this pull request as ready for review May 11, 2020 23:39
@dreamsyntax dreamsyntax changed the title WIP: Qt/Debugger CodeWidget: Record and find specific functions by differencing Qt/Debugger CodeWidget: Record and find specific functions by differencing May 11, 2020
@dreamsyntax
Copy link
Contributor Author

@sepalani requesting rebuild for bot and your thoughts if this is ready.
I will rebase to latest commit if necessary (again)

@dreamsyntax dreamsyntax force-pushed the debugger-function-differencing branch 2 times, most recently from 5c68df8 to f4f82a7 Compare May 23, 2020 02:55
@TryTwo
Copy link
Contributor

TryTwo commented May 29, 2020

Hey thanks for working on this!! I haven't had time to do anything and compiling the current dolphin stuff is now giving me troubles. Plus quick repeated pauses/debug updates are crashing the dev builds for me, so I can't tell when or if my code is breaking something.

I realized my function finder here might be doing one thing wrong. It's dropping included functions we no longer want, but instead it should be moving them to the exclude list so they never return. Not certain if that was a possible outcome, but if you hit include multiple times you always want functions that have only run each time include was pressed, not just during some of those times. I've fixed this and rewrote the logic entirely, making it clearer. For extra clarity, I removed some optimizations that were probably unnecessary. It should be given a thorough test to make sure I didn't mess up a case (like start -> exclude -> exclude -> include),

Update comparison logic (expand)
void CodeDiffDialog::OnIncludeExclude(bool include)
{
    bool isize = m_include.size() != 0;
    bool xsize = m_exclude.size() != 0;
    Profiler::ProfileStats prof_stats;
    auto& blockstats = prof_stats.block_stats;
    JitInterface::GetProfileResults(&prof_stats);
    std::vector<Diff> current;
    std::vector<Diff> new_exclude;
    current.reserve(20000);
    new_exclude.reserve(20000);

    // Convert blockstats to smaller struct Diff. Exclude repeat functions via symbols.
    for (auto& iter : blockstats)
    {
      Diff tmp_diff;
      std::string symbol = g_symbolDB.GetDescription(iter.addr);
      if (!std::any_of(current.begin(), current.end(),
                       [&symbol](Diff& v) { return v.symbol == symbol; }))
      {
        tmp_diff.symbol = symbol;
        tmp_diff.addr = iter.addr;
        tmp_diff.hits = iter.run_count;
        current.push_back(tmp_diff);
      }
    }

    // Could add address based difference instead of symbols. Probably need second function.
    // Sort for lower_bound.
    sort(current.begin(), current.end(),
         [](const Diff& v1, const Diff& v2) { return (v1.symbol < v2.symbol); });

    // If both lists are empty, write and skip.
    if (!isize && !xsize)
    {
      if (include)
        m_include = current;
      else
        m_exclude = current;
      return;
    }

    // We only want symbols that appear every time Include is pressed. Therefore, we add symbols
    // that only appear some of the time to the exclude list.
    if (include && isize)
    {
      // Compare include with current.
      for (auto& iter : m_include)
      {
        if (!std::any_of(current.begin(), current.end(),
                         [&](Diff& v) { return v.symbol == iter.symbol; }))
          new_exclude.push_back(iter);
      }

      for (auto& iter : current)
      {
        if (!std::any_of(m_include.begin(), m_include.end(),
                         [&](Diff& v) { return v.symbol == iter.symbol; }))
          new_exclude.push_back(iter);
      }
    }

    // Update exclude list.
    // !xsize = exclude list empty. !include = exclude.
    if (!xsize && !include)
    {
      m_exclude.swap(current);
    }
    else if (!xsize && include && new_exclude.size() != 0)
    {
      m_exclude.swap(new_exclude);
    }
    else if (xsize)
    {
      for (auto& iter : (include ? new_exclude : current))
      {
        auto pos = lower_bound(m_exclude.begin(), m_exclude.end(), iter.symbol, AddrOP);

        if (pos->symbol != iter.symbol)
        {
          m_exclude.insert(pos, iter);
        }
      }
    }

    // If exclude pressed and there is no include list, we're done.
    if (!include && !isize)
      return;

    // Update include list
    if (!isize && include)
      m_include.swap(current);

    // Compare include with exclude.

    // Alt method, probably worse:
    // std::vector<Diff> tmp_swap;
    // for (auto& iter : m_include)
    //{
    //  if (!std::any_of(m_exclude.begin(), m_exclude.end(),
    //                   [&](Diff& v) { return v.symbol == iter.symbol; }))
    //    tmp_swap.push_back(iter);
    //}
    // m_include.swap(tmp_swap);

    for (auto& list : m_exclude)
      m_include.erase(std::remove_if(m_include.begin(), m_include.end(),
                                     [&](Diff const& v) { return v.symbol == list.symbol; }),
                      m_include.end());
}

If it is slow, it might be possible to wrap the whole thing in a thread code:
Core::RunAsCPUThread([&] { code });
but I'm never certain when it'll work right. Maybe after the .reserve(20000) lines to avoid the Jit call?

I also have an instruction tracing PR that I didn't PR because it requires some gekko instruction consistency fixes. I might try to get that up if you want to help with it.

@dreamsyntax
Copy link
Contributor Author

dreamsyntax commented May 30, 2020

Hey thanks for working on this!! I haven't had time to do anything and compiling the current dolphin stuff is now giving me troubles. Plus quick repeated pauses/debug updates are crashing the dev builds for me, so I can't tell when or if my code is breaking something.

I'm not having this issue personally.

I realized my function finder here might be doing one thing wrong. It's dropping included functions we no longer want, but instead it should be moving them to the exclude list so they never return. Not certain if that was a possible outcome, but if you hit include multiple times you always want functions that have only run each time include was pressed, not just during some of those times. I've fixed this and rewrote the logic entirely, making it clearer. For extra clarity, I removed some optimizations that were probably unnecessary. It should be given a thorough test to make sure I didn't mess up a case (like start -> exclude -> exclude -> include),

I've been using the current implementation for over a year in a few projects, and have always been able to identify code I'm looking for with this tool, so I'm skeptical there is an issue.

Even with the above information I still think this PR should get into master, this is a highly used feature for game modders. A follow up PR can get the pause/resume (cheat engine like functionality) + any optimizations etc we can do.

@TryTwo
Copy link
Contributor

TryTwo commented May 30, 2020

Ok, I was going cross-eyed trying to read my original optimized logic. If it's already working as expected, then it's probably best not to change it now.

@dreamsyntax dreamsyntax force-pushed the debugger-function-differencing branch from f4f82a7 to b6c2c1f Compare August 5, 2020 20:57
@dreamsyntax
Copy link
Contributor Author

Updated to latest master

@dreamsyntax dreamsyntax force-pushed the debugger-function-differencing branch from b6c2c1f to 9c1fe18 Compare August 29, 2020 05:18
@dreamsyntax
Copy link
Contributor Author

Update to 12489 (latest as of 2020-08-28).
Fixed merge conflicts with new QtMoc project setup.

@TryTwo once this is merged do you have any interest in making the coloring change and 'pause' feature?

@TryTwo
Copy link
Contributor

TryTwo commented Aug 29, 2020

Yeah I can work on it. What should pause do? Are you holding the current pending recording, but stopping recording, then resuming and continuing to add to the current pending later? Is that actually needed?

/edit What should we do for color? We can strikethrough, bold, use a different color...

@dreamsyntax
Copy link
Contributor Author

dreamsyntax commented Oct 3, 2020

Updated to 12728 (2020-10-03)

Yeah I can work on it. What should pause do? Are you holding the current pending recording, but stopping recording, then resuming and continuing to add to the current pending later? Is that actually needed?

/edit What should we do for color? We can strikethrough, bold, use a different color...

Strike through seems to be a decent compromise. We could keep the red but additionally strike through or italicize.

I don't actually need the behavior, but yes you described pause as sepalani suggested, trying to get closer feature parity with Cheat Engine Ultimap.

Updated the help string to be formatted nicer:

Debugger-Diff-HelpString

I see the automated build is failing, so merging to latest master and double checking I didn't miss the local clang lint.
https://dolphin.ci/#/builders/21/builds/1692
https://dolphin.ci/#/builders/12/builds/1692

Strange. Failing on some moc within the builder.

Requesting a re-run on the new commit I just pushed.

Update 2020-10-07:
Re-run finished successfully.

@dreamsyntax
Copy link
Contributor Author

Rebase over Dolphin-13399 (Dec 31 2020)

@dreamsyntax
Copy link
Contributor Author

Unclear if this ever happens, but if symbol_diff doesn't include an entry for original_includes.symbol,
...

I think I misunderstand the above.
symbol_diff could have elements that do not exist in original_includes. Would that be the scenario you are referring to?
I'll add the check.

@AdmiralCurtiss
Copy link
Contributor

No, other way around. If symbol_diff does not have a value that matches (or compares greater than) original_includes.symbol -- say, an empty symbol_diff, for example.

@dreamsyntax
Copy link
Contributor Author

No, other way around. If symbol_diff does not have a value that matches (or compares greater than) original_includes.symbol -- say, an empty symbol_diff, for example.

I'm thinking that is not possible under the current function but I could be missing something. I don't see a harm in keeping it.

  • Added the NoEditTriggers to the QTableWidget to prevent user editing fields (could lead to crashes, also is pointless to leave in)
  • OnDelete was deleting from the list even if the list is empty. I don't think it's necessary to validate which element is being deleted, so for now doing a empty() call.
  • Exclude " --- " from UpdateItem (invalid address scenario, also covers "No possible functions left. Reset." staying when clicked.

@dreamsyntax dreamsyntax force-pushed the debugger-function-differencing branch from 96daec0 to 4f0e8d4 Compare March 23, 2022 23:00
@dreamsyntax
Copy link
Contributor Author

If everything looks good, let me know and I'll squash back to one commit.
Leaving as is so the recent changes can be reviewed first.

Rebased on latest master.

@TryTwo
Copy link
Contributor

TryTwo commented Mar 23, 2022

Is it just doing total hits?

I think you can just toss Total Hits in the struct. Update it once when m_include is initially made (total hits = hits), then do the += hits update to total hits rather than hits. Maybe also hits = hits for recent hits rather than first hits.

@dreamsyntax
Copy link
Contributor Author

dreamsyntax commented Mar 24, 2022

Maybe I'm missing something, but I'm having trouble setting a default size.
image
^ default

Added the new column for Total Hits vs Hits (recent)

Since we save geometry once a user adjusts it how they like it will persist.
image

@TryTwo
Copy link
Contributor

TryTwo commented Mar 24, 2022

Looks great to me! What size are you having trouble with and what command are you using?

@dreamsyntax
Copy link
Contributor Author

Looks great to me! What size are you having trouble with and what command are you using?

I just meant the default state will be cutting off the Inspected column (image 1 in my comment above yours)
Its not really a big deal, I just thought when the Diff Window first appears it should show all the columns in full

@AdmiralCurtiss
Copy link
Contributor

Looks great to me! What size are you having trouble with and what command are you using?

I just meant the default state will be cutting off the Inspected column (image 1 in my comment above yours) Its not really a big deal, I just thought when the Diff Window first appears it should show all the columns in full

You're not setting a size for the dialog, so it uses the default, which is pretty small. You may want to add a resize(600, 400); or similar after setLayout().

Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp Outdated Show resolved Hide resolved
Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp Outdated Show resolved Hide resolved
Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp Outdated Show resolved Hide resolved
Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp Outdated Show resolved Hide resolved
Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp Outdated Show resolved Hide resolved
Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp Outdated Show resolved Hide resolved
Source/Core/DolphinQt/Debugger/CodeDiffDialog.cpp Outdated Show resolved Hide resolved
@AdmiralCurtiss
Copy link
Contributor

Please also squish the comments once you think you're done with changes.

@dreamsyntax
Copy link
Contributor Author

dreamsyntax commented Mar 25, 2022

Note:
Lint wants QDialog as the first include for the .h for some reason

Here's the commit for the recent changes for easy viewing.
0d65af3

Let me know if the includes split is not how you wanted it.

@dreamsyntax dreamsyntax force-pushed the debugger-function-differencing branch 2 times, most recently from 64e8107 to 9195b94 Compare March 25, 2022 19:51
@AdmiralCurtiss
Copy link
Contributor

AdmiralCurtiss commented Mar 25, 2022

Note: Lint wants QDialog as the first include for the .h for some reason

Because there's no empty lines between. It will sort the files alphabetically, but not across empty lines.

Looks fine to me now otherwise, and even that is kinda whatever.

Add Diff button to CodeWidget
Add Code Diff Tool window for recording and differencing functions. Allows finding specific functions based on when they run.
@dreamsyntax dreamsyntax force-pushed the debugger-function-differencing branch from 9195b94 to 88a1acd Compare March 26, 2022 18:41
@dreamsyntax
Copy link
Contributor Author

Rebased on master. Repushed (mainly because the pipeline was not showing up for some reason)
Here's the final version screenshots
1
2
3
4
5
6
7

Copy link
Contributor

@sepalani sepalani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

I played with it, checked the total hits/hits columns make sense. I didn't experience issues with it while including and excluding entries and got the results I expected.

@AdmiralCurtiss AdmiralCurtiss merged commit 25c173c into dolphin-emu:master Apr 2, 2022
10 checks passed
t895 added a commit to t895/dolphin that referenced this pull request Apr 23, 2022
commit 4c080b8
Merge: e0afcb3 a7111e3
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 23 22:23:31 2022 +0200

    Merge pull request dolphin-emu#10578 from TryTwo/PR_MemoryWidget_Dual_Views

    Debugger MemoryWidget: Add dual views

commit e0afcb3
Merge: cb5e967 b5a7ae5
Author: JosJuice <josjuice@gmail.com>
Date:   Sat Apr 23 22:04:10 2022 +0200

    Merge pull request dolphin-emu#10540 from nyanpasu64/fix-gcadapter-atomics

    Remove atomic usage and fix mutex locking in GCAdapter code

commit cb5e967
Merge: 8b5a61b 235f729
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 23 21:07:35 2022 +0200

    Merge pull request dolphin-emu#10596 from richarm4/patch-3

    Added space in comment

commit 235f729
Author: Matthew Richards-Wells <91291346+richarm4@users.noreply.github.com>
Date:   Wed Apr 20 12:49:17 2022 -0700

    GameSettings: Add missing space in comment.

commit 8b5a61b
Merge: 19c71db 12cd81b
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 23 20:32:47 2022 +0200

    Merge pull request dolphin-emu#10599 from shuffle2/libusb

    Libusb fixups

commit 19c71db
Merge: 69ca38d f5f5262
Author: Mai M <mathew1800@gmail.com>
Date:   Sat Apr 23 06:10:20 2022 -0400

    Merge pull request dolphin-emu#10597 from Simonx22/fix-ingame-menu-design

    Android: Fix in game menu rippleColor and colorEdgeEffect

commit a7111e3
Author: TryTwo <taolas@gmail.com>
Date:   Sun Apr 17 00:47:05 2022 -0700

    Dual View any size.

commit 69ca38d
Merge: 56bb965 6eb9111
Author: JosJuice <josjuice@gmail.com>
Date:   Sat Apr 23 10:25:48 2022 +0200

    Merge pull request dolphin-emu#10600 from t895/modern-card

    Android: Modernize game card

commit 56bb965
Merge: 2e01dc0 7840798
Author: JMC47 <JMC4789@gmail.com>
Date:   Fri Apr 22 23:24:22 2022 -0400

    Merge pull request dolphin-emu#10584 from Pokechu22/emboss-single-normal-v2

    VideoCommon: Handle emboss texgen with only a single normal

commit 6eb9111
Author: Charles Lombardo <clombardo169@gmail.com>
Date:   Fri Apr 22 12:56:58 2022 -0400

    Modernize game card

    +Remove background on card
    +Increase max # of lines for game title
    +Root layout is now a linear layout with the card view rounding the corners on the box art

commit 7840798
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Tue Apr 19 17:46:20 2022 -0700

    VideoCommon: Add comment explaining why only the first normal gets normalized

    Co-authored-by: Scott Mansell <phiren@gmail.com>

commit 2a5c77f
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Wed Apr 13 22:03:34 2022 -0700

    VideoCommon: Handle emboss texgen with only a single normal

    Fixes a large number of effects in Rogue Squadron 2 and 3.

commit 39b2854
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Thu Apr 14 12:01:57 2022 -0700

    VertexLoader: Convert count register to remaining register

    This more accurately represents what's going on, and also ends at 0 instead of 1, making some indexing operations easier.  This also changes it so that position_matrix_index_cache actually starts from index 0 instead of index 1.

commit 97d0ff5
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Wed Apr 13 16:12:53 2022 -0700

    Convert vertex loader position cache to std::array

commit f722bdf
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Wed Apr 13 20:57:38 2022 -0700

    VertexLoaderX64: Refactor so that zfreeze is only in one place

    (Specifically, the copy for VertexLoaderManager::position_cache.  The position matrix index happens elsewhere, and the float path still has special logic to copy to scratch3.)

commit 6f1350a
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Wed Apr 13 17:03:53 2022 -0700

    VertexLoaderARM64: Fix z-freeze position matrix index

    Before, it would always write to index 0 (which is unused).  Now it writes to the correct index.

commit 04fdadd
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Fri Apr 22 12:50:44 2022 -0700

    VideoCommon: Rename norm0/norm1/norm2 to normal/tangent/binormal

commit 88134a6
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Tue Dec 28 13:01:57 2021 -0800

    VertexShaderGen: Simplify normal calculation

    This is a readability change; there should be no functional or performance differences.

commit 12cd81b
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Fri Apr 22 08:58:38 2022 -0700

    GCAdapter: don't call libusb_detach_kernel_driver on apple

commit 5cd3cf9
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Fri Apr 22 08:48:28 2022 -0700

    GCAdapter: fix retval check of libusb_detach_kernel_driver

commit 978c908
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Fri Apr 22 07:37:56 2022 -0700

    GCAdapter: move libusb context teardown last

commit 1c9dfb7
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Fri Apr 22 07:36:56 2022 -0700

    GCAdapter: some macro cleanup

commit f52d948
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Fri Apr 22 07:12:09 2022 -0700

    GCAdapter: set read/write thread names

commit 0a07c76
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Fri Apr 22 07:07:20 2022 -0700

    update libusb submodule to latest

commit af930bc
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Fri Apr 22 07:05:41 2022 -0700

    make libusb submodule shallow

commit 2e01dc0
Merge: 3172199 ef760ee
Author: Mai M <mathew1800@gmail.com>
Date:   Thu Apr 21 17:32:13 2022 -0400

    Merge pull request dolphin-emu#10592 from AdmiralCurtiss/pointerwrap-protections

    Common/PointerWrap: Prevent reads/writes past the end of the buffer.

commit 3172199
Merge: 902e45b 70507c2
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Thu Apr 21 18:50:08 2022 +0200

    Merge pull request dolphin-emu#10577 from shuffle2/libusb

    update libusb to v1.0.26

commit f5f5262
Author: Simonx22 <simon@oatmealdome.me>
Date:   Wed Apr 20 16:22:06 2022 -0400

    Android: Fix in game menu rippleColor and colorEdgeEffect

commit 902e45b
Merge: 3ed9d5a c925f10
Author: Mai M <mathew1800@gmail.com>
Date:   Wed Apr 20 06:22:17 2022 -0400

    Merge pull request dolphin-emu#10595 from richarm4/patch-1

    Minor text capitalization

commit c925f10
Author: Matthew Richards-Wells <91291346+richarm4@users.noreply.github.com>
Date:   Wed Apr 20 02:07:31 2022 -0700

    Minor text capitalization

    Changed "$Swords/Shields/boots/tunics" to "$Swords/Shields/Boots/Tunics" for consistent capitalization in the line.

commit ef760ee
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Mon Apr 18 04:13:25 2022 +0200

    Common/PointerWrap: Prevent reads/writes past the end of the buffer.

commit 70507c2
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Mon Apr 11 06:04:20 2022 -0700

    update to libusb v1.0.26
    moves libusb from vendored to submodule

commit 853cf4f
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Mon Apr 18 03:41:14 2022 +0200

    Common/PointerWrap: Hide internals.

commit 3ed9d5a
Merge: 0ec3f3a 342af65
Author: Mai M <mathew1800@gmail.com>
Date:   Sun Apr 17 05:43:06 2022 -0400

    Merge pull request dolphin-emu#10589 from JosJuice/android-more-init-checks

    Android: Use AfterDirectoryInitializationRunner more comprehensively

commit cc22f1a
Author: TryTwo <taolas@gmail.com>
Date:   Wed Apr 6 22:50:05 2022 -0700

    MemoryWidget add dual views for two separate column types. Force first column to be Hex32.

commit 342af65
Author: JosJuice <josjuice@gmail.com>
Date:   Sat Apr 16 15:04:29 2022 +0200

    Android: Use AfterDirectoryInitializationRunner more comprehensively

    Should fix the crash reported in https://bugs.dolphin-emu.org/issues/12885

commit 0ec3f3a
Merge: 0a4805c a2aecc3
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 16 14:35:29 2022 +0200

    Merge pull request dolphin-emu#10563 from TryTwo/PR_MemoryWidget_Display_Types

    Debugger MemoryWidget: More display types, use combo box for options

commit a2aecc3
Author: TryTwo <taolas@gmail.com>
Date:   Wed Apr 6 02:36:09 2022 -0700

    Debugger MemoryWidget: More display types, use combo box for display options. Add alignment and riw length options.

commit 0a4805c
Merge: c5c4169 5c687fc
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 16 03:42:55 2022 +0200

    Merge pull request dolphin-emu#10582 from AdmiralCurtiss/fmt-float

    Common/StringUtil: Use simpler formatting for floats and doubles.

commit c5c4169
Merge: 36678dc 59f299d
Author: Scott Mansell <phiren@gmail.com>
Date:   Fri Apr 15 11:12:49 2022 +1200

    Merge pull request dolphin-emu#10255 from Pokechu22/sw-zfreeze

    Software: Fix zfreeze with CullMode::All

commit 36678dc
Merge: 3fdc6cb 9994363
Author: Scott Mansell <phiren@gmail.com>
Date:   Fri Apr 15 10:43:59 2022 +1200

    Merge pull request dolphin-emu#10585 from Pokechu22/apple-m1-unit-tests-f-string

    Apple M1: Fix "Building and running unit tests" message

commit 9994363
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Thu Apr 14 15:34:52 2022 -0700

    Apple M1: Fix "Building and running unit tests" message

    For {arch} to be converted, the string needs to be an f-string.

commit 3fdc6cb
Merge: edbb0f4 c95c43b
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Wed Apr 13 12:18:41 2022 +0200

    Merge pull request dolphin-emu#10486 from ttttcrngyblflpp/negative-axis-scaling

    Make pos/neg analog axes symmetrical

commit 5c687fc
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Tue Apr 12 23:35:19 2022 +0200

    Common/StringUtil: Use simpler formatting for floats and doubles.

commit edbb0f4
Merge: 62cc7cc ef8e461
Author: JosJuice <josjuice@gmail.com>
Date:   Tue Apr 12 21:40:31 2022 +0200

    Merge pull request dolphin-emu#10581 from shuffle2/win-pch

    windows: buildfix if pch not used

commit ef8e461
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Tue Apr 12 12:27:28 2022 -0700

    windows: buildfix if pch not used

commit 62cc7cc
Merge: 2f90a2c 8466d43
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Tue Apr 12 10:35:56 2022 +0200

    Merge pull request dolphin-emu#10579 from shuffle2/mbedtls-build

    cmake: fix build of mbedtls from Externals

commit 8466d43
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Mon Apr 11 03:55:47 2022 -0700

    cmake: fix build of mbedtls from Externals

commit 2f90a2c
Merge: 1f4df1d c5b0b92
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Mon Apr 11 04:09:02 2022 +0200

    Merge pull request dolphin-emu#10574 from EternityShack/master

    MemoryWidget: Load Files to Memory

commit c5b0b92
Author: EternityShack <powmert323@gmail.com>
Date:   Sun Apr 10 21:02:33 2022 -0500

    MemoryWidget: Load Files to Memory

commit 1f4df1d
Merge: 41a831d abffa93
Author: Pokechu22 <pokechu022@gmail.com>
Date:   Sun Apr 10 12:51:17 2022 -0700

    Merge pull request dolphin-emu#10576 from JosJuice/moltenvk-curlies

    MoltenVK: Fix pixel shader typo

commit abffa93
Author: JosJuice <josjuice@gmail.com>
Date:   Sun Apr 10 20:51:20 2022 +0200

    MoltenVK: Fix pixel shader typo

commit 41a831d
Author: JosJuice <josjuice@gmail.com>
Date:   Sun Apr 10 19:44:17 2022 +0200

    Translation resources sync with Transifex

commit e932a1b
Merge: d7709d4 3382408
Author: Mai M <mathew1800@gmail.com>
Date:   Sat Apr 9 14:19:39 2022 -0400

    Merge pull request dolphin-emu#10571 from AdmiralCurtiss/ffmpeg-custom-pix-fmt

    VideoCommon/FrameDump: Allow user to specify a pixel format.

commit 59f299d
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Mon Nov 29 17:51:02 2021 -0800

    Software: Fix zfreeze with CullMode::All

commit 164e0f7
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Tue Nov 30 22:33:31 2021 -0800

    Software: Store offset in Slope

    This is needed since we need a separate offset for zfreeze to work correctly.  It also makes the code a bit less jank.

commit 3a742e9
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Tue Nov 30 17:51:43 2021 -0800

    Software: Remove config to disable ZComploc and ZFreeze

    These aren't particularly useful, and make the code a bit more confusing.  If for some reason someone wants to test what happens when these functions are disabled, it's easier to just edit the code that implements them.  They aren't exposed in the UI, so one would need to restart Dolphin to do it anyways.

commit d7709d4
Merge: 91192ef 4e9a314
Author: Pokechu22 <pokechu022@gmail.com>
Date:   Fri Apr 8 19:17:35 2022 -0700

    Merge pull request dolphin-emu#10398 from Pokechu22/viewport-rounding

    Round viewport coordinates when vertex rounding is enabled

commit 4e9a314
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Wed Jan 26 12:09:00 2022 -0800

    Round viewport coordinates when vertex rounding is enabled

    This should fix https://bugs.dolphin-emu.org/issues/9105

commit dbb857b
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Wed Jan 26 19:11:11 2022 -0800

    VertexShaderManager: Use g_ActiveConfig.UseVertexRounding()

commit f6ab317
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Wed Jan 26 15:48:12 2022 -0800

    Fix typo (GFX_HACK_VERTEX_ROUDING -> GFX_HACK_VERTEX_ROUNDING)

commit 91192ef
Merge: f92b7f4 5516d46
Author: Mai M <mathew1800@gmail.com>
Date:   Fri Apr 8 21:24:59 2022 -0400

    Merge pull request dolphin-emu#10573 from AdmiralCurtiss/pr10472

    DolphinQt/HacksWidget: Re-enable texture accuracy slider if it was disabled because of a custom value.

commit 5516d46
Author: 3t13nn3 <etiennepenault1997@gmail.com>
Date:   Wed Feb 23 16:59:21 2022 +0100

    DolphinQt/HacksWidget: Re-enable texture accuracy slider if it was disabled because of a custom value.

    Fixes https://bugs.dolphin-emu.org/issues/12771

commit f92b7f4
Merge: e3106e8 2e1f890
Author: Mai M <mathew1800@gmail.com>
Date:   Fri Apr 8 20:53:52 2022 -0400

    Merge pull request dolphin-emu#10508 from JosJuice/android-pointer-down

    Android: Only use getActionIndex for ACTION_POINTER_DOWN/ACTION_POINTER_UP

commit e3106e8
Merge: 417531f da12ff0
Author: Mai M <mathew1800@gmail.com>
Date:   Fri Apr 8 20:53:25 2022 -0400

    Merge pull request dolphin-emu#10503 from JosJuice/android-directoryinitialization-thread

    Android: Actually use a thread for DirectoryInitialization

commit 417531f
Merge: 004e834 d8a5a88
Author: Mai M <mathew1800@gmail.com>
Date:   Fri Apr 8 20:52:25 2022 -0400

    Merge pull request dolphin-emu#10545 from OatmealDome/mbedtls-2.28.0

    Externals: Update mbedtls to 2.28.0

commit 004e834
Merge: d4e4b56 db4d81b
Author: Mai M <mathew1800@gmail.com>
Date:   Fri Apr 8 20:51:36 2022 -0400

    Merge pull request dolphin-emu#10558 from shuffle2/lang

    windows: simplify handling of gettext

commit d4e4b56
Merge: dcf27b9 4120870
Author: Mai M <mathew1800@gmail.com>
Date:   Fri Apr 8 20:50:12 2022 -0400

    Merge pull request dolphin-emu#10562 from JosJuice/android-double-tap-get

    Android: Fix displaying the current value of double tap setting

commit dcf27b9
Merge: 120208a df214af
Author: Mai M <mathew1800@gmail.com>
Date:   Fri Apr 8 20:47:57 2022 -0400

    Merge pull request dolphin-emu#10572 from AdmiralCurtiss/ffmpeg-log-va-list

    VideoCommon/FrameDump: Fix log messages with arguments.

commit df214af
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 9 01:42:02 2022 +0200

    VideoCommon/FrameDump: Fix log messages with arguments.

commit 36134ab
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 9 01:41:40 2022 +0200

    Common/LogManager: Add generic printf-style log function that takes a va_list instead of va_args.

commit 3382408
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 9 00:45:49 2022 +0200

    VideoCommon/FrameDump: Allow user to specify a pixel format.

commit 120208a
Merge: 23508ca fbc9bf2
Author: Pokechu22 <pokechu022@gmail.com>
Date:   Fri Apr 8 14:35:03 2022 -0700

    Merge pull request dolphin-emu#10543 from Minty-Meeo/initmmio-combine

    Combine InitMMIO and InitMMIOWii

commit 23508ca
Merge: 0c7f992 53cf78d
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Fri Apr 8 05:28:22 2022 +0200

    Merge pull request dolphin-emu#7675 from TryTwo/Debugger_Code_Features

    Debugger: Get target memory in load/store instructions

commit 0c7f992
Merge: e021940 5fda8ee
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Fri Apr 8 03:37:08 2022 +0200

    Merge pull request dolphin-emu#10565 from AdmiralCurtiss/wgi-win7

    Core/WGInput: Dynamically load winrt function addresses.

commit 5fda8ee
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Thu Apr 7 06:34:39 2022 +0200

    Core/WGInput: Dynamically load winrt function addresses.

commit e021940
Merge: 7a33659 af316f7
Author: JMC47 <JMC4789@gmail.com>
Date:   Thu Apr 7 17:01:56 2022 -0400

    Merge pull request dolphin-emu#10412 from Pokechu22/sw-efb-peek-alpha

    Software: Implement pixel engine alpha read mode

commit 7a33659
Merge: 6a326a9 bbb64ff
Author: JosJuice <josjuice@gmail.com>
Date:   Thu Apr 7 21:00:24 2022 +0200

    Merge pull request dolphin-emu#10485 from JosJuice/real-ocol0-logic-ops

    Shadergen: Use real_ocol0 workaround for shader logic ops

commit 6a326a9
Merge: 17b17e3 1ad7aac
Author: JosJuice <josjuice@gmail.com>
Date:   Thu Apr 7 20:59:17 2022 +0200

    Merge pull request dolphin-emu#10544 from AdmiralCurtiss/default-font-size-workaround

    Qt: Set font size for default debug font.

commit 17b17e3
Merge: a8654e2 bed9175
Author: JosJuice <josjuice@gmail.com>
Date:   Thu Apr 7 20:58:22 2022 +0200

    Merge pull request dolphin-emu#10552 from Gamer64ytb/display-cutout

    Android: Implement expand display cutout option.

commit a8654e2
Merge: e3ca3e7 57733dd
Author: JosJuice <josjuice@gmail.com>
Date:   Thu Apr 7 20:58:09 2022 +0200

    Merge pull request dolphin-emu#10560 from JosJuice/android-wii-disc-update

    Android: Implement installing system update from disc image

commit e3ca3e7
Merge: 38bf282 6e83e36
Author: JosJuice <josjuice@gmail.com>
Date:   Thu Apr 7 20:57:55 2022 +0200

    Merge pull request dolphin-emu#10568 from Pokechu22/msbuild-WGInput

    msbuild: Move WGInput to DolphinLib.props

commit 6e83e36
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Thu Apr 7 11:37:12 2022 -0700

    msbuild: Move WGInput to DolphinLib.props

    It was accidentally put into the main DolphinLib.vcxproj in dolphin-emu#7614.

commit 38bf282
Merge: 368342c 5b658e7
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Thu Apr 7 14:41:01 2022 +0200

    Merge pull request dolphin-emu#10567 from sepalani/fix-float-preview

    MemoryWidget: Fix preview of zero as float/double

commit 5b658e7
Author: Sepalani <sepalani@hotmail.fr>
Date:   Thu Apr 7 11:55:23 2022 +0400

    MemoryWidget: Fix preview of zero as float/double

commit 368342c
Merge: 242cd4c ed96b8e
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Thu Apr 7 02:13:21 2022 +0200

    Merge pull request dolphin-emu#10528 from TryTwo/PR_Debugger_Memory_Input_Types

    Debugger: MemoryWidget: add float and integer input types. Add input preview.

commit ed96b8e
Author: TryTwo <taolas@gmail.com>
Date:   Wed Apr 6 16:20:55 2022 -0700

    Debugger MemoryWidget: add float and integer inputs. Add input preview. Change input logic. Use combobox for options.

commit 242cd4c
Merge: 085c86a c8d953d
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Wed Apr 6 14:38:25 2022 +0200

    Merge pull request dolphin-emu#10555 from Dentomologist/fix_manual_update_check_when_autoupdate_disabled

    Updater: Fix manual update check when autoupdate is disabled

commit 4120870
Author: JosJuice <josjuice@gmail.com>
Date:   Tue Apr 5 19:08:58 2022 +0200

    Android: Remove nonsense code from double tap setting dialog

    The currentValue variable doesn't use InputOverlay.OVERLAY_
    constants, it uses NativeLibrary.ButtonType constants.

    Sigh, why do enums have to be so bad on Android that Google
    recommends against using them :(

    Anyway, simply not doing anything is a reasonable option here.
    What happens then is that if the currently selected button is
    invalid for the current controller, none of the available options
    in the dialog will be pre-selected.

commit cdff426
Author: JosJuice <josjuice@gmail.com>
Date:   Tue Apr 5 18:58:29 2022 +0200

    Android: Fix displaying the current value of double tap setting

commit 085c86a
Merge: a4445fa 566dfc1
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Tue Apr 5 01:14:43 2022 +0200

    Merge pull request dolphin-emu#7614 from jordan-woyak/windows-gaming-input

    InputCommon: Add Windows.Gaming.Input to ControllerInterface.

commit 566dfc1
Author: Jordan Woyak <jordan.woyak@gmail.com>
Date:   Wed Mar 2 15:40:20 2022 -0600

    ControllerInterface: Update sort priorities.

commit 076a262
Author: Jordan Woyak <jordan.woyak@gmail.com>
Date:   Tue Oct 20 11:30:15 2020 -0500

    InputCommon: Add Windows.Gaming.Input to ControllerInterface.

commit bed9175
Author: Gamer64ytb <76565986+Gamer64ytb@users.noreply.github.com>
Date:   Sat Apr 2 17:58:18 2022 +0200

    Android: Implement expand display cutout option.

    Some ROMs don't have fullscreen feature, for example Pixel Experience, so have a option for that is better. Also you don't need put the app on fullscreen anymore with that.

commit 57733dd
Author: JosJuice <josjuice@gmail.com>
Date:   Sun Apr 3 11:04:40 2022 +0200

    Android: Implement installing system update from disc image

commit d8a5a88
Author: OatmealDome <julian@oatmealdome.me>
Date:   Sat Apr 2 19:30:22 2022 -0400

    Externals: Update mbedtls to 2.28.0

commit a4445fa
Merge: 113fdc9 818f6c8
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sun Apr 3 01:22:39 2022 +0200

    Merge pull request dolphin-emu#10557 from shuffle2/msvc-secure-scl

    msbuild: don't explicitly set _SECURE_SCL

commit 818f6c8
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Sat Apr 2 15:22:27 2022 -0700

    msbuild: don't explicitly set _SECURE_SCL

commit db4d81b
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Sat Apr 2 15:22:02 2022 -0700

    windows: simplify handling of gettext
    fixes binplace on first build

commit c8d953d
Author: Dentomologist <dentomologist@gmail.com>
Date:   Sat Apr 2 11:52:51 2022 -0700

    Updater: Fix manual update check when autoupdate is disabled

commit 113fdc9
Merge: c028f96 1942629
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 2 15:17:15 2022 +0200

    Merge pull request dolphin-emu#10534 from AdmiralCurtiss/more-cheat-search-qol

    DolphinQt: More Cheat Search QoL

commit c028f96
Merge: 25c173c e6ed77b
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 2 14:57:39 2022 +0200

    Merge pull request dolphin-emu#10550 from shuffle2/cpp-conform

    msvc: enable conformant __cplusplus macro

commit e6ed77b
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Sat Apr 2 02:07:41 2022 -0700

    msvc: enable conformant __cplusplus macro

commit 25c173c
Merge: 4957b2e 88a1acd
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Sat Apr 2 05:42:33 2022 +0200

    Merge pull request dolphin-emu#8732 from dreamsyntax/debugger-function-differencing

    Qt/Debugger CodeWidget: Record and find specific functions by differencing

commit 1942629
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Fri Mar 25 09:48:16 2022 +0100

    DolphinQt/CheatSearchWidget: Drop whitespace when parsing integers and floats from the user.

commit 7f2fed0
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Fri Mar 25 09:40:24 2022 +0100

    DolphinQt/CheatsManager: Don't leak closed cheat search tabs.

commit 48c4ebe
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Fri Mar 25 09:33:17 2022 +0100

    DolphinQt/CheatSearchWidget: Remember state of Hex checkboxes across sessions.

commit 1ad7aac
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Thu Mar 31 05:28:39 2022 +0200

    Qt: Set font size for default debug font.

commit 4957b2e
Merge: cc3f820 4fad2c2
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Thu Mar 31 05:24:00 2022 +0200

    Merge pull request dolphin-emu#10530 from shuffle2/win-ffmpeg

    windows: move ffmpeg bins to submodule

commit cc3f820
Merge: 0204b11 8f85e38
Author: Admiral H. Curtiss <pikachu025@gmail.com>
Date:   Wed Mar 30 22:53:05 2022 +0200

    Merge pull request dolphin-emu#10542 from TryTwo/PR_MemoryViewWidget_Spacing

    Debugger MemoryViewWidget: fixed, tighter spacing

commit 4fad2c2
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Wed Mar 23 12:26:22 2022 -0700

    framedump: enable compat with utvideo codec

commit decaea8
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Thu Mar 24 04:47:43 2022 -0700

    FrameDump: improve debug logging

commit 09432ef
Author: Shawn Hoffman <godisgovernment@gmail.com>
Date:   Wed Mar 23 12:24:35 2022 -0700

    windows: move ffmpeg bins to submodule
    udpate ffmpeg to b1cbeabf5e4b3234e895a58bafa371bfb792baf0
    enable ffmpeg on arm64

commit af316f7
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Sat Jan 29 13:53:54 2022 -0800

    Software: Implement pixel engine alpha read mode

commit 8882eb0
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Sat Jan 29 13:28:17 2022 -0800

    PixelEngine: Convert to BitField and enum class

commit 45b8ebe
Author: Pokechu22 <Pokechu022@gmail.com>
Date:   Sat Jan 29 13:02:05 2022 -0800

    PixelEngine: Remove old comment

    This comment was added in 76d24f2 (the link was updated in 5799824, but both are dead now).  An archived version is at https://web.archive.org/web/20090830050441/http://developer.nvidia.com/object/General_FAQ.html#t6 but it's about the number of available texture units, which doesn't seem relevant to PixelEngine.

commit 8f85e38
Author: TryTwo <taolas@gmail.com>
Date:   Mon Mar 28 16:08:31 2022 -0700

    Debugger MemoryViewWidget: fixed, tighter spacing

commit fbc9bf2
Author: Minty-Meeo <45425365+Minty-Meeo@users.noreply.github.com>
Date:   Tue Mar 29 01:16:41 2022 -0500

    Combine InitMMIO and InitMMIOWii

commit 0204b11
Merge: c08a23b 8a0c681
Author: JosJuice <josjuice@gmail.com>
Date:   Mon Mar 28 17:55:48 2022 +0200

    Merge pull request dolphin-emu#10541 from t895/list-fix

    Android: Fix games list padding

commit 8a0c681
Author: Charles Lombardo <clombardo169@gmail.com>
Date:   Mon Mar 28 09:42:43 2022 -0400

    Android: Fix games list padding

    Use clipToPadding="false" to prevent top white bar when scrolling

commit b5a7ae5
Author: nyanpasu64 <nyanpasu64@tuta.io>
Date:   Sun Mar 27 22:37:43 2022 -0700

    Fix locking the wrong mutex in GCAdapter_Android.cpp ResetRumble()

    I am not confident there are no race conditions between s_write_mutex,
    s_controller_write_payload_size, and s_controller_write_payload. But
    this code should be safer than before.

commit 7616027
Author: nyanpasu64 <nyanpasu64@tuta.io>
Date:   Sun Mar 27 22:27:44 2022 -0700

    Remove unnecessary atomic usage in GCAdapter_Android.cpp

    s_controller_write_payload_size needs to remain an atomic because Read()
    loads and stores without holding a mutex, Output() stores while holding
    s_write_mutex, and ResetRumble() stores while holding s_read_mutex! I'm
    pretty sure this code is wrong, specifically ResetRumble().

commit 871b01a
Author: nyanpasu64 <nyanpasu64@tuta.io>
Date:   Sun Mar 27 22:25:40 2022 -0700

    Remove unnecessary atomic usage in GCAdapter.cpp

    You can safely read or write non-atomic integers on multiple threads,
    as long as every thread reading or writing it holds the same mutex
    while doing so (here, s_mutex).

    Removing the atomic accesses makes the code faster, but the actual
    performance difference is probably negligible.

commit 88a1acd
Author: dreamsyntax <dreamsyntax@gmail.com>
Date:   Wed Apr 8 18:12:23 2020 -0700

    implement CodeDiffTool Feature
    Add Diff button to CodeWidget
    Add Code Diff Tool window for recording and differencing functions. Allows finding specific functions based on when they run.

commit 53cf78d
Author: TryTwo <taolas@gmail.com>
Date:   Thu Mar 17 12:53:38 2022 -0700

    Gekko constistancy changes. Add context item to codeview to show or copy a load/store target memory address from instructions at or near PC when paused.

commit 2e1f890
Author: JosJuice <josjuice@gmail.com>
Date:   Sat Mar 12 21:05:59 2022 +0100

    Android: Only use getActionIndex for ACTION_POINTER_DOWN/ACTION_POINTER_UP

    According to the documentation, getActionIndex should only be
    used with ACTION_POINTER_DOWN and ACTION_POINTER_UP. We've had a
    few crashes reported in the Play Console regarding invalid pointer
    indices for getY, and I'm hoping this will help with that.

commit da12ff0
Author: JosJuice <josjuice@gmail.com>
Date:   Tue Mar 8 22:29:07 2022 +0100

    Android: Actually use a thread for DirectoryInitialization

    `((Runnable) () -> init(context)).run()` is just a more complicated way
    of writing `init(context)`, and doesn't on its own launch a thread.

commit bbb64ff
Author: JosJuice <josjuice@gmail.com>
Date:   Sun Feb 27 16:48:28 2022 +0100

    Shadergen: Use real_ocol0 workaround for shader logic ops

    Previously we were using this workaround when using framebuffer fetch
    to emulate dual source blending, but it seems like we also need to use
    it when using framebuffer fetch to emulate logic ops, otherwise some
    Adreno devices get a crash when compiling OpenGL ES ubershaders.

    Using the workaround in specialized shaders doesn't seem to be
    necessary, but I've made the same change there for consistency.

    This gets us closer to fixing https://bugs.dolphin-emu.org/issues/12791
    but doesn't actually fix it.

commit c95c43b
Author: Tony Gong <gr8tony@hotmail.com>
Date:   Sun Feb 27 09:58:21 2022 -0800

    Make pos/neg analog axes symmetrical

    Currently, the axes for the main and C sticks range from 0-255, with
    128 being the mid-point; but this isn't symmetrical: the negative axis
    has 128 values not including 0, while the positive axis has 127 values
    not including 0.

    Normalizing so that the range is 1-255 makes the positive and negative
    axes symmetrical. The inability to yield 0 shouldn't be an issue as a
    real GC controller cannot yield it anyway.
@JosJuice
Copy link
Member

Sorry for catching this late, but when trying to translate Dolphin's strings I came across this sentence that was added by this PR:

"Includes (Code has been executed) should have short recordings focusing on what you want."

What does this mean? I can't make sense of the sentence structure.

@TryTwo
Copy link
Contributor

TryTwo commented Nov 27, 2022

The "Code has been executed" button should be used on the shortest possible interval, to avoid catching irrelevant functions.

i.e. Record -> trigger action quickly -> press code has been executed quickly.

"Code has not been executed" should follow the opposite rule, being used over long intervals where the desired action wasn't triggered, to catch and eliminate everything you don't want.

@JosJuice
Copy link
Member

Okay, so "include" is a noun, and "Code has been executed" is a clarification of what "include" refers to?

@TryTwo
Copy link
Contributor

TryTwo commented Nov 28, 2022

"Includes" is a noun that refers to items for/on the include list (list of possible functions you are looking for), which is updated with the "code has been executed button". So yeah, a clarification. I think the line could be rewritten a bit to be more clear maybe.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
7 participants