{"action":"created","issue":{"url":"https://api.github.com/repos/RetroAchievements/RAIntegration/issues/175","repository_url":"https://api.github.com/repos/RetroAchievements/RAIntegration","labels_url":"https://api.github.com/repos/RetroAchievements/RAIntegration/issues/175/labels{/name}","comments_url":"https://api.github.com/repos/RetroAchievements/RAIntegration/issues/175/comments","events_url":"https://api.github.com/repos/RetroAchievements/RAIntegration/issues/175/events","html_url":"https://github.com/RetroAchievements/RAIntegration/issues/175","id":379501080,"node_id":"MDU6SXNzdWUzNzk1MDEwODA=","number":175,"title":"For Memory Inspector: New search value type: First Filtered Value","user":{"login":"kdecks","id":32706333,"node_id":"MDQ6VXNlcjMyNzA2MzMz","avatar_url":"https://avatars0.githubusercontent.com/u/32706333?v=4","gravatar_id":"","url":"https://api.github.com/users/kdecks","html_url":"https://github.com/kdecks","followers_url":"https://api.github.com/users/kdecks/followers","following_url":"https://api.github.com/users/kdecks/following{/other_user}","gists_url":"https://api.github.com/users/kdecks/gists{/gist_id}","starred_url":"https://api.github.com/users/kdecks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kdecks/subscriptions","organizations_url":"https://api.github.com/users/kdecks/orgs","repos_url":"https://api.github.com/users/kdecks/repos","events_url":"https://api.github.com/users/kdecks/events{/privacy}","received_events_url":"https://api.github.com/users/kdecks/received_events","type":"User","site_admin":false},"labels":[{"id":902347464,"node_id":"MDU6TGFiZWw5MDIzNDc0NjQ=","url":"https://api.github.com/repos/RetroAchievements/RAIntegration/labels/Memory%20Inspector","name":"Memory Inspector","color":"e866ad","default":false},{"id":902323219,"node_id":"MDU6TGFiZWw5MDIzMjMyMTk=","url":"https://api.github.com/repos/RetroAchievements/RAIntegration/labels/enhancement","name":"enhancement","color":"a2eeef","default":true}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-11-11T08:23:43Z","updated_at":"2018-11-11T09:00:44Z","closed_at":null,"author_association":"COLLABORATOR","body":"Concept suggested by **Rimsala** in the Dev channel in Discord:\r\n\r\nAs a developer when searching for address/values often I will want to continually compare against my first search, instead of the other options **Last Known Value**, ``LKV``, **Given Value** ``GV``. The solution is proposed with a new value comparison type, **First Filtered Value** ``FFV`` (this name is unimportant). There is something similar found in Cheat Engine.\r\n\r\n### Use Case\r\nI'm in room ID 1 and I want to know all the address/values that != the values of room ID 1 for room ID 2,3,4,5. I would need to I would need to make a savestates for ID 1 through 5.\r\n\r\nWithout ``FFV``\r\n1. Load 1; New Test = ``LKV``\r\n2. Load 2; != ``LKV``\r\n3. Load 1; != ``LKV``\r\n4. Load 3; != ``LKV``\r\n5. Load 1; != ``LKV``\r\n6. Load 4; != ``LKV``\r\n7. Load 1; != ``LKV``\r\n8. Load 5; != ``LKV``\r\n\r\nWith ``FFV``\r\n1. Load 1; New Test = ``FFV`` or ``LKV`` (this first search would behave the same as if ``LKV``)\r\n2. Load 2; != ``FFV``\r\n3. Load 3; != ``FFV``\r\n4. Load 4; != ``FFV``\r\n5. Load 5; != ``FFV``\r\n\r\nWith ``FFV`` takes fewer steps and significantly decreases the chance of error.\r\n\r\n-----\r\n\r\nIt seems that to implement this would take remembering the first filtered value, whether by ``FFV``, ``LKV`` or ``GV``. This may be already somewhat available given filter history.\r\n\r\n----\r\n\r\n### Mockup of possible appearance\r\n\r\n![image](https://user-images.githubusercontent.com/32706333/48310334-fffe5a00-e54a-11e8-91d0-e3d3344ea3c2.png)\r\n\r\n### Current appearance for comparison\r\n\r\n![image](https://user-images.githubusercontent.com/32706333/48310343-202e1900-e54b-11e8-80a0-3d08c9353972.png)\r\n"},"comment":{"url":"https://api.github.com/repos/RetroAchievements/RAIntegration/issues/comments/437653866","html_url":"https://github.com/RetroAchievements/RAIntegration/issues/175#issuecomment-437653866","issue_url":"https://api.github.com/repos/RetroAchievements/RAIntegration/issues/175","id":437653866,"node_id":"MDEyOklzc3VlQ29tbWVudDQzNzY1Mzg2Ng==","user":{"login":"kdecks","id":32706333,"node_id":"MDQ6VXNlcjMyNzA2MzMz","avatar_url":"https://avatars0.githubusercontent.com/u/32706333?v=4","gravatar_id":"","url":"https://api.github.com/users/kdecks","html_url":"https://github.com/kdecks","followers_url":"https://api.github.com/users/kdecks/followers","following_url":"https://api.github.com/users/kdecks/following{/other_user}","gists_url":"https://api.github.com/users/kdecks/gists{/gist_id}","starred_url":"https://api.github.com/users/kdecks/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kdecks/subscriptions","organizations_url":"https://api.github.com/users/kdecks/orgs","repos_url":"https://api.github.com/users/kdecks/repos","events_url":"https://api.github.com/users/kdecks/events{/privacy}","received_events_url":"https://api.github.com/users/kdecks/received_events","type":"User","site_admin":false},"created_at":"2018-11-11T09:00:44Z","updated_at":"2018-11-11T09:00:44Z","author_association":"COLLABORATOR","body":"Here's another use case written by **Rimsala**\r\n\r\nI want to find the ID of a room. But it's not an easy ID to guess (like 0, 1, etc). So I would create different save states for rooms A, B, C, and D. A fifth save state would also be in room A, but with many things changed (player health, enemies defeated, paused/unpaused, etc).\r\n\r\nFirst I would search for an unknown value for slot 1 (room A). This becomes the \"first scan\".\r\nNext I would search for a changed value in slot 2 (room B).\r\nNext I would search for a changed value in slot 3 (room C).\r\nNext I would search for a changed value in slot 4 (room D).\r\nNext I would search for an unchanged value in slot 5 (room A with changes), compared to the \"first scan\".\r\n\r\nThe reason to do the room B-D searches is that some values will not change. We want to eliminate those, because the value we want (the room ID) did change.\r\nHowever, many values can change when you change rooms, or the staus of a room. So looking for changed values isn't always that useful. That's why you want to make sure a value hasn't changed. You can do this by comparing to the first scan (which contains your original room ID).\r\nWhen you do the last search, many things will have changed, and maybe only a few have stayed the same since the first scan. Only those values will remain."}}
{"actor":{"display_login":"kdecks"}}