Releases: aldelaro5/dolphin-memory-engine
0.7.0 - Final Qt 5 build
Warnings
- This is the final version built with Qt 5. As such this will be the last version compatible with Windows 7/8/8.1.
- The Dolphin MEM Override feature has some issues on
Windows
builds. If you need it to work accurately, you must use Linux for this version.
Notices
- The newer hardware performance issue is NOT addressed in this version. Updating to Qt 6 seems to have resolved the issue, as such this build will still have the performance issue related to hook order. Read the issue for mitigations if you use this version.
- @dreamsyntax is now a maintainer on the project.
- We have migrated to GitHub Actions, you can easily test and produce builds for both platforms now.
- The 'beta' prefix and 'pre-release' flags will now be dropped moving forward.
- Lastly thank you everyone for your contributions, especially the ones that sat for years. I hope to help bring a unified version of DME without the need of many forks. - dreamsyntax
Release pipeline
https://github.com/aldelaro5/Dolphin-memory-engine/actions/runs/6739726242
GitHub Auto Release Notes Below
What's Changed
- Feature/Enhancement: Set base for all selected watches & update misc typos, update appveyor and readme by @dreamsyntax in #56
- Added lock/unlock for selecting multiple items by @MarkAlarm in #65
- Add GitHub Actions by @dreamsyntax in #70
- Add .editorconfig file by @Broxzier in #30
- Fix pointer bool conversion logic error from typo by @Minty-Meeo in #74
- Features: CopyMemoryRange (new View); Search Range; Undo Search by @roeming in #61
- Fix Linux build for CopyMemoryRange/Undo Search/Search Range by @CNace13 in 4e3e7a6
- Bouquet of UI enhancements by @cristian64 in #60
- Add null pointer checks in
DolphinAccessor
. by @cristian64 in #76 - Feature: Specify MEM1/MEM2 Regions / Fix compatibility with Dolphin MEM Override by @Minty-Meeo in #47
New Contributors
- @MarkAlarm made their first contribution in #65
- @Minty-Meeo made their first contribution in #74
- @roeming made their first contribution in #61
- @cristian64 made their first contribution in #60
- @CNace13 made their first contribution in 4e3e7a6
Full Changelog: v0.6.0...v0.7.0
Beta version 0.6.0
This adds support for browsing the ARAM when MMU is off for both Windows and Linux. If MMU is on, the ARAM cannot be accessed due to a limitation of DME and there will not be plans to add support for this.
The ARAM is only interesting for GameCube games that uses the SpeedHack and uses the ARAM as usable RAM even though it's not technically allowed by the hardware. The ARAM is typically located at 0x7e000000 and goes until 0x7effffff.
This was added due to needing to research a glitch in Simpsons hit and run forcing me to add this feature so don't take it as a sign that more development is coming. That being said, this does improve the compatibility from 75% of games to about 95%. The only incompatible games are the ones that REQUIRES MMU to be turned on and there isn't plans to add support to them.
Beta version 0.5.1
This is a release mostly to fix breaking issues found:
- Fixed MEM2 not being found for Wii games on newer Dolphin versions(@NicholasMoser )
- Fixed issues where RAM addresses could not be properly detected on Linux
- Add paste to current index ( @dreamsyntax )
- Upgrade the Windows SDK version
Beta version 0.5.0
This release mainly adds features relating to convenience and many improvements on the memory viewer. It additionally adds support for persistent settings such as timers and how to display a byte separator for the viewer. Additionally, several bugs are fixed in this version.
New features
- Add many shortcut for actions like menu or cut-copy-paste (me and @Broxzier )
- Add support for Dolphin using the old Qt frontend (in builds where it was experimental).
- Add support for builds of Dolphin with the deprecated Wx frontend.
- Add a setting file which contains timers settings and a byte separator setting for the viewer.
- Add support for multi selection with many possible actions in the right click menu (copy, add watch, add as array of bytes, etc...).
- Allow to confirm the scan on the scanner when pressing enter.
- Add the ability to delete individual results in the scanner manually.
Bug fixes
- Use standard palette colors on the MemViewer. This makes it pretty for both light and dark theme.
- Fix some memory leak.
- Fix right side widgets being cut (@Broxzier )
- Fix a bug where adding the selected addresses from the scanner would add the wrong one (@dreamsyntax )
- Fix typos in the CT importer's error messages.
- Fix a crash that can occur when attempting to freeze memory with an invalid pointer path.
- Allow more lengthy strings (@dreamsyntax )
- Fix a crash when trying to modify the offsets of a watch's pointer path.
Documentation
- Add troubleshooting steps for Linux.
Developmental:
Beta version 0.4.0
This is a HUGE release introducing many new features, more convenient options and the biggest of all: a Cheat Engine's CT file importer. Additionally, this release changes the way the Wii-only memory is managed: it is now handled automatically, no user intervention is required, the program will just report its absence or presence. Finally, this release brings a massive list of bugfixes which means that update to this release from prior ones is HIGHLY recommended.
Here's the detailled changelog:
Global:
- Determine the presence of the Wii-only memory (MEM2) automatically, no user intervention is required, this is made possible because Dolphin maps that region separately, but always at the same place relatively to the common memory (MEM1).
- Add a CT file importer. This supports both methods mainly used for dealing with the start address in Cheat Engine which are the Dolphin internal pointer method or the assumed common start method. A dialog was added to allow to select which method applies to the table. It supports groups, basic watches data, special indications when viewing in a different base and custom big endian data types (they just get the basic type). After an import is done, a detailled report of the import errors (if any) will be presented, in these cases, it usually result in some data getting assigned with dummy values.
Common:
- Fix a formatting bug when using bases other than decimal where it would print a 32 bit number while the type is a byte.
- Assume that every String type ends at 0x00, this avoid printing garbage characters at the end of the string. An option to bypass this will be added in the futur.
- Fix a buffer overrun when opening a file with a variable length type or when adding one using the add watch dialog. Consequently, this fixes a set of crashes that could randomly occur if these conditions were met.
- Fix a TON of memory leaks scatered everywhere in the program.
Watch list:
- The watch list's columns widths are no longer fixed.
- Fix a crash that could occur when deleting multiple entries mixed with groups.
- Add support for cut, copy and paste the selection in the right click menu (it copies the dmw's formatted text meaning it is possible to paste this somewhere else).
- Add a right click option to delete the current selection.
- Add some mnemonics in the right click menu.
- Use moveRows instead of remove + insert, this avoid the groups collapsing themselves after a drag and drop.
- Fix #4 which could have prevented to edit labels as they were constantly getting refreshed.
- Now show a frame around the editor making it more obvious that an edition is in progress.
- Add a clear watch list option in the file menu.
- Now asks when opening a file while the watch list is not empty if the user wishes to merge the file with the watch list or clear the list before opening the file.
- Add sorting support, simply click on the column header to sort (note: the value column sort is primitive due to the variable nature of the data in that column). Will sort the groups first.
Scanner:
- Add an "Add all" button and an "Add selection" button on the result list, this also means the result list now support multi selection.
- Add an enforce alignement option which is turned on by default. This is what the Cheat Engine scanner does by default too where it would only check aligned memory addresses instead of all possible ones. Most of the time, the GameCube or Wii will use aligned addresses, but it might not, in such cases, it is possible to disable this by unchecking the appropriate option.
- Spaces when entering an array of bytes search term are now optional.
Viewer:
- Several UX improvement (by @Broxzier ) which includes ctrl + scroll wheel to change the font size, ASCII editing support, fixes for visual errors and calculation errors when naviguating, ignore non left-click events and plays a beep when invalid inputs were typed.
- Fix a huge memory leak when the viewer is open, this leak would keep growing over time and it is possible that fixing it has fixed a crash if it is leaking too much after a while.
Developemental:
- Add a Qt5 submodules for Windows which comes from a repository I created for this. This removes the need of having to install Qt under Windows when building the project.
- Add a solution file for Visual Studio (by @Broxzier ). This makes it easier to build with Visual Studio 2017 or 2015 (with slight adjustement). The README file has been updated to indicate how to build the program using this IDE.
- Generally make the code look cleaner (by me and @Broxzier ).
Documentation:
- Correct (yet again) the README file by fixing some typos and grammatical errors (by @Ikaheishi ).
- The README now has screenshot which is now stored in the repository.
- The README file was updated to reflect new usage instructions.
Beta version 0.3.1
- Fix a possible bug on Windows 7 where editing any value is impossible since the editor receives updated values constantly overwritting its contents. This fix has the side effect to block any updates when in edit mode, to get back to real time updates, exit the editor.
- Confirming a value edit while nothing is entered in the editor now cancels the edit getting rid of the error message that came with it.
Beta version 0.3.0
- Adds a CSV exporter for the watuch list (accessible in File -> Export as CSV... What is written is the label, the address with their respective offsets if any and the type. Can be opened easilly using standard spreadsheets softwares.
- Tons of UI imprvements including, but not limited to: avoid sporadic jumps of the UI whenever something changes dynamically, better alignement and spacing, basically, it's a decent UI now :)
- Changed the default width and the order of the watch list's columns. This is done to better reflect what the size of the columns should be, some aren't resizable anymore since they are expoected to have their content not take more space. Basically, it avoids having to resize them all the time when opening a dmw file.
- Add the ability to hide/show the scanner portion, this is accessible in the new View menu.
- Prevent the use of the Go to MEM2 button int he viewer when MEM2 is disabled, it wouldn't have done anything, but now, it's more clear that it won''t do anything.
- Fix a bug where the Save as.... option wouldn't necessarly put the dmw extension, now it ensure it will have it.
- Fix a bug where right clicking on string type watch entries wouldn't pop the context menu.
- Fix a compatibility issue with Dolphin 5.0-5728 or newer on Linux
Beta version 0.2.2
Fix an uncommon bug on Windows where it could fail to find the right start address as there might be multiple virtual pages of memory that don't have phisical memory to them, but still follow the criteria of the size and type that Dolphin asks for.
Beta version 0.2.1
This is a mainly a bug fix release:
- Memory viewer: the column headers are now displayed accordingly to the top left address
- Add the ability to toggle MEM2 when unhooked since attempting to hook while Dolphin runs a GameCube game with MEM2 enabled will instantly cause an unhook.
- Add a precision on the usage of MEM2 in the UI (this is to inform of the possible problem said in the point above)
- Memory Watch: the previews now updates properly when the offsets are changed
- Memory Watch: the entire pointer path is now previewed so you know at which address it ends on each stage of the path, ??? if it's invalid address
- Memory Watch: add the ability to open the memory viewer on a watch's address/pointer address OR each addresses of the pointer path.
- Memory Viewer: make the viewer window non modal so it doesn't prevent you from using the main window and it allows you to minimise it on its own
Beta version 0.2
This release's main feature is the addition of a memory viewer. This memory viewer continuously reads the memory in both hex bytes and ASCII text. Changes are highlighted by a red fade just like CE. Keyboard navigation is supported as well as a scrollbar. Alternatively, you can jump to any address by entering it in the appropriate text input. MEM2 is supported if it is enabled, but both memory region are in different views. Real time editing works too, just select a byte by clicking and type the new hex. Lastly, it gracefully handles unhooking, if the memory is unreadable due to unhooking, the viewer will report ?? instead of valid memory.
This is integrated with the watcher so when using the right click menu, there's a new option to open the viewer at the address of the watch.
NOTE: From now on, 250MB of free memory is recommended when using the program AT ALL TIME, with the introduction of a global memory cache, it can take as much at all time when MEM2 is enabled, much less if MEM2 is disabled.
Full changelog of this release:
- Improve the documentation spelling and grammar (thanks @Ikaheishi )
- Fis a crash when attempting to edit a value while editing another, it now displays an error message since you cannot enter an empty value.
- Fix the right click menu on the watch entries, the right click menu should work and not cause crashes anymore.
- Add a global memory cache which the scanner and the viewer uses. This is just a faster path for mass reads, the watcher is unaffected as it only does small reads.
- Add a memory viewer, see above for the details.