Jump to content

Recommended Posts

Posted (edited)

I need to do more research on the Player Name. The character encoding was a bit, odd. (Especially when different characters have the same values).

Anyway, here's an untested modification. Replace Resources/English/PlayerChars.txt with this and see if it works for you.

[Edit] Apparently the 1st character's value is 1 less than any of the others. The attached file will only work if B (capitol) is the first character. I'll release an update later.

[Edit again]

Updated Player Name viewing. First character might still display incorrectly, which can be fixed by changing Resources/English/PlayerChars.txt. I'll fix that after doing more research.

PlayerChars..txt

PlayerChars..txt

Edited by evandixon
Posted

It turns out the Pokémon data (including the names), at least the quicksave in-dungeon party data, is compressed by simply removing all unused bits. For instance if there are two variables, one that uses 3 bits and one that uses 4, they're squashed into a single byte. Because of this all the bytes of the names (and other data) are shifted. After un-shifting them you'll get normal characters that you can interpret using the table file. So there's no proprietary character encoding voodoo going on. :)

I haven't looked at it much yet, but here's a quick method I wrote to do the unshifting. It's not optimized but it should be good enough for a proof of concept: http://pastebin.com/aCSaTmh2

To use, load the save file (or the relevant part of it at least) into a Stream, set it to the position of the name and call decode() with the right parameters. Here are some that work:

0x8413: startbit 3, bits 80 (starter's name)

0x8457: startbit 5, bits 80 (partner's name)

I'll probably look into this more later. If you want to see for yourself, the routine that decompresses the quicksave party data starts at 0x02059BA0 in RAM. The actual call to the decompression routine to decompress a name is at 0x02059DCC.

Posted (edited)

Thanks!

I can't now, but I'll have plenty of time tomorrow to plug this into my program to give everyone more power!

I could probably use this to edit more things. Eh, I'll find out tomorrow.

[Edit]

Plugged the function in, and it works like a charm! I'll clean up the code and hopefully release it. I might try to reverse it and add Player Name editing.

Edited by evandixon
Posted

Updated to v2.0, adding editing of held money and items in the Special Episode

Here's the status of everything else:

-Team Member 1 Name: Editable, in GUI. I'll do a little more research to be able to edit the Player Name and Partner Name soon.

-Stored items: Made a function to get all the item ID's. Haven't plugged it into the GUI yet. I'll need more time to read item amounts.

-Quicksave: There's 3 main sections of the save file. 1st two contain real data, the 3rd contains quicksave data. I noted the differences after resuming a quicksave, and these are it:

1EA28: 7: actual quicksave; 8: resumed quicksave

1EAF0 on: 0's for non-resumed quicksave

It'd be nice for someone to observe if it's any different for anyone else. Note that my program does not fix the quicksave checksum yet.

[Edit]

Oh, I forgot to add the credits... I'll get that next release. At least it's on the front post.

Posted (edited)

Researched Team Members a bit more. I think the 1st one starts at 83D9 and is 68 bytes and 2 bits long. I'll keep at it and hopefully be able to read it soon.

[update]

Not quite what's up there... Though it is if you only pay attention to the names. But the Pokémon ID is in different relative locations in the 1st two characters, with very different starting bits.

Edited by evandixon
Posted

Thanks for making this project evandixon. :) (version atm 2.2)

I noticed some bugs in your program. I don't know if it is just my save, but...

1. Every time I load my save, it doesn't clear the item amount in Stored Items. It adds 666 items each time.

2. My team name is EnigmaStar (I tried to come up with something.), but in the program it cuts off the 'r'.

3. It says my stored money is 1029, but it's 66565.

I think it's my save, so I uploaded it for you.

pmd-eos..sav

pmd-eos..sav

Posted
Thanks for making this project evandixon. :) (version atm 2.2)

I noticed some bugs in your program. I don't know if it is just my save, but...

1. Every time I load my save, it doesn't clear the item amount in Stored Items. It adds 666 items each time.

2. My team name is EnigmaStar (I tried to come up with something.), but in the program it cuts off the 'r'.

3. It says my stored money is 1029, but it's 66565.

I think it's my save, so I uploaded it for you.

Updated to v2.3, fixing these problems.

  • 2 weeks later...
  • 4 weeks later...
Posted
Finished researching for the day. If any non developer wants to help out, send me your save files so I can list what values are for what character in the team name. Start new games with specific 10 character sets perhaps, then immediately quicksave.

Grovyle91: Thank you for your help in figuring out the over complicated item structure. I'll spend the next few days developing it and hopefully it will be ready soon.

Everyone else: What other features do you want? It will give me something to look for later.

I wouldn't mind a feature where we can edit the character stats. (ie Lvl, health, moves, etc.)

EDIT (22nd of July, 2013 @ 6:32 pm): Whenever I try to save what I had changed, Sky Editor crashes. It's not corrupting my save file however.

Posted

EDIT (22nd of July, 2013 @ 6:32 pm): Whenever I try to save what I had changed, Sky Editor crashes. It's not corrupting my save file however.

What change did you make, and for what game (sky or time/darkness)?

As for your feature suggestion, I can start researching that Wednesday. Pokemon ID is inconsistent while Nickname isn't so I'm probably overlooking something. Maybe those stats will be easier.

  • 2 weeks later...
Posted

Thanks for sharing the code Evandixon. As I'm not very familiar with VB i had to recreate most functionality from scratch but your work saved me a ton of reverse engineering the game's save format. I did work out the way pokémon data is stored and created another editor: link. I hope it will be useful.

  • 2 months later...
Posted

Old reply, sorry about that. Anyway, I am using Explorers of Sky. I tried just a second ago on version marked as V2.6, I tried increasing my held money amount and it saved alright, but a pop up saying that "Sky Editor encountered a problem and needed to close" popped up.

  • 2 months later...
Posted (edited)

It only lets you edit the team name and view held items for Time/Darkness.

That reminds me, just a little more testing and I can release an update that allows item editing for T/D.

[Edit]

Here's a beta version with the new features.

https://skyeditor.codeplex.com/releases/view/116384

Big thanks to matix2267 for his easily managed code for interacting with bits. His source code was translated and added to Sky Editor, and the held item code was slightly modified for use in Time/Darkness.

Edited by evandixon
  • 3 weeks later...
Posted (edited)

Working on Red/Blue Rescue Team compatibility.

[Edit]

Turns out that the game doesn't have as good error handling as Explorers of Time/Darkness/Sky.

I tried playing as a Taillow (because birds are awesome) and this happened as soon as I was about to pose after accepting the Magnemite mission.

Pokemon Mystery Dungeon - Blue Rescue Team_02_10880.png

So, item editing? Yes.

Changing the team name to Big Edit? Yes.

Pokémon and move editing? Yes.

Playing the story as a different Pokémon? No.

Edited by evandixon
  • 1 month later...
Posted

Is it possible to edit the flag that allows you to deposit your partner for Explorers of Sky? It gets set after you beat the game, allowing you to either go solo or just not use your partner.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...