UPDATED: 06/14/24
Current Features:
Change amount of Silver (Money)
Add or Remove Inventory Items (All Possible Items Implemented)
Edit Current HP/MP and Current Experience for Hiro
DRAGON AURA 2.0 BETA 3
DOWNLOAD WINDOWS EXECUTABLE: https://drive.google.com/file/d/1SeCE3o ... sp=sharing
DOWNLOAD VB.NET SOURCE FILES: https://drive.google.com/file/d/1-5puxb ... sp=sharing
======================================================================
I can't believe my account, and everything is still here!
I hope there is still some interest in this. If so please let me know and provide any suggestions or comments, or questions.
Sorry to everyone, life got away from me.
15 years, a marriage, a house, and a bunch of other stuff later I found myself back in the same situation - wanting to edit Lunar 2 save files.
First the bad news, I do not have any copies of Dragon Aura 1.0/1.2 etc. The files got lost somewhere ages ago.
The good news is I'm taking this project back on.
This one is going to be an editor for actual PSX memory card images (.mcr files) which will be more versatile and helpful for everyone.
In the event something should happen to me I will put my latest findings here which might make it easy for someone to continue my work or experiment themselves:
The below hex addresses assume the save to be edited is in the first saveable block (0x2000)
Lunar 2 Eternal Blue Complete holds 2 save games in 1 block, instead of using an entire block of memory.
The game has a form of checksum/crc to prevent loading corrupted / altered save files located at 0x2204 - 0x2206 and it seems to cover the entire block, not just one save in the block as I've found no other checksum..
Everything seems to be little-endian byte order (least significant byte last). This is significant and I'll explain why in my checksum example below.
The checksum seems to be the sum of some large portion of the save data but I can't for the life of me figure out what exact address range (or ranges) it's covering.
Fortunately, by discovering that it's a simple sum of bytes that means we only need a save with a good checksum to start with and keep track of our edits and apply the net gain or loss to the checksum value. It appears everything character related, even map position, is within the checksum range as I get an error trying to edit any of it and then load without fixing the checksum.
Example I actually did:
Let's say the checksum (starting at 0x2204) is 36 40 03
And we want to increase Hiro's current experience points, located at 0x2314-0x2317, from 130 to 131 (a hex change of 82 00 00 00 to 83 00 00 00)
Note here the little endian byte order, essentially reverse order.
First we change the actual experience value as noted above, this is an increase of 1.
So we need to increase the checksum by 1, since if it ran normally it would get the exact same result +1 for the one point increase in experience.
To do this we need to add it correctly, which means the math in hex is: 034036 + 01 = 034037
Then enter it in little endian format: 37 40 03
Voila, the save loads without error and Hiro's experience is now 131.
There's a hell of a lot of testing, trial and error to do here still.
Then I can do more than just things like this (another proof of concept using method above)
