Zerea Posted December 23, 2017 Share Posted December 23, 2017 Well as a small break from the nonsense of Unk values, guess I'll bring up a problem that's been in the back of my mind for awhile now. I've noticed a strange quirk after a long time of changing levels/experience among my pokemon with save editors. I have no list of steps you can follow to 100% replicate this process, as it was only something I noticed when comparing the XP Level-Up table values to in-game values and continually found discrepancies over time across a large chunk of my pokemon. Essentially the game believes I require more XP to reach the next level than what is specified in each pokemon's respective table, and it is very adamant about needing this extra XP. But how can this be possible when the level-up table values are absolute? How can I have a level 73 Palkia with the same experience as a level 79 one but the game is absolutely certain mine should only be level 73? I've tried manually adding more experience and adjusting the level that I should be according to said table, and while that did produce a valid Level/XP ratio (as in no negative values), the excess experience fully carried through to the new level and it's only "pushed back" the problem to the new level. So I thought perhaps through some freak/glitch that one level had gotten kicked out of whack and a Joy Seed would correct the issue and get me back on track as the game itself would be calculating this and so surely it'd be using the level-up table right? .... right? Yeah that didn't fix it either. Somehow along the line of a long string of changing levels/experience up and down across multiple pokemon an XP "Buildup" is accrued and tacked on to the level-up table that simply refuses to go away. On top of this, the stat gains upon each level are entirely wrong now as well. The real strange part? It's affecting pokemon I haven't even touched with a save editor. Perfectly clean pokemon that have been sitting in storage untouched for weeks are now suddenly out of whack with their level-up tables as well. And perhaps even more interesting is that some of them start off requiring LESS experience to level up! My level 1 Chingling levels up to 2 with only 8 experience points (and it is actually 8, I checked), when the table denotes needing 28. I've also noticed another bizarre quirk in that an entire evolution line(Weedle) started sharing a level-up table and every single one required the same amount of experience to get to the next level, even though they all have distinct values. However another evolution line I checked (Oddish) was perfectly fine. So what gives? It seems perhaps obvious that the .skypkm portion of the save has gotten corrupted in some manner, but I guess the better question is why did this happen in the first place with simple shifting of levels and experience values? I will also mention that before I knew about the level-up tables I was guessing the level I would be at with a certain XP value. This led to the occasional popup of a negative value when I had the level set too low for the experience amount specified. I'd promptly correct it by bumping up the level, but was this causing irreversible damage since maybe the table was never designed to go into the negatives? Couldn't really decide if I should post this here or in the SkyEditor topic but this seemed like the problem goes far deeper than just the Editor and I'm fairly certain I could achieve similar results if I had done this same thing with another editor instead. Link to comment Share on other sites More sharing options...
psy_commando Posted December 23, 2017 Author Share Posted December 23, 2017 (edited) @Zerea Yeah, a lot of this I already knew. And I don't recommend removing move xml files when rebuilding them with statsutil right now, since its undefined behavior. I read your posts, but I'm not really sure what you were asking/saying? Sorry. 20 hours ago, End45 said: So I have been following this thread for a while and I have finally decided to register here and post something. First of all, thanks to Zerea for the move data spreadsheet, I've been trying to figure out the meaning of the unknown values for some time, and the data has been really useful to me. Now I will share my findings: Bitfield 2 Controls the way enemies use moves. It works the same way as bitfield 1: If a move has a value of 48, enemies will use it if there's a party member in the same room. You can try and give a value of 48 to some move like Tackle, enemies will try to hit you from far away (and obviously fail) For some reason certain moves have different values for bitfield 1 and 2 when they should be the same, for example Discharge has Bitfield 1 = 48 and Bitfield 2 = 64. Although it is a move which hits all enemies in the room, other pokemon will only try to attack you with it if you are up to 2 tiles away from them. Enemies (and I guess allies too) use the Unk6 value of a move as some sort of "weight". The larger this number is, the greater is the chance of a pokemon using it. A large value here means enemies will use the move constantly, and setting this to 0 causes pokemon not to use that specific move at all. Unk7 is that other accuracy value you were talking about. If the move misses due to this second accuracy, a different message appears (I think it's 'the move missed X' instead of 'the move failed to impact X') Unk10 is the number of times a move hits. 0 means it hits a random amount of times. Unk13 = 1 means the move is affected by Magic Coat Unk14 = 1 means the move is affected by Snatch If a move has an Unk15 value of 1, it can't be used under the muzzled status (caused by a silence orb). That's why biting moves all have Unk15 = 1 Unk17 = 1 means the move can be used while taunted Unk19 controls the message that comes up when the move is used. A value of 0 means default message, 1 would be the next string in the game ('Oh no! (Pokemon) chose (move)!') 2 = Regular attack message, and so on Orb-effect moves are easy to test, I just make a quicksave in a dungeon, edit the save file and add those moves to the team leader or the enemies: Famish: Decerases by 10 points the belly of all enemies in the room. Enemies/party members will act the same way as if they had eaten a hunger seed once they get affected 10 times by this move. Observer: Foe-Seal orb. Possess: Probably has something to do with the 'Possess Orb' from Mystery Dungeon 1. Using the move does nothing. Searchlight: Has the same effect as the luminous orb. Siesta: Same effect as the slumber orb. I hope that helped. Sorry if I made any grammar mistakes, English is not my first language. PS: @psy_commando, the sprite editor crashes for me every time I try to import/export sprite palletes (no matter if I save/load it as .txt or .pal). I don't have a github account to open an issue so I post it here. Great! Thanks for the info! I could reproduce the crash, but I'm not really sure what's going on.. I'll have to take a closer look. Seems like it crashes in release, but is completely fine in debug... Looks like its gonna be one of those bugs.. Edited December 23, 2017 by psy_commando Link to comment Share on other sites More sharing options...
Zerea Posted December 23, 2017 Share Posted December 23, 2017 (edited) Ah okay. To be quite honest I don't actually know what is or isn't already known, I just saw that many of the files on technical documentation had Unks sitting around and so I assumed that was a place to start looking to see if I could do some simple playing around with values and fill out the tables. So I kinda just went off on a journey on my own and probably did a lot of unnecessary testing and maybe just confirmed what was already known to be true or at least strongly suspected of being true. Basically all of my posts were just long-winded explanations of what I've been trying to look into and my process in doing so. I got sidetracked with my story telling in my excitement of "discovery" so that's why my posts are probably hard to follow. Sorry for kinda clogging that page with a lot of unnecessary explanation. I'll never be able to help with anything more complicated than playing around on the surface of the ROM, so I'm trying to poke at stuff and post my findings to see if any of it is remotely helpful. I hate having to let you alone do all the hard stuff so I'm trying to be useful in other areas to maybe make some things slightly easier for you in the future. But I'm not sure at this point where to even put my time into helping out. Let me know if there's any "grunt" work that could be done. Edited December 24, 2017 by Zerea Link to comment Share on other sites More sharing options...
psy_commando Posted December 24, 2017 Author Share Posted December 24, 2017 Well, I mean the unknowns are things I don't know about for the most part. But you seemed to be detailing the overall file structure of the waza_p file, and that's something I already know about and is pretty well documented in my notes and on the wiki. I appreciate the help however.There are still lots of things that weren't investigated yet though. If you wanna play around with script engine commands and figure out what they do, or mess with dungeon data, find reward lists offsets and etc.. There are still a lot of things like that. Link to comment Share on other sites More sharing options...
XModxGodX Posted December 26, 2017 Share Posted December 26, 2017 Is it possible to change the ingame button shortcuts? I love EoS but it's hard for me to get back to this game (and the rescue games for that matter) after playing Mystery Dungeon 3 and 4 because of the way they handled using moves so well. Even before that I tended to always use high PP moves like tackle and not much else until I ran out of PP because of how slow it is to use moves in this. Is it possible to make it so the moves work like the 3DS games? IE: L+X= Move 1 L+A=Move 2 L+Y= Move 3 L+B Move 4? Link to comment Share on other sites More sharing options...
psy_commando Posted December 30, 2017 Author Share Posted December 30, 2017 Well, it might be possible. But not without some ASM hacking. Right now I don't think we know enough to do it easily. But that could be a possibility. Link to comment Share on other sites More sharing options...
FabOulus1 Posted December 30, 2017 Share Posted December 30, 2017 There's just a problem with me: Where do you get Kaomado.kao files? And other types of files? I REALLY want to know, thanks... Link to comment Share on other sites More sharing options...
XModxGodX Posted December 30, 2017 Share Posted December 30, 2017 7 hours ago, psy_commando said: Well, it might be possible. But not without some ASM hacking. Right now I don't think we know enough to do it easily. But that could be a possibility. Yeah I figured as much. I mean it sounds fairly easy on paper but in execution I'd imagine it being a little more than changing a few lines of code. not to mention the already mapped commands to some of those combinations, the Linked moves would probably throw a wrench into the plan, the fact that you'd pretty much have to make custom hotkeys, the potential possibility that using a higher number move than you have might crash the game or something, and if you want it to look decent you'd have to change the UI to show the moves combinations when you hold L or something. (like the 3DS games) Hopefully it will happen someday though in some sort of quality of life hack or something... (maybe fix the sleeping animation for evolved player characters as well or something) Link to comment Share on other sites More sharing options...
psy_commando Posted December 31, 2017 Author Share Posted December 31, 2017 (edited) 5 hours ago, FabOulus1 said: There's just a problem with me: Where do you get Kaomado.kao files? And other types of files? I REALLY want to know, thanks... Well they're in the rom. You have to extract the rom, then look under data/FONT/kaomado.kao. You can use the batch scripts for doing that automatically too. Then you have to rebuild the rom with the modifications. Think of a ".nds" file as a zip file really. Except you need something else than winzip/7zip to extract/rebuild them. 5 hours ago, XModxGodX said: Yeah I figured as much. I mean it sounds fairly easy on paper but in execution I'd imagine it being a little more than changing a few lines of code. not to mention the already mapped commands to some of those combinations, the Linked moves would probably throw a wrench into the plan, the fact that you'd pretty much have to make custom hotkeys, the potential possibility that using a higher number move than you have might crash the game or something, and if you want it to look decent you'd have to change the UI to show the moves combinations when you hold L or something. (like the 3DS games) Hopefully it will happen someday though in some sort of quality of life hack or something... (maybe fix the sleeping animation for evolved player characters as well or something) Well, its mainly about finding the UI API functions in the code, then hooking in your modified code. Its not that hard, but it takes time and patience. Especially if you're doing it by hand instead of using something like Radare2 or IDA. And yeah, I plan to release a bunch of QoL asm hacks eventually. I got some done already on my github mainly to load map lists from file and etc.. In order to make modding easier. I'll probably dive back into that eventually, once I can fix my utilities and get to the big map editor I'm planning. You could already fix the sleeping animations though. You'd need to basically copy in the missing sleep anims it looks for from the dungeon sprites into the ground mode sprites for the specified pokemons, and it would work. Edited December 31, 2017 by psy_commando Link to comment Share on other sites More sharing options...
FabOulus1 Posted December 31, 2017 Share Posted December 31, 2017 20 hours ago, psy_commando said: Well they're in the rom. You have to extract the rom, then look under data/FONT/kaomado.kao. You can use the batch scripts for doing that automatically too. Then you have to rebuild the rom with the modifications. Think of a ".nds" file as a zip file really. Except you need something else than winzip/7zip to extract/rebuild them. Well, its mainly about finding the UI API functions in the code, then hooking in your modified code. Its not that hard, but it takes time and patience. Especially if you're doing it by hand instead of using something like Radare2 or IDA. And yeah, I plan to release a bunch of QoL asm hacks eventually. I got some done already on my github mainly to load map lists from file and etc.. In order to make modding easier. I'll probably dive back into that eventually, once I can fix my utilities and get to the big map editor I'm planning. You could already fix the sleeping animations though. You'd need to basically copy in the missing sleep anims it looks for from the dungeon sprites into the ground mode sprites for the specified pokemons, and it would work. Actually, I managed to do that on my own, however... I still can't run any program without a GUI in it... I've been trying to replace the Char family with Mario, and all I can do right now is replace the expressions. Any ideas how to run a non-GUI program? It just opens and instantly closes. Link to comment Share on other sites More sharing options...
psy_commando Posted January 1, 2018 Author Share Posted January 1, 2018 Use the batch files. Or SHIFT + right click with nothing selected on the background of the folder with the program in, and click on "open command prompt here" then look at the command lines examples in the readme. Link to comment Share on other sites More sharing options...
FabOulus1 Posted January 1, 2018 Share Posted January 1, 2018 24 minutes ago, psy_commando said: Use the batch files. Or SHIFT + right click with nothing selected on the background of the folder with the program in, and click on "open command prompt here" then look at the command lines examples in the readme. Alright, I'll check as soon as I can. Link to comment Share on other sites More sharing options...
FabOulus1 Posted January 3, 2018 Share Posted January 3, 2018 On 01/01/2018 at 2:28 AM, psy_commando said: Use the batch files. Or SHIFT + right click with nothing selected on the background of the folder with the program in, and click on "open command prompt here" then look at the command lines examples in the readme. Alright, it worked, but what exactly do I type for unpacking something with Gfxcrunch? Link to comment Share on other sites More sharing options...
psy_commando Posted January 3, 2018 Author Share Posted January 3, 2018 Just drag and drop the "m_ground", "m_attack", or "monster" on the gfxcrunch executable. It'll export the content to a folder. Then do your changes to the folder, and drag and drop the folder on the gfxcrunch executable. But I'm working on a sprite editor currently to supersede gfxcrunch. Link to comment Share on other sites More sharing options...
FabOulus1 Posted January 3, 2018 Share Posted January 3, 2018 1 minute ago, psy_commando said: Just drag and drop the "m_ground", "m_attack", or "monster" on the gfxcrunch executable. It'll export the content to a folder. Then do your changes to the folder, and drag and drop the folder on the gfxcrunch executable. But I'm working on a sprite editor currently to supersede gfxcrunch. Wait... Am I not supposed to export the file to have the three sprite files? Unless you meant the rom/sprite replacer? Link to comment Share on other sites More sharing options...
psy_commando Posted January 3, 2018 Author Share Posted January 3, 2018 (edited) I'm not sure what you mean? The sprites for each pokemon are stored inside "m_ground.bin", "m_attack.bin", and "monster.bin", under the data//MONSTER directory. Each of those 3 files contains one of the 3 parts of each pokemon's animations/sprite. All pokemons have an entry in all 3 files. m_ground contains the sprites on the overworld/ground mode. m_attack the attack and dungeon animations for the pokemons. And monster the enemy sprites, which are just stripped down versions of the m_attack sprites to save memory on enemy pokemons. Edited January 4, 2018 by psy_commando Link to comment Share on other sites More sharing options...
FabOulus1 Posted January 4, 2018 Share Posted January 4, 2018 2 minutes ago, psy_commando said: I'm not sure what you mean? The sprites for each pokemon are stored inside "m_ground.bin", "m_attack.bin", and "monster.bin", under the data//MONSTER directory. Each of those 3 files contains the 3 parts of each pokemon's animations/sprite. All pokemons have an entry in all 3 files. m_ground contains the sprites on the overworld/ground mode. m_attack the attack and dungeon animations for the pokemons. And monster the enemy sprites, which are just stripped down versions of the m_attack sprites to save memory on enemy pokemons. Oops. Nevermind. Thanks. Link to comment Share on other sites More sharing options...
FabOulus1 Posted January 4, 2018 Share Posted January 4, 2018 4 minutes ago, psy_commando said: I'm not sure what you mean? The sprites for each pokemon are stored inside "m_ground.bin", "m_attack.bin", and "monster.bin", under the data//MONSTER directory. Each of those 3 files contains the 3 parts of each pokemon's animations/sprite. All pokemons have an entry in all 3 files. m_ground contains the sprites on the overworld/ground mode. m_attack the attack and dungeon animations for the pokemons. And monster the enemy sprites, which are just stripped down versions of the m_attack sprites to save memory on enemy pokemons. Oh, actually, it still doesn't seem to work... When I drag it to the EXE, it doesn't extract it. Link to comment Share on other sites More sharing options...
psy_commando Posted January 4, 2018 Author Share Posted January 4, 2018 Try putting the exe in the same folder as the sprite file Link to comment Share on other sites More sharing options...
FabOulus1 Posted January 4, 2018 Share Posted January 4, 2018 2 minutes ago, psy_commando said: Try putting the exe in the same folder as the sprite file Yes! It worked! Thanks! 1 Link to comment Share on other sites More sharing options...
JordantheDewott Posted January 22, 2018 Share Posted January 22, 2018 (edited) I don't know how much has been discovered and just not updated and all on the research page, but I've been doing a lot of research on the current serialized data that results from the PMD stat tool so I can compile a lot of data for a thing I'm making for people to utilize. Currently, I've found out a few things I didn't see on the documentation for Pokemon (monster.md): For evolutions, 0x04 seems to point towards a needed Pokemon recruit. The only Pokemon that seems to have this is Mantine, and Param1 points towards 250, which is the INDEX for Remoraid (NOT the Dex Id or Entity Id). PreEvoIndex points towards 500, the Index for Mantyke. Shedinja seems to have a separate script for it to be added to the recruits, since the evolution value is 0, None, but the PreEvoIndex is 318 for Nincada. I'm doing a lot of serialization for all the data in PMD, and I'm not quite done but I thought I would drop some of the info I found along the way here. Thanks soooo much for this research though, it makes my project much easier to complete Edited January 22, 2018 by JordantheDewott Added PreEvoIndex info for first bullet Link to comment Share on other sites More sharing options...
psy_commando Posted January 23, 2018 Author Share Posted January 23, 2018 Well, 0x4 in a pokemon's entry changes its displayed dex id. I don't think it has anything to do with evolution. And that's possible. I know that shaymin is also another special case that's handled in the code. And glad it was useful! ^^ Link to comment Share on other sites More sharing options...
JordantheDewott Posted January 24, 2018 Share Posted January 24, 2018 (edited) 6 hours ago, psy_commando said: Well, 0x4 in a pokemon's entry changes its displayed dex id. I don't think it has anything to do with evolution. Setting EvolutionMethod to 0x4 changes its displayed dex id? That's odd. I thought I was getting somewhere cause all of the rest of the evo data seemed to match correctly for the Mantyke/Mantine line. EDIT: I see now, I was unclear in my original post. Quote For evolutions, 0x04 seems to point towards a needed Pokemon recruit. The only Pokemon that seems to have this is Mantine, and Param1 points towards 250, which is the INDEX for Remoraid (NOT the Dex Id or Entity Id). PreEvoIndex points towards 500, the Index for Mantyke. I was talking about setting EvolutionMethod (0x0A) to 0x04, which is Unknown on the documentation. Sorry for the confusion. Edited January 24, 2018 by JordantheDewott Link to comment Share on other sites More sharing options...
pentrep Posted February 4, 2018 Share Posted February 4, 2018 So I'm new here but would it be possible to use this on GTI? I'm really wanting to increase starter choices. Link to comment Share on other sites More sharing options...
psy_commando Posted February 4, 2018 Author Share Posted February 4, 2018 Nope, GTI works very differently inside. There's stuff in the works for it though! Both PSMD and GTI are very similar, so mod tools for one will most likely work for the other. @evandixon got some tools working for those too! Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now