-
Posts
742 -
Joined
-
Last visited
-
Days Won
26
Content Type
Profiles
Pokédex
Portal
Technical Documentation
Pages
Tutorials
Forums
Events
Downloads
Gallery
Blogs
Posts posted by suloku
-
-
Turns out PSS for streetpass was already documented in the structure:
0037 30A00 000078B0 75FD2 Secret Base (Passerby) & Passerby Event Values
note: all offsets nted in the wiki are shifted by 0x5400 (I guess that's powersaves related), so the actual offset in the main file is 0x2B600
I pasted the block from the SLAYER's savefile onto my savefile and Crescent isle appeared.
theSLAYER, if you get some spare time, could you delete the whole block in a savefile, fix the checksums, load it on a 3DS and get a single streetpass on that save? Locating a single entry would be much better to try and find the structure, hopefully it has an island value and a date value we can mess around with. From the game I infer there might be 30 streetpass entries allowed.
Also, maybe the streetpassed eon ticket is also at block 0x37 since I have it on my save I'll try getting a save without any kind of eon ticket and test it out.
I'll go and try with the online PSS for now, they are more interesting since, according to bulbapedia, streetpassed islands don't have hidden items.
EDIT: serebii on hidden items
"However, there is a drawback. While you can get the Pokémon and main items that are on these islands, if you receive the islands through Passing By other trainers, you will not have access to any items found by the Dowsing Machine. They only appear on the Mirage Spots indigenous to your game each day."
EDIT2: turns out eon ticket was already added to pkhex, since the official eon ticket wondercard "only" enables the streetpass ticket event:
If you delete the eon ticket WC in-game (or pkhex after saving and re-loading the file) it's the same as a streetpassed eon ticket.
-
What the title says, does anyone here have such a friend list?
With homebrew the friendlist can be dumped and restored to any console, so having a friendlist file with all the safaris available would be great, specially whenever the PSS is shut down. I've researched how to unlock the 3rd slot in the savefile, so that isn't a problem, the only problem is getting a friendlist that allows to catch all possible pokemon.
I can do one myself, but asking to 71 specific people to get the friend codes needed registered might prove difficult and time consuming, so I wondered if someone already did.
-
I guess eevee due to the new Z move?
Maybe it rises non evolution eevee to the level of it's evolution counterparts.
-
Apparently shiny Xerneas code is being given with "Revista Oficial Nintendo" #290 in Spain.
For the legendary HA birds the online version also had a code (actually, I was told you could get more than one if you used more than one e-mail address) and the Xerneas code might be the same.
I guess anyone from europe could buy the online version and get the code.
-
Well, if we never get to more than we got (setting TID to 0x0000 and modifying the value at 0x1600) we'll be missing values that produce these maps:
186
191
193
194
196
198
199
200
206
460
Other than that the focus should go finding a way to calculate the value at 0x1600 for a given TID that produces desired island, so this can be added to pkhex for easy editing, or even do a 3DS homebrew to change the island (since we can only get 1 save at a time). If sort this out I may ask gocario to implement it in phbank as a menu option for XY saves (not sure if he'll add but it's worth asking).
PSS research is still to be done, if you have a savefile that can access mirage spots and has never streetpassed or connected to internet it would be great, as this kind of save is probably nowere to be found unless playing the game for that purpose.
-
I was editing my previous post, so I'll just quote myself on this. Gonna see if this applies to other saves as well.
EDIT 2: So, I was playing with my TID+0x1600 numbers and...
TID : 0xF1EB -binary-> 1111000111101011
If we thin of the value ate 1600 as an u32, then the number should be 0x91C9CC76, now look at 0x91C9 in binary -> 1001000111001001
1111000111101011 (TID, 0xF1EB)
1001000111001001 (0x1602-3, 0x91C9)
An AND operation outputs 0x91c9 (and an OR operation 0xF1EB). Coincidence?
Edit: also, we are missing TID/0x1600 combinations for these maps:
186
191
193
194
196
198
199
200
206
460
-
I think method 1 is the easiest and cleanest one for now.
As I said, not a fan of teleportation (might alter too many things in the save).
Next day method would be valid, but that would require knowing how the isle is exactly calculated and fullfilling other requirements such as saving at a given map and coordinates so the value is correctly calculated, so again method 1 is better as there's still save editing involved. I think it's overly complicated.
The best method would be the unresearched pss data injection. I also wonder how the streetpass eon ticket works. I have it on my save, but I don't have a second 3ds to test (but I guess I could borrow one from a friend), but this eon ticket streetpass thing isn't as interesting given a wondercard was made for it (still curious if that could be tweaked to pass other items, i.e. Master Balls or maybe they coded it to only work with the eon ticket event).
Testing would be much easier if I could test on citra.
EDIT: @theSLAYER I finished trying the 33 set, unfortunately some repeated too, so I was wrong about them being some kind of bitflags (I was referring to the output, maybe after doing some operations a 4 byte number with all but one bits was set, that gives 32 possibilites
and all being set/unset for crescent isle).
In any case, I found a crescent isle value for TID 0x0000: FF FF FE FF
Here's again my TID/0x1600 combination that outputs crescent isle: TID (61931, 0xF1EB), 0x1600: 76 CC C9 91
Let's see if we can find any correlation...
FF FF FF FF - 204
7F FF FF FF - 187
BF FF FF FF - 207*
DF FF FF FF - 463
EF FF FF FF - 195*
F7 FF FF FF - 188*
FB FF FF FF - 207* --> same as BF FF FF FF
FD FF FF FF - 461
FE FF FF FF - 466
-------------
FF 7F FF FF - 184*
FF BF FF FF - 192*
FF DF FF FF - 462*
FF EF FF FF - 184* --> same as FF 7F FF FF
FF F7 FF FF - 195* --> same as EF FF FF FF
FF FD FF FF - 461*
FF FB FF FF - 201
FF FE FF FF - 189
-------------
FF FF 7F FF - 205
FF FF DF FF - 464
FF FF BF FF - 184* --> same as FF 7F FF FF and FF EF FF FF
FF FF EF FF - 188* --> same as F7 FF FF FF
FF FF F7 FF - 208
FF FF FD FF - 195* --> same as EF FF FF FF and FF F7 FF FF
FF FF FB FF - 464
FF FF FE FF - 467 --> CRESCENT ISLE
-------------
FF FF FF 7F - 192* --> same as FF BF FF FF
FF FF FF DF - 203
FF FF FF BF - 462 --> same as FF DF FF FF
FF FF FF EF - 461 --> same as FF FD FF FF
FF FF FF F7 - 188* --> same as F7 FF FF FF and FF FF EF FF
FF FF FF FD - 189
FF FF FF FB - 202
FF FF FF FE - 465
EDIT 2: So, I was playing with my TID+0x1600 numbers and...
TID : 0xF1EB -binary-> 1111000111101011
If we thin of the value ate 1600 as an u32, then the number should be 0x91C9CC76, now look at 0x91C9 in binary -> 1001000111001001
1111000111101011 (TID, 0xF1EB)
1001000111001001 (0x1602-3, 0x91C9)
An AND operation outputs 0x91c9 (and an OR operation 0xF1EB). Coincidence?
-
I thought they were bitflags, xored in some way, so I tested 0xFD (11111101) expecting it to generate 465 spot, but I guess there's more to it as it generated spot 462
I think I'll start with FFFFFFFF and go a single bit at a time, see if I get any repeat, there are 32 spots and 4 bytes have 32 bits after all.
FF FF FF FF - 204
7F FF FF FF - 187
BF FF FF FF - 207
DF FF FF FF - 463
EF FF FF FF - 195
F7 FF FF FF - 188
FB FF FF FF - 207 --> same as BF FF FF FF
FD FF FF FF - 461
FE FF FF FF -
It seems I already got a repeat... I wonder how the island is calculated.
-
Ok, I've been using a 3ds hex editor to do it on console, seems I was editing 0x16000 instead of 0x1600...
Gonna start at 21 and keep going down, will keep editing this post.
FD 00 00 00 - 462
21 00 00 00 - 465 (loop?)
20 00 00 00 - 197 -> you got this one with 01 00 00 00
1F 00 00 00 - 201
1E 00 00 00 - 463 -> you got this one with 06
1D 00 00 00 - 465
1C 00 00 00 - 465
1B 00 00 00 -
1A 00 00 00 -
19 00 00 00 -
18 00 00 00 -
00, 21, 1D and 1C produce 465...not sure if secuential incrementing is the best way to approach, gonna try something
EDIT 2:
I've just realized there are 32 possible islands, and 4 bytes have 32 bits. They are bitflags.
-
No, I haven't tried the teleportation, as I'd rather change the island than teleport, but will try later if you want.
Seems I'm stuck with value changing:
00 00 00 00 - 463
01 00 00 00 - 465
02 00 00 00 - 465
03 00 00 00 - 465
04 00 00 00 - 465
00 00 00 01 - 465
Don't know how this is calculated, but it seems this will be even trickier than expected.
-
Are you listing islands with TID 0000? I'm doing that, so maybe we should plan it out to not repeat ourselves.
What pkhex exports and what is stored in pss might be different. Best way would be to delete all info in PSS blocks, then do a single streetpass and compare the saves.
-
Ok, used my crescent island savegame, changed TID to 0000000, loaded it tomorrow and generated island was 463.
0x1600 holds this data: 27 99 15 7C
0x1600 before changing TID (which is 61931, F1EB) was: 76 CC C9 91
But I can't figure out anything out of it. Map location and probably other values are on when calculating the value at 0x1600. Then that value at 0x1600 it is used against TID to determine the current spot. I think the best approach now would be to find a value in 0x1600 that generates crescent isle with TID 0000, then try to figure out how TID works in the ecuation so we can calculate a value that generates desired island for a given TID and value found at 0x1600.
Using ctrxexplorer for hex editing and phbank for checksum fixing should speed up the testing process.
About PSS data, maybe pkhex has more about it in the code, but the most logical way would be that each pss data holds both date and TID information, and that spots are calculated on the fly with those.
EDIT: some tests on my save, current day, all with TID 0000
00 00 00 00 - 463
01 00 00 00 - 465
02 00 00 00 - 465
03 00 00 00 - 465
04 00 00 00 - 465
00 00 00 01 - 465
-
I also thought about TID/SID, and the good news are I ended up at the same map as you!
Now we just gotta figure out how TID is exactly used to store mirage island at 1600. This may also affect PSS data if TID is stored there, so making a dummy pss data file with different mirage spots seems closer.
Gonna time-trave with a TID 00000 savefile to get some new islands and values at 1600.
-
00 00 00 00 unlocks map 194 for me.
Have you checked if it's the whole 4 bytes what change mirage spot? It should only need 1 byte for that, I don't think they are bitflags as you previously sugested, I'd rather just number them from 0-32, it would just need 6 bits to represent all the islands with spare slots.
I'll try with the other save I have, that generated a different island. If 00 00 00 00 takes me to the same spot maybe it's TID/SID related (they need a per-game factor for randomization after all for streetpass)
-
Gonna try some of those.
Here's my savefile, saved today (October 19th, but as I said loading any other day [at least in the future] produces crescent isle too) with crescent isle as current mirage spot (no passed spots in the save): https://www.dropbox.com/s/hirlbdizb7dpzjm/main?dl=0
Data at 0x1600 is: 76 CC C9 91
EDIT;
Tried changing it to 00 00 00 0B, and mirage spot changed, but it took me to map 193 instead of map 208 as the list you posted hinted.
Seems this will still be tricky to work out.
ps: by the way, yesterday I went and discovered how the friend safari in XY is stored (for the locked/unlocked slots status).
-
Well, I'm a little puzzled. From my tests I know mirage island is affected by many things, but I thought I had found one of the determining factors at 0x1200.
Also I want to make clear I wasn't trying to change the CURRENT mirage spot, but what generates the new mirage spot on the next day. Maybe your are talking about the current spot for the day?
theSLAYER, my I have one of your saves trough pm?
I can post mine too if any interrst.
I'll wait for your compilation. Today I plan on looking into other spot generation via pss, maybe it's easier to inject and modify pss data after all?
-
I've managed to pinpoint the main block that affects mirage spot location: 0x03 (0x1200-0x1400)
As I stated in my edits in the post above, map coordinates and other unknown circumstances also affect mirage spot. Changing the block 3 from my save that generates crescent isle to another one produces a different mirage spot, even when the savegame is saved at the same coordinates, but I guess this is a good starting point.
Now I'll try to see if there's a given byte controlling mirage spot. May not be very useful if we can't edit the save so mirage island gets generated though...
I guess I can do the same strategy to try finding other blocks that affect mirage spot by avoiding modifying block 3.
EDIT:
PKHex has this info about block 3:
public int ResumeYear { get { return BitConverter.ToInt32(Data, AdventureInfo + 0x4); } set { BitConverter.GetBytes(value).CopyTo(Data,AdventureInfo + 0x4); } } public int ResumeMonth { get { return Data[AdventureInfo + 0x8]; } set { Data[AdventureInfo + 0x8] = (byte)value; } } public int ResumeDay { get { return Data[AdventureInfo + 0x9]; } set { Data[AdventureInfo + 0x9] = (byte)value; } } public int ResumeHour { get { return Data[AdventureInfo + 0xB]; } set { Data[AdventureInfo + 0xB] = (byte)value; } } public int ResumeMinute { get { return Data[AdventureInfo + 0xC]; } set { Data[AdventureInfo + 0xC] = (byte)value; } } public int ResumeSeconds { get { return Data[AdventureInfo + 0xD]; } set { Data[AdventureInfo + 0xD] = (byte)value; } } public override int SecondsToStart { get { return BitConverter.ToInt32(Data, AdventureInfo + 0x18); } set { BitConverter.GetBytes(value).CopyTo(Data, AdventureInfo + 0x18); } } public override int SecondsToFame { get { return BitConverter.ToInt32(Data, AdventureInfo + 0x20); } set { BitConverter.GetBytes(value).CopyTo(Data, AdventureInfo + 0x20); } }
What affects mirage spot generation is either resume date time or the 4 bytes that come after it, gonna try modifying those.
-
I've checked the save, it seems he has some of the pokemon from the save in this thread in there. I've seen some fishy things in OT# like the 3 legendary birds having the same ID# and OT#, which would be extremely rare, so I guess he just used other events as basis to generate the missing ones. While technically legit, they don't seem like any of the missing events would be in the save.
I've went and asked in youtube, let's see if I get a reply.
Btw, at filb.de the admin Buoisel had at some point a dump of a savegame for German Mew and Celebi from the celebi Tour and was prone to share them. I haven't been able to contact him, but it would be great if we could get those saves, maybe he has more than 1 celebi from gen 2? A legit shiny one would be really awesome to have, only japanesse players can go and softreset for them.
-
Ok, some quick report:
- I'm lucky, my save for today features Crescent island!
- I restored my previous savegame, it still got crescent island, so either I was really lucky twice or mirage spot is generated using a seed in the savegame.
- I restored a save from 2015, mirage spot is totally different.
Then I went back trough several of my savegames. I haven't really played this year, and I've just been receiving the 20th anniversary events. All those saves generated crescent isle, as I haven't really played. I've checked on pkhex, I haven't played since 7th january, and all those saves get crescent island.
Good thing is now I have a save with crescent island as random island from today, and tomorrow the island will be different on the very same save. There shouldn't be many different offsets, the only thing I did was load the save, then save and go check which island was there, I'll do the same tomorrow, with the same save and I expect a different island and hopefully very little changes in the savegame, at the very least very little differences and even less blocks, and since the saves are the very same, changing the blocks shouldn't really matter.
I'm starting to think the island is generated by some combination of "last savegame date" + "TID/SID". I should test this by changing the 3ds clock to 3 days ago, wait 3 days and see if crescent island is generated again. I'm gonna test changing those on pkhex, see if I get a different mirage spot. If I do, then there's really no mirage spot stored on the save for the random island (PSS/streetpass ones may be different if stored on the savegame).
I'll try asking on ircc to 3ds devs if there's a (known) way to change date/time without the 3DS marking the change in system time, thus rendering timed events useless. There should be a way.
ps: will test if it can boot without SD, but why wouldn't it? In any case it may boot and say streetpass is disabled.
EDIT2: @theSLAYER
Seems last time saved has nothing to do with it. I've noticed something comparing my previous save and today's save (in-game), and that is that block 37 is totally different " Secret Base (Passerby) & Passerby Event Values". Seems it might really be related to it, or maybe it's because the game picked up some of my streetpass data I had. Gonna re-test.
Also, I've found out that the dev application "Config" can change the clock without triggering anti-time travel, so that will help with research:
https://www.3dbrew.org/wiki/Anti_Time-Travel
https://www.3dbrew.org/wiki/3DS_Development_Unit_Software#Config
https://www.3dbrew.org/wiki/Config_Savegame
I'll go the legit way since it's only a few hours until next day, but then I'll do further checks with that tool. That will allow testing the same day with the same savegame under multiple circumstances.
In the meantime, gonna try changing block 37, see what happens.
ps: the game does not run without SD card, that actually surprised me. In any case jksavemanager/savedatafiler can backup/delete/restore exdata for testing
EDIT 3: so as side effect I've seen there's a friend code tool that actually adds friend codes to the friend list, furthermore they are enabled and ready to use in the safari zone. That means there's a way to easily unlock all safari's slot 1 and slot 2. Slot 3 would be trickier, but wether slot 3 has been unlocked or not seems to be stored in the savegame, so getting all safaris should be possible without any online interaction.
EDIT 4:
So far not much progress. I've found out that the mirage spot is affected by the following:
- Map location were you last saved (if you save at the very same spot, mirage spot won't change, I'm saving after using a PC at a pokemon center, since that ensures the same coordinates each time).
- After catching a pokemon, saving at the same spot will no longer generate the same mirage spot.
- I changed injected blocks 0x4 and 0xA from my save that has crescent island to an older one (with different mirage spot, put saved at the same coordinates) and the mirage spot still didn't change.
I'll start trying block substitution, maybe teleporting onto crescent island and being able to battle cresselia with the data you posted is maybe luck from npc data from another map triggering the event on cresselia map?
I'll use the half save strategy: will substitute half the blocks, see if any unlocks crescent isle.
-
Islands obtained through Streetpass are the same as the ones you can get from "passing by" somebody via connecting to PSS, are they not?
They are, but acording to bulbapedia, you can't get the hidden item from street pass ones.
-
Was there ever any announcements of Gen. VI WiFi getting cut because of Gen. VII?
I know it probably will at some point in the future but I wouldn't think that would be because of Gen. VII
But then again, once Gen. VII comes out, there will probably be a lot less people on Gen. VI PSS, so it might become harder to find islands through it.
PGL goes down for gen 6 on november 1st, but the actual online features such as trading, PSS and wondercards should still work I guess.
theSlayer, did you ever try the full block approach to at least locate the block where current mirage island resides? I'll probably do that, starting with the suspicious blocks. I'll make two saves on the same day with different island on it, then start swapping data blocks from the save in hopes I find the one that changes the mirage spot. Knowing where the data is stored should be the first step..
I've just read at bulbapedia that the hidden item in each spot depends on wether the spot was received via streetpass (there will be no item at all) so maybe spots received via streetpass are at extdata, but the ones from pss are treated differently as it seems.
Also, is there a limit to how many mirage spots can be enabled at a single time? I think there isn't but can't find any info.
EDIT: also, someone with 2 consoles and 2 games (at least one should be a cartridge) could try the following?
1.- Streetpass to get a second mirage spot
2.- Save and shutdown console
3.- Extract SD card (this should prevent any exdata at all)
4.- Run the game and see if the mirage spot from the street pass is still there.
That would mean new spots from streetpass are saved to the savegame itself, and those spots must have some indicator that they are from streetpass to prevent a hidden item from spawning.
EDIT 2: I just remembered I should be able to test the streetpass thing using homepass.
-
So, doing those changes make crescent isle the one in the game, no teleportation involved? Do you have any rough idea of what's in each offset?
I'm thinking on getting and comparing the data from other isles, hopefully it is random enough so the same save gets different isles via backup-restore. Being able to edit the save's current isle should be the easiest and fastest approach to this. Being able to inject pss data to have more islands on the same day would be the best outcome, but if we find were the current isle is stored, making a cheat plugin that allows to change the isle would also be a valid approach, since the ultimate goal would be to be able to visit the desired islands.
EDIT: just checked overall structure of the save, 0x1400 is part of "Trainer Stat Tracking" and 0x2000 "Overworld Data (0x108 per Overworld Entity)". Now, I wonder what the relationship between the two regions is, I don't see why current island depends on both.
ps: you should totally give JK savemanager a chance, just like savedatafiler...but better, main advantages are auto-deleting secure value and multiple save slots (and the choice to name/date them)
-
Oh sorry, I misread. I guess I'll give it a shot next week since I'll have free time and servers are closing next month.
-
This sounds awesome, then if we put in more npc more islands can be unlocked?
Better than only a random one once a day.
Mirage Islands in ORAS
in Saves - Research
Posted
That's why I suggested to previously hex edit the savefile to delete the full 0x37 block, so the only data in there is related to that single streetpass.