One theory I thought of is that maybe the Item number for the TM will be included somewhere in the coding. I did some searching, but to no avail. Perhaps though, one could try something like 01 00 D4 01. 00 01 being the TM number reversed and D4 01 being the move. There's no telling how many results could come up when searching for that though. I'll attempt that for a bit, then I'm going to bed.
EDIT: I don't think that's it, or at least there's more info between the first and second TM. OR it could be because the TMs are in Sets of 8, reversed so it's 8-1 (Like the compatability of TMs with Pokemon is in the Pokemon Stats Data.) I don't feel like finding out right now, and I'm very tired.
Pokemon Weariful White Download link will appear here once the first Beta is released.
Bump, so I finally found out how to edit the TMs and I would like to share it with you all.
In the Pokémon White Rom (.nds file), it can be found by using a hex editor programme around offset 0x00050350.
It for example contains the hex ''CF 00'' on that line, which I edited to another random hex data and the TM actually changed to Blue Flare.
You do have to edit the TM's ''CD'' item sprite yourself though, as well as the bag text data of the TM's effect. And of course, you'll have to change the TM learnset of each Pokémon individually.
Anyway, even though it will cost a lot of time to edit the TMs, think it's quite a cool just to know how to do it.
Can you be more specific? Such as what other hex values were around the CF 00, which TM was changed (TM06 or TM42 or what?), what is the CF00 (the attack value in the TM?) and all of that interesting stuff. And by changing the TM's sprite, do you mean to make it align with the color of the type of attack it is?
If you search for Swagger in the official list of moves, you can see that Swagger is move 207 - which is 00CF in hex. ''Reverse'' it to bytes and it will give you CF 00 (just like how, for example, 1BF would give BF 01).
Now, I replaced this ''CF 00'' with ''27 02'' as a random number and it turned out to be the move Blue Flare, which is correct, because according to the official list, it is move number 551 (and 551 in hex is 227).
Right before ''CF 00'' it gives the hex code ''BF 01'', calculate it do decimals and it will give 444. The official list says it is Grass Knot and again, that's correct, because Grass Knot is TM86, the TM before TM Swagger.
However, it should be noted that the lay-out of the hex data is very odd, as some TMs have random bits inbetween their code (for example, TM Pluck has hex data 6D 01, however it shows as 6D 00 2A 01 or something like that), though changing the corresponding hex data actually affects the TM and changes it.
It completely works, I even tried teaching the new TM to my Pokémon and it actually taught them the move Blue Flare.
I'm not quite sure what you mean here. The way I would go about it is finding the hex for the TM in regards to items (http://bulbapedia.bulbagarden.net/wi..._(Generation_V) and finding hex code next to it that relates to the sprite it uses, and changing that hex to the sprite you need.Which, I think, is only a matter of copying a certain item icon and replace the original white icon without actually editing it.
From what I have gathered from your post, the layout of the hex is something like one move after another move after another move, and the game manages to count how many moves there are to determine what TM it is actually referring to. However, the catch is that there are these random bytes that you mentioned that are inbetween moves.
Someone should go about writing a program for this. I don't think a tool would be that complex. The value of the TM (in regards to moves) is already found. Finding the sprite that is displayed for it shouldn't be too hard either (if I didn't have exams I would focus on finding this). Next would be visually display the correct information, as you had mentioned that move descriptions given by the TMs were incorrect - again, something I don't think would be too hard (find the code that dictates which part of the script to read, and find the part of the code that displays thing such as damage and accuracy). I have never written a program before, and I don't intend to, but to me it sounds like something as simple as loading 2-3 narcs and going to town on editing. The user would input but one move value, and the program would change each narc as they should be: TM value, sprite, and description.
Oxnite, don't you have a tool that edits moves? You should be able to do something like this fairly easily, and I'm sure it would be much appreciated! I know that a tool like this would be very very useful for me as I develop my white hack over the summer.
I would help more in locating offsets within narcs that are subject to modification, but I have exams. Within a week I should be able to contribute more.
You are right though that it shouldn't be too hard to do. Oh, and the bag description only lacks the actual move description; damage, accuracy etc. of the move were actually changed.
Anyway, I might indeed release a tool for this. Myabe later I could create this big tool that edits TM/HMs (themselves), Pokémon Stat editing (including hold items, base stats, etc.), OxATTACK (a move editor) should be in it, too, but an enhanched version. As well as a Trainer Pokémon editor (with more functions than the regular Trainer editors, for example the options to select Gender and Ability of the Pokémon). Anyway, that would be an amazing tool, yes, though it will take a lot of time. I will look into that after I have finished my hack.
Bump. Another update on this!
Turns out the arm9.bin file is compressed, that's the reason why the data is so oddly displayed in the hex editor.
The following information is courtesy of elementking;
Assuming you're familiar with CrystalTile2, open the ROM then click the little NDS icon at the top. You should get a list of every pack 'n such stored in the ROM. Right-click on the arm9.bin file and click Extract (U).
[Edit by Oxnite - I learned that it is very important to use ''Extract'' instead of ''Export'', because Export only just exports the arm9.bin file, where Extract actually decompresses it]
Extract it to any location, open it up in a hex editor and search by moves. So just convert the moves into hex and search. The same goes for B/W, just different moves.
If you're really lazy, here are the offsets that they start at in the extracted arm9.bin file. =P
- TM/HM Data begins at offset 1000C8 in arm9.bin file (HG/SS)
- TM/HM Data begins at offset 9AAB8 in arm9.bin file (B/W)
Test it out. Tell me if it doesn't work with you 'n whatnot.
Cool! Honestly, I had given up on making custom B & W because of the snag with TMs. Maybe I'll pick it back up later, now. Shoulda guessed it was in the arm9; most of the info not in narc files that one would desire to edit is in the arm9.
What are you going to do with Jesus?
I Was Hoping to find a Program for this, but I guess i need to use hex coding. Someone PM, I need Help about this.