Jump to content

suloku

Innovator
  • Posts

    742
  • Joined

  • Last visited

  • Days Won

    26

Posts posted by suloku

  1. I could do a single streetpass with myself, and send you what pops up.

    Though previous Streetpass stuff may or maynot still be there.

     

    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.

  2. 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:

    https://github.com/kwsch/PKHeX/blob/12dbbf974560fa9abac71c765709bf30cb6d58a9/PKHeX/Subforms/Save%20Editors/SAV_Wondercard.cs#L307

    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.

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

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

    http://store.axelspringer.es/videojuegos/revistas-videojuegos/revista-oficial-nintendo/n-290-revista-oficial-nintendo.html

    I guess anyone from europe could buy the online version and get the code.

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

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

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

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

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

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

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

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

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

  14. 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)

  15. 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).

  16. 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?

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

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

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

  20. 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 :S

    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. :P

    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.

  21. 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)

×
×
  • Create New...