I have a lot of free time for the next month and a half and have been itching to do something programming and romhacking related, so I decided to try adding a feature to DeSmuME that would help with finding free memory for rom hacks. It's probably solving a problem that most people don't need a solution for, but I learned a few things in the process so it was worth the effort in my opinion. I am posting this in case there is anyone else who could benefit from it. The only usage I can think of for this is for rom hackers who are looking for places in memory to write their code, redirect buffers, or load new files into memory without accidentally overwriting something important. Sometimes it can be a pain to find a good unused buffer with enough space for what you need, so I made this hoping to speed up the process a little bit. Functions Region: The region dropdown in the top left lets you select which region (arm7 or arm9) of memory to search. It's the same setting that you would set on the memory viewer menu. Size: The size is the minimum amount of free space you searching for. Anything equal or above that number will be shown in the results window. Search Range: The search range is optional. You can narrow down the memory ranges you want to search. The default values are from 0x00000000 until 0x10000000. Set: You must press the set button after entering a range or else it won't save the range. Results window: The address column is the real address in memory. You can plug the address in with the correct region into the memory viewer window and you should be able to see the free space. The size column gives you the size in hex and decimal. Export: The export button exports the contents of the result window into a text file. Here is an example of the output: Warning: Spoilers inside! Code: 0x020716b4 | 0x0000013c (316 bytes) 0x02083c78 | 0x00000108 (264 bytes) 0x0208d174 | 0x00000130 (304 bytes) 0x0208fdd8 | 0x00000134 (308 bytes) 0x02090528 | 0x00000134 (308 bytes) 0x02090db0 | 0x00000134 (308 bytes) 0x02091638 | 0x00000134 (308 bytes) 0x02091ec0 | 0x00000134 (308 bytes) 0x02092880 | 0x00000134 (308 bytes) 0x02093378 | 0x00000134 (308 bytes) Clear: Clears the results window. Save: Saves the entire search buffer so it can be loaded back into memory later. In the saved data, bit 1 signifies that the action took place in the arm9 region, and bit 2 signifies the action took place in the arm7 region. (Warning: Output file is large.) Load: Loads data back into the search buffer. Only the first 0x10000000 bytes will be read. Reset: Zero out the entire search buffer. Note: Searching the memory will automatically mark any bytes that are non-null in memory, so it will only be completely blank until you search again. Close: Closes window (but does not clear search buffer). The search buffer is cleared every time a game is loaded or reloaded. Save states do not have any effect on the search buffer which is why I added the save and load features. The longer you play the game, the more accurate the results should be. How It Works Most memory read and write functions (except for some internal system stuff) have been modified to mark a bit in the search buffer if a specific location has been written to. Sometimes data that looks blank is actually used somewhere in-game, read commands are also marked. The memory locations returned in the results window will have been completely untouched (to the extent that my modifications know). As is still the chance that the results are not entirely accurate once you get into far off regions, but it should be good enough for the areas in memory that most hackers will be interested in. Other Notes This build is compiled with the gdbstub enabled. You can start the gdbserver by passing the parameters "--arm9gdb=(port)" or "--arm7gdb=(port)" in the command prompt. From there you can attach something like IDA Pro or arm-eabi-gdb to the specified port. The EXE was compiled with VS2010 using the latest SVN code as of June 9th, 2013 (rev 4672). I have not had a chance to do extensive testing so there may be bugs. Because this is an unofficial build, do not report any bugs found with this build to the DeSmuME team unless you have tested an can prove that the bug is not a result of my changes. Download (+ source patch): http://www.mediafire.com/download/siavuq6jmt870ls/DeSmuMe-custom-memaccessview-r3.rar Update (6/11/2013): - Automatically mark overlay regions as used memory - Added overlay information output to console Update (6/12/2013): - Fixed small bug in ARM7 mode.