• 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.

Development: Pokémon Fire Red Hacked Engine

JPAN, I got an idea for a new addition ;D

A HM/TM hack, that makes TM show up with a blue name when you select a pokemon in the status screen, and make it possible to link it to a script. That means we can create custom HM's, and custom field TM's. That would be pretty cool, imo ;p

What do ya think?
 
from which offset is advisable to begin to make script??
It is usually begun by 0x800000 but..this ROM has very more space of a normal ROM ^^"

You could even start at 0x720000, if you want.


JPAN, I got an idea for a new addition ;D

A HM/TM hack, that makes TM show up with a blue name when you select a pokemon in the status screen, and make it possible to link it to a script. That means we can create custom HM's, and custom field TM's. That would be pretty cool, imo ;p

To be honest, I doubt that just linking them to a script might be a good idea.
 
To be honest, I doubt that just linking them to a script might be a good idea.

What would be the problem? I don't know ASM myself, and I am just doing a suggestion.. I think that it would be pretty nice to have your 'custom' field-moves like Headbutt for headbutt trees also show up like Dig, Fly, and Surf. And as HM's are also being modified to give them a custom effect, the use in the status screen would stay the same, which isn't right.
 
What would be the problem? I don't know ASM myself, and I am just doing a suggestion..

Well, I'm just saying scripting could not be enough/appropriate to handle some HM moves.
 
Well, I'm just saying scripting could not be enough/appropriate to handle some HM moves.

Ah, that way ;p I misunderstood you. Yeah, that's right. HM's like Surf and Fly can't be made though scripting. Headbutt, however, can. ;p
 
JPAN, I have yet another bug:
When placing a script to be called at a button press, all the game does is not permit me to move while I have that button pressed. Once I let go, I can move again. The script is never called.

Also, on the trainer battle script runner, can you make a sound 0x15 happen at the ! mark?
 
Last edited:
JPAN I used the Specials 0x52 to the 0x55, and found a problem.

When we use the 0x52 or 0x54 to put a status on any of the pokemon (example: SLEEP), and when we use the 0x53 and 0x55 to "turn off" the special, everything is fine.

But .. when we catch the pokemon in question, it comes with with POISON status.

EDIT:
I found another problem.

When the routine is started, and the wild pokemon appearing on this being affected by it. Sometimes the status is only in Battlebox, but the pokemon in question is not suffering the damage status.

Example: A pokemon with SLEEP.

Sometimes the animation of Z (ZzZzZ. ..) does not appear, and the pokemon attacks us as if its status was normal.

No way to solve this problems?
 
Last edited:
JPAN, I have yet another bug:
When placing a script to be called at a button press, all the game does is not permit me to move while I have that button pressed. Once I let go, I can move again. The script is never called.

Also, on the trainer battle script runner, can you make a sound 0x15 happen at the ! mark?

JPAN already helped me solve this. Quite simple really (I assume you talking about place key script?)

Open the ROM you patched with the engine in a hex editor. Navigate to 0x16008C. Reverse the pointer stored at 0x16008C, add 0x12, then navigate to this new offset. The byte should be a 0x91, change it to a 0x81. Fixed!


Ah, that way ;p I misunderstood you. Yeah, that's right. HM's like Surf and Fly can't be made though scripting. Headbutt, however, can. ;p

Yes, however, the headbutt script can only be run when the user presses A on a tree, but Surf is a tile permission and fly is called through the party screen. Both of these would require ASM routines, and it would probably be hard to make them call a script without bugs. So if you wanted something like this,the best option would probably be to create an ASM routine that does what you want within the routine, rather than calling a script.
 
JPAN already helped me solve this. Quite simple really (I assume you talking about place key script?)

Open the ROM you patched with the engine in a hex editor. Navigate to 0x16008C. Reverse the pointer stored at 0x16008C, add 0x12, then navigate to this new offset. The byte should be a 0x91, change it to a 0x81. Fixed!
Thank you! It works perfectly now!
The only odd thing is the 0x91 byte was one before the reversed offset+12 pointed to. Thanks again!
 
JPAN, I've got a problem here:
Using your "change Pokémon species special", I successfully changed the species of Pokémon that the player had. But when I went into the status screen, the game crashed on a black screen. The thing is, after going into battle with it (successfully, no errors) and gaining some Exp., the status screen is again viewable.
I warned about this when I first created the code, but it seems I forgot to add the disclaimer to the manual. Change pokemon species should only be used with pokemon that share the same experience curve. The reason the game crashes when you try to see the status screen is because the pokemon should already be at the next level, and has negative amount of experience until it reaches. That would make the blue bar on the bottom circle around the screen infinitely (if you're lucky, some experience differences can cause you to see it without crashing). This bug first appeared with the experience adding, but because I had no information about leveling up (the algorithm to level up a pokemon is still unknown to me), i couldn't make a decent level-up code. When you go into battle, the game calculates your level and experience based on the current species, and corrects the bug. For now, I have no fix other than ask you to only use the code with pokemon that share the same experience curve.

JPAN I used the Specials 0x52 to the 0x55, and found a problem.
When we use the 0x52 or 0x54 to put a status on any of the pokemon (example: SLEEP), and when we use the 0x53 and 0x55 to "turn off" the special, everything is fine.
But .. when we catch the pokemon in question, it comes with with POISON status.
The status code 0x54 is more of a "dumb" version of the 0x52 code. I created it to simplify trainer battles. It has several bugs that can be avoided with the use of 0x52. The status inducing specials use the game main status manager to replace the previous status with a new one. The game uses 5-7 times to manage a pokemon creation for battle, plus 2-3 for each other pokemon to create (trainer case). 0x52 counts those turns, and deactivates itself after the x time you gave it (usually 7). but 0x54 does not. That means any status is replaced by the code, even the ones induced with healing items and the like.
So, any bugs found with 0x54 will not be addressed. 0x54 is buggy by its nature.
If the POISON was caused by 0x54, change specials. If it happens with 0x52, then try different timers. 7 is the average, but 8 shouldn't be a problem. I myself tried with 0x52 several pokemon battles (activating with a level script, a walking script and even an item script), and in several roms, and the result seemed to be the same. Catching a pokemon was not affected (except for too high numbers on 0x8005, like 0xF) by the status inducer.

When the routine is started, and the wild pokemon appearing on this being affected by it. Sometimes the status is only in Battlebox, but the pokemon in question is not suffering the damage status.
Example: A pokemon with SLEEP.
Sometimes the animation of Z (ZzZzZ. ..) does not appear, and the pokemon attacks us as if its status was normal.
This problem is similar to the one above. It seems your game likes to generate pokemon with a higher number of status passes than usual. Try upping the counter a bit (9 tops) and check again. What is happening is that the status on the box and the one the pokemon has are calculated sperately (box is the 2-3 pass, pokemon actual status is the last).


On a separate note, I had to be away for a few days, so I did little work on the berry project until tonight. But until now the outlook looks good. I have successfully managed to make a "people tree" that cycles its look from hero, to hero bike to little kid to heroine, in 15 minutes. Longer tests are required, but the game is processing well the large time differences (up to 12 months difference in time), small intervals (minute updates) and graphic display (although the "tree" will not change until the OW is refreshed, be it through menu or moving to other map/loading zone).
 
Thanks, it was very good your explanation!

But the error should be remarked that actually the fact that my script HEADBUTT.
For some value is written to 0x8004 for the script, which makes any status becomes SLEEP in battle, but in POKEMENU become the POISON.

I will try to fix it.
Thank you and congratulations on the job.
 
I am not sure if this has been said but the program keeps asking me for the "chose the variable for the wild pokemon switch" I paced a variable in but I won't stop asking me for it. I have tryed switching to a different variable but nothing makes it happy.

EDIT: never mind I didn't know that you have to put 0x
 
Last edited:
i'm confused. you said that there were more pallettes for overworlds, but when i opened the rom in my overworld editor, there were no new pallettes. is there something elde i need to do?
 
I don't know if this is the right thread to be asking this in, but do anyone of you know how many bytes one move/attack lies on? When I'm editing the attacks for the empty slots they overlap so the attacks from one Pokémon is also on the Pokémon before.
 
Last edited:
I don't know if this is the right thread to be asking this in, but to do anyone of you know how many bytes one move/attack lies on? When I'm editing the attacks for the empty slots they overlap so the attacks from one Pokémon is also on the Pokémon before.

the simple questions thread is where you should go i think.
jpan, is it possible to make it so that when you step on a green s, a shiny pokemon appears in your party if you use this?
 
there is a way, here is a quick basic script (of corse much needs to be added) but in jpans other thread he posted a routine that makes party pokemon shinny.
checkitem
if true goto @shinny
@shinny
callasm @shinny
 
the simple questions thread is where you should go i think.
jpan, is it possible to make it so that when you step on a green s, a shiny pokemon appears in your party if you use this?
And where might that be? I'v looked for it but I can't find it. If it's out there of course. xP
 
Last edited:
Can this extended rom be hacked using the conventional tools like AdvanceMap?
 
Back
Top