• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • 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.

Simple Questions (PLEASE USE THE SEARCH BUTTON BEFORE ASKING)

Status
Not open for further replies.
I don't see it requiring ASM. There are a handful of trainer editor tools out there. Unnamed Trainer Editor is a good one (sorry, I don't have a link handy). I think the most straight-forward way would be to create new entries for the rival to account for all the new starters and use a whole mess of script flags to set the right battle with each encounter.

If there's an easier way, I don't know it offhand. Then again, I tend not to use ASM if possible.

Then i'll stick with my first idea (for now...). Thank you for answering ! :)
 
Hey is there any way to make shiny pokemon more common? like can you edit the chances of a shiny pokemon appearing in Pokemon FireRed?
 
Hey is there any way to make shiny pokemon more common? like can you edit the chances of a shiny pokemon appearing in Pokemon FireRed?

There is a single routine somewhere that determines if a pokemon is shiny, with a single byte that controls the %. Sadly, I cannot remember where it is.

Edit: I lied. I found some clues in my notes and then it wasn't hard to track down. 0x44120 controls the amount of shinies. Please note, this is not a percentage.

Bulbapedia said:
The above formula can result in a number from 0 to 65535. If the result is less than 8, then the Pokémon is Shiny. This gives an overall probability of 8/65536 or 1/8192, exactly the same as in Generation II.

You will find the number 7 at this location. This is the "if less than 8" byte. Now, since it is a byte, there is no way to actually make this 100%. The best odds you are going to get is a value of 0xFF or ~1/256. These are still pretty good odds.

However, with some ASM, we can change this.:) If you look ahead 2 bytes, you will see 07 D9. This is the jump that happens if it is a shiny pokemon. If we change the D9 to E0, it will ALWAYS be shiny.:D Now, if you really wanted to get fancy, we could rewrite this routine to check a halfword instead of a byte. This would give us full control over the percentages of shinies. Now, there is also one more thing we can do. We can invert shinies. So now, the normal pokemon colors are actually the rare ones. This can be done by taking those same bytes (07 D9) and changing them to 07 D8. Now it should branch if there is anything higher, instead of lower.

So, to sum it up, we have a string of bytes at 0x44120:

XX(07) 28 07 D9

The XX is the byte that is compared to check for shininess.

The D9 can be changed as follows:
D8 - Branch if greater than XX
D9 - Branch if less than XX
E0 - Always branch

Hope this helps!

(PLEASE NOTE, if you trade pokemon with another game, they may not be shiny! These pokemon only look shiny, but in reality are not! The routine says they are each time they are loaded, but if you transferred them to another game, they may not be shiny, unless that game has a hacked shiny rate too. The only way to actually make more shiny pokemon that are legit is to change the PRNG to give you better shiny numbers.)
 
Last edited:
There is a single routine somewhere that determines if a pokemon is shiny, with a single byte that controls the %. Sadly, I cannot remember where it is.

Edit: I lied. I found some clues in my notes and then it wasn't hard to track down. 0x44120 controls the amount of shinies. Please note, this is not a percentage.



You will find the number 7 at this location. This is the "if less than 8" byte. Now, since it is a byte, there is no way to actually make this 100%. The best odds you are going to get is a value of 0xFF or ~1/256. These are still pretty good odds.

However, with some ASM, we can change this.:) If you look ahead 2 bytes, you will see 07 D9. This is the jump that happens if it is a shiny pokemon. If we change the D9 to E0, it will ALWAYS be shiny.:D Now, if you really wanted to get fancy, we could rewrite this routine to check a halfword instead of a byte. This would give us full control over the percentages of shinies. Now, there is also one more thing we can do. We can invert shinies. So now, the normal pokemon colors are actually the rare ones. This can be done by taking those same bytes (07 D9) and changing them to 07 D8. Now it should branch if there is anything higher, instead of lower.

So, to sum it up, we have a string of bytes at 0x44120:

XX(07) 28 07 D9

The XX is the byte that is compared to check for shininess.

The D9 can be changed as follows:
D8 - Branch if greater than XX
D9 - Branch if less than XX
E0 - Always branch

Hope this helps!

(PLEASE NOTE, if you trade pokemon with another game, they may not be shiny! These pokemon only look shiny, but in reality are not! The routine says they are each time they are loaded, but if you transferred them to another game, they may not be shiny, unless that game has a hacked shiny rate too. The only way to actually make more shiny pokemon that are legit is to change the PRNG to give you better shiny numbers.)



Thank you very much for the help i will read this later on today :) i really appreciate the help, like i said before on this posts previous statement XD,this information is Very crucial for my hack :3 thank you so much!


Edit:thank you so much fo rhte help, id rather have them legit shinies, now i dont think my players will trade through roms, i didnt know you could lol, but if they do i dont want them to be disappointed, what id like to do:
is at least make the chances of the legit shines be slightly more common but not like every 5 pokemon will be shiny(or what ima gonna change it to) im not quiet sure about the exact ratio im looking for yet ill have to think about it
but i guess the second option you mentioned will be like a last resort.

don you know what the change would be to make it like 25% chance? cause i dont want it like as rare as they are now, or like super rare or easy to get.
 
Last edited:
Thank you very much for the help i will read this later on today :) i really appreciate the help, like i said before on this posts previous statement XD,this information is Very crucial for my hack :3 thank you so much!


Edit:thank you so much fo rhte help, id rather have them legit shinies, now i dont think my players will trade through roms, i didnt know you could lol, but if they do i dont want them to be disappointed, what id like to do:
is at least make the chances of the legit shines be slightly more common but not like every 5 pokemon will be shiny(or what ima gonna change it to) im not quiet sure about the exact ratio im looking for yet ill have to think about it
but i guess the second option you mentioned will be like a last resort.

don you know what the change would be to make it like 25% chance? cause i dont want it like as rare as they are now, or like super rare or easy to get.

I don't think you quite understand. Shinies are basically the result of a math formula:

Code:
[ (TrainerID [B]xor[/B] SecretID) [B]xor[/B] (PersonalityValue>>16 [B]xor[/B] (PersonalityValue [I]mod[/I] 65536)) ]

so the only way to get them for real is by using math. You would have to hack the psuedo-random number generator to give you the right PIDs for your trainer ID and secret ID. This is really crazy. Your best bet for legit shinies is to do what I told LockSmithArmy to do and apply shinizer to your rom. From there, make a bunch of script tiles like this:

Code:
#Dynamic 0x800000
#org @start
setvar 0x8003 0x1
end

and place them everywhere. Whenever someone steps on one, the next pokemon they see will be a legit shiny. Easy enough.
 
Earlier you said "The best odds you are going to get is a value of 0xFF or ~1/256. These are still pretty good odds. "

So is there what chances would you say this would be if you know? and whats the comparison of the original odds?


and the shinyizer i have, but im not quite sure how it works, your post help a bit, i can make a tile have shiny pokemon, or am i wrong, if you can go more indepth please

and can i have a trainer own a shiny pokemon?
 
Earlier you said "The best odds you are going to get is a value of 0xFF or ~1/256. These are still pretty good odds. "

So is there what chances would you say this would be if you know? and whats the comparison of the original odds?


and the shinyizer i have, but im not quite sure how it works, your post help a bit, i can make a tile have shiny pokemon, or am i wrong, if you can go more indepth please

and can i have a trainer own a shiny pokemon?

Shinizer basically inserts ASM code that checks var 0x8003 and if it is anything but 0, it will subtract 1 from the var and then make a shiny pokemon.

Ex.
You setvar 0x8003 to 0x5

You go into the grass:
You see 1 pokemon. It is shiny, var 0x8003 now = 0x4
You see another pokemon. It is shiny, var 0x8003 now = 0x3

Now, you come across a trainer. He has 4 pokemon.
The first is shiny. var 0x8003 now = 0x2
The second is shiny. var 0x8003 now = 0x1
The third is shiny. var 0x8003 now = 0x0

The fourth, however, is normal. Why? Because 0x8003 = 0x0. It is basically a shiny counter.

So, if you put those script tiles everywhere, if the player steps on one, the next pokemon (whether it be a trainer or in the wild or from an egg) will be a legit shiny. The chances change strategically. The more of them you put, or the higher traffic the place you put them is, the more chance that person will see a shiny.
 
Shinizer basically inserts ASM code that checks var 0x8003 and if it is anything but 0, it will subtract 1 from the var and then make a shiny pokemon.

Ex.
You setvar 0x8003 to 0x5

You go into the grass:
You see 1 pokemon. It is shiny, var 0x8003 now = 0x4
You see another pokemon. It is shiny, var 0x8003 now = 0x3

Now, you come across a trainer. He has 4 pokemon.
The first is shiny. var 0x8003 now = 0x2
The second is shiny. var 0x8003 now = 0x1
The third is shiny. var 0x8003 now = 0x0

The fourth, however, is normal. Why? Because 0x8003 = 0x0. It is basically a shiny counter.

So, if you put those script tiles everywhere, if the player steps on one, the next pokemon (whether it be a trainer or in the wild or from an egg) will be a legit shiny. The chances change strategically. The more of them you put, or the higher traffic the place you put them is, the more chance that person will see a shiny.

that helps so much lol, so i can change shiny chances by doing the first thing you mentioned with changing the code line, to get the 1/256 chances.

and the tiles as well?

and just to clear something, the tile and trainer var will not effect each other?
 
that helps so much lol, so i can change shiny chances by doing the first thing you mentioned with changing the code line, to get the 1/256 chances.

and the tiles as well?

and just to clear something, the tile and trainer var will not effect each other?

The tile and trainer var are the same thing. They work together.

If you change it to the 1/256 chance, you will create non-real shinies. For shinies that only work in your hack, do that. For shinies that work anywhere, use the tiles.
 
The tile and trainer var are the same thing. They work together.

If you change it to the 1/256 chance, you will create non-real shinies. For shinies that only work in your hack, do that. For shinies that work anywhere, use the tiles.

How do you trade with roms?

will the var count on a tile change the outcome of the trainer battle?
 
Ok I have a question about hacking the FireRed titlescreen with NTME. Whenever I insert the image, it looks good and everything, but there are still two grid lines on the top and bottom of the image. Any idea how to get rid of them?
 
How do you trade with roms?

will the var count on a tile change the outcome of the trainer battle?

Along with my other question i have a few more questions.

i saw how some hack have new game mechanics how would you go about doing this
 
You don't. There are only 16 palettes (hardware limitation) and the other 4 are used for other things.

I was afriad of this, looks like I need to choose my 192 colors wisely then

not to double post but I would also like to know how to replace the over-world players sprite with the d/p player. The size is too big and when i tried to re-size the canvas manually in a hex editor, things got ugly.
 
Last edited:
I was afriad of this, looks like I need to choose my 192 colors wisely then

not to double post but I would also like to know how to replace the over-world players sprite with the d/p player. The size is too big and when i tried to re-size the canvas manually in a hex editor, things got ugly.

In NSE go to the advanced header view (preferences) then change from 16 x 32 to 32 x 32. Looks like this:
[PokeCommunity.com] Simple Questions (PLEASE USE THE SEARCH BUTTON BEFORE ASKING)
 
Hi, I've installed the jpan hack engine, and safari zone is kinda stuff up. Like the timer won't work, and if you click retreat, you won't warp back to the main entrance.

I have a crazy idea (i originally had it for Emerald, but it could be applicable for FR/LG/R/S as well):

How about 9 starters instead of 3 ?

I'll explain:

1st way:
The idea is that a NPC would ask you a question, where three answers are possible. Choosing one of the answers will lead you to 3 different sets of starters.

Example:
NPC: Question
You:
A - Fire/Water/Grass Starters
B - Psychic/Dark/Fighting Starters
C - Ice/Ground/Rock Starters

2nd way:
The NPC would ask three questions, with 3 answers possible. This time, each answer would represent a pokemon. It's like you're setting your starters "manually".

Example:
NPC: Question 1
You: A) Fire B) Water C) Grass
NPC: Question 2
You: D) Psychic E) Dark F) Fighting
NPC: Question 3
You: G) Ice H) Ground I) Rock

Choosing A,D and H as answers would give you the choice between a fire, psychic, or ground starter.

Whatever you choose, your rival would take the one with the type advantage over yours.
Other things would change as well (the 1st arena type, but that may be too much...)
Is that possible (may it be though scripting or ASM) ?

That's possible even without asm
 
Last edited:
Status
Not open for further replies.
Back
Top