![]() |
More TMs/HMs
Let's try to implement the way the 4th generation games have more than 50 TMs. Please post your findings here :D On Ruby version, I provide this two routines (Commented roughly so may have mistakes lol - a bit lazy today)
Code:
Basically what I've done so far http://i39.tinypic.com/j8jink.png http://i39.tinypic.com/nwyg74.png http://i42.tinypic.com/epkt47.png http://i40.tinypic.com/70w9he.png I tried to create more TMs - as you can see in the Item editor image but they turned out to be HMs in the game what's more, its seems like only the first 8 HMs can be used to teach the moves while the other two when used will show that the Pokemon aren't able to learn it like in the image above. To sum it up, the two TMs I made became HMs and the two old HMs got shifted down and cannot be used. So, I think there are more routines that limit the TM/HM amount and so on. Any thoughts or discoveries? Hehe, I'm a bit lazy this time XD |
If I remember correctly there is a place in the ROM where you have to edit which Pokemon learn what TM/HM.
It's similar to the move tutors but longer. Perhaps that is why the Pokemon won't learn the other moves. |
Quote:
|
Well, simple logic dictates that something must be declaring the number of TM/HMs. They seem to be stored in the same list, judging by the bleed over. Even so, the combined number doesn't add up to the maximum number of variables (forgive me for stating the obvious, I'm building a foundation for my hypothesis). It would seem from your test that there are two missing factors. One must define the highest numbered object that is a "TM", this being why anything beyond that value is automatically classed as a "HM". I think it likely that the other missing factor must relate to which badge is needed for which HM move to be taught in some way. Since you can only have eight badges, any "extra" HM would have no "badge check" to activate it. I don't know if that helps, and it's only a theory until tested, but it might give you an idea of what to be looking for.
|
Quote:
Maybe I misread. But still, the area would have to be edited still? To include the new TMs/HMs. |
Quote:
|
can someone port it in Firered?
|
Quote:
|
Quote:
|
I have managed to _sort of_ do something like this; make a fake TM that isn't a TM (it's in misc items). If the goal is just to have more items that teach moves, this does that?
I used the Hacked Engine, and a simple normal item script that teaches you a move. My version has some problems (it teaches only the first pokemon in your party in the first slot a move), since I don't know the special to bring up the party screen and save that slot chosen to a var yet, if that even exists :( It does not get used up when you use it. I consider that a bonus but people could easily add a deleteitem. Also, any pokemon can learn, but that can be fixed simply by using special 12b to check pokemon type (by default that special just checks if grass, but there's a hacked version out there by FBI agent I think?), so you could get an item that teaches a move to, say, any water pokemon! You could also, if you just wanted only a few pokemon to learn it specifically, check for them instead. I tried to use special DC to choose the slot, but it didn't seem to work, so I just use it to let you see the poke after. here's my example, I hope this is useful (I'm kinda a newbie to hacking): Code:
I know this is kind of a sucky solution, since it isn't a 'real' TM, but I hope it helps someone and I'd like to see it in hacks. EDIT: okay, I did some testing, here's a version that checks if the pokemon is the right type or not. Much more useful than the first given. Also, I found it doesn't seem to like new hacked on moves past the originals. But still has potential. Example: Code:
|
Quote:
As for the code, I would try to search for the TM use routine, and use it as a skeleton for a modified version of it for the new item. |
Quote:
Alright, I found another version which doesn't use JPAN's hack, although it only allows for 16 more moves: one can use the Move Tutor special, which, well, acts a lot more like a normal tm as it automatically lets you choose a pokemon and a slot to teach it to. Special 18D, just setflag 0x8005 to 0-F first to use in a script. This also seems to cooperate with newer gen moves added to the engine (I used MrDollSteak for testing), so what one could do is add 16 new gen moves, put them in move tutor slots, and then simply use the other version of this to re-add the old move tutor moves and make them available. A pain in the butt, but, it does give 16+ more moves, which is pretty nifty. We've got some actual progress on adding new moves and new move tutoring items! Edit: Oh yeah, I should mention, to alter the move tutor moves, the moves are two bytes each, starting from 0x459B60, from 0500 (mega punch?) to A400. 16 move tutor moves. Using MrDollSteaks Decap and Fairy Type patch, I replaced several of them and tested out with these, 'altho I haven't actually tested each one it seems to work fine. One would still have to go in and manually change what pokemon can learn which move of course. Since the hexes for newer moves (especially in two byte form) don't seem to be listed anywhere, I thought I'd give them so other people could quick test too. dark pulse 6f 01 rock climb 88 01 roost 8b 01 shadow claw 8d 01 xscissor 90 01 venoshock a6 01 dragon tail bc 01 giga impact! 78 01 flash cannon c1 01 dazzle d2 01 77 01 force palm |
Quote:
The code does a few things to get into the Pokemon selection menu, and checking if the Pokemon can learn the move or not. However, the pointer to the table is loaded directly into R0. Meaning if you can change that pointer you can have theoretically as many move tutor moves as you want! The pointer to this is at: 0x120BE4 Well that solves the problem of expanding TMs. Good thinking Longlostsoldier! |
Quote:
I think it'd be more valuable to get more TMs by putting them in the bag. Also I think the reason it is so difficult to expand TMs is partially due to the TM compatability. That'll be why the extra two moves get pushed to the end and don't work, because they're now out of the array of the compatibility. |
Quote:
While you are allowed to have a large amount of moves, anything not supported is considered incompatible. The only feasible way would be to extend the bit field to a larger size per Pokemon. Which is not something I'm interested in doing anymore :P |
Quote:
So for TM01, bit 0 determines whether it is learnable, and for HM01, bit 50 determines its compatibility, and so on. This means that with the data alone, there is theoretically space right now to add 8 more TMs to the table without needing to rewrite how the game reads from the table too much. |
very interesting post! keep it up!!!!!
|
Quote:
Quote:
01 48 00 47 00 00 FF FF FF 08 FF FF FF 08 is the pointer of the asm location+1 You should also apply Jpan's saveblock hack to keep those data saved. This enable you to have 108 TM&HM in the bag. Edit: The previous save file will not work if apply this. |
Notes: BUG found, so use this at your own risk.
Also this is for Fire Red 1.First you need to create new TM, but once you create one, you need to follow it with another one until all are added. If you don't want to overlap the previous item, item extension should be consider. To remove the limiter for item extension Spoiler:
Then repoint the item data(3DB028) and image & palette pointer(3D4294) like what you did in pokemon expansion. 2.After that repoint the TM/HM table at 45A80C, it should be 0x74 bytes long. Then add whatever move you want to have for new TM. 3.Fix the TM move index routine Spoiler:
125A78: 00 49 08 47 FF FF FF 08, FF FF FF 08 = first asm location+1 tm_table is what you repoint at step 2. 4.Fix the No.# things Spoiler:
131D5A: 01 48 00 47 00 00 FF FF FF 08, FF FF FF 08 = second asm location+1 5.Fix the compatibility Spoiler:
43C40: 00 48 00 47 FF FF FF 08, FF FF FF 08 = third asm location+1 table refer to your pokemon TM/HM compatibility table Format: It works exactly the same as vanilla fire red, but two more line added, so it supports up to 128 TM/HM. Now each entry cost you 16 bytes, so the old compatibility table is dead. Spoiler:
Every works fine but the animation when you forget move to learn new TM(thought it is pointless) will kill the game. Also the sequence for the new TMs is not right. |
Is there any way to disable the animation on the overworld for learning TMs?
Also what do you mean by "Also the sequence for the new TMs is not right."? |
Quote:
The New TM is located between HM08 and TM01 in bag. There must be some routine that will auto arrange it. |
Can anyone port it in firered?
|
Hey Tara, is that whole little tutorial for Fire Red or for Emerald?
|
Quote:
Quote:
|
Quote:
|
| All times are GMT -8. The time now is 8:50 AM. |
![]()
© 2002 - 2018 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2016 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.
Acknowledgements
Use of PokéCommunity Assets
vB Optimise by DragonByte Technologies Ltd © 2023.