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

Pokéball hacking guide

Froosty

The_Learner
535
Posts
9
Years
I create a patch for Pokemon Fire Red (U) v1.0, with "all" balls

level ball F1
esca ball F2
luna ball F3
friend ball F4
love ball F5
peso ball F6
rapid ball F7
cura ball F8
velox ball F9
scuro ball FA
pregio ball FB
parco ball FC

with all animations (I created all animations ;D) and descriptions (sorry but I traslated all in italian), and I implemented another ball: the rocket ball! (FD)
With this ball you can catch the trainers' pokémon (Yes, you can! xD). This ball has the animation, but not the sprite...sorry, you must insert it...
If you catch a trainer's pokémon with this ball the battle end.
The offset is 0x8C00000

Download:

Pokéball Expansion

Credits:
daniilS - tutorial
FBI - rocket ball routine
Bella - ball animations
eMMe97 (me) - another ball animations, fix a "bad egg" bug

P.S. sorry for my bad english :S

Well I was seeking for some help... which I am still seeking for..
but I can use this patch to study those data :)
thanks to you...

and one more thing I am not gonna apply it for use but for study :)
 

Froosty

The_Learner
535
Posts
9
Years
Well I somehow succeded in adding the new balls...
.
But I encountered an error,
can anyone help me fix this..

Cw1lfaM.png

^ This happens when the ball gets successful in capturing the pokemon...
its not the error with added balls only but
also the pre-existing balls :(


EDIT:
I checked the whole process more than 5 times, and I cant find any mistakes but the problem exists!!!

can anyone help me ???
 
Last edited:
352
Posts
7
Years
  • Age 30
  • Seen Mar 10, 2022
It's all working, but the only issue I've found is the throwing graphics not showing the correct ball:
Poké Ball: Shows Great Ball when threw;
Great Ball: Shows Ultra Ball when threw;
Ultra Ball: Shows Master Ball when threw;
Master Ball: Shows odd things and freezes the game.

giphy.gif


How to fix it?
 
Last edited:

Froosty

The_Learner
535
Posts
9
Years
It's all working, but the only issue I've found is the throwing graphics not showing the correct ball:
Poké Ball: Shows Great Ball when threw;
Great Ball: Shows Ultra Ball when threw;
Ultra Ball: Shows Master Ball when threw;
Master Ball: Shows odd things a freezes the game.

giphy.gif


How to fix it?

Simply in pge or any other item editor increase the special value by 1 for pokeballs.... for master ball change 0 to 1, pokeball 1 to 2 and so on
 
352
Posts
7
Years
  • Age 30
  • Seen Mar 10, 2022
Well, I EXPANDED it, but I have some problems on ADDING the new throwings. I don't know where in the table I will place each ball's throwing.
 
352
Posts
7
Years
  • Age 30
  • Seen Mar 10, 2022
It bugs the Battle Tower, when I start it, the first trainer to send out a Pok?mon, crashes the game.
 
Last edited:
352
Posts
7
Years
  • Age 30
  • Seen Mar 10, 2022
Bag_Moon_Ball_Sprite.png
Moonball:
Spoiler:

I've tried to add 3 digit Pok?mon index in your Moon Ball routine but it don't works, the routine don't assemble. I want to place Skitty's and Munna's evolution lines.
 

BluRose

blu rass
811
Posts
9
Years
I've tried to add 3 digit Pokémon index in your Moon Ball routine but it don't works, the routine don't assemble. I want to place Skitty's and Munna's evolution lines.
load the value into r1 and try comparing the register
like
Code:
ldr r1, =(0x[species])
cmp r1, r2
EDIT: there probably is a better way of doing this tbh but it should work nonetheless¯\_(ツ)_/¯
EDIT2: wait a sec it already supports skitty
supports index 13B, 13C, 23A, and 23B in-routine
 
Last edited:
352
Posts
7
Years
  • Age 30
  • Seen Mar 10, 2022
load the value into r1 and try comparing the register
like
Code:
ldr r1, =(0x[species])
cmp r1, r2
EDIT: there probably is a better way of doing this tbh but it should work nonetheless¯\_(ツ)_/¯
EDIT2: wait a sec it already supports skitty
supports index 13B, 13C, 23A, and 23B in-routine

Then the problem is with my Musharna, because it isn't 23B it is 304. =\
EDIT: No it isn't, it worked only when I used your modification on every 3 digit Pokémon. Thank you so much.
 

Froosty

The_Learner
535
Posts
9
Years
By that note, do u mean that these routines contain values from official data? Or your custom values?

Spoiler:

He means these,
If you look at them they are different from vanilla rom data. And for your rom they might be different. So you will have to fix them according to your rom.
And yeah they seems to have custom values.
 
239
Posts
8
Years
  • Age 31
  • Seen yesterday
So how do I find my equivalent offsets?

If you haven't expanded the number of pokemon in your rom, the offsets will be:
Code:
Base Stats Table: 08254784
Pokedex Data Table: 0844E850
 
Last edited:
239
Posts
8
Years
  • Age 31
  • Seen yesterday
Thanks,
But that means if I expand Pokemon after expanding pokeballs, it will not work...
So after expanding Pokemon from PGE, how can I find my new offsets?

I haven't expanded the dex myself, but PGE didn't give you new offsets?

In that case, I would just search for the pointers in a standard FR rom and see what the new pointer is at those offsets. Or do the same with a string of bytes from each respective table.

Also can someone explain me what are tag numbers and please list 15-20 free of them?
Thanks.

If I remember correctly from the tutorial, ball tags are relatively unknown, but starting from 0xFF00 seems to work.
 

Skeli

Lord of the Rings
300
Posts
10
Years
I'd really love to see someone post a routine for catching selective Pokemon...
Basically for beast ball.
Also, someone please fix the routine for moon ball.
This should work for the Beast Ball. I tested it out and it works fine.
Just make a table with the Pokemon id numbers of your UBs. End the table with FFFF.
Beast Ball:
Spoiler:

This routine works by loading from a table of set Pokemon, and then comparing if the wild Pokemon is one of them. If it isn't, it loads a catch rate of 0.1. If it is, it loads a catch rate of 5.
This routine can also be modified for the Moon Ball. All you'd need to do is replace the catch chance with the appropriate ones for the Moon Ball, and create a table of Pokemon that the Moon Ball would work on.
 
Last edited:
476
Posts
6
Years
  • Age 23
  • Seen Feb 26, 2020
Okay...so...what if all I wanna do is change the catch rates? Specifically I want to make Premier Ball be 1.5, Great Ball be 2, Ultra Ball be 5, and Safari Ball be 3.5. I only want to add just one with a catch rate of 10.

On top of this, how would I add the texture? Better yet, could I just use an existing texture? Perhaps an unused one (if any)?
 
239
Posts
8
Years
  • Age 31
  • Seen yesterday
Okay...so...what if all I wanna do is change the catch rates? Specifically I want to make Premier Ball be 1.5, Great Ball be 2, Ultra Ball be 5, and Safari Ball be 3.5. I only want to add just one with a catch rate of 10.

On top of this, how would I add the texture? Better yet, could I just use an existing texture? Perhaps an unused one (if any)?

Altering the premier ball catch rate would be relatively simple. Its catch rate subroutine is the last entry in the table at 0802D54C. You would need to make a simple routine like so:

Spoiler:


In order to add your own custom ball you would have to go through the whole tutorial, with a catch rate function as above, except mov r4, #0x64.

Changing the catch rates of the others would require inserting an assembly routine wherever the catch rate calculation function checks for great ball, ultra ball, and safari ball.

By textures do you mean the throwing images? You can easily repoint them from the relevant tables from step four on the first page.

Hope this helps!
 
Back
Top