For a method that will work in any emulator I use a combination of two programs --
ArtMoney and
CurrProcess.
Run the game in the emulator of your choice.
Run ArtMoney and select the emulator for the process.
Click Search.
Select Search: Exact Value, Value: e7ffdeffh, Type: Integer (standard), Address range: ALL and click OK... and OK.
In the list there will be 3 addresses right in a row -- for instance 19f0100, 19f0104, 19f0108. There will probably be 2 groups of 3 hits in a row so you may have to look in the memory editor to see which one is the real RAM that you want to dump (the other occurance will actually be the arm9.bin in the emulator's memory plus some garbage data at the end).
To do the search right click on the first of the 3 addresses that are in a row and select Memory Editor.
Under Moving select moving to address.
In the field to the right of '+' put in 380000h (note the 'h' is important) and click the ^ button to the right of it. This will add it to the current value on the left. Click the ^ button on the left and if the address you jump to has 01 C3 A0 E3 then the hit will be the right one for RAM.
Now that you have the address you can open up CurrProcess.
Select the emulator from the list of running processes.
Click Module, Dump Memory.
Name the dump file whatever you want, Start Address is the address you got from ArtMoney (0x19f0100), End Address will be the start address + 0x400000 (0x1df0100), File Format is Binary File then click Dump Memory.
As for the formatting for the cheat codes: I tried to make the parsing as smart as possible so it should be able to handle any formatting of text (including special characters, extra blank spaces, extra crlfs, etc. The one main thing is that each code line or description has to be on a seperate line and it doesn't matter if there is a space between the first 8 numbers and last 8 or not but there must be 8 character in each group or it will load the wrong value:
XXXXXXXX YYYYYYYY, XXXXXXXYYYYYYYY is fine.
XXXXXX YYYYYYYY, XXXXXXYYYYYYYY, XXXXXXXXYY, etc is not.