Skip to content
tomvita edited this page Aug 28, 2020 · 23 revisions

Welcome to the EdiZon-SE wiki!

Focusing on search functionality. This fork aim to enhance the memory location search functionality and to create pointer that points to the found memory location.

Here are the steps to do pointer chain search in app.

  1. Clear previous search result if any.
  2. Perform a search of type pointer when the game is in the state you want. (Press ZL+X will quickly setup the search). The result of this search is used for subsequent pointer search. Very important to get it right to find the pointer chains.
  3. Select the bookmark with address you want to find the pointer chain that targets it.
  4. Press Lstick down will start the search with default configuration.
  5. Or press LZ+Y to go setting page for the search parameters. Move the cursor to the position you want to modify and press L or R to increment or decrement the value. Some value cannot be modified at the moment. Press + to start the search.
  6. Results are appended to the bookmark list. Test them to see the validity of the chain when the game state change, especially after relaunching the game. When satisfied that a good bookmark entry is found press Y while highlighting the bookmark to add it to the cheat code file.
  7. Pointer search can be paused by holddown ZL+B. Normal functionality of the app is all available while pointer search is pause.
  8. Start pointer search again to resume (step 4 or 5), in resume case the currently search parameters are used for future iteration of the loop, intermediate targets that are queued up for processing is preserved. Very important to ensure memory search results is valid before continuing the pointer chain search, repeat step 2 if necessary. To abort the search and start from scratch press ZL+"+".

Interpreting the pointer chain search status display.

F=(pointer chain found) Z=(depth from target):(index to intermediate target being processed currently at this depth)/(total number of intermediate targets at this depth)

Steps to export dump to PC app and import results back to EdiZon SE

  1. Select bookmark with target memory location. The game must be in the correct state where this memory location is valid.
  2. Press LZ+Y to go into pointer search setting. Press LZ+Y again to dump the file. The cursor will stop blinking and the LED will flash for a short while. When the cursor starts to blink again the dump is done. The file created is named "(builtID).dmp(x)". x starts from 1 and increment from there(Plan to make use of multiple dump in future release, currently only one dump is used).
  3. Stop EdiZon SE (must do this for the dump to be accessible from PC). Copy (builtID).dmp(x) to PC.
  4. Launch pointersearcher SE on PC (A fork from pointersearcher 0.4 with changes to enable importing and exporting to EdiZon SE). Click on the top left corner box underneath the word "Path". Pick the dump file to load. Click on "Read 1st Dump Data" box to import the dump.
  5. Set the search parameters "MaxDepth", "OffsetNum", "OffsetRange". (The "TargetAddress" box has the memory location of the bookmark, this can be changed to another target as long as the state of the game is correct for this other target when making the dump, no need to make multiple dump to search for pointer chains what are valid at the same time for different targets.)
  6. Click on "Reset and Search" box to start the pointer search based on "MaxDepth", "OffsetNum", "OffsetRange" and "TargetAddress". If you get "not found" you have to adjust "MaxDepth", "OffsetNum", "OffsetRange" and click on "Reset and Search" to try again.
  7. "Book Mark File" box is prefilled with the dump file path. Edit this box to have the filename "(builtID).bmk".
  8. Click "Export to EdiZon SE" box to create "(builtID).bmk".
  9. Copy "(builtID).bmk" to edizon directory on switch.
  10. Make sure the game is in the correct state where the pointer chain should be valid. Make sure that the correct search type is selected.
  11. Launch EdiZon SE. Select a bookmark(bookmark selected is not important for this step). Press LZ+"+" to import "(builtID).bmk". Pointer chains from "(builtID).bmk" that can resolve into valid memory location will be added to bookmark for further testing and validation.
  12. If nothing is added to bookmark or they didn't turn out to be good ones repeat step 6 to 11 with different "MaxDepth", "OffsetNum", "OffsetRange" until you found the good one/s. Quite often there may be more that one that is good through out your testing, just pick any one or if you like keep them all (There may be some condition that some works and others don't but you haven't been there yet).

Steps to create dmnt cheat code

  1. Perform testing and validation. When you are happy that you have found the good one proceed to next step.
  2. Select bookmark. Press Y to add bookmark to dmnt cheat code list. Code is appended to "(builtID).txt" in AMS content directory and edizon directory. The file in edizon directory is just for human reading, dmnt only cares about the one in AMS content directory.
  3. You will only see the updates when you relaunch the game. (or if you use my hacked dmnt, when you relaunch edizon).

Steps to make dmnt reload cheat code file without relaunching the game

  1. Get from https://github.com/tomvita/Atmosphere/releases the version of file matching your atmosphere release version. Replace \atmosphere\contents\010000000000000D\exefs.nsp.
  2. Reboot switch to reload dmnt.
  3. Every time you launch EdiZon or any homebrew app that calls ForceOpenCheatProcess() will now save toggle, load cheat code file, load toggle.
  4. This also means the config line dmnt_always_save_cheat_toggles = u8!0x1 is kind of forced, won't matter if it is set to 0x0 in the setting file, if any homebrew called ForceOpenCheatProcess() a toggle file will be created.

Steps to make EdiZon SE load faster

  1. This replaces myPage (The small circles on the top left corner with player profile icons).
  2. By doing this myPage is no longer accessible. Instead you get EdiZon SE. This save the time and effort consumed by launching hbmenu to launch EdiZon SE.
  3. Place the content of "0100000000001013.zip" from release 3.6.1 in AMS content directory("\atmosphere\contents").
  4. To reverse this change delete the directory "\atmosphere\contents\0100000000001013"

Steps to see, modify and add to bookmark memory location near the bookmark location

  1. Press right stick down when a bookmark is selected.
  2. The grid shows content in Hex. The address of the selected cell is shown on the top and the value in "search type" is shown beside this.
  3. Press "A" to edit value.
  4. Press "+" to add address to bookmark.

Steps to delete unwanted bookmark.

  1. Press "-" to mark a bookmark for deletion.
  2. Press LZ+"-" to delete those mark for deletion and those with pointer chain that fail to resolve at the moment. Pressing LZ+"+" also will do this in addition to importing bookmark from file.
  3. Bookmark marked for deletion will also be removed when the game is relaunched.

Steps to rebase cheat code made for previous build of a game

  1. Some pointer chain only need the first offset to be adjusted. The following steps only works for cheats that only need this adjustment to work.
  2. Add the code in "(builtID).txt" and place it in the AMS content directory.
  3. Select this cheat code that does not work for this build in EdiZon SE. Press "+" to add to bookmark.
  4. Confirm that you want to try to rebase this code.
  5. Pointer chains with first offset adjusted that can resolve into valid memory address will be added to bookmark.
  6. Test and validate these bookmark entry. Delete those that does not work.
  7. Select good bookmark entry and pressing "Y" to add adjusted code back to the dmnt cheat code file. The value written by this code will be the current value at the targeted memory location.
  8. You have to edit "(builtID).txt" file to remove unwanted cheats manually.

Steps to do a unknown value search

  1. To create a full dump of the memory region of interest use one of these search mode for the first search "SAME" "DIFF" "++" "--".
  2. Alternatively use range mode "A..B" if you are able to guess what range this unknown value falls into.
  3. Subsequent search use one of these search mode to continue "SAME" "DIFF" "++" "--" "A..B" until you have narrow down the list enough for exploration. (currently "!=", ">", "<" does not save the value so you must go back t step 2 after one of these search are performed)

Use EdiZon SE with Animal Crossing™: New Horizons

  1. The way game icon and game title is fetch have compatibility issue with ACNH. This is a work around for the time being.
  2. Put a file name noicon.txt in the edizon directory to disable game icon and title name from being processed.
  3. When "/switch/EdiZon/noicon.txt" is present EdiZon SE will not display game icon and the title name. This will stop it from crashing when ACNH is running.
  4. To go back to normal just delete noicon.txt

How to use EdiZon SE with game/application that has problem when dmnt is attached to the game process

  1. Some game (Megadimension Neptunia VII is one example) have problem when dmnt is attached to the game process. In this specific case the sound is corrupted.
  2. Jnoexs is one tool that many people like to use. This process also enables usage of Jnoexs without relaunching the game after dmnt has attached to the game process. Just detach one from the game process to use the other.
  3. Download from https://github.com/tomvita/Atmosphere/releases/tag/v.0.13.0.1a or https://github.com/tomvita/Atmosphere/releases/tag/v0.14.1.1 depending on which version of atmosphere you are at and replace \atmosphere\contents\010000000000000D\exefs.nsp. This is a special version of dmnt which has a ForceCloseCheatProcess function to make it detach from game process. Reboot switch after replacing the file.
  4. With EdiZon SE 3.6.6 or later press LZ+B will toggle dmnt attachment to the game process.

A note about floating point

  1. Floating point implementation may have small difference in some value. It is small in value but big in search result. For example 0.3 is 0x3E99999A for this app and maybe 0x3E999998 for the game.
  2. What you see on screen has a chance of being the rounded value of the memory value that has real significance in game.
  3. Further more the value may be counted down or up. There is a latency between display and search.
  4. If "==" search don't get you the result you want try range search "A..B".
Clone this wiki locally