#Calibration problem on Citra (Gen 7)

1 messages ยท Page 1 of 1 (latest)

devout surge
#

I've been searching and reading everything I can on the subject around here in the server and also read some offsite tutorials and the pokemonrng.com one too and I still can't do it.

I'm trying to RNG two specific TSVs but I can't properly calibrate. I tried Citra versions 1543, 1915 and 2103. I set up time to the current day on midnight, run Ultra Sun, write down the initial seed. Input them into 3DS Time Finder Gen 7 calibration tool and find the tick/offset values. Create a profile and use it to find the desired TSVs. I get the first result, input the provided date-time into Citra, load the game and the initial seed is not the expected one.

I tried a few other things, including mainly trying to run the game many times with the same date-time and check the initial seed. It will usually give me a few random initial seeds at first and then it will stabilize in a specific seed for many times (when resetting the emulation instead of stopping). If I stop emulation it will repeat (first few times will have random seed, then it will stabilize). I thought of never stopping the emulation between calibration and looking for the desired TSV, but then I realized I can't change the RTC on Citra without stopping emulation.

I also tried to restart the game until the seed stabilized, use it to calibrate, found the RTC target, stopped emulation, input RTC into Citra, start the game, got the wrong seed, restart until it stabilize on a seed, but the expected seed never appeared.

I also noticed the most recent version of Citra has a new option for tick override. Does anyone know if it can be used to make the process easier and/or more stable? I couldn't tell any difference from my tests.

One more thing: I understand tick is the number of processor ticks between initializing the system/emulator and the game effectively starting, but what does the offset mean?

Thanks in advance.

fossil gust
#

if not, this is defenitely the issue

#

or wait, the patch just give you the tick value directly i think

devout surge
#

What patch? I forgot to mention I'm checking the initial seed on latest CitraRNG.

fossil gust
#

can you pls send somescreen pls?

devout surge
#

Sure, give me a moment

#

I'm targetting the first result in the list

#

Citra config

fossil gust
#

can you show me the tick research?

devout surge
devout surge
#

No results yet, but maybe this is enough?

fossil gust
#

let it finish

#

send a screen when it finds the tick

devout surge
fossil gust
devout surge
#

I used different date-time and initial seed as parameters because I didn't write the previous one down...

devout surge
fossil gust
#

tick should be fixed

#

change your profile tick and offset to the one you just found

#

try hitting the initial seed again

#

if it doesn't work, send here the screen again

#

of the rtc+init seed+tsv research

devout surge
#

ok

#

The first result is on the same RTC I did calibration on, and even without changing anything in Citra, CitraRNG gives me a different seed now

devout surge
#

Could it be the case that the files I extracted from my 3ds to use on Citra can be messing it up?

devout surge
# devout surge Citra config

I just noticed something interesting. If I check the option for New 3DS mode, it gives me the same seed everytime

#

I'll try calibrating now

fossil gust
#

Also, do you know the daylight error right?

devout surge
fossil gust
#

Try to calibrate with the new 3ds option and try to hit an initial seed

#

In case, try -/+1h

#

As stated in the guide

devout surge
#

OK ๐Ÿ‘

#

Managed to find a new set of tick/offset but once again it didn't work to find the expected initial seed.
I also noticed it started giving me different initial seeds when restarting the game again.
I must be overlooking something super obvious here.

fossil gust
#

did you try older citra versions?

devout surge
devout surge
fossil gust
#

it i for the initial seed

#

when you set the rtc

devout surge
#

Maybe that's what I'm not understanding correctly then.
I should add 1h in Citra config?

fossil gust
#

yes

#

try

#

just to hit the initial seed

#

add or substract

devout surge
#

Unsurprisingly, it doesn't work, as I get a different initial seed everytime I run it

#

Maybe I should delete everything from Citra and do a clean installation

#

Sorry to take so much of your time

#

I'll repeat the steps with the version mentioned in the tutorial

fossil gust
#

let me know

devout surge
#

I will. Thanks for all the help so far ๐Ÿ˜Š

fading magnet
#

In case it's helpful, PokeReader has a Citra specific menu that shows the ticks and epoch (the time and date the game sees).

The ticks can be used to confirm the time finder has the correct value.

The epoch can be used to confirm whether or not the daylight savings issue is affecting you.

devout surge
#

Ohh this will sure be helpful! I didn't have much time to keep working on it lately but I'll try to use it and report my findings. Thank you for pointing that out! ๐Ÿ˜Š

fading magnet
#

I need to test other changes more before pushing everything, but I updated the date/time shown to be human readable. It will be really easy to tell if the game is an hour off compared to what's expected.

devout surge
#

Ran the game two times, with the same configs, but it's giving different ticks and different time.
How is this possible?

devout surge
#

Like it would be nice to be able to read which time the emulator is using there. Maybe I can convert it somehow

devout surge
#

Apparently it's skipping some miliseconds for some reason

#

And how much it skips will vary

devout surge
#

After tinkering a bit with the Citra settings, I managed to get these values constantly. I noticed it's the same ticks as Zak's screenshot, which looks good.

#

Running this now, but I'm unsure of what to expect as PokeReader won't tell me the offset (which incidentally I have no idea what it does) and Finder won't find the same number of ticks that Citra gives me

#

I tried inputting Citra's ticks there but it doesn't find anything

#

I also did it +-1h in the time because of possible DST problem, but also no luck

#

Assuming the offset is the difference in epoch I'm getting, I filled it and it worked apparently

fading magnet
# devout surge Ran the game two times, with the same configs, but it's giving different ticks a...

How are variable ticks possible? Actually we should expect that in a natural environment. We can do seed rng on citra because it is unnaturally consistent with ticks compared to a physical console. Citra is the abnormality for being consistent.

The tick count is the number of ticks since the system has booted. The more time that passes, the higher the tick count will be. The tick count used to seed the rng is the base ticks in citra + the number of ticks it took for the game to seed the rng.

Ticks are extremely fast, so on retail you'll pretty much never have the same ticks twice naturally. On citra, variable tick counts can occur by having the time between starting the game and the game generating the seed vary between runs.

3gx plugins load as part of the game, but before the game, so using a 3gx plugin could introduce variable timing. It's also possible citra itself has something going on, but I strongly suspect it's the use of 3gx. I haven't tested other plugins to see if it's reader or all 3gx plugins.

With that said, I usually get 0x17e90ddd. If I don't get it, resetting a few times seems to give 0x17e90ddd.

fading magnet
fading magnet
#

I added time offsets. So far all of my tests match 100% with the calibrator. Hopefully this means we should never have to search for the offset again.

So basically go through this process a few times to get the ticks and offsets, then use the most common ones when searching for seeds.

devout surge
#

TYSM for the explanations, Zak!
It's weird because using PokeReader it seems to be more consistent than before, when I wasn't using any plugin. May be something else, but I'm not sure anymore.
At least it all makes sense now.
I was on an all-nighter at work at the time so my judgement wasn't the best. I used those values to try and get a specific TID but it was giving me the wrong initial seed. I'll try again and report back!

#

Just one more question: if I understand correctly, other programs running in the computer concurrently will affect the tick count, right? If that's the case, it may explain why I had such inconsistent results before

fading magnet
#

I'm not sure how citra works internally, but I imagine it keeps tracks of ticks internally without external programs affecting it.

devout surge
#

I was thinking more in terms of taking more time to load the game if my CPU is being used for other stuff

#

Maybe that would only affect the offset? I noticed our ticks are the same but my offset is bigger, above 1sec

fading magnet
#

Those are both reasonable questions to ask.

#

For ticks, that could happen if citra ties ticks to real world time in some way, but not if citra uses a different method to increment ticks.

Because citra tends to have the same ticks when it's sped up, it's probably not tied to real world time. And if something like external programs could influence ticks, you and I (and other people) would have different ticks since we all probably aren't running the exact same programs every time we run citra.

Since everyone hits the same set of ticks, I suspect something else is happening. I could 100% be wrong about this though.

#

I also don't know how citra tracks the progression of time. It seems more likely that could be tied to a real world clock, but I have my doubts about that too.

Earlier I tried with 100% and 160% speeds and saw the same ticks and time offsets. If either were tied to a real world clock, I would expect them to be different (a game running at 160% speed should start faster and have a smaller tick count and time offset than a game at 100%).

I was consistently getting 1162 ticks yesterday (same as you) until I made some reader adjustments. Now I'm seeing much lower time offsets. Since reader runs before the game, reader will have some amount of influence over the ticks and time offsets. I haven't tested enough to prove if reader is the reason I'm seeing lower ticks, but I have a strong suspicion one of the changes I made causes reader to start faster.

#

This is mostly speculation based off some observation and very little testing, so I could be wrong. It's worth someone testing to get more info!

devout surge
#

This is interesting as I noticed my ticks started being super consistent once I put Citra speed to 100% (I was using it unthrottled for a time during testing)

#

I'll do some more testing later

#

Thanks for putting so much thought into the matter! I was afraid I was being dumb or blind since I saw many people had no issues with this method

devout surge
#

Well, I guess after understanding everything, it all started making sense and I got the seed I wanted first try.

#

Thank you so much for all the help, Zak and Real! blobwavereverse blobwave

fading magnet
#

It looks like Reader is loaded 1 second after citra starts, which explains why I had 162 earlier isntead of 1162. Reader isn't faster, it just wasn't aware of the 1 second delay.

devout surge
#

Ahhh

#

I saw the messages in #poke-reader-dev ! Amazing! Thanks for this amazing tool ๐Ÿ˜Š

fading magnet
#

Sure thing!