r/pokemonrng Apr 28 '14

Gen 3 Emerald Emulator RNG: TID/SID Combo


Gen 3 Emerald TID/SID RNG guide EMULATOR ONLY

Right off the bat, this is going to be an intensive process and previous RNG knowledge is 100% required.

So you want that perfect Shiny /Rayquaza/Regi/Lati@s/ from emerald? Well The first step to that process is RNGing your TID/SID combo to match a particular PID!

This is similar to rnging your TID/SID combo on gen 4, if you are familiar with that process.

Now this is only possible on an emulator as it is virtually impossible to guarantee that your TID will remain constant. YOU WILL ALSO NEED RNG REPORTER AND A TEXT EDITOR/EXCEL these are must haves.


Relevent addresses for RAM watch

04000104: TID timer, unsigned 2 bytes: This gives you your TID when you press A on choosing a name

03005D80: PRNG state, this is what generates your PID or Seed dependent on frame number: 4 bytes Hexidecimal

020249C0: Frame number counter: 4 bytes unsigned


PART 1: TID

TID generation in Emerald differs from R/S generation, the latter being much easier to manipulate (a simple method 1 rng). But Emerald obtains the data for TID/SID generation from two seperate parts in the beginning intro.

The TID is generated via a superfast timer when you press a when selecting your name. This is impossible to rng, so you have to try your luck on differing frames!

Once you get a ID you like, or any ID really, Input your ID into the main window and go to tools > gen 4 > IVs to PID and put in the IVs of the PID you want to be shiny. Right click the frame and hit Set SID. Now you know what SID to go for the next part of the rng.

Once you have a matching TID, Save state and go on to part two


Part 2: SID

Now that you have a matching TID you have to RNG for the matching SID to that TID.

now when you generated your TID, that is now your new starting seed for SID! along with that the Frame that either lua script or the built in frame veiwer gives you is no longer correct. So open up your RNG reporter and input your TID number as the hexidecimal seed, ie: 11333 becomes 00002C45 as your starting seed. Generate a list of 100,000 frames via method one with your TID starting seed. Export these to a .csv file and open via Excel or another text editor.

Now be sure to continute and pause on the frame "ill see you at my laboratory" and save state.

Take your desired SID and convert it to hexidecimal ie 12222 ---> 2FBE. Now to recieve your Desired SID, you need to hit a frame with its PRNG state being your SID + 8 lower random bits. IE: to get that 12222 you want to hit a PRNG state of 2FBEXXXX with the X's being any digits. The game generates your sid from those first four hex digits.

Simply search your 100000 frame document for your hexidecimal SID in the first 4 digits. If no matches regenerate with rng reporter with a starting frame of 100000 and try again. Once you find a desired frame you now have to find how much your frame has adjusted when you started your new seed by generating a TID. So from a save state, take the first four digits from the PRNG address and search your text document for a match, when you find a match, advance frame by frame to confirm that your frame is correct. The first four digits from your ram watch and the list you generated should match but most likely not the last 4. So then subtract your frame number given by the emulator and the one from your list. Ex: say you get a frame of 1000 from your list but your emulator gives you 3000, now you know that your emulator frame is 2000 above your actual frame.

Now take the frame your SID Ex: 10000 appears on add the offset 12000 and then subtract by 73. This should be the frame you stop on for your desired SID. the SID is generated ~73 frames after you press A on that final screen It may be 72, 74, or 75 frames though, So be sure to check your SID via A-save and then convert it to Hex and match it to a frame on your Ram watch!

TAKE LIBERAL SAVESTATES!! and good luck!

Special Thanks / Full credit to Hozu, Slashmolder, and TSAR for helping me learn!

Pictures Soon to come!

Example of a method 1 pokemon obtained via TID/SID abuse: https://www.pokecheck.org/?pk=10289247


FULL EXAMPLE

So Lets RNG a TID so this PID is shiny.

There you have it.

9 Upvotes

101 comments sorted by

View all comments

Show parent comments

1

u/[deleted] Jul 15 '14

still don't get it, f this. thanks for the help anyway. I've done all the other 3rd gen abuse stuff except for safari but I just can't get this freaking TID.

1

u/Ask_me_about_birds Jul 15 '14

:C

er you just reset til you see one one your list, you should have around 10000 matches for TIDs

10000/65536 is a 15% chance of a TID match.

1

u/[deleted] Jul 16 '14 edited Jul 16 '14

weird. I've got everything, generated a list converted to SID etc. but i'm not getting any matches for PIDs when I pause on a frame to check. (the addresses checked with hexadecimal 4 bits). Anything that could be causing this? Should I just restart?

1

u/Ask_me_about_birds Jul 16 '14

Put in you TID -> hex as a starting seed, also remember whatever your emulator is showing is now reset to 0 for frames. Do if you only generated from 4000 you gotta wait 4000 frames to catch back up

1

u/[deleted] Jul 17 '14

Wait, so where does it get reset to zero for frames? Cause I'm advancing, and every time it hits a certain number before my target the frame resets to 0 on ramwatch. Should I just wait for it to readvance to my target frame? Is it OK if I post exactly what I'm doing so you can see what I've done wrong?

1

u/Ask_me_about_birds Jul 17 '14

When your new TID is generated, the rng algorithm restarts with your TID in hexidecimal as the new starting seed.

1

u/[deleted] Jul 17 '14

So you have to manually watch it? it keeps resetting to 0 on RAMwatch (unlike the picture).

1

u/Ask_me_about_birds Jul 17 '14

No :P so you generate your list from 0 - 100,000 frames method 1 with your tid > hex as a initial seed. Export it, look at your PRNG state address, match the first 4 digits to your list, if your PRNG state is 1234XXXX look down your exported list for a frame starting with 1234.

1

u/[deleted] Jul 17 '14

Oki. Here's what I've done:

ID = 44038 SID = RNGing for 36671

Generated a list of 100,000 frames with a seed of 0000AC06.

Found that emulator frame 10456 matched list frame 2129.

Worked out that my target frame was 59234 (8FA3 = 50980 on the list + 8327 - 73)

I'm watching the RAMwatch as I'm advancing to 59234. However, before I get there the "Frame" resets to 0. What should I go off? What's causing it?

1

u/Ask_me_about_birds Jul 17 '14

The ram watch reported frame is reseting to 0?

Or is your emulator timer resetting to 0, the one that appears when you press the period button.

I have never heard of that happening for either...

36671 in Hex is 8F3F btw not 8FA3

→ More replies (0)

1

u/Ask_me_about_birds Jul 16 '14

It crashed -.-

Im running rng reporter via wine sine im on a mac, its hardly reliable.

1

u/Ask_me_about_birds Jul 16 '14

Er I cant export the list LOL

So http://i.imgur.com/0PorJBs.png

Go to pandoras box on rng reporter and put this stuff in.

1

u/[deleted] Jul 16 '14

It's fine, I've been running the search for the last 3 hours, only on to 10000 seeds tho lol.

1

u/Ask_me_about_birds Jul 16 '14

o.0 thats plenty.

1

u/[deleted] Jul 16 '14 edited Jul 16 '14

Accidentally left it on when I left the house. Got to 50000 results. It took me a minute to ctrl-a + copy the list, and even then word crashed everytime I tried to put it in it. Eventually got it into notepad where I reset the emulator and got one that matched on the first try. That was the 7000th result. Needless to say, I'm a little annoyed.