Giter Site home page Giter Site logo

cameronredmore / memory-deck Goto Github PK

View Code? Open in Web Editor NEW
34.0 5.0 10.0 819 KB

A Decky Loader plugin that allows scanning and editing of memory values.

License: GNU General Public License v3.0

Dockerfile 0.12% Shell 1.75% Python 27.38% JavaScript 0.23% TypeScript 4.29% Makefile 0.68% C 60.10% M4 1.13% Roff 4.31%

memory-deck's Issues

More legible process names

During the process selection we are provided a list of processes, but the names are quite long and contain the entire path, which makes it illegible and look quite junky.

Screenshot 2023-04-27 at 10 52 52 AM

Search results never populate/plugin freezing/undetected processes

Plugin often refuses to produce search results or has no processes detected. Reloading the plugin resolves the issue temporarily.

I'm using the latest version of steam deck os, decky loader, and the plugin.

After about 4 times of searching values the search either displays the loading symbol and never produces results or it just says zero and never updates even if you reset the search.

Also sometimes it will not display the process even though the game is running.

Reloading/reinstalling the plugin fixes it temporarily but the bug reoccurs frequently.

I have yet to get the plugin to correctly detect or change a single desired value.

I tried it for several games so far and have had no luck with any of them.

The most recent two were resident evil 4 (2008)

And blasphemous.

Resident evil I just tried doing pistol ammo. The values when I didn't experience the bugs I described above narrowed down but after I got to two values I edited them and they never were reflected in game as being changed.

For blasphemous I had a similar experience.
Using increased search option after searching an initial value narrowed results untill they were lower then 10 in number. I edited all the values and the change was never reflected.
For this game you get a number of points for upgrades and I was trying to edit them to a high number to unlock all the attacks and specials.

Other games I've tried have been devil may cry series and bioshock series. I also tried the borderlands games. Had no success with anything so far. I really would like this to work as using cheat engine on Linux requires some hoop jumping I don't want to do.

I have also tried uninstalling and reinstalling decky loader and the plugin it's self. No luck.

[feature request] add the ability to send signals to attached program

(would require import signal, but it's an inbuilt package so no worries)

os.kill(pid, signal) can send a signal (signal.SIGSTOP for example) to any application. (ignore the name, it can do things other than kill)

A list of valid signals to select from can be generated with signal.valid_signals() (it produces a set of Signals, which have a value which is the number of the signal (19, 20, etc), a name which is the signal name (SIGCONT, SIGKILL, etc).
The set also includes a bunch of ints (on my PC, 35-63) that do not have any associated function, these should probably just be skipped. (64 does have a use on my PC)

for reference, all of these work (where 99 is the PID): os.kill(99, signal.SIGSTOP), os.kill(99, signal.SIGSTOP.value) and os.kill(99, 19).
these will NOT work: os.kill(99, "SIGSTOP") and os.kill(99, signal.SIGSTOP.name)

I would think a dropdown menu with every valid signal (by name, not number) and a "send" button next to it would be good.

I considered making this a seperate plugin, but it's not very complex and also fits pretty well into the functionality of this plugin.
I will try work on a PR myself (and may fail, we'll see) if you'd like, but I would prefer to hear some feedback (or if you'd like to do it) before I try.

Quick example code for getting a dictionary of signals:

import signal

valid_signals = signal.valid_signals()  # returns a set of objects, not particularly useful until parsed as needed

signals = {}
for sig in valid_signals:
    if hasattr(sig, "name") and hasattr(sig, "value"): # makes sure to ignore useless signals
        signals[sig.name] = sig.value
print(signals) # prints {'SIGHUP': 1, 'SIGINT': 2, 'SIGQUIT': 3...

Example code for pausing an application then instantly starting it again

import signal
import os

pid = 26724  # some int
os.kill(pid, signal.SIGSTOP)  # pause application
os.kill(pid, 18)  # continue application

code does not work from within flatpak vscode, probably due to sandboxing
works fine otherwise

Change multiple addresses at once

I'm trying to cheat Unepic.
I have 3 addresses, which I try to manipulate.
I think the game has some defense mechanism and if one address is changed, the player dies instantly.
(I'm hoping it's not a checksum somewhere)

Suggestion:
Make it possible to change the addresses in the plugin UI, but do not apply them.
Add an "Apply" button, which will (preferably)

  1. freeze the app
  2. apply the changes to all addresses
  3. unfreeze the app
    (or in some other means, apply the change to all addresses at once)

Thanks for the great work on the plugin!

Usage with Linux native games

Hi, first of all thank you for this plugin.
Here's my question (maybe I'm just dumb) but the plugin doesn't seems to be working with Linux native games. I have tried with Dead Cells and Slay the Spire both times there's a single process to choose (./dead cells or ./slaythespire) but when you try to find any kind of values it always returns 0 results (even if you do an unknown initial value search such that it should scan all values it still returns 0 results). Any way to get it working?

[bug] Doesn't work with native linux port? Tropico 5 case

IMG_20221223_224859.jpg
Seems that with steamtinkerlaunch in the process list find Tropico.exe so can scan it without troubles (as launch the game differently compared to the screen above when it's just steam).
Instead launching with steam find just the path and not a process so the scan is not working.

Probably the issue is there as is not using a process the scan don't work. Maybe a check like if that path is a file or a folder can improve the situation. Why it's happening? I have no idea I don't know so much C++ to understand where it is the issue.

Continue from #7

[feature request] Create wiki pages

  • How the plugin works
    - [ ] List dependencies
  • Instructions on how to run main.py manually for debugging purposes, potentially enable that functionality by default

Exiting quick access menu resets search

It was working fine until all of a sudden after I run a search then go back into the game to for example change the number of items in my inventory, when I go back to narrow my search by entering the new value I find that my search has been reset.

[feature request] add ability to freeze addresses

Very often it happens that values cannot be edited permanently. Freezing values or addresses could cause this problem that the value cannot be reset. If you freeze a address the address will not change until you unfreeze it. The value does change but memorydeck will restore the value to its frozen state every few milliseconds.

Idea

Just an idea, would it ever be possible in the future for you to create a DLL injection plugin? The ability to quickly inject DLL's into running processes via the quick menu would be incredible. Great work by the way!

Search type "string"

How to search string type? Some games save in strings numerical values(like the one i was trying to edit). Scanmen can search it, because GameConqueror, another scanmen wrapper have that feature.

Allow listing found addresses when results list is larger than 10.

It is not possible to find the health bar in Narita Boy (GOG), because any search returns 11 results. No matter how many times the health goes up or down, the number of matches never goes below 11.

This is true no matter what parameters are used in the search, or what "Search Type" is set to.

No processes detected

It just says Process Selection then the Reload Process List button. There's no option to select a Process no matter what I loas

Memory deck plugin didn’t work properly.

As the title said. This plugin is basically a game memory editor to change the value.
I tried all three versions which is 1.0 , 1.1 and 1.2 but unfortunately no luck. Any help please?

[bug] Having a lot of trouble with plugin

The only game I've gotten to return any values was Super Mario World via retroarch. There were two things I tried to get, the first was my X coordinates. I started with a search for any value and narrowed it down by moving back and forth, staying in the same place, etc. I finally got under 10 values but when I went down to edit it there were no values there. The second thing I tried was to change the time value. The level started with 300 on the clock, I paused and entered 300, it said how many values there were, I un paused let it count down 10, paused and chose decreased by 10. It then said 0 results. I reset and tried again, entered the time, gave me results, I unpaused, selected just decreased and 0 results. This happened no mater what I chose after the initial results. I also tried Terraria, native and Mario Odyssey, yuzu. Even when choosing Any when searching it returns 0 results. I looked it up and for yuzu on cheat engine you have to turn on mem_mapped. I am completely lost.

Broken on steamos preview build

Since last week, when steam put out an update to the preview and beta channels several decky plugins lost functionality, memory deck included.
Nothing works at all, only an empty screen is pulled up upon attempting to run memory deck.

[bug] straight up not working

im having a lot of issues on multiple games on the latest and second to latest updates
-it not showing any numbers at all
-sometimes doesnt even show the process
-too many processes to identify

Float Search Doesn't Work

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.

Build instructions in the README file

Hello,

I was in a hurry to get the new version with DFL, so I built it myself, and I thought that maybe other people might find this helpful too if it's available in the README.

Here's my way of doing it, some adjustments may be needed. If a Dockerfile is present for building the index.js, it might also simplify things for some folks.

# npm is required
> npm i -g rollup
# install dependencies with npm|yarn|pnpm
> yarn install
# build frontend
> yarn run build
---
# transfer to deck (optional)
> scp dist/index.js deck@DECK_LOCAL_IP:/home/deck/homebrew/plugins/memory-deck/dist/index.js

Obviously, this is only for the frontend part (as currently it's the only thing updated) but you should get the gist.

RedDeadRedemption2

Hello
i first searched for the value of the ammount of dollars i had, there was a lot of matches, but then if i search a second time when the value has decreased, it doesn't find any value

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.