{"id":28092856,"url":"https://github.com/angrycarrot789/memengine360","last_synced_at":"2025-05-13T13:49:07.656Z","repository":{"id":289181653,"uuid":"970384719","full_name":"AngryCarrot789/MemEngine360","owner":"AngryCarrot789","description":"A remake of Cheat Engine for consoles, currently Xbox360 only, written in C# using Avalonia","archived":false,"fork":false,"pushed_at":"2025-05-07T06:08:53.000Z","size":819,"stargazers_count":14,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-07T07:25:27.521Z","etag":null,"topics":["avalonia","c-sharp","cheatengine","xbdm","xbox360"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AngryCarrot789.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.GPLv3","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-21T23:57:32.000Z","updated_at":"2025-05-07T06:08:56.000Z","dependencies_parsed_at":"2025-05-07T07:22:30.078Z","dependency_job_id":"f870fb64-fdf7-4cf8-8028-4de0a809fcf9","html_url":"https://github.com/AngryCarrot789/MemEngine360","commit_stats":null,"previous_names":["angrycarrot789/memengine360"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngryCarrot789%2FMemEngine360","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngryCarrot789%2FMemEngine360/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngryCarrot789%2FMemEngine360/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AngryCarrot789%2FMemEngine360/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AngryCarrot789","download_url":"https://codeload.github.com/AngryCarrot789/MemEngine360/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253953301,"owners_count":21989813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["avalonia","c-sharp","cheatengine","xbdm","xbox360"],"created_at":"2025-05-13T13:49:06.715Z","updated_at":"2025-05-13T13:49:07.623Z","avatar_url":"https://github.com/AngryCarrot789.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# MemEngine360 v1.1.4\nThis is a remake of Cheat Engine, but for consoles. \n\n![](MemEngine360-DesktopUI_2025-05-10_15.03.51.png)\n\nThis project was inspired from https://github.com/XeClutch/Cheat-Engine-For-Xbox-360\n\nI've only just gotten start in console modding, and I don't have much experience in the low level features that this app \ndefinitely needs (such as parsing memory blocks as executable code, and displaying as assembnly). So any help/contributions would be great! \n\nGeneral tips and advice on how the UI can be improved or made more productive are also welcomed.\n\n# Download and built\nClone repo: `git clone --recursive https://github.com/AngryCarrot789/MemEngine360`\n\nOpen `MemEngine360.sln` and then run/debug.\n\n# How to use\nPress `CTRL + O` (or go to `File \u003e Connect to console...`). A dialog pops up allowing you to connect to different consoles. \nSo far, only the Xbox 360 is implemented, however, plugins are supported to add more.\n\nIn the case you want to connect to an xbox 360, just supply its IP address in the text field and click `Connect`\n\n![](MemEngine360-DesktopUI_2025-05-03_13.08.07.png)\n\nYou'll see in the bottom right corner a progress bar will sometimes appear. They represent 'Activities', such as read/write operation status, scan status, and more.\nYou can click that area to open a window which shows all activities.\n\n![](rider64_2025-04-27_22.07.31.png)\n\n## Scanning\n- Enter a value in the `Value` field\n- Select the data type you wish to scan for (e.g. Byte, Int32, String)\n- Specify search options such as the `Scan Type` (match equal values, less than, between and more), and string type (ASCII, UTF32, etc.)\n\nThen, specify a start address in the `Memory Scanning Options` panel and also how many bytes you want to read (default is `0x10000000` or 256MB). \n\nOn supported consoles, you can click the little green table button to open a dialog, which lets you select a memory region to scan.\nClick any of the column headers to sort them (e.g. sort by region size and look for the bigger ones; that's where the games usually are, usually after base address 0x80000000)\n\n![](MemEngine360-DesktopUI_2025-04-27_22.02.37.png)\n\n- DEBUG PAUSE will freeze the console during scan (speeds up scan and useful if you don't want values to change during scan). Only works on consoles supporting freezing (including Xbox 360) \n- Scan Memory Pages will scan the console's memory regions rather than blindly scan the entire search range. Only works on consoles supporting memory region querying (including Xbox 360)\n- Align... code explains it better: `for (addr = start; addr \u003c end; addr += align) /* scan addr */`\n\n### First Scan\n\nClick `First Scan`. The activity status (bottom right) shows the scan progress. You can cancel the scan by clicking the X.\n\nThe activity bar will show something like `Region a/b (c/d)`. This means it's processing memory region A out of B, and has read C out of D bytes from the console. It may also say `Chunk` when Scan Memory Pages is off, since we read in chunks of 64K \n\nThen, once the scan is complete, it may show `Updating result list...`. This is where it adds the results into the UI at a steady pace to prevent the UI freezing (rate of about 2000/s (system performance dependent)). It shows how many results are pending at the top.\n\n\u003e You can cancel the activity once it shows `Updating results list`, and the rows become 'Hidden', but they will still be processed next scan along with the rows in the UI.\n\n\n\n### Next Scan\n\nThen, if you want to check if any results' current value have changed, click `Next Scan` and it will read the current value of all results\nand compare it to the value field(s) and remove any results that no longer match (because the value changed)\n\nThere are 2 buttons `First` and `Prev` next to the value field. These toggle whether to use the result rows' First value or Previous Value as a search value, instead of using the value field. \n\n## Saved addresses\n![](MemEngine360-DesktopUI_2025-05-10_14.52.37.png)\n\nIf you wish to keep an eye on specific addresses, you can add entries in here.\n\n- Select results in the scan results panel, then click `Add Scan Result(s)` to automatically add them. \n- Add them manually by clicking the green `+` button. It will open two dialogs to configure the row.\n- Open/Save a CSV file containing saved addresses.\n\nThe refresh button manually refreshes the values. This is done automatically every second by default (changeable in preferences; CTRL+ALT+S)\n\n## Changing values\nYou can double click the cell in the `Value` column(s) to modify that cell. \nYou can also select multiple rows and click `CTRL + E` to modify the value of all of them.\n\n![](MemEngine360.Avalonia_2025-04-23_01.04.01.png)\n\n## Copying scan results\nSelect any number of scan results and press `CTRL + C`. A dialog will show the results formatted in CSV\n\n## Deleting rows\nSelect any scan result or saved address rows and press the Delete key to remove them.\n\n## Memory Viewer\nOnce connected to a console, in the \"Saved Addresses\" panel will be a green chip. Click it, and it will show a new window.\nIt will automatically fill in the Address/Length fields with the Start/Length fields in your scanning options.\n\nThen click Read All, and it will first read the data from the console (progress shown in the activity bar in main window) and then present it in the hex editor.\n\n![](MemEngine360-DesktopUI_2025-05-05_17.58.59.png)\n\nThis also supports auto-refresh. Select a region (click+drag), then click CTRL+SHIFT+S (or click the north-west arrow button) and it will update the two text fields (optionally you \ncan manually enter a range). Then, click `Start Auto Refresh`, and it will refresh the values 10 times per second. Note, you cannot scan or refresh results/saved addresses in the main UI during auto-refresh.\n\nYou can write values back to the console in the Data Inspector panel (e.g. write an int or a double, but not chars at the moment). The field you're writing into will not be refreshed until you click away from it (e.g. click anywhere in the hex editor) \n\n### Remote Controls (xbox only so far)\nThere's a few remote control commands you can find in the `Remote Controls` menu. Some of which are:\n- `Open Disk Tray` - Opens the console's disk tray (cannot be closed remotely since xbdm does not implement closing...???)\n- `Debug Freeze` - Freezes the console\n- `Debug Unfreeze` - Unfreezes the console\n- `Soft Reboot` - Reboots the current title\n- `Cold Reboot` - Fully reboots the console (shows the xbox boot animation)\n- `Shutdown` - Tells the console to shut down\n\n# What is...\n### \"Waiting for busy operations...\"\nThis means that something else is using the engine elsewhere (scan is running, the hex editor auto-refresh is running, or maybe the results list/saved addresses are being refreshed).\n\nThis application is multithreaded, but connections are not thread safe, so there exists a `BusyToken` to synchronize access. This message is shown in the status bar while waiting to obtain the token.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangrycarrot789%2Fmemengine360","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangrycarrot789%2Fmemengine360","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangrycarrot789%2Fmemengine360/lists"}