kleenexfeu Posted March 30, 2015 Share Posted March 30, 2015 Ok I've done what you said, and I've made progress lol But there still is a problem, perhaps because I haven't type the good path, sorry if I've misunderstood, english is not my native language x) So, I've put waza_p, my rom and ppm_statsutil together to make it simple, I've writed "ppmd_statsutil.exe -e -mv C:/Utilisateurs/Public/Raph.../ppmd_statsutil_0_1 C:/Utilisateurs.../ppmd_statsutil_0_1/newdatamv Edit : I've tried with different things in the end of the path like .../wazap_p.bin , ../Myrom, I have the same error I'me pretty sure I've done something wrong but I don't know what ^^ I have this error "Exception : Error while parsing "C/Users/Public/...." as parameter "input path" Oh and thank's to you two, I'm learning how to use my computer just because I want to hack PMD2, great Link to comment Share on other sites More sharing options...
psy_commando Posted March 30, 2015 Author Share Posted March 30, 2015 Alright, I made an update, and now you can just drag and drop the rom data folder onto the executable and it will export everything it can. For importing everything you just need to specify the folder where the data was exported to as first parameter, and the path to the exported rom's data directory! https://github.com/PsyCommando/ppmdu/releases/download/ppmd_statsutil_0.11/ppmd_statsutil_0_11.zip I also, removed the progress indicator and got a big speed up! Ok I've done what you said, and I've made progress lol But there still is a problem, perhaps because I haven't type the good path, sorry if I've misunderstood, english is not my native language x) So, I've put waza_p, my rom and ppm_statsutil together to make it simple, I've writed "ppmd_statsutil.exe -e -mv C:/Utilisateurs/Public/Raph.../ppmd_statsutil_0_1 C:/Utilisateurs.../ppmd_statsutil_0_1/newdatamv Edit : I've tried with different things in the end of the path like .../wazap_p.bin , ../Myrom, I have the same error I'me pretty sure I've done something wrong but I don't know what ^^ I have this error "Exception : Error while parsing "C/Users/Public/...." as parameter "input path" Oh and thank's to you two, I'm learning how to use my computer just because I want to hack PMD2, great Have you extracted the rom first ? And if you did, you have to make sure you put the path to the "data"/root directory of the rom, that's the directory that contains the "MESSAGE" and "BALANCE" directories. Link to comment Share on other sites More sharing options...
kleenexfeu Posted March 31, 2015 Share Posted March 31, 2015 When you say extracted you mean a .nds file ? In this case yes, I did. I exctracted the waza_p.bin too, with nitro explorer. I tried exportations command with C:/.../PMD2/Root/BALANCE/waza_p.bin, C:/.../PMD2/Root/BALANCE, C:/.../PMD2/Root, C:/.../PMD2, or just PMD2/Root/BALANCE/waza_p.bin, PMD2/Root/BALANCE and so on. Nothing works. But perhaps there's something wrong with my computer because even if I download the 0.1.1 version, the drag and drop doesn't work either EDIT : I had always the same error "Error while parsing...", and it's strange because whatever the path I've put, the same error appears, as if every single paths I tried was wrong. Then I tried Ordinateur/C:/... and I had "<!>-POCO exception : Exception<123> mypath" EDIT 2 : Progress (I hope) I have the error "Exception : Cannot determine the desired operation" when i writed ppmd11.exe -e -mv inputpath outputpath EDIT 3 : My inputpath was C:\Users\Public\ppmd11\PMD2.nds, and if I put C:\Users\Public\ppmd11\PMD2.nds\BALANCE I have Error parsing again. Sorry to be a dumb, whatever I try it doesn't work x) Link to comment Share on other sites More sharing options...
psy_commando Posted March 31, 2015 Author Share Posted March 31, 2015 Alright, first, you're not dumb, you just don't seem very used to this way of doing things. Which is understandable, because literally every utilities to hack NDS games try to operate on the rom directly(Which isn't really the best idea especially if you're editing a lot of things in the rom, using several different tools, you'd have to rebuild the rom everytime with every single tools. If there was a way to load a rom image as a file system, then that would be leagues better, but nobody has done that AFAIK) When I said extracted, I meant you can't use a NDS file directly, you have to extract the file system as-is to the disk. The tool needs to have the whole directory structure of the rom intact to do anything, because it checks the files present to figure out if its EoS or EoT/D, and then it needs to load several files to assemble the pokemon and move data, plus it needs to load the game strings. The logic being that, its way easier for everyone to just use the rom directory structure to find where everything is located, rather than forcing the user to have to specify the location of all those files manually. Don't use nitro explorer though, it doesn't seem to be able to extract the whole rom and rebuild it. Try dslazy for now, it uses NDS tool and works pretty well : http://filetrip.net/nds-downloads/utilities/download-dsbuff-v1-final-f3100.html It always extract the rom data into the directory its in, in a sub-directory named NDS_UNPACK. So you'll want to put as first argument the path to the dslazy directory, followed with this : "NDS_UNPACK/data" It will give something like this: "C:/somedirectory/dslazy/NDS_UNPACK/data" Also, when specifying a path to a command-line program, always be sure to enclose paths in-between quotes, that will ensure that any spaces in the path won't confuse the system's argument parser. Also, always replace any \ with / Link to comment Share on other sites More sharing options...
kleenexfeu Posted March 31, 2015 Share Posted March 31, 2015 Thank's god it works ! But it's you that I have to say THANK YOU ! There's one last thing, how can I edit the XML file ? EDIT : Nevermind, I've just open it with wordpad and it's okay. THANK YOU again ! You're great ! Link to comment Share on other sites More sharing options...
psy_commando Posted March 31, 2015 Author Share Posted March 31, 2015 Thank's god it works ! But it's you that I have to say THANK YOU ! There's one last thing, how can I edit the XML file ? Use any text editor/xml editor you want. I recommend using notepad++, it highlights everything and make it all easier to read. If you've never used XML before think of it like tags in a forum, or HTML tags. Its a set of tags, that can wrap other tags or a value. EDIT: Alright then, and no problems Link to comment Share on other sites More sharing options...
kleenexfeu Posted March 31, 2015 Share Posted March 31, 2015 I guess it's because the useless data are not recompiled that the size of my ROM is now 86 Mo instead of 128, does it ? It works perfectly but it's weird so I give you feedback anyways ^^ EDIT : Is it possible that the AR codes or editing RAM won't work anymore because of the changement of the file's size ? Link to comment Share on other sites More sharing options...
Anty-Lemon Posted March 31, 2015 Share Posted March 31, 2015 EDIT : Is it possible that the AR codes or editing RAM won't work anymore because of the changement of the file's size ? Don't worry about it, your codes are fine. It would be an accomplishment to alter move data so well that you can't write to RAM anymore Link to comment Share on other sites More sharing options...
psy_commando Posted March 31, 2015 Author Share Posted March 31, 2015 I guess it's because the useless data are not recompiled that the size of my ROM is now 86 Mo instead of 128, does it ? It works perfectly but it's weird so I give you feedback anyways ^^ EDIT : Is it possible that the AR codes or editing RAM won't work anymore because of the changement of the file's size ? NDSTools shrinks the rom by default, it leaves out all the padding bytes from the rom when re-building it. That might be an issue on the actual hardware, but not on emulators AFAIK. Don't worry about it, your codes are fine. It would be an accomplishment to alter move data so well that you can't write to RAM anymore Actually, I noticed the same issue while testing. Not sure what's going on with that exactly I think it might have to do with modifying the length of a text string, like Pokemon names or category string. Its odd though, because I'd assume they wouldn't load all game strings in memory at all time, especially since the whole thing is around a mega byte! Link to comment Share on other sites More sharing options...
kleenexfeu Posted April 1, 2015 Share Posted April 1, 2015 Hi, I think I found an issue, I don't know whether it's what you was talking about though I've changed the $$$'s name attack for Judgment, made 2 - 3 edits (power, accuracy) and everything was working fine, I even completed several dungeons. But at some point of the mystery jungle (I think it would be any other) my game froze Thankfully I made a savestate, so I reboot and retry, froze again. I tried like 10 times and it's always the same floor (5th), with cloudy-weather, always after 5 - 10 steps. Hope it can help EDIT : I used the disassembly to see what' happened (even if I don't understand precisely how it works) Usually in the dungeon (I would say 99 frames per 100) : R0 to R12 are 00 00 00 00, except for R1 which sometimes is 00 00 00 1F SP = 02 2B 98 78 LR = 02 07 9C 10 PC = 02 07 9C 10 When the game freeze R0 = CA 70 22 6C (and becomes CF 00 14 A8 if I let the game playing) RA = E3 9A C6 86 (becomes E5 E2 BF A4) R2 = 0A 00 00 01 R6 = 00 46 C6 86 (and becomes 02 8E BF A4) R10 = 02 34 C1 D8 R11 = 00 00 00 01 R12 = 02 24 67 3C SP = 02 7E 36 DC (becomes 02 7E 3F 7C) LR = 02 01 AB 78 (becomes 01 FF 80 C8) PC = 01 FF 80 C4 (and becomes FF FF 14 90) R7, R8 and R11 becomes 00 00 00 01 Everething else is 00 00 00 00 And it's weird because when I writed this things, the game has to wait, and then the freezing was far later, I mean the end of the dungeon for exemple I don't know if it means something or if it can help but it's all I have ^^ Link to comment Share on other sites More sharing options...
psy_commando Posted April 1, 2015 Author Share Posted April 1, 2015 Did you use any cheats at all ? Even if they used to work ? Please, double check your cheat list, because that's really important. What emulator, and what version ? What did you change exactly ? I'll need the move's ID, and the fields you changed, along with the value you set them to. (You could also just paste the XML into a CODE tag in your post or on pastebin) Don't bother writing the state of the registers. Registers can contain anything at any given time, so without context its useless. Link to comment Share on other sites More sharing options...
kleenexfeu Posted April 1, 2015 Share Posted April 1, 2015 (edited) I used cheat in my party before. Like rise IQ or rise stats, I used it one or twice. I also used RAM modification like move slop, PP slot, or fulfill belly. But that's not the first time I complete the game (maybe 3 or 4) and nothing like this happened before. But since I'm not very skilled to use your tool, the problem might came from me (and I hope it does). The thing is I've seen your post about the length of pokemon names, I thought it may be connected. I changed the move 467, wich is originaly called $$$ (but it's the judgment attack), I renamed it Judgment, wich is longer. Here is the only changes : <Name>Judgment</Name> <Description>[M:D1]$$$\n\n\n\nBasic Information:[CLUM_SET:100][M:B20]</Description> </Strings> <!--Move data from waza_p.bin--> <Data> <BasePower>80</BasePower> <Type>1</Type> <Category>1</Category> <Unk4>96</Unk4> <Unk5>48</Unk5> <BasePP>7</BasePP> <Unk6>30</Unk6> <Unk7>125</Unk7> <Accuracy>255</Accuracy> <Unk9>75</Unk9> <Unk10>1</Unk10> <Unk11>99</Unk11> <Unk12>55</Unk12> <Unk13>0</Unk13> <Unk14>0</Unk14> <Unk15>0</Unk15> <Unk16>1</Unk16> <Unk17>1</Unk17> <Unk18>15</Unk18> <MoveID>467</MoveID> <Unk19>0</Unk19> I'll edit when I know how to use spoiler. My Emulator is Desmume 9.9 -JIT x64, I am under windows 7, 64 bits. Again, I hope it's because of my cheat, but I usually use MANY cheats, and this time I only used a couple of them (and not the biggest). If you sure the freeze doesn't come from your tool, don't bother with it, I will survive x) EDIT : I also changed mismagius IQ groupe and his base stats, and used sky Editor to make it my leader, I mean, the principle character <BaseStats> <HP>46</HP> <Attack>14</Attack> <SpAttack>25</SpAttack> <Defense>15</Defense> <SpDefense>15</SpDefense> EDIT 2 : I'm going to start a new party but with the same rom and without cheat (except the use of sky editor, at least to have judgment). EDIT 3 : Now I'm sure, Judgment take the type of the user, and if user is unknown type, the damage are tremendeous, like 85000000, don't know why (tested it on another ROM). EDIT 4 : I started a new adventure, the only thing I changed was the move judgment on my shinx. I made 7 - 8 dungeon, and there in the waterfall cave (or whatever) I used charge (power up electric move + up def spe) several times, it worked fine. But just now it begun to charge electric move again and again, it doesn't stop, I'm not able to move or make anything. Perhaps the only problem is changing the length of the move as you said earlier. I'll test it later. Edited April 2, 2015 by kleenexfeu Link to comment Share on other sites More sharing options...
psy_commando Posted April 2, 2015 Author Share Posted April 2, 2015 The cheats are a problem. When I did some testing, the party pokemon data was moved around in memory, possibly due to either modifying the text strings, or adding / removing moves from a pokemon's move list. The cheat didn't have the intended effect and were writing in a now random memory spot. Every "cheat code" you enter in desmume's cheat menu just writes a value in memory at a certain address, which works fine for the base game, but since you basically shifted things in memory, the cheat is telling the emulator to write in memory at a location that isn't what it should be anymore. And, a lot of xml tags are missing in what you posted, did you remove those ? And I checked move #467, and you seem to have changed a lot of the unknown values. Here's the original I got: <?xml version="1.0"?> <Move> <!--Pokemon Mystery Dungeon: Explorers of Sky move data--> <!--In-game text--> <Strings> <Name>$$$</Name> <Description>[M:D1]$$$\n\n\n\nBasic Information:[CLUM_SET:100][M:B20]</Description> </Strings> <!--Move data from waza_p.bin--> <Data> <BasePower>20</BasePower> <Type>1</Type> <Category>1</Category> <Unk4>48</Unk4> <Unk5>48</Unk5> <BasePP>7</BasePP> <Unk6>30</Unk6> <Unk7>125</Unk7> <Accuracy>80</Accuracy> <Unk9>75</Unk9> <Unk10>1</Unk10> <Unk11>99</Unk11> <Unk12>8</Unk12> <Unk13>0</Unk13> <Unk14>0</Unk14> <Unk15>0</Unk15> <Unk16>1</Unk16> <Unk17>1</Unk17> <Unk18>15</Unk18> <MoveID>467</MoveID> <Unk19>0</Unk19> </Data> <!--Move data from waza_p2.bin--> <Data> <BasePower>20</BasePower> <Type>1</Type> <Category>1</Category> <Unk4>48</Unk4> <Unk5>48</Unk5> <BasePP>7</BasePP> <Unk6>30</Unk6> <Unk7>125</Unk7> <Accuracy>80</Accuracy> <Unk9>75</Unk9> <Unk10>1</Unk10> <Unk11>99</Unk11> <Unk12>8</Unk12> <Unk13>0</Unk13> <Unk14>0</Unk14> <Unk15>0</Unk15> <Unk16>1</Unk16> <Unk17>1</Unk17> <Unk18>15</Unk18> <MoveID>467</MoveID> <Unk19>0</Unk19> </Data> </Move> Setting the accuracy to 255 is probably already not a good idea, given most entries in the game never exceed 125. I suspect the value is signed, which would mean you basically gave the move -1 accuracy. I'm not sure what setting Unk4 to 96 does, the only ones I tested with success are 16, 32, 48, and 115. So I'm not sure why you changed it from 48 to 96. And I'm not sure why you changed Unk12 from 8 to 55. And keep in mind that, the stats aren't calculated the same way as in the main series games. Stats goes from 0 to 255 in every categories except HPs. Anyways, try setting those 3 values I mentioned above to their default, and see how it goes. I'll try to replicate this on my end. Also, can you take a screenshot of the damage done ? Because, the value you mentioned is higher than both the maximum values that a 16 bits integer can contain... 65535 when unsigned, or 32767 to -32767 when signed. And don't worry about it, it really helps a lot when people actually tell me about issues they're having, no matter how much they know their stuff. With that I can make the whole thing less confusing, and fix bugs that I could never find on my own if everyone would remain silent. Link to comment Share on other sites More sharing options...
kleenexfeu Posted April 3, 2015 Share Posted April 3, 2015 (edited) The thing on XML I didn't post weren't changed, that's why I didn't post these 96 make hitting the whole floor (I've just looked at perish song to know it) 255 make the move never miss (as in the main series, actually in the mains series there is a "move effect" that permit this but just putting accuracy at 255 makes the same thing) EDIT : Ok I just understood what you said. But I don't think it's signed since it always hit, perhaps it's simply 125 or more = always hit. But yeah it was not a good idea to set it to 255 without even check the other moves x) unk12 is critical hit ratio but I confess I took a random value higher than 8 (and 55 makes it always critical by the way) Next time I'll post a before/after to make it more practical to analyze ^^ The high damages was done when I setted my pokemon in unknown type ( 0x12 ) and I didn't writed something accurate, but it was just huge, very huge, I'll try to post a screenshot For the cheat I understand but, this time I've just used it to make shinx have my "custum" attack so.. Do you think the problem may comes from it ? Oh and one thing, If you don't understand what I mean or if it isn't clear, just tell me please. My english REALLY need to be improved, as you can see, so.. I understand if you don't understand Just tell me and I'll make my best for making better explanations EDIT : Ok I have a screenshot : If it's not an attack worthy of Arceus... Weird, it says 1876.... damage, but we can see that Kabuto taking "only" 30232. Surely something to do with what you said EDIT 2 : The other attacks make usual damage, perhaps it's pokemon neutral + attack neutral that make something that huge EDIT 3 : Ok the neutral type is cheated . The damages are enormous no matter the type of the user. I put quick attack to neutral type and the damages become suddenly huge. Something weird : when I change the type of the attack, (quick attack for exemple) it stills display "Normal" type. But if I change accuracy to 255, it displays "Always hit". Is it because there is a check on the move for accuracy and not for the type ? EDIT 4 : Oh and it wasn't exactly cheats. I edited RAM, I don't know if it changes something Edited April 3, 2015 by kleenexfeu Link to comment Share on other sites More sharing options...
Anty-Lemon Posted April 3, 2015 Share Posted April 3, 2015 Weird, it says 1876.... damage, but we can see that Kabuto taking "only" 30232. Surely something to do with what you said Yep. 17790488 truncated into a 16-bit int is 30232 Link to comment Share on other sites More sharing options...
kleenexfeu Posted April 3, 2015 Share Posted April 3, 2015 Here is the screenshot : [ATTACH=CONFIG]12229[/ATTACH] The one wich is selected is the only one I used for my last party (the one with charge's bug) Link to comment Share on other sites More sharing options...
psy_commando Posted April 3, 2015 Author Share Posted April 3, 2015 unk12 is critical hit ratio but I confess I took a random value higher than 8 (and 55 makes it always critical by the way) Next time I'll post a before/after to make it more practical to analyze ^^ I'm really not sure unk12 is the critical hit ratio. I mean, I just thought it matched the value of the critical field in BRT most of the time, but I'm not sure it only does critical hit ratio.. setting the value to either signed max, or unsigned max doesn't seem to let you land criticals every times, which is kinda puzzling.. Just by curiosity, have you tried any higher values than 55 ? For example, look at this video : https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/Test_IronTail_BasePower0_TypeGrass_PP255_Acc124_crit255.avi I changed the type of iron tail to grass, set the base power to 0, set accuracy to 124 and set unk12 to 255. Crit would not happen all the time. 96 make hitting the whole floor (I've just looked at perish song to know it) That's interesting.. That bitflag has a different effects with each different bit toggled on. 0011 0000 => 48 (Hit every enemies in the room) 0110 0000 => 96 And they both share a common bit. And then if you look at this: 0010 0000 => 32 (Hit every enemy 360 deg around user) ..it seems like bit 6 has something to do with hitting anything within the area of effect.. But this brings the question, what's the difference between 96 and 48 then? Because I've seen healing and status move have much different values than offensive move do, and I'm not sure why. Like, 115 for example, was taken from a boosting move for the user. 0111 0011 => 115 (Hit user) This makes even offensive moves hit yourself. And it has also bit 6 toggled on.. And the lower nybble contains a value too. The high damages was done when I setted my pokemon in unknown type ( 0x12 ) and I didn't writed something accurate, but it was just huge, very huge, I'll try to post a screenshot You know, I'm not 100% sure Neutral is a legit type It looks to me its only a string, and possibly an enum value, but there is probably no data for it. Its possible the game tries to read the damage multiplier outside the type table, and it just multiply the damage with whatever it read there.. Which would explains the insanely high values! (Now, I wonder if we can't use this to find the type effectiveness table or the type data table?) For the cheat I understand but, this time I've just used it to make shinx have my "custum" attack so.. Do you think the problem may comes from it ? I can't really tell.. Have you tried just running the game normally, without the cheat, and without having the move on your shinx ? Or maybe you could try modifying a more common move instead, restoring move #467 to default, and see what happens ? Oh and one thing, If you don't understand what I mean or if it isn't clear, just tell me please. My english REALLY need to be improved, as you can see, so.. I understand if you don't understand Just tell me and I'll make my best for making better explanations Its all good. ( Tu parlerais pas Français par hasard ? Il me semble que j'ai lu le mot "Ordinateur" plus haut ) EDIT : Ok I have a screenshot : If it's not an attack worthy of Arceus... Weird, it says 1876.... damage, but we can see that Kabuto taking "only" 30232. Surely something to do with what you said EDIT 2 : The other attacks make usual damage, perhaps it's pokemon neutral + attack neutral that make something that huge I guess Neutral type is probably not really implemented. Its probably just a string. I had no idea it was possible to get that much damage though. during testing, setting the field at a int16's limit values only resulted in these: https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/Test_IronTail_BasePower32767_TypeGrass_PP66.avi https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/Test_IronTail_BasePower-32767_TypeGrass_PP66.avi EDIT 3 : Ok the neutral type is cheated . The damages are enormous no matter the type of the user. I put quick attack to neutral type and the damages become suddenly huge. Something weird : when I change the type of the attack, (quick attack for exemple) it stills display "Normal" type. But if I change accuracy to 255, it displays "Always hit". Is it because there is a check on the move for accuracy and not for the type ? EDIT 4 : Oh and it wasn't exactly cheats. I edited RAM, I don't know if it changes something The type and whether the attack is physical or not is written in the description string of the move, its not replaced at runtime like the rest for some really weird reason.. So if you wanted to change the type that's displayed in the description, you need to modify the description string in the XML data directly. That was really headache inducing when I was trying to figure out if the move data contained the actual type of the move.. If you manually edited the ram without using a pre-made cheat, and you know what you're doing, it should be fine. Btw, do you have any more hints on how to reproduce the bugs you've been having ? Yep. 17790488 truncated into a 16-bit int is 30232 That's so weird... Why compute the damage value as a 32bits integer, before truncating it like that ? I wonder if the NDS9 has some kind of overflow protection... Link to comment Share on other sites More sharing options...
kleenexfeu Posted April 3, 2015 Share Posted April 3, 2015 I'm really not sure unk12 is the critical hit ratio. I mean, I just thought it matched the value of the critical field in BRT most of the time, but I'm not sure it only does critical hit ratio.. setting the value to either signed max, or unsigned max doesn't seem to let you land criticals every times, which is kinda puzzling.. Just by curiosity, have you tried any higher values than 55 ?For example, look at this video : https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/Test_IronTail_BasePower0_TypeGrass_PP255_Acc124_crit255.avi I changed the type of iron tail to grass, set the base power to 0, set accuracy to 124 and set unk12 to 255. Crit would not happen all the time. I didn't ever even think to look hexa number as binary number...Good idea x). So I can't answer your question but I learned when I was looking in Pok conquest NARC files that putting the highest or lowest values was almost never good. I was gropping and I've always make what I wanted even if it took awhile. Here is the same thing. I seen your work, how to interpret data and I thought "Mhhh, good, what if I set this value in this place ?" And from what I seen in other game, I think I'm not able to find out why exactly that works how it works. The way the moves (and other stuffs) are coded is not that simple, I can only make tests as of yet ^^ That's interesting.. That bitflag has a different effects with each different bit toggled on. 0011 0000 => 48 (Hit every enemies in the room) 0110 0000 => 96 And they both share a common bit. And then if you look at this: 0010 0000 => 32 (Hit every enemy 360 deg around user) ..it seems like bit 6 has something to do with hitting anything within the area of effect.. But this brings the question, what's the difference between 96 and 48 then? Because I've seen healing and status move have much different values than offensive move do, and I'm not sure why. Like, 115 for example, was taken from a boosting move for the user. 0111 0011 => 115 (Hit user) This makes even offensive moves hit yourself. And it has also bit 6 toggled on.. And the lower nybble contains a value too. Same answer as above ^^ I know (more or less) what 32/48/96/115 do, so I'll use it x) You know, I'm not 100% sure Neutral is a legit type It looks to me its only a string, and possibly an enum value, but there is probably no data for it.Its possible the game tries to read the damage multiplier outside the type table, and it just multiply the damage with whatever it read there.. Which would explains the insanely high values! Makes sense x) (Now, I wonder if we can't use this to find the type effectiveness table or the type data table?) If you have a boring way to find it out, perhaps I can help you, otherwise... Don't know x) I can't really tell.. Have you tried just running the game normally, without the cheat, and without having the move on your shinx ?Or maybe you could try modifying a more common move instead, restoring move #467 to default, and see what happens ? I'll try do redo some test to compare the results (if I change the name, if I don't, with or without cheat, and so on..) Its all good. ( Tu parlerais pas Français par hasard ? Il me semble que j'ai lu le mot "Ordinateur" plus haut ) Yes I'm french, I didn't notice that you come from Quebec, it would be a great help because sometimes I feel like I'm not clear x) I guess Neutral type is probably not really implemented. Its probably just a string.I had no idea it was possible to get that much damage though. during testing, setting the field at a int16's limit values only resulted in these: https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/Test_IronTail_BasePower32767_TypeGrass_PP66.avi https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/Test_IronTail_BasePower-32767_TypeGrass_PP66.avi More test to do The type and whether the attack is physical or not is written in the description string of the move, its not replaced at runtime like the rest for some really weird reason.. So if you wanted to change the type that's displayed in the description, you need to modify the description string in the XML data directly.That was really headache inducing when I was trying to figure out if the move data contained the actual type of the move.. It had to be so funny If you manually edited the ram without using a pre-made cheat, and you know what you're doing, it should be fine.Btw, do you have any more hints on how to reproduce the bugs you've been having ? More test x) That's so weird... Why compute the damage value as a 32bits integer, before truncating it like that ? I wonder if the NDS9 has some kind of overflow protection... I honestly don't know. And I'm wondering what are the effective damage ? 30232 or 17 XXX XXX ? Because if we suppose that the damages are something like (in binary) 10000000000000000000000000 or something, the foe would take 0 damage ? XXX XXX XXX damages ? 0 + XXX XXX XXX damages ? Something else ? Have fun with these questions x) Link to comment Share on other sites More sharing options...
Jellynater Posted April 6, 2015 Share Posted April 6, 2015 For example, look at this video : https://dl.dropboxusercontent.com/u/13343993/my_pmd_research_files/Test_IronTail_BasePower0_TypeGrass_PP255_Acc124_crit255.avi I changed the type of iron tail to grass, set the base power to 0, set accuracy to 124 and set unk12 to 255. Crit would not happen all the time. Shellder and Kabuto have Shell/Battle Armor as an ability, making them immune to critical hits. Mt. Bristle would be a better dungeon to test crit chance changes in, as no pokemon there has Lucky Chant or the previously mentioned abilities. Link to comment Share on other sites More sharing options...
psy_commando Posted April 6, 2015 Author Share Posted April 6, 2015 Shellder and Kabuto have Shell/Battle Armor as an ability, making them immune to critical hits. Mt. Bristle would be a better dungeon to test crit chance changes in, as no pokemon there has Lucky Chant or the previously mentioned abilities. Yep, I realized that later on. But I still posted the video because corsola and shellos don't have that ability. And if you look at the vid for a bit, you'll see I hit a few of them and it resulted in no crit. Link to comment Share on other sites More sharing options...
psy_commando Posted April 15, 2015 Author Share Posted April 15, 2015 So kleenexfeu, any more details on the issue ? I can't seem to be able to replicate the issue on my end.. Link to comment Share on other sites More sharing options...
kleenexfeu Posted April 16, 2015 Share Posted April 16, 2015 This time I just put 125 accuracy, 80 power, 96 for unknown 4 if I remember (make hit the whole floor), didn't change the name, but I had to use ram editing to use the move. Huge bug, my screen turns greeny + freeze. Don't know what I'm doing wrong, all this values have already been used by the game. Except for the power perhaps. It's interesting because it's another kind of freeze EDIT : Seems to be the RAM editing that cause freezing. Perhaps because the move is not "legal" or perhaps because of the editing of the move. Don't know. But when I don't edit RAM it seems to works fine Link to comment Share on other sites More sharing options...
psy_commando Posted April 16, 2015 Author Share Posted April 16, 2015 Do you mean that it works fine when you edit another move that your pokemon learns naturally, or do you mean it works fine when you play the game with the modified move, but without giving it to your pokemon ? Also, you do not need to edit the ram to give your poke the move. You can just replace its first move ID in its level-up move list with the move ID you want to try out. EDIT: Also, on the topic of research and the progress with the tools, I found out that the pokemon data in Explorers of Time/Darkness is stored in a slightly different format than in EoS, so that's gonna take a while to figure out.. EoT/D pokemon data is 76 bytes per entry, while EoS is 68.. I might just drop EoT/D support for now, and actually get some more progress done on other areas of the game for EoS.. There are so many quirks that I have to adapt the code for to support those, and frankly, I'm not too motivated to do all that research twice, especially since I still got a lot of trial and error to do to figure out the missing field names for the pokemon and item data.. And I don't really see why someone would make a romhack of Explorers of Time/Darkness over Explorers of Sky anyways.. Link to comment Share on other sites More sharing options...
kleenexfeu Posted April 16, 2015 Share Posted April 16, 2015 Do you mean that it works fine when you edit another move that your pokemon learns naturally, or do you mean it works fine when you play the game with the modified move, but without giving it to your pokemon ?Also, you do not need to edit the ram to give your poke the move. You can just replace its first move ID in its level-up move list with the move ID you want to try out. Second one. And yes I know but I wanted that only mine has the move x) I'll test by giving the move with lvl up though, to see whether the move itself is buggy or editing RAM after changing data in break the ROM. EDIT: Also, on the topic of research and the progress with the tools, I found out that the pokemon data in Explorers of Time/Darkness is stored in a slightly different format than in EoS, so that's gonna take a while to figure out.. EoT/D pokemon data is 76 bytes per entry, while EoS is 68.. I might just drop EoT/D support for now, and actually get some more progress done on other areas of the game for EoS.. There are so many quirks that I have to adapt the code for to support those, and frankly, I'm not too motivated to do all that research twice, especially since I still got a lot of trial and error to do to figure out the missing field names for the pokemon and item data.. And I don't really see why someone would make a romhack of Explorers of Time/Darkness over Explorers of Sky anyways.. Why do you even think about hacking EoT/EoD ? It's like hacking ruby/saphir while you have Emerald to deal with. It's a nonsense I never played EoT/EoD but AFAIK they are just EoT without many things. Or perhaps it was just for "the sport" ? Link to comment Share on other sites More sharing options...
psy_commando Posted April 17, 2015 Author Share Posted April 17, 2015 I made a find while messing around with the game's font. The font data for most dialog and menus is stored inside the kanji_rd.dat file, and the kanji.dic file has something to do with it. "/FONT/kanji_rd.dat" is structured this way: Offset: Length: Type: Description: ------- ------- ------- ----------------------------------- 0x0 NbEntries 4 uint32 Nb of char in the file. 0x4 DataBlockA (NbEntries * 28) Block that contains all the data in the file. [ Entry 28 [ CharCode 2 uint16 The code tied to this particular character. Unk#1 2 uint16 Unknown CharData 24 - The 16x12 pixels(192 pixels total), 1 bpp, linear image data for the character. [ ] ] ... ] There is a lot of redundancy in the /FONT/ folder though, and there are at least 2-4 other files with the same character data as kanji_rd.dat, but only editing kanji_rd.dat actually seems to impact dialog and menu text. Also, there is text data that's 4bpp and up in other files, I'm not sure when it could be used, as most text for titles and chapters are just raster images and not text. Then, the markfont.dat and markfont.pal files contains a lot of symbols and icons used throughout dialogs and menus in the game. Things like the icons for the NDS's buttons, arrows, bullets, etc.. I'm also going to make another wiki update pretty soon, once I gathered enough info. Second one. And yes I know but I wanted that only mine has the move x) I'll test by giving the move with lvl up though, to see whether the move itself is buggy or editing RAM after changing data in break the ROM. Well, the chances of stumbling on another shinx are pretty low unless you go where they spawn, besides, they'd probably have overwritten the move at the level they spawn. And be sure to let me know how that goes! Why do you even think about hacking EoT/EoD ? It's like hacking ruby/saphir while you have Emerald to deal with. It's a nonsense I never played EoT/EoD but AFAIK they are just EoT without many things. Or perhaps it was just for "the sport" ? Well, its always possible that, one of these would turn out to be easier to edit than the others, and it would be nice to have everything figured out already. I mean, some games have quirks that sometimes actually unlock more potential about them, like an exploit fixed in the newer editions and whatnot. Then, some people just do it out of nostalgia, or maybe they have their own reasons. 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