CameronRedmore / memory-deck

A Decky Loader plugin that allows scanning and editing of memory values.
GNU General Public License v3.0
37 stars 11 forks source link

Float Search Doesn't Work #23

Closed jbarker2160 closed 1 year ago

jbarker2160 commented 1 year ago

I have tried in multiple games to search for floats.

When float32 is selected, no search is performed at all and the number of matches is blank instead of 0. When float64 is selected, it seems like no search is performed, but the matches found text gets a random new line in it and the matches returned can't be seen.

HeyItsWaters commented 1 year ago

@jbarker2160 do you have the same issue if you try to use auto?

I implemented the search value type dropdown and admittedly wasn't able to test the float options (my game library is pitiful...)

jbarker2160 commented 1 year ago

It does not find float values of "auto" is selected.

On Wed, Feb 1, 2023, 21:11 HeyItsWaters @.***> wrote:

@jbarker2160 https://github.com/jbarker2160 do you have the same issue if you try to use auto?

I implemented the search value type dropdown and admittedly wasn't able to test the float options (my game library is pitiful...)

— Reply to this email directly, view it on GitHub https://github.com/CameronRedmore/memory-deck/issues/23#issuecomment-1413051539, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKZERF3URLB7PNHNUNEYYH3WVMJWLANCNFSM6AAAAAAUOMVPDI . You are receiving this because you were mentioned.Message ID: @.***>

HeyItsWaters commented 1 year ago

@jbarker2160 I definitely found some bugs around handling float values.

I don't have a great way to test, though, since I'm unaware of any of my games storing floats in memory.

If you are comfortable with using Desktop Mode on your Deck, can I provide some instructions on how to update a couple of files so you can test as well?

HeyItsWaters commented 1 year ago

In case you are... here are the instructions. Otherwise you'll have to wait until I can get these fixes released.

cd ~/homebrew/plugins/memory-deck/ sudo cp main.py main.py.orig sudo cp scanmem.py scanmem.py.orig

Open main.py using vim or kate, whatever you're more comfortable with.

1.) Change line 161 to val.flags |= MatchFlag.FLAG_F32B

2.) Update lines 163-166 to:

case "c_double":
    val.flags |= MatchFlag.FLAG_F64B
    val.float64_value = searchValue
case _:
    print("Invalid value!")
    return False

Close main.py and open scanmem.py

3.) Modify line 641 to val.flags |= MatchFlag.FLAGS_FLOAT

HeyItsWaters commented 1 year ago

@jbarker2160 you know what, I think there is some opportunity to handle floats better, but I don't know how at the moment.

Maybe someone smarter will come along and help out with this issue.

jbarker2160 commented 1 year ago

If you're looking for a cheap game to test this, Dungreed stores health values as a float.

On Wed, Feb 1, 2023, 23:21 HeyItsWaters @.***> wrote:

@jbarker2160 https://github.com/jbarker2160 you know what, I think there is some opportunity to handle floats better, but I don't know how at the moment.

Maybe someone smarter will come along and help out with this issue.

— Reply to this email directly, view it on GitHub https://github.com/CameronRedmore/memory-deck/issues/23#issuecomment-1413132079, or unsubscribe https://github.com/notifications/unsubscribe-auth/AKZERF3FJ2EO2LNQX6GDBLTWVMY3JANCNFSM6AAAAAAUOMVPDI . You are receiving this because you were mentioned.Message ID: @.***>

kayon commented 1 year ago

There is indeed this problem. https://github.com/CameronRedmore/memory-deck/issues/8#issuecomment-1423817497

cescofry commented 1 year ago

@HeyItsWaters I can probably help. Can you send instructions on how to debug from desktop mode?

Actually, if you have general documentation ok how the different components in the plugin work that would generally help with development.

HeyItsWaters commented 1 year ago

@cescofry there aren't currently any documents that explain how to debug very well.

I actually opened an issue for that very thing.

Essentially if you open the console/terminal, and cd into ~/homebrew/plugins/memory-deck you can run python3 main.py to run the plugin manually.

Doing it this way does force the plugin to behave differently, so you will likely need to open either main.py or scanmem.py and modify them as needed and then restart decky loader (or the SteamDeck entirely).

cescofry commented 1 year ago

This is good enough. I was actually looking at that already. I'll poke a but and see if I can find something.