Jump to content

Mirage Islands in ORAS


MichiS97

Recommended Posts

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)

Link to comment
Share on other sites

So, doing those changes make crescent isle the one in the game, no teleportation involved?

It's still teleportation, just that the Golden Ring appears now.

I can't figure out which offsets stored Mirage islands, as that don't store them as individual Map Ids, nor could I determine a pattern (such as have only 01 in FFFFFFFF of possibilities, like how badges were saved)

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)

Yeah I have JKSM too, I just end up using back SDF, cause I'm so used to it.

I dl-ed JKSM cause I wanted the function of naming saves, so I can keep track what I backed up when I start a new gameplay..

Do you have any rough idea of what's in each offset?[/qoute]

Anyhow, referring to the post on the top of this thread, I figured the first few sets of offsets involve Map data (Map ID @ 0x1402 and 0x14F4), as well as some form of XYZ coordinates (which I don't really understand the values and how to convert, even after comparing to Pkhex).

Also, using Pkhex for coordinate teleportation failed, because it only modified the first set, but apparently the second set needs to be changed too.

In this case, I made it all one big chunk, since it oddly failed for MichiS97 and Ammako.

From the Wiki, after calculating the values, I realized 0x2000 contained NPC data (which also has the Map ID in it).

There's three NPC data, which one is for Golden Ring, second is for visible item, and another for hidden item.

I copied an enough area that will replace all NPC data that prior existed in Littleroot. (cause I'm using Littleroot town for this teleporter test)

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.

Apparently when I previously tried to revert to a previous save, the new mirage island doesn't spawn.

So I don't know if it's stored as EXT data or something, which controls when a new mirage island spawns,

or if the next spawn is predetermined.

Also, I tried comparing recent saves, and there's too much changes, especially with PSS data.

On this page, I detailed which Map relates to which Map ID,

in an effort to find the link on how the Mirage Isle presence is stored.

For example, using the same order of the internal Map (and ignoring the event locations, including cres isle for now),

465 Mirage island can be stored as either 01000000 00000000 000000000 00000000 (0x00100000) or 00000000 00000000 00000000 00000010 (0x00000010),

which gave too many hits to search..

Link to comment
Share on other sites

I ended up going to Crescent Isle legit by SRing with PSS :x I thought it was going to be a big hassle getting there so I was going to turn to teleporting there via save editing like that, but in the end it was much easier than I thought it'd be.

But I can still give that a try later to confirm if it works. Just in case, I'll wait until my Crescent Isle disappears first, because I'm not sure if that could possibly skew the results.

Or wait... Perhaps this could work on a fresh save file too. Might have to see.

Link to comment
Share on other sites

I ended up going to Crescent Isle legit by SRing with PSS :x I thought it was going to be a big hassle getting there so I was going to turn to teleporting there via save editing like that, but in the end it was much easier than I thought it'd be.

But I can still give that a try later to confirm if it works. Just in case, I'll wait until my Crescent Isle disappears first, because I'm not sure if that could possibly skew the results.

Or wait... Perhaps this could work on a fresh save file too. Might have to see.

Yeah I got to Crescent Isle first by SRing on PSS too, but this implementation is in preparation for when Gen VI connectivity to Online services is cut, in favor of Gen VII.

I've been trying to refer to Wiki and save file to see where the stored offset is, and its hard to find.

Well, I can confirm its not 0x1F5FC. After connecting to PSS and gained Isles, its a value that jumped from 00 to 4C. Changed it to FE, and no isles appeared.

1 down, gajillion more offsets to go.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Global Link support being dropped was announced to be closed for November 1st, I assume the rest of the services will follow around that period or last an extra half a year at best.

(though Gen IV and V survived till May 20, 2014, which was the year ORAS was released (in nov))

Link to comment
Share on other sites

Well, for Global Link is different. It's there for events and various other minigames that are only relevant to the current Gen. so it makes a lot more sense they would update it and phase out the previous Gen., but I don't see a reason why they would cut every other online feature from the game when the 3DS is doing fine. :P

When Wi-Fi was shut down for G4/G5, that was when DS and Wii servers (for all games) as a whole were being shut down; problems with GameSpy who were hosting their WFC servers.

3DS servers are hosted by Nintendo themselves, so they won't really run into problems like that there, but there could still be a chance they would shut down 3DS Wi-Fi servers in the future once they phase the 3DS out in favor of a newer handheld.

That, and the games are (I'm pretty sure) still being produced and sold in-stores, and they're always available through the eShop anyway. It would be kinda shitty of them to just shut down all online connectivity for no reason.

That being said it's still useful to have an alternative way of getting there through save editing, because like I said it might become harder to find Passersby post-Gen. VII, and at some point down the line, in a few years, online support may get dropped entirely anyway.

Then some people just don't have Wi-Fi access on their 3DS for whatever reason, too, and in general it would be a lot more convenient to just extract your save, edit it, and reinject it, than to mess around for an hour and a half trying to get Crescent Isle and instead getting trolled by Mirage Mountain that is also south of Ever Grande City (*grumble grumble*)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Yeah, but for how much longer, we wouldn't know.

At least we'll have time to experiment :XD:

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 should do that too, block by block breakdown seems like a good idea.

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.
Islands obtained through Streetpass are the same as the ones you can get from "passing by" somebody via connecting to PSS, are they not?

Yup it's the same thing.

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.

I've seen 5 or 6 around the same time, ignoring legendary ones.

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.

I could try, but most of my 3DS are on some kind of hex, so I doubt I can remove SD card.

However, for subsequent days, if I'm just streetpassing myself again and again, my PSS data won't change,

so it'll limit the changes..

Also, I don't think Pokemon ORAS can boot without SD card?

Link to comment
Share on other sites

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.

Edited by suloku
Link to comment
Share on other sites

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.

Edited by suloku
Link to comment
Share on other sites

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

Awesome, a few days ago I tried looking for a way to change the clock on the 3DS without triggering the anti-cheat, completely forgot about that app (and can't believe Config never came up in the search results.)

So convenient that it makes your 3DS restart automatically as soon as you confirm the change :P

Link to comment
Share on other sites

What if that is what they are using Wardrobe Bitflags for?

https://projectpokemon.org/wiki/Pok%C3%A9mon_ORAS_Save_File_Structure

We don't change wardrobe in ORAS, and it is right after time saved/time played on 3DS.

edit:

it's not warddrobe.

I'm looking into the offsets provided, and checking my different saves and mirage islands saved,

and going to check if there is any common value.

edit2:

I don't think it's range 0x1200 to 0x13FF.

I had two files with different Mirage islands, and copying that data from one to another didn't change the mirage island that appears.

For example:

File 1: 1346 187

File 2: 3346 187 467

File 3: 5638 465

For my saves, theres only this amount of data at 0x1200 (file 3):

 

11 09 11 20 E0 07 00 00 0A 02 00 14 37 32 AF 02 E7 17 00 00 00 00 00 00 15 0D 01 1C 00 00 00 00 CE 8C 06 1C 00 00 00 00 13 01 00 00 00 00 00 00 C0 EE A2 FA E4 E2 E4 06

 

Copying it over to file 1 and after checksum correction, did not change my mirage island map for the day from 465 to 187.

Edited by theSLAYER
Link to comment
Share on other sites

@Ammako

I think I found it! (partially)

Offset 0x1600 length 0x4:
 

File 1: Map 187 Data: 77 FB A3 58
File 2: Map 187 467 Data: 77 FB A3 58
File 3: Map 465 Data: 2B C0 14 39

Pasting "2B C0 14 39" onto File 1 changed my mirage island!

However, it only affects main mirage island.

When pasting into file 2, Cres isle (467) was still there, and main island changed.

Data representation:

File 1+3: Map 465 Data: 2B C0 14 39
File 2+3: Map 465 467 Data: 2B C0 14 39

So at least we now know how to change main islands, and that passed islands are stored somewhere else.

Also, what the hell are these 4 values? raw time related? anti time travel related?

edit1:

presently compiling offsets for island generation, will post back here.

 

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

suloku said:
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?

Yes, I'm actually talking about current Mirage spot generated.

In the mean time, I'll post my present found offsets:

 
0x1600 MapID XYZ Location Mirage Type        
00 00 00 10 184 15.5/2/32.5 East of Mossdeep Mirage Forest Tangela Sunkern Glameow Minccino
  185 16.5/2/32.5 North of Route 124 Mirage Forest Tangela Sunkern Purugly Vulpix
  186 19.5/2/19.5 West of Route 114 Mirage Forest Tangela Sunkern Purugly Petilil
00 00 00 0C / 0E / 11 187 19.5/2/32.5 North of Lilycove Mirage Forest Tangela Sunkern Purugly Cherrim
00 00 00 16 / 17 188 19.5/2/9.5 South of Route 132 Mirage Forest Sunkern Petilil Audino  
00 00 00 0D 189 19.5/-88/28.5 West of Route 105 Mirage Forest Forretress Happiny    
00 00 00 09 / 13 190 19.5/2/8.5 South of Route 109 Mirage Forest Audino Sunkern    
  191 19.5/2/19.5 North of Route 111 Mirage Forest Kricketune Larvesta    
  192 19.5/2/27.5 West of Rustboro Mirage Cave Tynamo Klink Boldore Graveler
  193 18.5/2/33.5 North of Fortree Mirage Cave Klink Tynamo Excadrill Onix
00 00 00 07 194 19.5/74/15.5 South of Pacifidlog Mirage Cave Tynamo Cofagrigus Slowpoke  
  195 18.5/20/17.5 South of Route 107 Mirage Cave Unown      
  196 19.5/74/15.5 North of Route 124 Mirage Cave Tynamo Cofagrigus Graveler Boldore
  197 17.5/20/24.5 North of Route 132 Mirage Cave Ditto Excadrill Tynamo  
00 00 00 02 198 20.5/2/31.5 Southeast of Route 129 Mirage Cave Tynamo Onix Graveler Boldore
00 00 00 08 199 20.5/92/32.5 North of Fallarbor Mirage Cave Slowpoke Tynamo    
  200 19.5/29/27.5 West of Route 104 Mirage Island Venomoth Xatu Zebstrika Darmanitan
  201 14.5/47/12.5 South of Route 134 Mirage Island Venomoth Xatu Zebstrika Maractus
  202 23.5/-16/28.5 North of Route 124 Mirage Island Venomoth Xatu Zebstrika Persian
00 00 00 00 203 10.5/29/16.5 West of Dewford Town Mirage Island Venomoth Xatu Zebstrika Tangela
00 00 00 14 204 18.5/29/34.5 South of Pacifidlog Mirage Island Audino Xatu    
00 00 00 04 205 19.5/29/26.5 South of Route 132 Mirage Island Munna Ditto    
00 00 00 18 206 30.5/29/22.5 North of Route 113 Mirage Island Darmanitan Larvesta    
  207 9.5/29/19.5 East of Shoal Cave Mirage Island Purugly Porygon    
00 00 00 0B 208 8.5/38/31.5 West of Route 104 Mirage Mountain Forretress Donphan Kricketune Stantler
00 00 00 15 460 9.5/92/28.5 North of Lilycove Mirage Mountain Forretress Donphan Kricketune Rufflet
00 00 00 01 / 0A 461 10.5/2/22.5 Northeast of Route 125 Mirage Mountain Forretress Donphan Kricketune Vullaby
00 00 00 0F / 12 462 18.5/38/8.5 West of Route 131 Mirage Mountain Forretress Donphan Kricketune Girafarig
00 00 00 03 463 30.5/2/26.5 North of Mossdeep Mirage Mountain Magby Darmanitan    
  464 31.5/2/9.5 South of Route 129 Mirage Mountain Zebstrika Elekid    
  465 19.5/20/29.5 Southeast of Route 129 Mirage Mountain Porygon Xatu Munna  
00 00 00 05 466 18.5/30/12.5 East of Mossdeep Mirage Mountain Audino Happiny Tangela  
00 00 00 06 467 24.5/56/34.5 Crescent Isle   Cresselia      

If any of the above values worked, we know we found Current Mirage Spot offset!

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

My list doesn't take endianness into account (was wondering why the mirage islands jumped all over the place),

but the fact that you got a different island, means it's likely calculated against something else.

Where does 00 00 00 00 take you?

Yeah I read about the Friend safari locking/unlocking status, and I think it's pretty darn cool

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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.

Changing any of the 4 values changes the mirage island.

Also, I figured what's out going on.

Assuming this is a "Daily Mirage Value",

It is calculated (perhaps Xored then divided?) against TID. (Changing SID is of no consequence),

hence that is why we ended up with different Mirage Island.

At 0x1600 with 0x00000000, and TID 00000, I end up at 465.

So if you end up at the same map as I do, it may prove the theory.

(this is reminiscent of the RSE Mirage island method)

(edit: I also stopped thinking of them as bit flags, the moment 4 bytes had to be changed)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Except it may be possible that the Mirage Daily Value is xored against the new PaSSed TID.

To test the scenario, I used my file 3346 (maps 187 and 467),

Changed my TID and SID to 00000, and loaded the save.

Main island changed to 208, and PaSSed Crescent Isle is still here.

Conclusion: PaSSed isle is independent of 0x1600 (tested earlier), and Independent of My TID and SID.

So you're correct; if we can locate the value (perhaps you can use my 1346 vs 3346 saves I sent you),

we can just fake PSS Mirage isles.

Problem: Is it a value stored after PaSSed, or does it check against PSS encounters list?

If so, how does the game determine expiry of PSS encounter to convert into Mirage Spot?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...