• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

FireRed hack: Pokémon Throwback v211001: Kanto, Your Way

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
Well how about this thread http://www.pokecommunity.com/showthread.php?t=329357 ? I think there are mentions for checks of held items. Would pressing B or using an everstone cancel/prevent your evolution? I ask since I assume that you are trying to mimic an evolution that is induced through an actual link trade.
The routines in that thread are for creating and assigning new or different evolution methods for the Pokémon. That's not what I'm doing in my hack, as doing so would break compatibility with the official games. What I'm doing right now is invoking evolution regardless of actual requirements being met in lieu of similar-feeling ones being met.

There are only two ways I'd like to have Pokémon who evolve through trade AND holding a specific item possibly evolve:
  1. Invoke the actual trade evolution (w/item) routine or a slightly modified form of it. This would be the most ideal, but it requires trekking into the unknown.
  2. Completely bypass evolution type check and have evolution done based on commands that check similar criteria. This is what I'm doing with Kadabra, Machoke, Graveler, and Haunter right now. I'd do it with the others if I was able to check for specific items held by them.
Failing that, I'm likely to resort to checking the player's inventory for the prerequisite item and have that removed after the evolution routines. I'm not fully happy about it as of now, and depending on how I ultimately feel about it I may actually prefer to keep wild locations for those ones as an option.

And yeah, you can cancel evolution with the B button. I don't have a problem with that at face value, as it lets people decide if they really want to evolve them if they're caught off-guard. If I get trade w/item evolutions in properly, I'll add extra checks to see if the evolution took place. That way you won't lose your hold items if it doesn't.
 

FecalFace

Banned
9
Posts
7
Years
  • Age 32
  • Seen Sep 5, 2016
Terrific and creative idea on the trade evolutions.

Please create a real Celebi event. The current solution feels incredibly unsatisfying. I loved how organic your custom events have felt so far and I'd love to see you do the same for Celebi.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
Terrific and creative idea on the trade evolutions.

Please create a real Celebi event. The current solution feels incredibly unsatisfying. I loved how organic your custom events have felt so far and I'd love to see you do the same for Celebi.
I've got a few ideas for Celebi. It'll probably be one of the last things I get at before release, given how much creativity and effort any single one of them will take.

The reason I did what I did before is because that's exactly what Nintendo has always done for Celebi. Unless you lived in Japan back in 2001 and had access to the Pokémon Mobile System GB. Or have the Japanese version of Pokémon Colosseum and compatible software/hardware. Basically, international players get rekt.
 

Deokishisu

Mr. Magius
990
Posts
18
Years
You may be able to use one of the Pokemon decrypter functions to load a particular Pokemon's held item into a variable and then check it in a script from there. You would have to modify a routine or two though.

Here's a routine by the wonderful FBI that checks the party for a particular Pokemon with a particular held item and stores the slot that it's in in a variable. If you think that you could use that routine as it is (as we don't know how your implementation looks), you're all set. If not, slightly modifying the routine would probably be your answer.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
You may be able to use one of the Pokemon decrypter functions to load a particular Pokemon's held item into a variable and then check it in a script from there. You would have to modify a routine or two though.

Here's a routine by the wonderful FBI that checks the party for a particular Pokemon with a particular held item and stores the slot that it's in in a variable. If you think that you could use that routine as it is (as we don't know how your implementation looks), you're all set. If not, slightly modifying the routine would probably be your answer.
I can't believe I missed that. Although it is a really big thread...

It works! I have a couple of reservations, though. First off, I need to find a way to remove the item after the evolution is complete. The second thing is that I'll need to do some coding gymnastics to make sure it checks that the exact Pokémon you send through it is the one with the hold item. Right now it just checks if a Pokémon of that species has the item. Say I have two Poliwhirls in my party. One's holding a King's Rock, the other isn't. As of right now it'll trigger the evolution to Politoed regardless of which one I send through.

I've actually been scrounging through that thread quite a bit tonight looking for things that might be of use. Not just for anything related to that, but stuff that might be useful to add to Throwback in general. And I gotta say, there's quite a few things I think will make this hack even better! Thanks to all the people who have contributed there.
 

FecalFace

Banned
9
Posts
7
Years
  • Age 32
  • Seen Sep 5, 2016
I've actually been scrounging through that thread quite a bit tonight looking for things that might be of use. Not just for anything related to that, but stuff that might be useful to add to Throwback in general. And I gotta say, there's quite a few things I think will make this hack even better! Thanks to all the people who have contributed there.


FBI also has a working routine for roaming pokemon, just in case you were interested in using it for the dogs and staying more true to the original.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
FBI also has a working routine for roaming pokemon, just in case you were interested in using it for the dogs and staying more true to the original.
I saw that in the thread. And you're right in guessing that I'd rather have the three of them all be roaming instead of having two show up in predefined areas! There were a couple of things that put me off of that solution, though. Having to insert tons of routines like that to reach a means to an end feels cluttered for my purposes. It's impressive and wonderful nonetheless, and I'd be willing to settle with that. The second, and real bummer for me, is the bug FBI noted at the bottom about "using" a move before fleeing. Things like that are quick to put me off from doing them, as I want this hack to feel as solid as possible. There's a few, regrettable bugs in it already, but I hope to get them out of the hack by the time it's all said and done. It's the same reason why I haven't implemented the Exp. gain on capture in my hack.

My ideal setup would be to send out all three roaming legendaries using the same code base that FR/LG already has. That'll require expansion to do, as it'll only send out one based on starter choice. It'd use the least amount of extra code, and I'm fine with it not being up to spec like other gameplay features. Although, I'd be plenty happy having an option for the modern style as well. Oh, options...

Geez, I've been doing a lot of listing, numerating, and dreaming today! I hope nobody takes me for a beggar or pedant.
 

Deokishisu

Mr. Magius
990
Posts
18
Years
I can't believe I missed that. Although it is a really big thread...

It works! I have a couple of reservations, though. First off, I need to find a way to remove the item after the evolution is complete. The second thing is that I'll need to do some coding gymnastics to make sure it checks that the exact Pokémon you send through it is the one with the hold item. Right now it just checks if a Pokémon of that species has the item. Say I have two Poliwhirls in my party. One's holding a King's Rock, the other isn't. As of right now it'll trigger the evolution to Politoed regardless of which one I send through.

I've actually been scrounging through that thread quite a bit tonight looking for things that might be of use. Not just for anything related to that, but stuff that might be useful to add to Throwback in general. And I gotta say, there's quite a few things I think will make this hack even better! Thanks to all the people who have contributed there.

I think you could get around that with some clever scripting. Check first with the ASM I linked, then have the player select the mon they want to trade. Then, compare the slot they chose to the slot in the variable. If it matches, you're good to go. If not, kick back an error or the Pokemon is "traded" but doesn't evolve, since it's not the one with the item.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
I think you could get around that with some clever scripting. Check first with the ASM I linked, then have the player select the mon they want to trade. Then, compare the slot they chose to the slot in the variable. If it matches, you're good to go. If not, kick back an error or the Pokemon is "traded" but doesn't evolve, since it's not the one with the item.
Yep, that's exactly what I was thinking when I typed that post. Hence the "coding gymnastics" part of it. I just hope my code doesn't get too unoptimized throughout it all.

EDIT: Screw sleep, I've got Pokémon party order working now! Still working on hold item party position.
 
Last edited:

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
So I quickly got the check working the way I was thinking about doing it. I wasn't able to do it last night because I was too tired to think straight. However, I've now run into two problems with using this check hold item routine:
  1. Evolution won't occur if you have two or more of the same kind of Pokémon who evolve with a traded item and are both (or all) holding that item. So, back to my Poliwhirl example. If you happen to have two Poliwhirl who are both holding a King's Rock, then the evolution to Politoed will only occur if you select the first Poliwhirl holding the item. It'd evolve the first Poliwhirl as expected, but selecting the second Poliwhirl will do nothing. This could be changed by modifying FBI's routine to only read the selected party position that's stored in another variable in my script instead of checking all six slots successively for the first occurrence. I... think I can learn how to do that? did learn how to do it! See my next post.
  2. This one's the big problem: It doesn't work with Hoenn Pokémon. It seems that the ASM routine is only designed to work properly if the searched Pokémon's index value is between 0x0 and 0xFF. Which is weird, since it's storing the Pokémon species variable as two bytes and not one. Just on a conceptual level I wouldn't know why it's happening. I've tried using both the Hoenn Pokémon's internal index value and a hexadecimal version of the Hoenn Pokémon's National Dex number. Neither worked. This is frustrating for me because I wanted to also include this for evolution checks for Clamperl. I know that my "Catch 'em All" patch foregoes Hoenn Pokémon altogether, but I wanted it to be so that if someone happened to bring in a Clamperl with a Deep Sea Tooth or Deep Sea Scale, they'd be able to evolve it as expected with this implementation.
If the latter issue is truly there and I'm not just being dumb, it seems like something that needs to be made more well known.
Man, i was thinking, can you implement the Physical Special Split? You can put it in the Extras patch :v
The Physical/Special split, like many long-requested features, changes battle mechanics. Any changes to battle mechanics will break compatibility with the official games. If I choose to include things like this in the update, they'll be entirely separate from all other parts of the hack as it currently is. So no, it won't be a part of the Extras patch. Maybe it'll be part of a separate thing. I'll need to consider that as I go further along.
 
Last edited:

looneyman1

The Psycho Pokemon
1,492
Posts
10
Years
  • Age 37
  • he/him
  • Seen yesterday
I saw that in the thread. And you're right in guessing that I'd rather have the three of them all be roaming instead of having two show up in predefined areas! There were a couple of things that put me off of that solution, though. Having to insert tons of routines like that to reach a means to an end feels cluttered for my purposes. It's impressive and wonderful nonetheless, and I'd be willing to settle with that. The second, and real bummer for me, is the bug FBI noted at the bottom about "using" a move before fleeing. Things like that are quick to put me off from doing them, as I want this hack to feel as solid as possible. There's a few, regrettable bugs in it already, but I hope to get them out of the hack by the time it's all said and done. It's the same reason why I haven't implemented the Exp. gain on capture in my hack.

My ideal setup would be to send out all three roaming legendaries using the same code base that FR/LG already has. That'll require expansion to do, as it'll only send out one based on starter choice. It'd use the least amount of extra code, and I'm fine with it not being up to spec like other gameplay features. Although, I'd be plenty happy having an option for the modern style as well. Oh, options...

Geez, I've been doing a lot of listing, numerating, and dreaming today! I hope nobody takes me for a beggar or pedant.

NO NO ROAMING POKEMON. That means it'll be near impossible to encounter them, let alone get decent natures.
 
12
Posts
7
Years
  • Age 29
  • Seen Aug 5, 2017
So no, it won't be a part of the Extras patch. Maybe it'll be part of a separate thing. I'll need to consider that as I go further along.

If you do make a separate patch for the physical/special split it will be greatly appreciated.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
Well, I surprised myself today. I actually modified FBI's Item Check routine to only check the party slot you chose in the Pokémon menu. And it works! Now the first issue in my last post is completely dealt with. Hopefully no one takes this as me being able to regularly do ASM hacking, because that's still not the case. But I'm really excited about what I was able to do! ^^

EDIT: It turns out that FBI posted a similar solution a bit later in the ASM Resource Thread. I hadn't even seen it beforehand. It's pretty much the same as what modifications I made, save for the choice of vars. If anything, it helps assure me that I did it right.

It still doesn't work for Hoenn Pokémon. Or, more accurately, Pokémon outside of the primary index table. That seems to be an oversight of the routine itself.
NO NO ROAMING POKEMON. That means it'll be near impossible to encounter them, let alone get decent natures.
If Game Freak had chosen to have all three legendary beasts be obtainable in one FR/LG save game without trading, they'd have made all three roaming. Just see G/S/C, Platinum, and HG/SS for reference. Not only that, but this hack isn't meant to be tailored for truly competitive battling. Neither are most hacks in general, really. You'd probably be better off checking out something like Pokémon Showdown if you really want to get into the battling metagame.

Fortunately for you, I just stated that as my desire. Realistically I won't be able to actually implement that into the game given a lack of resources and my desire to not introduce any more bugs.
If you do make a separate patch for the physical/special split it will be greatly appreciated.
No need for that. If that separate patch would only contain the split and no other features, then all I'd be doing is just putting two pre-existing patches together into one and calling it something unique, which it's not. It's simple enough to just add it yourself.

DoesntKnowHowToPlay's Physical/Special Split patch for FireRed BPRE v1.0
My addendum patch to apply affinity changes to the standard FireRed movelist
 
Last edited:

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
What else is on your checklist of things to do before releasing an update?
Plenty of things, actually. I just got done with what will probably be the final edits to the 8-bit music portion of the hack. Sorry for the vague words when referring to it recently, I'm no longer calling it "GB Player". Now I'll need to redo all of the existing custom events in the Catch 'em All portion of the hack, craft a way to get Celebi, and add in some more nice features into the hack, among other things. Each of those things may take some time, especially the Celebi part. But that's only half of it. Then I need to port everything over to LeafGreen. And then there's some additional things that I'd like to venture into with it. One of those things would be especially beneficial to everyone wanting to use the hack.

I want this update to be a big one. The last several ones I put out only changed a couple of smaller things and would otherwise be considered nothing remarkable. I want to change the tone this time around and send things off with a bang. Also, "soon enough" (I think I used those words somewhere) is relative here. Considering how long this update's been in the works, it'll be released sooner rather than later.
 
12
Posts
7
Years
  • Age 29
  • Seen Aug 5, 2017
It's simple enough to just add it yourself.

Is it just a matter of applying both patches to the ROM?
I have virtually no experience ROM hacking so that's my idea of simple.
If it's more complicated could you explain how?
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
Is it just a matter of applying both patches to the ROM?
I have virtually no experience ROM hacking so that's my idea of simple.
If it's more complicated could you explain how?
Yep, that's all you do! Patching ROMs doesn't require any hacking knowledge whatsoever.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
Why are you redoing them?
I'm cleaning up code throughout my entire hack to make it more optimized and take up less space. More importantly, there's things about every event in the Catch 'em All hack that I'm not happy about. Some skip performing extra checks, making it so you lose out on the chance to get the special event Pokémon if your party and all boxes are full. Others just aren't well thought out and need some dialogue and scripting tweaks to make them feel more at home with the vanilla game. I actually just got done removing one of those events and making the Pokémon available somewhere else.
 

FecalFace

Banned
9
Posts
7
Years
  • Age 32
  • Seen Sep 5, 2016
Have you given any thought to importing the tall grass onto Faraway Island? It's very easy to do and doesn't look out of place with the Firered tiles. The way you have it now with the regular patches of grass looks kind of awkward.

Translating the little "chase Mew" mini-game from Emerald to Firered would be even more awesome.
 
Back
Top