Glitch City Laboratories Forums

Lab γ: Video Games and Glitches Discussion => Pokémon Glitch Discussion => Generation IV Glitch Discussion => Topic started by: SatoMew on February 13, 2015, 06:59:46 pm

Title: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 13, 2015, 06:59:46 pm
https://docs.google.com/document/d/1r02og1raAV1F8aCj6aIPT0z7J7anWrMqFMJ-yEUm4to/edit?pli=1

I was wondering about this just now. Was there a lot of important information which was lost with all the transitions of the forum? So far, this archive has been helpful. I figured Zowayixx would know since I recall him being related to the Hall of Origin forums.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Evie the Mother Hen ☽ ❤ on February 13, 2015, 07:17:30 pm
Actually the Zowayix (http://forums.glitchcity.info/index.php?action=profile;u=20) who is one of the staff here and Zowayixx (http://forums.glitchcity.info/index.php?action=profile;u=970) are two different people. I don't know why the site got taken down and if Zowayixx still has any of the data from Hall of Origin locally.

I think a lot of information may have unfortunately been lost, like Pomeg glitch information. People like Vaeporsage, Pawny, voltage and blaphy may know more about this.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 13, 2015, 07:23:24 pm
Actually the Zowayix (http://forums.glitchcity.info/index.php?action=profile;u=20) who is one of the staff here and Zowayixx (http://forums.glitchcity.info/index.php?action=profile;u=970) are two different people.

D'oh! A single X was enough to mistake two different people, tee-hee :P
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on February 13, 2015, 07:42:24 pm
On tweaking/void itself, most of what was lost was research logs on "old" HoO from back in ~2008 when the forums were administrated by Auburn, that would be good for history/archive purposes. The "new HoO" administrated by Zowayixx should be the one with the Pomeg stuff, and it's not entirely lost, some few select members have the vBulletin database backup that I don't think it's restorable without owning a vBulletin license, but posts can be searched using Ctrl + F on any text editor. The wiki from new HoO was entirely lost, but except from tweaking maps, not much was lost there.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Kraust on February 13, 2015, 07:47:08 pm
This guide is generally lacking and was written a few years ago (iirc).
Also to note, that you can Tweak in HG/SS although the uses are far less apparent (I don't think there are any walkable voids outside of the map). I know you can skip Tohjo Falls from New Bark Town without Waterfall as I've done it (blah memory)

I was part of some of the original Hole Punching / Tweaking research back on GameFAQs in 2007-2008. I know a bit about the stuff, but I never exploited it to any reasonable success (mainly because I eventually god a BSOD after trying to get at Darkrai.

Gen IV glitching is some of the stuff I'm more interested in, but there's very little research on it that's well documented. There wasn't a desire for whatever reason when these games were released.

I remember hearing that you couldn't Tweak via Emulation as the emulator didn't emulate that part of the DS for whatever reason.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 13, 2015, 07:57:40 pm
On tweaking/void itself, most of what was lost was research logs on "old" HoO from back in ~2008 when the forums were administrated by Auburn, that would be good for history/archive purposes. The "new HoO" administrated by Zowayixx should be the one with the Pomeg stuff, and it's not entirely lost, some few select members have the vBulletin database backup that I don't think it's restorable without owning a vBulletin license, but posts can be searched using Ctrl + F on any text editor. The wiki from new HoO was entirely lost, but except from tweaking maps, not much was lost there.

Thank you for the input.

This guide is generally lacking and was written a few years ago (iirc).
Also to note, that you can Tweak in HG/SS although the uses are far less apparent (I don't think there are any walkable voids outside of the map). I know you can skip to Tohjo Falls from New Bark Town without surf as I've done it.

I was part of some of the original Hole Punching / Tweaking research back on GameFAQs in 2007-2008. I know a bit about the stuff, but I never exploited it to any reasonable success (mainly because I eventually god a BSOD after trying to get at Darkrai.

Gen IV glitching is some of the stuff I'm more interested in, but there's very little research on it that's well documented. There wasn't a desire for whatever reason when these games were released.

I remember hearing that you couldn't Tweak via Emulation as the emulator didn't emulate that part of the DS for whatever reason.

There are walkable voids in Platinum and HeartGold/SoulSilver since I have found them myself but it's been a while. I didn't access them from tweaking though since I'm not very good at it.

Mayhaps tweaking is possible in DeSmuME if the DS BIOS is used?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on February 13, 2015, 08:03:09 pm
I know you can skip Tohjo Falls from New Bark Town without Waterfall as I've done it (blah memory)

Tweak on the route above Goldenrod and run-tweak on Azalea/Slowpoke Well are used in speedruns (not 100% sure about the spots). If you use the correct kind of tweak, it always mirrors the opposite route, so it actually depends on its opposite side not being blocked, or having a compatible Z-axis (this can get deep, it's not explained in the guide as patterns weren't actually explained there except for the useful ones for entering the void. There's this post (http://halloforigin.proboards.com/post/16794) where I re-wrote them if anyone is interested, though).

EDIT: WaybackMachine actually has some pages of the wiki alive, but none of the interesting stuff is there, so meh.

I remember hearing that you couldn't Tweak via Emulation as the emulator didn't emulate that part of the DS for whatever reason.

You actually can, in any emulator.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 14, 2015, 09:09:06 am
Tweak on the route above Goldenrod and run-tweak on Azalea/Slowpoke Well are used in speedruns (not 100% sure about the spots). If you use the correct kind of tweak, it always mirrors the opposite route, so it actually depends on its opposite side not being blocked, or having a compatible Z-axis (this can get deep, it's not explained in the guide as patterns weren't actually explained there except for the useful ones for entering the void. There's this post (http://halloforigin.proboards.com/post/16794) where I re-wrote them if anyone is interested, though).

EDIT: WaybackMachine actually has some pages of the wiki alive, but none of the interesting stuff is there, so meh.

I archived that post of yours. https://archive.today/9NTCk

I remember hearing that you couldn't Tweak via Emulation as the emulator didn't emulate that part of the DS for whatever reason.

You actually can, in any emulator.

Oh, so it was a misconception then? Thanks for clearing it up!
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on February 14, 2015, 11:30:15 am
I archived that post of yours. https://archive.today/9NTCk

Thanks! I had it saved here just in case too. I'd forgotten I'd written it again tbh. :V

Oh, so it was a misconception then? Thanks for clearing it up!

I think some random effects from L-tweaks can differ from emulator and cart on PtHGSS, but I don't have a cart to actually try.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: blahpy on February 14, 2015, 04:12:24 pm
Was there a lot of important information which was lost with all the transitions of the forum? So far, this archive has been helpful. I figured Zowayixx would know since I recall him being related to the Hall of Origin forums.

Yes a lot was lost.  I don't think Zowayixx will be very helpful considering that he left the community after he hacked the "old" )(current, dead) Hall of Origin and deleted everything.

The "new HoO" administrated by Zowayixx should be the one with the Pomeg stuff, and it's not entirely lost, some few select members have the vBulletin database backup that I don't think it's restorable without owning a vBulletin license, but posts can be searched using Ctrl + F on any text editor. The wiki from new HoO was entirely lost, but except from tweaking maps, not much was lost there.

I have a copy of the database still if anyone wants to try to make something to parse it or something.

edit: Wow, this is my first post in almost half a year.  I didn't realise I'd become so inactive, considering that I still visit here very often (almost daily).
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 14, 2015, 04:43:56 pm
Yes a lot was lost.  I don't think Zowayixx will be very helpful considering that he left the community after he hacked the "old" )(current, dead) Hall of Origin and deleted everything.

That's a shame.

I have a copy of the database still if anyone wants to try to make something to parse it or something.

I'm interested though I'll only look at it with a text editor like Pawny suggested.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Evie the Mother Hen ☽ ❤ on February 14, 2015, 05:06:07 pm
I have a copy of the database still if anyone wants to try to make something to parse it or something.

I'm interested though I'll only look at it with a text editor like Pawny suggested.

Same here, I am interested but would only look at it with a text editor.

We could make a thread here about old findings on Hall of Origin and list them.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: blahpy on February 15, 2015, 03:54:37 am
Most of the threads are probably pointless forum game threads that can be discarded but some things like the Pomeg Glitch thread and maybe a few VE threads could be interesting if you can find them among everything else.

http://puu.sh/fWoMV/719857a701.sql

Let me know when you've both got it so I can delete it from my puush.  It's pretty big (almost 100MB).
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Wack0 on February 15, 2015, 06:02:08 am
Most of the threads are probably pointless forum game threads that can be discarded but some things like the Pomeg Glitch thread and maybe a few VE threads could be interesting if you can find them among everything else.

http://puu.sh/fWoMV/719857a701.sql

Let me know when you've both got it so I can delete it from my puush.  It's pretty big (almost 100MB).

I grabbed it to my gbit dedi so can reupload elsewhere if needed.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 15, 2015, 07:21:49 am
Most of the threads are probably pointless forum game threads that can be discarded but some things like the Pomeg Glitch thread and maybe a few VE threads could be interesting if you can find them among everything else.

http://puu.sh/fWoMV/719857a701.sql

Let me know when you've both got it so I can delete it from my puush.  It's pretty big (almost 100MB).

Done and thank you. The file I got is 88.9 MiB. Is that the correct file size?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on February 15, 2015, 07:59:00 am
Most of the threads are probably pointless forum game threads that can be discarded but some things like the Pomeg Glitch thread and maybe a few VE threads could be interesting if you can find them among everything else.

http://puu.sh/fWoMV/719857a701.sql

Let me know when you've both got it so I can delete it from my puush.  It's pretty big (almost 100MB).

I grabbed it to my gbit dedi so can reupload elsewhere if needed.

Be sure to not keep the link public since it has personal stuff like emails and PMs (?).
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: blahpy on February 15, 2015, 05:20:48 pm
Most of the threads are probably pointless forum game threads that can be discarded but some things like the Pomeg Glitch thread and maybe a few VE threads could be interesting if you can find them among everything else.

http://puu.sh/fWoMV/719857a701.sql

Let me know when you've both got it so I can delete it from my puush.  It's pretty big (almost 100MB).

I grabbed it to my gbit dedi so can reupload elsewhere if needed.

Be sure to not keep the link public since it has personal stuff like emails and PMs (?).

Those don't get encrypted? lmao

I've deleted it from my puush now, Torchickens if you want it you can ask me on skype and I'll make you a private link or alternatively you can ask Wack0 (thanks for that offer Wack0!)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Evie the Mother Hen ☽ ❤ on February 15, 2015, 05:44:16 pm
I have it already downloaded, but thanks blaphy and thanks Wack0 too.

It really puts me off I now have access to confidential information though. I am really against that idea, yet I still want access to the public posts so I may delete the private stuff and keep only the thread posts (and other public parts of the site if any). If I do this, after I have done that, I will send the dump back.

I will not share any of the PMs unless someone PMs me here that I have permission to share some of their information and that information is relevant to how a glitch works.

I will think of grabbing information from the Pomeg glitch thread/Tweaking information though and putting it in two threads "Old Hall of Origin Pomeg glitch data" "Old Hall of Origin Tweaking data".

To clean up the dump I may go through it with Notepad++ and do some text replace operations, like where it says \r\n\r\n, actually make a new line.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 15, 2015, 05:56:32 pm
It really puts me off I now have access to confidential information though. I am really against that idea, yet I still want access to the public posts so I may delete the private stuff and keep only the thread posts (and other public parts of the site if any). If I do this, after I have done that, I will send the dump back.

I will not share any of the PMs unless someone PMs me here that I have permission and that information is relevant to how a glitch works.

I feel the same way, it's a tad unnerving. I've been scrolling and passwords seem to be hashed but it still doesn't feel comfortable having this information at hand.

I will think of grabbing information from the Pomeg glitch thread/Tweaking information though and putting it in two threads "Old Hall of Origin Pomeg glitch data" "Old Hall of Origin Tweaking data".

To clean up the dump I may go through it with Notepad++ and do some text replace operations, like where it says \r\n\r\n, actually make a new line.

I'll try to help too.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: VaeporSage on February 16, 2015, 10:02:24 am
I don't recall there being much to find in the old Pomeg glitch thread, although it comprises 20+ pages of something. Good luck in figuring out how to restore the old content.  :)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 16, 2015, 10:52:41 am
I don't recall there being much to find in the old Pomeg glitch thread, although it comprises 20+ pages of something. Good luck in figuring out how to restore the old content.  :)

Thanks :)

I shall be uploading a video soon but I didn't check the dump to see if it's already there. It's about the Battle Tower void, and in Platinum. What do we know about it?

EDIT: Notepad++ returned 6 matches for "battle tower void". 3 of them are duplicates and were probably used for something in the forum's software.

The posts:

Quote from: blaphy
Could this battle tower void be accessed by going into the void through the battle tower building backwards (by going to FS and resetting in the door)?

Also we need a name for this tech imo as its annoying to have to state "going to FS and reset in a door"

Quote from: GamingMasterErnest
I think I'm going to start void exploring on my pearl, when I get some free time! I'd also like to know how to get into the battle tower void.

Quote from: Kettsu
Is the menu openable? If not, it doesn't matter, except if you're in Battle Tower void. xD

EDIT 2: I published the video: https://www.youtube.com/watch?v=iEZDQWCo7Uo (https://www.youtube.com/watch?v=iEZDQWCo7Uo)

I was a bit reluctant in doing so after searching the Web a bit. Crystalmourne has a video (https://www.youtube.com/watch?v=m3_uIeZDAcM) about the Battle Tower void in Diamond and Pearl, along with instructions on how to get to it by tweaking. There's also this thread (http://profglitch.proboards.com/thread/414) with some more tidbits.

I still hope you find my video interesting and that it can attract others to pursue more information about the unique voids and other related stuff.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Evie the Mother Hen ☽ ❤ on February 16, 2015, 02:36:05 pm
Yeah, I think it's interesting.

Wow, Crystalmourne has a lot of great Tweaking videos.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 16, 2015, 02:41:07 pm
Yeah, I think it's interesting.

I'm glad :)

Wow, Crystalmourne has a lot of great Tweaking videos.
Yup. I have also visited the unused Great Marsh in Platinum and, for some reason, the game places me lower on the axis, as if I were in a trap of the real Great Marsh.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: voltage on February 16, 2015, 05:51:09 pm
I don't recall there being much to find in the old Pomeg glitch thread, although it comprises 20+ pages of something. Good luck in figuring out how to restore the old content.  :)

I remember that there were threads on YOP...
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 17, 2015, 09:05:53 am
SunakazeKun (GermanPokemon on TCRF) told me on YouTube that the Battle Tower void is map ID 0 with the internal ROM name of "EVERYWHERE". He also compiled the list of unused maps in Platinum and made a subpage on TCRF for them (https://tcrf.net/Pok%C3%A9mon_Platinum/Unused_Maps) a while back.

After making my video, I went to the Snowpoint Mystery Zone again and opened the Town Map since I made it a registered item for the Y button. When I returned to the overworld, I was greeted with this:

(http://i.imgur.com/d1gVgQB.png)

Is this behavior known? The glitched water tiles remind me of the ones seen in pre-release media of Diamond and Pearl. Here's a scan from CoroCoro, circa May/June 2006. I found it on Pokémon Elite 2000, which has apparently shut down; the site was still up and running not too long ago and the Internet Archive's last capture (http://web.archive.org/web/20150114101439/http://pokemonelite2000.com/diamondpearl.html) of their Diamond and Pearl page is from January 14, 2015.

(http://i.imgur.com/A8XkQAZ.jpg)

EDIT: I tried replicating the void path to the unused Great Marsh in Platinum as Nai indicated (https://www.youtube.com/watch?v=s_zkgTDeXZc). 14E → 60N → 30W... but the game froze when I reached 24W. This in DeSmuME 0.9.11 build 5098 (click here for pre-compiled SVN builds (http://buildbot.orphis.net/desmume/)).

Here are the errors reported by DeSmuME's debugging console:
Code: [Select]
ARM9: Undefined instruction: 0xEA000095 (101000001001) PC=0x02020020
ARM9: Undefined instruction: 0xEA000095 (101000001001) PC=0x02017E9C

AniGIF:

(http://i.imgur.com/X6IJXIv.gif)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Wack0 on February 17, 2015, 11:35:26 am
Here are the errors reported by DeSmuME's debugging console:
Code: [Select]
ARM9: Undefined instruction: 0xEA000095 (101000001001) PC=0x02020020
ARM9: Undefined instruction: 0xEA000095 (101000001001) PC=0x02017E9C

...that's in RAM!
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: danny on February 17, 2015, 02:23:24 pm
Here are the errors reported by DeSmuME's debugging console:
Code: [Select]
ARM9: Undefined instruction: 0xEA000095 (101000001001) PC=0x02020020
ARM9: Undefined instruction: 0xEA000095 (101000001001) PC=0x02017E9C

...that's in RAM!

Maybe we could use it for ACE?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on February 17, 2015, 02:38:19 pm
Is this behavior known?

Yeah, that happens every time you reload the graphics on a Mystery Zone. On japanese versions of DP the void path for Shaymin/Darkrai involves saving in a MZ so you'd always see those graphics after reloading into Seabreak or NMI.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 17, 2015, 02:59:29 pm
Yeah, that happens every time you reload the graphics on a Mystery Zone. On japanese versions of DP the void path for Shaymin/Darkrai involves saving in a MZ so you'd always see those graphics after reloading into Seabreak or NMI.

Thanks for clarifying :)

I have checked with Pokesav and the Battle Tower void is indeed map ID 0 "EVERYWHERE". The coordinates for the spot in which I saved the game on my video are X: 467, Y: 691, Z: 0.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 18, 2015, 10:18:56 am
I'm trying to recreate this discovery (https://www.youtube.com/watch?v=cMB3IaHCVuk) by Zowayixx in Platinum. I looked at the dump and found nothing, plus he didn't provide instructions either. When I went to east fake Sinnoh, all I could find around the amount of steps he showed was a white "Iron Island" void but I entered from northeast real Sinnoh so this might be in a southern location.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on February 18, 2015, 10:23:35 am
I'm trying to recreate this discovery (https://www.youtube.com/watch?v=cMB3IaHCVuk) by Zowayixx in Platinum. I looked at the dump and found nothing, plus he didn't provide instructions either. When I went to east fake Sinnoh, all I could find around the amount of steps he showed was a white "Iron Island" void but I entered from northeast real Sinnoh so this might be in a southern location.

Void varies from file to file, either by flags or factors we don't know. This is likely the case.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 18, 2015, 10:29:34 am
I'm trying to recreate this discovery (https://www.youtube.com/watch?v=cMB3IaHCVuk) by Zowayixx in Platinum. I looked at the dump and found nothing, plus he didn't provide instructions either. When I went to east fake Sinnoh, all I could find around the amount of steps he showed was a white "Iron Island" void but I entered from northeast real Sinnoh so this might be in a southern location.

Void varies from file to file, either by flags or factors we don't know. This is likely the case.

I see, thanks. Actually, I might have misunderstood this but do you have to walk 65536 steps first in order to reach fake Sinnoh or are the voids to the far east of Seabreak Path already part of fake Sinnoh?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: blahpy on February 19, 2015, 08:07:22 pm
I'm trying to recreate this discovery (https://www.youtube.com/watch?v=cMB3IaHCVuk) by Zowayixx in Platinum. I looked at the dump and found nothing, plus he didn't provide instructions either. When I went to east fake Sinnoh, all I could find around the amount of steps he showed was a white "Iron Island" void but I entered from northeast real Sinnoh so this might be in a southern location.

Void varies from file to file, either by flags or factors we don't know. This is likely the case.

I see, thanks. Actually, I might have misunderstood this but do you have to walk 65536 steps first in order to reach fake Sinnoh or are the voids to the far east of Seabreak Path already part of fake Sinnoh?

EFS means walking to the Fake Sinnoh that is roughly 65536 steps East of 430N after a save+reset.  NNFS means walking exactly 65536 steps North from the Fake Sinnoh that is roughly 65536 steps North of 430N after a save+reset, etc etc.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 20, 2015, 11:04:27 am
EFS means walking to the Fake Sinnoh that is roughly 65536 steps East of 430N after a save+reset.  NNFS means walking exactly 65536 steps North from the Fake Sinnoh that is roughly 65536 steps North of 430N after a save+reset, etc etc.

Wow, I was way off the mark there.

Is 430N at least reachable in Platinum?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on February 20, 2015, 11:19:23 am
EFS means walking to the Fake Sinnoh that is roughly 65536 steps East of 430N after a save+reset.  NNFS means walking exactly 65536 steps North from the Fake Sinnoh that is roughly 65536 steps North of 430N after a save+reset, etc etc.

Wow, I was way off the mark there.

Is 430N at least reachable in Platinum?

No.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 20, 2015, 11:45:33 am
No.

Then I don't have an explanation for this. I followed Crystalmourne's instructions (https://www.youtube.com/watch?v=CPSdWG-JfDg) for reaching 430N in Diamond and Pearl and... they worked!

AniGIF (that additional 1N was by accident):

(http://i.imgur.com/x7TcToT.gif)

No errors were reported by DeSmuME's debugging console. At 237N, the game triggered an The Underground event and I heard the Underground BGM; after pressing A (?), it played the sound effect of the spinning animation used for when the player enters or exits the Underground. I just continued walking afterwards.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: blahpy on February 20, 2015, 02:24:07 pm
That's very interesting.  Perhaps it wasn't patched in the Japanese release?  In my English cart there are walls everywhere.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 20, 2015, 03:55:03 pm
That's very interesting.  Perhaps it wasn't patched in the Japanese release?  In my English cart there are walls everywhere.

I tried redoing exactly the same thing in DeSmuME (without the mistakes) and it worked. On real hardware, using the same ROM and save file, it froze on 237N right after the Underground event was triggered.

EDIT: The "walk through walls" code I have on my flashcart's user cheats database is different from the one I used in DeSmuME. Interesting.

(http://i.imgur.com/eHxGvI8.png)

EDIT 2 (UPDATED): If anyone here has a DS flashcart that allows you to easily modify the cheat list/database it uses, then could you try going to 430N in Japanese Platinum using the "walk through walls" code? My flashcart and its PC software are not being friendly right now when the cheat database is modified (the flashcart freezes and the PC software crashes far too often). As per my follow-up posts, you can access 430N safely if you go to the Underground at least once using the proper "walk through walls" code (see below). It doesn't matter if it's on a DS or an emulator.

Code: [Select]
94000130 FCFD0200
120604E8 00002000
D0000000 00000000
94000130 FCFD0100
120604E8 00001C20
D2000000 00000000

Press R+B to enable the code in-game. Press L+B to disable it.

EDIT 3: If you disable the above code after entering the Pokétch Company's void, you'll hit a wall of the map at 15N. Is this the behavior experienced when one does the same thing but from tweaking instead?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 21, 2015, 02:55:36 pm
As is already known, not going to the Underground at least once in Diamond and Pearl is important before accessing the void. From my experience in Platinum, this remains valid, and the game may or may not freeze exactly after doing 1S → 5E → 237N in the Pokétch Company's void. I published a video about this: https://www.youtube.com/watch?v=338v_W6n9j4 (https://www.youtube.com/watch?v=338v_W6n9j4)

I have also tried Stickyman's Spear Pillar Hall of Origin method (430N → SR → 70,000N → 2912E → SR → 4894S → 2816W). It does not work in Platinum because the game does not load a "Hall of Origin" void after 430N → SR → 70,000N → 2912E and keeps the player in the Mystery Zone following the "Jubilife City" void that was entered shortly prior, thus making it impossible to save and reboot.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: X-Sanity on February 22, 2015, 11:33:55 am
Do we know which Battle Tower map ID we've been talking about? There's six of them and all have different voids.
As is already known, not going to the Underground at least once in Diamond and Pearl is important before accessing the void.
This is true but just as a sidenote it IS possible to get past 237N (or diagonal equivalent) as we've had numerous reports that rarely there's a Star Mountain there instead of a Mystery Zone. We have no idea what causes this though. I got it once but when I exited the void (because I was encountering Undergrounds in the void and the game kept freezing as I hadn't used the EK) and went back into the void it was gone.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on February 22, 2015, 11:43:56 am
Do we know which Battle Tower map ID we've been talking about? There's six of them and all have different voids.

In this case, it's the Battle Tower map in Platinum that is accessed from the Battle Frontier in normal gameplay. The "Faraway place" void is map ID 0 and its internal name in the ROM is "EVERYWHERE". SunakazeKun told me this and I confirmed with both Pokesav and Spiky's DS Map Editor.

This is true but just as a sidenote it IS possible to get past 237N (or diagonal equivalent) as we've had numerous reports that rarely there's a Star Mountain there instead of a Mystery Zone. We have no idea what causes this though. I got it once but when I exited the void (because I was encountering Undergrounds in the void and the game kept freezing as I hadn't used the EK) and went back into the void it was gone.

237N is unstable so that's why I'm saying that it may or may not freeze the game as I've seen both things happen in the same ROM with the same save file and with the same "walk through walls" code. This is because the game triggers the "player's first time on the Underground" event in the void and the outcome is uncertain. Actually going to the Underground once fixes this since 237N will no longer trigger any events, although it triggers the Underground BGM for a few tiles despite the location not changing (you're still in the same Mystery Zone).
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 21, 2015, 04:03:56 pm
Some of you may already know this but in the Japanese Diamond/Pearl v1.0, you can open the menu in a Mystery Zone, which means you're not limited to using a registered item like the Town Map to refresh the graphics.

Video: https://www.youtube.com/watch?v=3rGBFldj6gY (https://www.youtube.com/watch?v=3rGBFldj6gY)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on September 21, 2015, 07:00:31 pm
Some of you may already know this but in the Japanese Diamond/Pearl v1.0, you can open the menu in a Mystery Zone, which means you're not limited to using a registered item like the Town Map to refresh the graphics.

[youtube]https://www.youtube.com/watch?v=3rGBFldj6gY[/youtube]

Yup, that's actually the reason the coordinates to Shaymin/Darkrai are WAAAAAY shorter on jp version: you can save on MZ and they also take you to real Sinnoh
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 23, 2015, 09:57:30 am
Yup, that's actually the reason the coordinates to Shaymin/Darkrai are WAAAAAY shorter on jp version: you can save on MZ and they also take you to real Sinnoh

Saving in the Mystery Zone also helps in accessing the Underground from the void while on your way to 430N in Japanese Diamond and Pearl v1.0. I found a path to the Underground thanks to this:

237N/238N* & save + reboot → 1E → 1S → 32S → 362E → 160S
(I don't know whether it must be 238N or if 237N also works since 237N is where it usually starts playing the Underground theme.)

Walking south for a while will eventually present you with the actual maps of the Underground.

Here's a video of the path: https://www.youtube.com/watch?v=MurIM4N15F4 (https://www.youtube.com/watch?v=MurIM4N15F4)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 24, 2015, 11:33:32 am
In the Japanese Diamond/Pearl v1.0, you can use the Explorer Kit in a Mystery Zone, even as a registered item. The game will save and overwrite the data but, depending on the Mystery Zone (and your coordinates?), it'll either work or throw back an error.

If the Mystery Zone plays the Underground theme, then you can't use the Explorer Kit. This applies to both the Underground itself (which the game calls "Mystery Zone") and a void area called Mystery Zone with the theme. The part of that Mystery Zone that plays the regular Mystery Zone theme will let you use the Explorer Kit but the game will return the Union Room communication error while transporting you underground.

Subsequent releases and games fixed this so that the Explorer Kit instead returns the Rowan can't-use message in every Mystery Zone.

Video: https://www.youtube.com/watch?v=97ZXk3ZP1iw (https://www.youtube.com/watch?v=97ZXk3ZP1iw)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 24, 2015, 10:04:54 pm
Hello, I was a member of both HoO forums (and their predecessor PokemonGlitching101). I was pretty young at the time so I didn't contribute anything useful but I did my best to keep up with all the threads so I do remember a lot.

It's not possible to reach 430N in (US) Platinum via tweaking. I'm not sure about Japanese. I just tested it myself in NO$GBA to be sure, and there are invisible walls all around the building. They do behave a bit weirdly, since it's possible to get stuck if you're persistent in walking back and forth (perhaps they're elevation changes? Or they could just change). Using the walk through walls code you can pass them no problems.

If you want to make sure your results are tweaking compatible, just disable the code after getting outside Poketch Co. This gives pretty boring results in Platinum, since I'm not aware of any inside location that doesn't have the walls. It's important in (US) Diamond/Pearl though since invisible walls are rare but do show up very occasionally.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 25, 2015, 04:04:30 am
Hello, I was a member of both HoO forums (and their predecessor PokemonGlitching101). I was pretty young at the time so I didn't contribute anything useful but I did my best to keep up with all the threads so I do remember a lot.

Hey ~Poke~, nice to meet you! :)

It's not possible to reach 430N in (US) Platinum via tweaking. I'm not sure about Japanese. I just tested it myself in NO$GBA to be sure, and there are invisible walls all around the building. They do behave a bit weirdly, since it's possible to get stuck if you're persistent in walking back and forth (perhaps they're elevation changes? Or they could just change). Using the walk through walls code you can pass them no problems.

If you want to make sure your results are tweaking compatible, just disable the code after getting outside Poketch Co. This gives pretty boring results in Platinum, since I'm not aware of any inside location that doesn't have the walls. It's important in (US) Diamond/Pearl though since invisible walls are rare but do show up very occasionally.

Yes, I'm well aware that the walls are a problem if one tweaks rather than using wall-disabling codes. Like I said earlier in the thread, (http://forums.glitchcity.info/index.php/topic,7198.msg197663.html#msg197663) I don't tweak because it's very hard for me to successfully achieve the desired result.

I believe that both methods are valid in the study of the void since the "walk through walls" or "walk anywhere" codes lift some of the limitations that would render access impossible in certain cases.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 25, 2015, 08:06:22 am
Hey ~Poke~, nice to meet you! :)

Yes, I'm well aware that the walls are a problem if one tweaks rather than using wall-disabling codes. Like I said earlier in the thread, (http://forums.glitchcity.info/index.php/topic,7198.msg197663.html#msg197663) I don't tweak because it's very hard for me to successfully achieve the desired result.

I believe that both methods are valid in the study of the void since the "walk through walls" or "walk anywhere" codes lift some of the limitations that would render access impossible in certain cases.

On page 3 you were asking, so I thought I should clarify. Looking back, that was in February so I guess you got your answer elsewhere.
Codes certainly are a good way to explore, since they allow more access. A lot of Hall of Origin's efforts were focused on the glitching only side - mostly trying to find Arceus (which proved impossible) but also the other events, early access to regular legendaries, and Hall of Fame for speedruns.
Once the practical uses like that are out of the way, it's interesting to see what's out there and codes are necessary for most exploration outside of Diamond and Pearl.
HoO's approach to this is probably why there's less information about Platinum, and basically nothing about Heart Gold and Soul Silver.

On that subject, it would be nice if Hall of Origin and etc. hadn't moved around so much. Between the four separate forums by my count (two by each name) there would have been some pretty solid documentation at least on Diamond and Pearl's void. That Google doc seems to have a lot of the basics covered though.

I haven't seen the second PG101 mentioned here. Judging by the Wayback Machine and posts on the original, it seems to have existed from late 2008 to mid 2009. I don't know what was on there, since there don't seem to be any records but it was around that time that people started to actually understand void exploration. Still, anything discovered there was probably repeated in the HoO vBulletin backup so it shouldn't mean any knowledge was lost.
I made a (very low quality) Youtube video (https://www.youtube.com/watch?v=gqi1JfS__ls) of Jubilife City music with one track disabled which directed people there, and shows the logo.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 25, 2015, 09:43:09 am
On page 3 you were asking, so I thought I should clarify. Looking back, that was in February so I guess you got your answer elsewhere.

No, it's OK. I appreciate your help and all input is welcome :)

Codes certainly are a good way to explore, since they allow more access. A lot of Hall of Origin's efforts were focused on the glitching only side - mostly trying to find Arceus (which proved impossible) but also the other events, early access to regular legendaries, and Hall of Fame for speedruns.
Once the practical uses like that are out of the way, it's interesting to see what's out there and codes are necessary for most exploration outside of Diamond and Pearl.
HoO's approach to this is probably why there's less information about Platinum, and basically nothing about Heart Gold and Soul Silver.

I believe it may be possible to find a path to the real Hall of Origin but, much like with the path I found to the Underground, it'll come up randomly :P The only known Hall of Origin path is the one that leads the player to the unused copy that has no events or warps programmed. Crystalmourne has a video (https://www.youtube.com/watch?v=CPSdWG-JfDg) showing this.

On that subject, it would be nice if Hall of Origin and etc. hadn't moved around so much. Between the four separate forums by my count (two by each name) there would have been some pretty solid documentation at least on Diamond and Pearl's void. That Google doc seems to have a lot of the basics covered though.

I haven't seen the second PG101 mentioned here. Judging by the Wayback Machine and posts on the original, it seems to have existed from late 2008 to mid 2009. I don't know what was on there, since there don't seem to be any records but it was around that time that people started to actually understand void exploration. Still, anything discovered there was probably repeated in the HoO vBulletin backup so it shouldn't mean any knowledge was lost.

It is indeed unfortunate due to the information loss :-\

I made a (very low quality) Youtube video (https://www.youtube.com/watch?v=gqi1JfS__ls) of Jubilife City music with one track disabled which directed people there, and shows the logo.

That sounds like the theme played in the "Jubilife City" voids that you encounter on the path to the Underground, which you can listen to for a while in the video I made (linked to on page 3).
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 25, 2015, 10:50:47 am
I believe it may be possible to find a path to the real Hall of Origin but, much like with the path I found to the Underground, it'll come up randomly :P The only known Hall of Origin path is the one that leads the player to the unused copy that has no events or warps programmed. Crystalmourne has a video (https://www.youtube.com/watch?v=CPSdWG-JfDg) showing this.

The Hall of Origin itself may be found, but the Arceus battle can't be started since it's a scripted part of the event. People did search for a way to trigger the event, like the other events that can be triggered in the void (Underground tutorial, receiving the Pal Pad, getting kicked out of the restaurant because it's closed) but they weren't successful.

The Hall of Origin event relies on having the flute so this wouldn't work without at least already having the flags set, though there's also the question of how the event itself is triggered. It starts by using the flute in Spear Pillar, so whether anything can be triggered in the Hall of Origin at all depends on how it's coded.

It still would be interesting to find the real Hall. It's strange that it hasn't already shown up, though it's probably just coincidence. In Diamond and Pearl Arceus apparently is there (though can't be interacted with) so it would be a novelty to see.

That sounds like the theme played in the "Jubilife City" voids that you encounter on the path to the Underground, which you can listen to for a while in the video I made (linked to on page 3).

Yep, that's it. It seems to be the base track without the additions from day or night. I wonder if other songs can be heard like that.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 25, 2015, 10:59:59 am
The Hall of Origin itself may be found, but the Arceus battle can't be started since it's a scripted part of the event. People did search for a way to trigger the event, like the other events that can be triggered in the void (Underground tutorial, receiving the Pal Pad, getting kicked out of the restaurant because it's closed) but they weren't successful.

The Hall of Origin event relies on having the flute so this wouldn't work without at least already having the flags set, though there's also the question of how the event itself is triggered. It starts by using the flute in Spear Pillar, so whether anything can be triggered in the Hall of Origin at all depends on how it's coded.

When you say that the Hall of Origin can be found, are you referring to the real one? If so, does it mean that people have come across it or void areas using its location header and theme but that a path to the Hall itself has yet to be discovered?

It still would be interesting to find the real Hall. It's strange that it hasn't already shown up, though it's probably just coincidence. In Diamond and Pearl Arceus apparently is there (though can't be interacted with) so it would be a novelty to see.

Yes, without setting the event flags, Arceus's sprite appears at the real Hall of Origin in Diamond and Pearl as well as Platinum but it cannot be interacted with.

(https://i.imgur.com/uCJ7fIA.png)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 25, 2015, 11:31:51 am
Sorry, I meant may as in potentially. I don't think it ever did happen, I just don't know of any reason it wouldn't be possible.


In the spirit of experimentation, I decided to follow the instructions to reach the beta Jubilife place "in Zow's vid". Instead of starting at Poketch Co, however, I started from Spear Pillar. I have vague memories of a theory that Jubilife City places are all over the void because you start exploring from there, so I thought I'd try starting somewhere else... but it didn't make any difference to the locations that show up. So that's that rumour proven wrong, and also some evidence (perhaps not conclusive proof) that the void has the same layout regardless of the entry point.

Anyway, the interesting thing (in my mind at least) is that when I got there, it had the 3d perspective enabled. Crystalmourne visits the same place here (http://www.youtube.com/watch?v=YRp2NsijtFQ), but it's shown in 2d. Another difference is that the npc is invisible (the shadow is still there) and can't be talked to.

Saving and resetting didn't change the camera, but made the npc appear.
Going downstairs to the next (still beta) map reset the camera to normal.

(http://i.imgur.com/pSKS3Ed.png)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on September 25, 2015, 11:51:39 am
I have vague memories of a theory that Jubilife City places are all over the void because you start exploring from there, so I thought I'd try starting somewhere else... but it didn't make any difference to the locations that show up. So that's that rumour proven wrong, and also some evidence (perhaps not conclusive proof) that the void has the same layout regardless of the entry point.

Any void is full of Jubilifes because there's almost 65,000 Jubilife areas in the game (don't remember the exact number but I think the last valid area in DP which is Contest Hall is something like ID 554, so 555~65535 would be Jubilifes, that's an approximation, don't quote those numbers), because it was the first city programmed in the game. I also remember something about many Jubilifes in the void actually being negative map IDs that underflow and becomes Jubilifes.

About the void variance, it's something like this:

The Jubilife/430N void we know is actually the "Sinnoh void". Any overworld area should have the same void, which mean outdoors cities/routes as well, Jubilifes are just more common. It's the void with the most variety of areas so it's usually the target of exploration. Some areas are also subject to being affected by flags.

Small indoors areas voids are static except for the area between the two first Floaroma Meadow areas, known as 'second secion' (SS).

And there's bigger indoors areas, which I don't know much about or if they're actually that different from the small indoors ones, but I remember they have some interesting areas around them, but I don't know about far. Take Hearthome Gym (tweakable into) and some caves as examples.

(well sorry for some lack of certainty, most of this is 2010 knowledge and my memory is kinda bad)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 25, 2015, 12:02:21 pm
Sorry, I meant may as in potentially. I don't think it ever did happen, I just don't know of any reason it wouldn't be possible.

Oh, I see.

So that's that rumour proven wrong, and also some evidence (perhaps not conclusive proof) that the void has the same layout regardless of the entry point.

The void does certainly seem to have an order of sorts in the midst of all that "chaos". However, rebooting the game affects the void areas you find at any given time.

Anyway, the interesting thing (in my mind at least) is that when I got there, it had the 3d perspective enabled. Crystalmourne visits the same place here (http://www.youtube.com/watch?v=YRp2NsijtFQ), but it's shown in 2d.

That is indeed interesting, I wonder what caused the change in the camera's perspective. Perhaps it has to do with the path you used?

Any void is full of Jubilifes because there's almost 65,000 Jubilife areas in the game (don't remember the exact number but I think the last valid area in DP which is Contest Hall is something like ID 554, so 555~65535 would be Jubilifes, that's an approximation, don't quote those numbers), because it was the first city programmed in the game. I also remember something about many Jubilifes in the void actually being negative map IDs that underflow and becomes Jubilifes.

The Contest Hall's map ID in Diamond and Pearl is 0x022E (558) and has the internal name "C05R1103". The only other map IDs with interesting internal names are 0x0000 ("EVERYWHERE"; apparently it's used by the Battle Tower void), 0x0001 ("NOTHING"), and 0x0002 ("UG"; the Underground, which can be found in the void like I showed earlier), but all of them use the "Mystery Zone" location header, although Spiky's DS Map Editor conflicts with the in-game data when it comes to the Battle Tower void in Platinum since the former states it's "Mystery Zone" while the latter displays "Faraway place" (in Diamond and Pearl, it is "Mystery Zone").

Small indoors areas voids are static except for the area between the two first Floaroma Meadow areas, known as 'second secion' (SS).

And there's bigger indoors areas, which I don't know much about or if they're actually that different from the small indoors ones, but I remember they have some interesting areas around them, but I don't know about far. Take Hearthome Gym (tweakable into) and some caves as examples.

By "static", you mean that the location never changes, correct?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on September 25, 2015, 12:13:47 pm
The Contest Hall's map ID in Diamond and Pearl is 0x022E (558)

Oh ok, so we should have 64977 placeholder Jubilifes.

By "static", you mean that the location never changes, correct?

Its void, actually. If you try to explore Pokétch's void, Jubi TV, Pokémart void, etc, without saving at 430N (which would take you to Sinnoh void like I said before) they should have the exact same areas except for the SS. They also don't seem to be affected by flags at all, different savefiles at different points on the game always had the same areas.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 25, 2015, 12:31:14 pm
Its void, actually. If you try to explore Pokétch's void, Jubi TV, Pokémart void, etc, without saving at 430N (which would take you to Sinnoh void like I said before) they should have the exact same areas except for the SS. They also don't seem to be affected by flags at all, different savefiles at different points on the game always had the same areas.

Yes, they are all seemingly endless Mystery Zones as long as you are visible on the Town Map. For example, walking straight south in the Jubilife Poké Mart void will lead you to a Mystery Zone but if you go a bit west, you enter "Jubilife City" and other voids because you're already out of the Town Map's radar, thus you're no longer in the Mystery Zone that's part of the entry point's void (the Town Map will also instead show your last known location instead of changing as you move like in the Mystery Zone of the void of the location you originally entered from).

Also, I just found out that the Hiker in the Underground will freeze the game if you try to interact with him after getting there in the void.

(https://i.imgur.com/7gmJ83p.png)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 25, 2015, 12:35:04 pm

That is indeed interesting, I wonder what caused the change in the camera's perspective. Perhaps it has to do with the path you used?

Nope, it seems the perspective carries over from where you started.
I did a really tiny trip to confirm this: Went North from Oreburgh Gate (the cave - it was the closest 3d place) until I hit Jubilife TV. Saved, went back down. The same effect happens here.
(http://i.imgur.com/oerqNxE.png)
Since this is a real place, it also shows that it's a real "override" instead of maybe the beta place not having a perspective set.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 25, 2015, 01:48:04 pm
Nope, it seems the perspective carries over from where you started.
I did a really tiny trip to confirm this: Went North from Oreburgh Gate (the cave - it was the closest 3d place) until I hit Jubilife TV. Saved, went back down. The same effect happens here.
(http://i.imgur.com/oerqNxE.png)
Since this is a real place, it also shows that it's a real "override" instead of maybe the beta place not having a perspective set.

Quite interesting, too bad that they dropped the 3D perspective from interior areas.

Also, at 319W from the center of the Hall of Origin's entry point (with the stairs above it and Mt. Coronet's entrance/exit below it) there's a Mystery Zone that plays the Underground theme. From there I walked a lot north, west, and south, and I came across a real Hall of Origin void surrounded by Mystery Zones to the south and east, a Solaceon Ruins void to the north, and an Iron Island void to the west.

(https://i.imgur.com/v0ulNxQ.png)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 26, 2015, 10:24:40 am
It's possible to track the location you're in through DeSmuME's RAM search while exploring the void, which is interesting. It's probably already known and not that hard to figure out if you know what you're doing, but I haven't seen any instructions so I've written some - at least, for my own method.
So far I've done this in US Pearl and Platinum.

The addresses are randomised on startup/reset, so I search for them each time.
I've got a good routine to find the right address while in the overworld:
Set data size to 2 bytes
Search for 3 while in Jubilife City
Search for 345 while in Route 204

At this point there are still ~20 matches, but the first one listed is the right one. (The others seem to copy it depending on what map it is - all switch to 2 for underground but only the first is set to 553 or etc. for Turnback Cave).

The part that's a bit less certain is keeping track of it after the save and reset at 430N, and later saves.
You need to keep track of the ID of 430N's Jubilife City, or the other place you're saving. (430N's specific ID varies, though only within a few hundred.)
After the save and reset, you need to reset the RAM search and search for that map ID. Then take one step and search for the place you're in now - likely Mystery Zone at ID 0, but other places are possible eg. Underground at ID 2.

Now can see what map ID you're in while exploring the void! You can compare to a list eg. from Spiky's Map Editor to find out which specific map you'll get if you save and backtrack.
This is useful to distinguish between maps of the same name (including real Jubilife houses from fake Jubilife overworld).

Potentially void exploration could be automated with a lua script that records this value as it travels. I might try this later, though I'll have to learn lua first. The void does vary between files (and a little between different attempts) so a full on map isn't too meaningful, but many places are consistent so I think it'd still be worth doing.

To clarify this method if the explanation is confusing, I made a video of me doing it in US Platinum. This was maybe a silly choice of game because I don't know any interesting places to go, and ended up choosing the entrance to Turnback Cave (it set more addresses than the others, I was curious!) Still, it's about the method, not the results.

[youtube]https://www.youtube.com/watch?v=smrOI6UJj_A&feature=youtu.be[/youtube]

I go past plenty of negative Jubilife City areas but it's possible the map ID isn't actually signed, so it might not really mean anything.

We can also see the perspective override here, since Turnback Cave is shown in 2d until I change rooms.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 26, 2015, 11:29:43 am
Wow, that's very neat. Thank you for sharing :)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Wack0 on September 26, 2015, 05:09:41 pm
I guess that gen4 has a rudimentary ASLR, like gen3 does.

Has anyone bothered doing major reversing of gen4 yet, both static analysis and debugging (setting in-memory breakpoints etc)?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 26, 2015, 06:04:47 pm
I guess that gen4 has a rudimentary ASLR, like gen3 does.

Has anyone bothered doing major reversing of gen4 yet, both static analysis and debugging (setting in-memory breakpoints etc)?

While looking into it I found this list on Project Pokemon (http://projectpokemon.org/wiki/Notable_Breakpoints), and the 50 page gamefaq thread (http://www.gamefaqs.com/boards/925602-pokemon-pearl-version/40532445?page=3) it links to. The Project Pokemon forum might have more threads where they researched this for their list, but I don't see them at a glance and their search is a bit annoying. It looks like they've moved on to 5th and 6th gen now.

There are tools available to change a lot on the ROM hacking side, but I'm not finding more than that about how the engine works.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 26, 2015, 06:23:47 pm
While wandering around in the void, I encountered a Battle Tower void with a negative map ID. I found interesting how the menu suddenly became far more limited, as if replicating a Battle Tower mode.

(https://i.imgur.com/O7l7iLu.png)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on September 27, 2015, 07:27:59 am
I've found something interesting while playing around in my Pearl version. I saved in front of the Oreburgh Pokemon Center, and then I used Pokesav to generate an AR code that would change my map coordinates to that of the HoO:
Code: [Select]
                  ;we start out with offset=0, obviously
94000130 FCFF0000 ;if we are holding L+R:
B21C4D28 00000000 ;offset = read(offset + 0x21C4D28)
B0000004 00000000 ;offset = read(offset + 0x4)
100014A4 000001FE ;write(offset+0x14A4,0x1FE) (0x1FE = dec 510 = HoO map id)
10002866 0000012F ;write(offset+0x2866,0x12F) (x coordinate)
1000286A 000002F5 ;write(offset+0x286A,0x2F5) (y coordinate)
1000286E 00000002 ;write(offset+0x286E,0x2) (z coordinate)
D2000000 00000000 ;terminate code (reset offset to 0)
(I've tried to annotate the generated code using data from here: http://doc.kodewerx.org/hacking_nds.html#action_replay )

Now, something extraordinarily interesting happens if you hold L+R with this code active and keep walking:

This means that Arceus might still be possible to find in the Void! If we happen to stumble upon an invalid map ID that the game considers to be HoO (just as many invalid OW map IDs are considered Jubilifes) in the void, and if this map contains at least one script (e.g. an NPC), then we can trigger a battle with Arceus!

Further investigation is needed.......

EDIT: well, that was easy... here's a lua script showing your current map id and x,y,z coordinates (PEARL ONLY, probably also works on Diamond? probably won't work on PT/HG/SS):
Code: [Select]
local function whereami()
local aslr_data_ptr = memory.readdword(0x021C4D28)
local mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)
local m = memory.readword(mapdata_ptr + 0x14A4)
local x = memory.readword(mapdata_ptr + 0x2866)
local y = memory.readword(mapdata_ptr + 0x286A)
local z = memory.readword(mapdata_ptr + 0x286E)
gui.text(1,184,string.format("Matrix: %d, X: %d, Y: %d, Z: %d",m,x,y,z))
end
gui.register(whereami)
it would be really really really awesome if someone could extend this to show the id of the map to your left, right, top, and bottom, and how many steps away those are...  );
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 27, 2015, 11:07:46 pm
This means that Arceus might still be possible to find in the Void! If we happen to stumble upon an invalid map ID that the game considers to be HoO (just as many invalid OW map IDs are considered Jubilifes) in the void, and if this map contains at least one script (e.g. an NPC), then we can trigger a battle with Arceus!
This doesn't really add up to me. To have the Arceus script loaded, you need to be in the real HoO. To run the script, you need an event (npc or etc) set to run the script.

The effects you're getting sound like they're from being "In" the real HoO (at least partially loading it) but having the rest of the data loaded from another map.

I'm not sure if that can be done through the void. The only scripts I've seen run are the ones that start immediately on entering the map (Hall of Fame, Cynthia battle, getting kicked out of the restaurant at night, receiving the Pal Pad) because while in the void there aren't any npcs/signs/etc to trigger other scripts. Once you save, backtrack and enter the map you're actually in that map with npc data and all, so there's no different person to talk to to trigger the script.

That said, I'd love to be proven wrong. Perhaps if a Hall of Origin void can be found directly next to a real place, a tweak could be used to displace it, so you can be "In" it and talk to an npc from that real place. I don't like the odds of that showing up though, and I'm not sure if any tweaks really work like that.

EDIT: well, that was easy... here's a lua script showing your current map id and x,y,z coordinates (PEARL ONLY, probably also works on Diamond? probably won't work on PT/HG/SS):
Code: [Select]
local function whereami()
local aslr_data_ptr = memory.readdword(0x021C4D28)
local mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)
local m = memory.readword(mapdata_ptr + 0x14A4)
local x = memory.readword(mapdata_ptr + 0x2866)
local y = memory.readword(mapdata_ptr + 0x286A)
local z = memory.readword(mapdata_ptr + 0x286E)
gui.text(1,184,string.format("Matrix: %d, X: %d, Y: %d, Z: %d",m,x,y,z))
end
gui.register(whereami)
it would be really really really awesome if someone could extend this to show the id of the map to your left, right, top, and bottom, and how many steps away those are...  );

Nice! I'm running it on Pearl and the map matrix works perfectly! On the other hand the coordinates only change when I save, so I don't think they're reading the right thing?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on September 28, 2015, 10:14:55 am
This doesn't really add up to me. To have the Arceus script loaded, you need to be in the real HoO. To run the script, you need an event (npc or etc) set to run the script.
You are completely right, but it depends on what the game considers to be 'in the real HoO'. My point was mostly intended to rebut the standard 'we can't get Arceus through tweaking because Arceus won't appear in the HoO unless its flag has been set'; I believe my findings show that we don't need to talk to the actual Arceus, we just need to talk to a script handler when the game thinks we're in the HoO. Doing this in the real HoO is impossible because the only script handler is Arceus, which isn't going to be present, but my findings open up the possibility that we might not need to be in the real HoO, just in an area that is *identified* as the HoO (just like many different areas are identified as Jubilife). Finding such an area, and also finding one that contains an NPC such as the seven star restaurant dude, is still an open, and perhaps impossible, challenge.

Quote
The effects you're getting sound like they're from being "In" the real HoO (at least partially loading it) but having the rest of the data loaded from another map.

I'm not sure if that can be done through the void. The only scripts I've seen run are the ones that start immediately on entering the map (Hall of Fame, Cynthia battle, getting kicked out of the restaurant at night, receiving the Pal Pad) because while in the void there aren't any npcs/signs/etc to trigger other scripts. Once you save, backtrack and enter the map you're actually in that map with npc data and all, so there's no different person to talk to to trigger the script.
You are completely correct, so for an actual 510 HoO, we would still have to talk to the real Arceus, which is impossible. However, if we can find a non-510 (or 511) HoO that just happens to contain a script somewhere, we're in business. We know from the events you cite that this is possible (but apparently extremely unlikely).

It would be interesting to find out what exactly are the requirements for a script to trigger. E.g., does the seven star restaurant dude kick you out when you're on a certain x,y position within the void, or do you also need to be on a certain invalid map id? Also, why do these scripts trigger automatically?

Quote
That said, I'd love to be proven wrong. Perhaps if a Hall of Origin void can be found directly next to a real place, a tweak could be used to displace it, so you can be "In" it and talk to an npc from that real place. I don't like the odds of that showing up though, and I'm not sure if any tweaks really work like that.
This is an interesting thought. I guess in terms of realism it's no less hopeful than my ideas  ;D

Quote
On the other hand the coordinates only change when I save, so I don't think they're reading the right thing?
Indeed! I've fixed x and y, but I wasn't sure where to find z. I've searched around and found six possible candidate RAM locations, and I picked the one closest by, but if my z reading appears off, it probably is  ;)
Code: [Select]
local function whereami()
local aslr_data_ptr = memory.readdword(0x021C4D28)
local mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)
local m = memory.readword(mapdata_ptr + 0x14A4)
local x = memory.readword(mapdata_ptr + 0x14A4 + 8)
local y = memory.readword(mapdata_ptr + 0x14A4 + 12)
local z = memory.readword(mapdata_ptr + 0x14A4 + 0x6C99A)
gui.text(1,184,string.format("Matrix: %d, X: %d, Y: %d, Z: %d",m,x,y,z))
end
gui.register(whereami)
This shows something interesting though: while the saved x,y,z coordinates versus your current x,y,z coordinates are stored in different RAM locations, the matrix id is only stored at one single location in RAM...
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 28, 2015, 11:23:47 am
Nice going, you two ;)

That said, I'd love to be proven wrong. Perhaps if a Hall of Origin void can be found directly next to a real place, a tweak could be used to displace it, so you can be "In" it and talk to an npc from that real place. I don't like the odds of that showing up though, and I'm not sure if any tweaks really work like that.

When you mean "real place", are you referring to an actual location or a void area with the same map ID as said location?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on September 28, 2015, 12:55:17 pm
Nice going, you two ;)

That said, I'd love to be proven wrong. Perhaps if a Hall of Origin void can be found directly next to a real place, a tweak could be used to displace it, so you can be "In" it and talk to an npc from that real place. I don't like the odds of that showing up though, and I'm not sure if any tweaks really work like that.

When you mean "real place", are you referring to an actual location or a void area with the same map ID as said location?
I think the hypothetical situation is if we were to find a new tweaking place (e.g. something other than Poketch HQ or Galactic HQ) where we end up with (real or fake, as long as they aren't Stickyman) HoOs, rather than, say, Veilstones (or Mt Starks - on my Pearl, I used to have a Mt Stark, then I received the Pal Pad inside the void and I've had the usual Veilstone department stores ever since) or Floaroma Meadows.

If you use pokesav to place yourself into the void surrounding the HoO and start walking, you run into Iron Islands and Solaceon Ruins. If only we knew where these areas were read from, we could extrapolate where we would need to enter the void in order to get HoOs.... (keep in mind we can enter the void from any building we want, even buildings that are untweakable, by performing the regular void glitch and saving behind the building's door when in FS).

EDIT: Figured something out. Walk into the Jubilife pokemon center, save your game, then use pokesav to change your map coordinates to 510,6,9,0. When you reload, you'll be in the HoO but with the Jubilife pokemon center's NPCs. Talk to the little girl in front of you to trigger a battle with Arceus. Now change your coordinates to 510,13,5,0. You're in front of a different person now, yet talking to him will also trigger Arceus.

This means that more than just one single script can trigger Arceus (but not all of them, e.g. Nurse Joy doesn't say 'Dodogyuuun' now :P ). Given that I just demonstrated that you keep the NPCs from the last map you save in, we will for sure trigger a battle with Arceus if, starting from a void area X, we manage to - without saving and resetting - find a HoO void when our x and y positions are at values that put us next to NPCs on our original map X.

If only we knew where the 'next map id' bits were stored in memory, we might be able to write a lua script that determines whether the HoO is reachable from any given position...
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 28, 2015, 01:35:56 pm
Well, I asked for clarification because I have already reached a real Hall of Origin void (I posted about it earlier). But the voids surrounding it are the same ones bordering the Hall of Origin itself.

EDIT: Here's yet another real Hall of Origin void which may or may not be the same one I found earlier. I only went west and south of 319W this time around.

(https://i.imgur.com/qlHHS4u.png)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 28, 2015, 10:57:43 pm
3 hours after I started, I'm done writing this post. Sorry for the wall of text, I got carried away!
To clarify, when I said real/fake HoO earlier I meant 510/511. That was a silly choice of words when real/fake Sinnoh are a thing, sorry :P

EDIT: Figured something out. Walk into the Jubilife pokemon center, save your game, then use pokesav to change your map coordinates to 510,6,9,0. When you reload, you'll be in the HoO but with the Jubilife pokemon center's NPCs. Talk to the little girl in front of you to trigger a battle with Arceus. Now change your coordinates to 510,13,5,0. You're in front of a different person now, yet talking to him will also trigger Arceus.

This means that more than just one single script can trigger Arceus (but not all of them, e.g. Nurse Joy doesn't say 'Dodogyuuun' now :P ). Given that I just demonstrated that you keep the NPCs from the last map you save in, we will for sure trigger a battle with Arceus if, starting from a void area X, we manage to - without saving and resetting - find a HoO void when our x and y positions are at values that put us next to NPCs on our original map X.

Hey, I can explain that! Let's look at Spiky's DS Map Editor.
(http://i.imgur.com/zVOFYXb.png)

The Hall of Origin loads script file 232, which is:
Code: [Select]
Script #1

CheckFlag 0x8E
CompareLastResultJump 0x1 Function_#1
End


Script #2

LockAll
SetVar 0x4118 0x0
Call Function_#2
Call Function_#3
PlayCry 0x1ED 0x0
WaitCry
Call Function_#8
PlayCry 0x1ED 0x0
Message 0x0
CloseMessageOnKeyPress
ClearFlag 0x8E
WildBattle2 0x1ED 0x50
SetFlag 0x8E
CheckLost 0x800C
If 0x800C 0x0
CompareLastResultJump 0x1 Function_#9
CheckWildBattle2 0x800C
If 0x800C 0x1
CompareLastResultJump 0x1 Function_#10
ClearFlag 0x11E
ReleaseAll
End


Script #3

End


Script #4

UseScript_#2
There are also functions and movements as part of this script file, but they're less telling so I'll leave them out.

As you can see script 2 involves playing a cry and starting a battle, this would be the Arceus fight. All script 4 does is call script 2, which is nice since it doubles our chances of making this work.
In the event viewer, the HoO has 2 events. One overworld (Arceus) who is set to script 0 and one trigger set to script 2. The trigger has a flag associated - this probably means it only appears when that flag is set, that flag being the event? It's 16664 if anyone knows.

The 511 HoO doesn't have events, but it does have a script file. It turns out this is shared with a lot of Turnback Cave maps:
Code: [Select]
Script #1

End
Just a dummy. This is also set for EVERYWHERE and NOTHING Mystery Zones.

The level scripts sound important too, since in the GBA games they're the scripts that run automatically/on entering the area. But no matter which one I try to look at, it just contains:
Code: [Select]
Level Scripts FileMaybe I haven't checked a map that has them? That's what the restaurant has though, and it definitely kicks people out automatically. That's also what the Underground has and we know it can crash people on entering so I guess they're in a different format that SDSME can't read?

This functionality could probably be replicated with a trigger that covers the whole map, but the restaurant doesn't have any triggers. I don't think that would affect the void either, since the trigger has a specific X and Y location + area.

If only we knew where the 'next map id' bits were stored in memory, we might be able to write a lua script that determines whether the HoO is reachable from any given position...
A tip I can give you about that is that it's based on the map matrix. Matrix 0 is the overworld, It looks like this:
(http://i.imgur.com/KlXuRqT.png)
The selected place is at (0,0) so that's what 430N is north of, after resetting. If we can find where this is stored maybe we can see what incorrect data is loaded by incorrect coordinates? Alternately we could brute force it with a script that changes our X and/or Y by 32 at a time and records the results. (Maybe 31 at a time, then taking one step to make sure it's loading things correctly?).
(One note, I don't think the x and y that the new script fetches are settable? I'm not too experienced with RAM so I might be doing something wrong. The simplest way to do it manually seemed to be set a cheat then disable it, but the value reverts. Is this just a RAM mirror?)

Something else notable is that the overworld matrix has 3 "layers". One for headers (pictured), one for map height (only set for Mystery Zones around actual maps) and one for map files. We get a lot of junk data for headers but little or none for the rest? The "blackouts" referred to in the doc might be related to map height. The only map files seem to be Fake Sinnoh, when the coordinates loop. Perhaps that's handled differently.
Most other matrices only have a map file layer, so the headers must come from somewhere else. The Great Marsh has all 3 layers though, to allow different encounters in different parts. The matrix itself is much smaller, but perhaps it's void is as interesting as the overworld because of this? I'll have to explore this. There are no other 3 layer matrices in Pearl or Platinum.

HG/SS are also really interesting in that regard, since they have two 3 layer matrices being the overworld and the safari zone. That safari zone can be customised.

When you mean "real place", are you referring to an actual location or a void area with the same map ID as said location?

A HoO void next to (or 1 matrix space/32 tiles away from, or other distances useful in tweaking?) the loaded building that is the entry point. Thinking further on this, I don't think tweaking affects the map like that though. It moves/clears the terrain and movement permissions which are part of the map file itself, rather than scripts and events which are part of the map header. The only useful thing that stands out to me there is map re-entry without a walk anywhere code.

Here's yet another real Hall of Origin void which may or may not be the same one I found earlier. I only went west and south of 319W this time around.

The areas in the void for repeat to the North-East and South-West, or directly West where X underflows, North where Y underflows. The size of the matrix... might affect this? I kind of thought it did but now I'm not sure. The Poketch matrix is 1x1, and it's void looks like this in my save (allcaps is the Poketch that I entered from, with graphics and etc.):

Code: [Select]
[Mystery Z][Veilstone][Veilstone][Floaroma ]
[Veilstone][Floaroma ][Floaroma ][Poketch  ]
[Floaroma ][Poketch  ][Poketch  ][Mystery Z]
[Floaroma ][Poketch  ][POKETCH  ][Mystery Z]
[Poketch  ][Mystery Z][Mystery Z][Mystery Z]

Every [] is one cell of the matrix, and is 32x32 tiles.
The repeat on the underflow makes a bit of a mess of it, since you can see the diagonal pattern doesn't include the real Poketch Co.

Hall of Origin is a 2x2 matrix, and I'm seeing something like this?:

Code: [Select]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . [Iron  Island][SolaceonRuin][SolaceonRuin][Iron  Island]
. . . . . . . . . . . . . . . . . . . . . . . . . . . . [Iron  Island][HallOfOrigin][HallOfOrigin][HallOfOrigin]
[Mystery Zone][Mystery Zone][SolaceonRuin][Iron  Island][HallOfOrigin][HallOfOrigin][HALLOFORIGIN][HALLOFORIGIN]
[SolaceonRuin][Iron  Island][HallOfOrigin][HallOfOrigin][HallOfOrigin][HallOfOrigin][HALLOFORIGIN][HALLOFORIGIN]
[Iron  Island][HallOfOrigin][HallOfOrigin][HallOfOrigin]
[HallOfOrigin][HallOfOrigin][Mystery Zone]
That looks like a mess so it probably isn't accurate. I'm not sure whether it's inconsistent depending on path, or I'm just losing track of it but I need to stop trying to count this out manually. The point is there's repetition, hopefully some lua can keep track of the specifics later.

I think this is may be because of the out of bounds coordinates on the matrix, eg:
[A1][B1][C1]
[A2][B2][C2]
[A3][B3][C3]
being stored as:
[A1][B1][C1][A2][B2][C2][A3][B3][C3]
Since the game knows the dimensions of the matrix, it knows where to read from. If you're outside that, everything breaks.

Either because it's so big, or because it's read differently, the overworld matrix doesn't seem to do this.

This post has been something like 4 hours to write so I'm going to stop it here. Sorry it's so big, there was so much to reply to then I got carried away testing things.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Krys3000 on September 29, 2015, 11:52:58 am
Hello guys,

At PRAMA we are currently going back to a Tweaking project in order to find a more safe way to reach Darkrai. We had a few results on it but it's still early.

Anyway I follow your discussion which is becoming very interesting. It would be really, really great, if you could find a way to enter a void and make the battle with Arceus!
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on September 29, 2015, 12:14:35 pm
As you can see script 2 involves playing a cry and starting a battle, this would be the Arceus fight. All script 4 does is call script 2, which is nice since it doubles our chances of making this work.
Well, that explains that then! So we do need to find the correct NPC, which is either #2 or #4.
Quote
In the event viewer, the HoO has 2 events. One overworld (Arceus) who is set to script 0 and one trigger set to script 2. The trigger has a flag associated - this probably means it only appears when that flag is set, that flag being the event? It's 16664 if anyone knows.
From my very small experience trying to hack Pokemon Ruby a decade ago, yes, you're probably right that 16664 is the flag it checks for to see whether you have the Azure Flute etc.

Quote
Alternately we could brute force it with a script that changes our X and/or Y by 32 at a time and records the results. (Maybe 31 at a time, then taking one step to make sure it's loading things correctly?).
(One note, I don't think the x and y that the new script fetches are settable? I'm not too experienced with RAM so I might be doing something wrong. The simplest way to do it manually seemed to be set a cheat then disable it, but the value reverts. Is this just a RAM mirror?)
You're a genius, and your observation on the settability of x and y is correct. You inspired me to change my lua script to the following - excuse the messiness, and note that I've only looked at the x id, though the y id should be 8 bytes after the x id's location in all cases:
Code: [Select]
function whereami()
aslr_data_ptr = memory.readdword(0x021C4D28)
mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)
m = memory.readword(mapdata_ptr + 0x14A4)
x = memory.readword(mapdata_ptr + 0x14A4 + 8)
y = memory.readword(mapdata_ptr + 0x14A4 + 12)
z = memory.readword(mapdata_ptr + 0x14A4 + 0x6C99A)

all_x = {0x226E7AC, 0x2291DE4, 0x2291DF0, 0x2291DFE,0x2333286,0x2333292,0x23332BA,0x2333E0A4}
for i = 1,8 do
-- The values above were taken from my own save state of Pearl. As such, we need to subtract my own map_data_ptr from them, and add the current session's:
all_x[i] = all_x[i] - 0x226D300 + mapdata_ptr
end

gui.text(1,104,string.format("Matrix: %d, X: %d, Y: %d, Z: %d",m,x,y,z))
gui.text(0,114,string.format("ASLR data: 0x%X / map data: 0x%X",aslr_data_ptr,mapdata_ptr))
gui.text(0,124,string.format("X: %d %d %d %d %d %d %d %d",memory.readword(all_x[1]),memory.readword(all_x[2]),memory.readword(all_x[3]),memory.readword(all_x[4]),memory.readword(all_x[5]),memory.readword(all_x[6]),memory.readword(all_x[7]),memory.readword(all_x[8])))

--force_x = 561+0
--memory.writeword(all_x[1],force_x) -- if this one is different from the others, the save file will be corrupted; if it is forced during save loading, the game will immediately crash when the save is loaded. This seems to actually move you collision-wise, but not visually.
--memory.writeword(all_x[2],force_x) -- the same; also if this one is forced, the save load screen will display a glitched white block. Does nothing live - perhaps this is the saved x position only?
--memory.writeword(all_x[3],force_x) -- changes map ID!!! but only live, not when loading save. Can be used to save inside a MZ (open start menu, change value to warp you into MZ), with bizarre results.
--memory.writeword(all_x[4],force_x) -- immediately snaps you into place, but without changing map id. Is saved when you save the game only if forced DURING the save, otherwise your new position is NOT saved. Interestingly, THIS IS ONLY GRAPHICAL
--memory.writeword(all_x[5],force_x) -- seems related to graphics loading
--memory.writeword(all_x[6],force_x) -- this one...
--memory.writeword(all_x[7],force_x) -- ...and this one are related; if one of them is flipped, the screen goes black and the other one starts counting like a madman. Counting resets when reloading the graphics. When forcing these to be set and taking a step, the perspective twists, showing this is contorlling the camera.
--memory.writeword(all_x[8],force_x) -- unknown?

end
gui.register(whereami)
In other words, we can read out what the next map ID is going to be by changing our x to x+32, reading the matrix that gives us, and going back. I don't really have time to code this, but it seems a good PoC would be if we could 'virtually' travel to Darkrai by manipulating this value in increments of 32 and to see if this indeed replicates the path to Darkrai we actually observe ourselves taking. Just a thought.

What can be observed from the above in any case, is that there are actually three separate x (and y, and z too? the zs are at a wildly different location in RAM compared to the xs and ys) values: let's call them x.collision (number 1 in the lua script above), x.graphics (number 3), and x.mapmatrix (number 4). I believe that x.graphics might in fact be the real one, since our Fake Sinnohs (which are very real :P ) have proper graphics, but improper collision data and map headers, and when we progress through FS we actually progress in reality.

I'm afraid I am pressed for time right now, so I'm sorry that I won't be able to treat your other points in depth at this time. I did read them though, but the only quick reply I can give you right now is that they're way over my head  ;D
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on September 29, 2015, 12:31:07 pm
Well, I asked for clarification because I have already reached a real Hall of Origin void (I posted about it earlier). But the voids surrounding it are the same ones bordering the Hall of Origin itself.

EDIT: Here's yet another real Hall of Origin void which may or may not be the same one I found earlier. I only went west and south of 319W this time around.

(https://i.imgur.com/qlHHS4u.png)

If you're on the Hall of Origin void, the areas are just repeating diagonally. It's explained on the doc.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 29, 2015, 12:52:39 pm
To clarify, when I said real/fake HoO earlier I meant 510/511. That was a silly choice of words when real/fake Sinnoh are a thing, sorry :P

It's OK :)


The Hall of Origin loads script file 232, which is:
Code: [Select]
Script #1

CheckFlag 0x8E
CompareLastResultJump 0x1 Function_#1
End


Script #2

LockAll
SetVar 0x4118 0x0
Call Function_#2
Call Function_#3
PlayCry 0x1ED 0x0
WaitCry
Call Function_#8
PlayCry 0x1ED 0x0
Message 0x0
CloseMessageOnKeyPress
ClearFlag 0x8E
WildBattle2 0x1ED 0x50
SetFlag 0x8E
CheckLost 0x800C
If 0x800C 0x0
CompareLastResultJump 0x1 Function_#9
CheckWildBattle2 0x800C
If 0x800C 0x1
CompareLastResultJump 0x1 Function_#10
ClearFlag 0x11E
ReleaseAll
End


Script #3

End


Script #4

UseScript_#2
There are also functions and movements as part of this script file, but they're less telling so I'll leave them out.

As you can see script 2 involves playing a cry and starting a battle, this would be the Arceus fight. All script 4 does is call script 2, which is nice since it doubles our chances of making this work.
In the event viewer, the HoO has 2 events. One overworld (Arceus) who is set to script 0 and one trigger set to script 2. The trigger has a flag associated - this probably means it only appears when that flag is set, that flag being the event? It's 16664 if anyone knows.

Is this for Diamond and Pearl or Platinum? In Diamond and Pearl, the Arceus sprite will appear even if you don't have the Azure Flute (regardless of the state of the event flag) but this is not the case in Platinum, in which the Azure Flute is required to make the sprite appear.

A HoO void next to (or 1 matrix space/32 tiles away from, or other distances useful in tweaking?) the loaded building that is the entry point. Thinking further on this, I don't think tweaking affects the map like that though. It moves/clears the terrain and movement permissions which are part of the map file itself, rather than scripts and events which are part of the map header. The only useful thing that stands out to me there is map re-entry without a walk anywhere code.

[...]

The areas in the void for repeat to the North-East and South-West, or directly West where X underflows, North where Y underflows. The size of the matrix... might affect this? I kind of thought it did but now I'm not sure. The Poketch matrix is 1x1, and it's void looks like this in my save (allcaps is the Poketch that I entered from, with graphics and etc.):

Oh, I see.

If you're on the Hall of Origin void, the areas are just repeating diagonally. It's explained on the doc.

Is this the relevant part you're referring to?

Quote from: HallofOrigin void knowledge doc
Going 32 steps north from an area and then going east will result in you getting to the same area. The amount of steps required varies on the void. Sinnoh requires 960 steps east before you reach the same area while indoor areas require 32.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on September 29, 2015, 01:08:32 pm
Yeah. It's thanks to that we'd be able to enter Hall of Origin without walk-through-walls cheat in case we found it in the void. I don't remember if this is the exact coordinates but going something like 65536 steps east, 65536 north and then 65536 east again you should enter a Fake HoO in an HoO area, assuming you're starting from its initial area (the steps would vary according from where you'd start from).
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 29, 2015, 01:30:19 pm
Yeah. It's thanks to that we'd be able to enter Hall of Origin without walk-through-walls cheat in case we found it in the void. I don't remember if this is the exact coordinates but going something like 65536 steps east, 65536 north and then 65536 east again you should enter a Fake HoO in an HoO area, assuming you're starting from its initial area (the steps would vary according from where you'd start from).

But does said Hall of Origin area play the same theme as the actual real Hall (map ID 0x01FE or 510)? Or is it the Spear Pillar theme that the other Hall (map ID 0x01FF or 511) also uses?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on September 29, 2015, 01:44:18 pm
If anyone can help debug why this doesn't work, it would be greatly appreciated  O_o

Code: [Select]
function whereami()
aslr_data_ptr = memory.readdword(0x021C4D28)
mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)
m = memory.readword(mapdata_ptr + 0x14A4)
x = memory.readword(mapdata_ptr + 0x14A4 + 8)
y = memory.readword(mapdata_ptr + 0x14A4 + 12)
z = memory.readword(mapdata_ptr + 0x14A4 + 0x6C99A)

all_x = {0x226E7AC, 0x2291DE4, 0x2291DF0, 0x2291DFE,0x2333286,0x2333292,0x23332BA,0x2333E0A4}
all_y = {0x226E7AC+4, 0x2291DE4+4, 0x2291DF0+4, 0x2291DFE+4,0x2333286+4,0x2333292+4,0x23332BA+4,0x2333E0A4+4}
all_z = {0x21CEF76,0x2291E02,0x22DB13E,0x23067A6,0x232460A,0x2333296,0x23332BE}
for i = 1,7 do
-- The values above were taken from my own save state of Pearl. As such, we need to subtract my own map_data_ptr from them, and add the current session's:
-- (skipping over the eighth one since this only appears for x (and consequently y) but not z; its lack of a clear effect suggests the eighth value to be a false positive)
all_x[i] = all_x[i] - 0x226D300 + mapdata_ptr
all_y[i] = all_y[i] - 0x226D300 + mapdata_ptr
all_z[i] = all_z[i] - 0x226D300 + mapdata_ptr
end

all_m = {0x226E7A4,0x2291EC0,0x2291FE8,0x22ABCB0}
for i = 1,4 do
-- If we modify m (= all_m[1]), the game freezes. Perhaps we also need to update the others? Note interesting change counts: walking in and out of a building twice yields the expected change count of 4 for items 1 and 4, but 8 for item 3 and 10 for item 2.
all_m[i] = all_m[i] - 0x226D300 + mapdata_ptr
end

--memory.writeword(all_x[1],force_x) -- if this one is different from the others, the save file will be corrupted; if it is forced during save loading, the game will immediately crash when the save is loaded. This seems to actually move you collision-wise, but not visually.
--memory.writeword(all_x[2],force_x) -- the same; also if this one is forced, the save load screen will display a glitched white block. Does nothing live - perhaps this is the saved x position only?
--memory.writeword(all_x[3],force_x) -- changes map ID!!! but only live, not when loading save. Can be used to save inside a MZ (open start menu, change value to warp you into MZ), with bizarre results.
--memory.writeword(all_x[4],force_x) -- immediately snaps you into place, but without changing map id. Is saved when you save the game only if forced DURING the save, otherwise your new position is NOT saved. Interestingly, THIS IS ONLY GRAPHICAL
--memory.writeword(all_x[5],force_x) -- seems related to graphics loading
--memory.writeword(all_x[6],force_x) -- this one...
--memory.writeword(all_x[7],force_x) -- ...and this one are related; if one of them is flipped, the screen goes black and the other one starts counting like a madman. Counting resets when reloading the graphics. When forcing these to be set and taking a step, the perspective twists, showing this is contorlling the camera.
--memory.writeword(all_x[8],force_x) -- unknown?

function force_m(pos)
memory.writeword(all_m[1],pos) -- name tag. but based on real x,y,z! (i.e. OW locations get their name based on your coordinates)
memory.writeword(all_m[2],pos) -- graphics, but only after reload
--memory.writeword(all_m[3],pos)
--memory.writeword(all_m[4],pos)
end
function force_x(pos)
memory.writeword(all_x[1],pos) -- collision
memory.writeword(all_x[3],pos) -- graphics
memory.writeword(all_x[4],pos) -- matrix
--memory.writeword(all_x[2],pos)
--memory.writeword(all_x[5],pos)
--memory.writeword(all_x[6],pos)
--memory.writeword(all_x[7],pos)
end
function force_y(pos)
memory.writeword(all_y[1],pos) -- collision
memory.writeword(all_y[3],pos) -- graphics
memory.writeword(all_y[4],pos) -- matrix
--memory.writeword(all_x[2],pos)
--memory.writeword(all_x[5],pos)
--memory.writeword(all_x[6],pos)
--memory.writeword(all_x[7],pos)
end
function force_z(pos)
memory.writeword(all_z[1],pos) -- collision
memory.writeword(all_z[3],pos) -- graphics
memory.writeword(all_z[4],pos) -- matrix
--memory.writeword(all_x[2],pos)
--memory.writeword(all_x[5],pos)
--memory.writeword(all_x[6],pos)
--memory.writeword(all_x[7],pos)
end

force_m(3) -- Jubilife city
force_x(180) -- Jubilife city
force_y(777) -- Jubilife city
force_z(2) -- Jubilife city

gui.text(0,144,string.format("ASLR data: 0x%X / map data: 0x%X",aslr_data_ptr,mapdata_ptr))
gui.text(1,154,string.format("Matrix: %d, X: %d, Y: %d, Z: %d",m,x,y,z))
gui.text(0,164,string.format("X: %d %d %d %d %d %d %d %d",memory.readword(all_x[1]),memory.readword(all_x[2]),memory.readword(all_x[3]),memory.readword(all_x[4]),memory.readword(all_x[5]),memory.readword(all_x[6]),memory.readword(all_x[7]),memory.readword(all_x[8])))
gui.text(0,174,string.format("Addrs: %X %X %X %X\n       %X %X %X %X",all_x[1],all_x[2],all_x[3],all_x[4],all_x[5],all_x[6],all_x[7],all_x[8]))
end
gui.register(whereami)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Pawny on September 29, 2015, 01:48:08 pm
Yeah. It's thanks to that we'd be able to enter Hall of Origin without walk-through-walls cheat in case we found it in the void. I don't remember if this is the exact coordinates but going something like 65536 steps east, 65536 north and then 65536 east again you should enter a Fake HoO in an HoO area, assuming you're starting from its initial area (the steps would vary according from where you'd start from).

But does said Hall of Origin area play the same theme as the actual real Hall (map ID 0x01FE or 510)? Or is it the Spear Pillar theme that the other Hall (map ID 0x01FF or 511) also uses?

That's an hypothetical real Hall of Origin, if we found it. So the real one. But the 511 should work like the other one anyway, you'd get trapped if you managed to enter it though, because it has no exit warp.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 29, 2015, 08:09:15 pm
The Hall of Origin loads script file 232, which is:
Code: [Select]
Script #1

CheckFlag 0x8E
CompareLastResultJump 0x1 Function_#1
End


Script #2

LockAll
SetVar 0x4118 0x0
Call Function_#2
Call Function_#3
PlayCry 0x1ED 0x0
WaitCry
Call Function_#8
PlayCry 0x1ED 0x0
Message 0x0
CloseMessageOnKeyPress
ClearFlag 0x8E
WildBattle2 0x1ED 0x50
SetFlag 0x8E
CheckLost 0x800C
If 0x800C 0x0
CompareLastResultJump 0x1 Function_#9
CheckWildBattle2 0x800C
If 0x800C 0x1
CompareLastResultJump 0x1 Function_#10
ClearFlag 0x11E
ReleaseAll
End


Script #3

End


Script #4

UseScript_#2
There are also functions and movements as part of this script file, but they're less telling so I'll leave them out.

As you can see script 2 involves playing a cry and starting a battle, this would be the Arceus fight. All script 4 does is call script 2, which is nice since it doubles our chances of making this work.
In the event viewer, the HoO has 2 events. One overworld (Arceus) who is set to script 0 and one trigger set to script 2. The trigger has a flag associated - this probably means it only appears when that flag is set, that flag being the event? It's 16664 if anyone knows.

Is this for Diamond and Pearl or Platinum? In Diamond and Pearl, the Arceus sprite will appear even if you don't have the Azure Flute (regardless of the state of the event flag) but this is not the case in Platinum, in which the Azure Flute is required to make the sprite appear.

That was Pearl. Yes, Arceus is always visible but does not have a script. The trigger (3x1 space that triggers a script when you stand in it) only exists when flag 16664 is set (0x4118 in hex).

In Platinum it all looks the same except that Arceus only appears when flag 590 (hex 0x24E) is set, and script 3 (empty in Pearl) changes some flags.
Code: [Select]
Script #3

028B 0x2 0x4000
If 0x4000 0x0
CompareLastResultJump 0x1 Function_#12
CheckFlag 0x11E
CompareLastResultJump 0x1 Function_#12
SetFlag 0x24E
End


Function #12

ClearFlag 0x24E
End

This script manages whether Arceus will appear, based on some other flags. Probably to make it appear on entering? Not completely sure without going through everything but that sounds like a safe bet. Scripts 2 and 4 are exactly the same except for the after battle checks, so calling them through another npc if possible will work just as well on Platinum as it would on Diamond/Pearl.

After battle in Pearl:
If you lost: go to Pokecenter & set flag 0x26C
If "WildBattle2" set flag 0x26C and say "ARCEUS disappeared from sight..." (is this if ran away? or defeated it?)
Else: clear flag 0x11E

After battle in Platinum:
If you lost: go to Pokecenter & set flag 0x24E
If "WildBattle2" set flag 0x24E and say the same
If 0x4056 = 0: set variable 0x4056 = 1 and clear flag 0x11E
Else: clear flag 0x11E

Another result to the battle was added. Is it for caught? Is Arceus not rebattleable in Diamond/Pearl? Or maybe it had to be reworked for some other reason. Either way it shouldn't cause problems.

Yeah. It's thanks to that we'd be able to enter Hall of Origin without walk-through-walls cheat in case we found it in the void. I don't remember if this is the exact coordinates but going something like 65536 steps east, 65536 north and then 65536 east again you should enter a Fake HoO in an HoO area, assuming you're starting from its initial area (the steps would vary according from where you'd start from).
Huh, did people ever try tweaking in the void to get back inside? Maybe that's too unreliable/unstable.

If anyone can help debug why this doesn't work, it would be greatly appreciated  O_o

Code: [Select]
function whereami()
aslr_data_ptr = memory.readdword(0x021C4D28)
mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)
m = memory.readword(mapdata_ptr + 0x14A4)
x = memory.readword(mapdata_ptr + 0x14A4 + 8)
y = memory.readword(mapdata_ptr + 0x14A4 + 12)
z = memory.readword(mapdata_ptr + 0x14A4 + 0x6C99A)

all_x = {0x226E7AC, 0x2291DE4, 0x2291DF0, 0x2291DFE,0x2333286,0x2333292,0x23332BA,0x2333E0A4}
all_y = {0x226E7AC+4, 0x2291DE4+4, 0x2291DF0+4, 0x2291DFE+4,0x2333286+4,0x2333292+4,0x23332BA+4,0x2333E0A4+4}
all_z = {0x21CEF76,0x2291E02,0x22DB13E,0x23067A6,0x232460A,0x2333296,0x23332BE}
for i = 1,7 do
-- The values above were taken from my own save state of Pearl. As such, we need to subtract my own map_data_ptr from them, and add the current session's:
-- (skipping over the eighth one since this only appears for x (and consequently y) but not z; its lack of a clear effect suggests the eighth value to be a false positive)
all_x[i] = all_x[i] - 0x226D300 + mapdata_ptr
all_y[i] = all_y[i] - 0x226D300 + mapdata_ptr
all_z[i] = all_z[i] - 0x226D300 + mapdata_ptr
end

all_m = {0x226E7A4,0x2291EC0,0x2291FE8,0x22ABCB0}
for i = 1,4 do
-- If we modify m (= all_m[1]), the game freezes. Perhaps we also need to update the others? Note interesting change counts: walking in and out of a building twice yields the expected change count of 4 for items 1 and 4, but 8 for item 3 and 10 for item 2.
all_m[i] = all_m[i] - 0x226D300 + mapdata_ptr
end

--memory.writeword(all_x[1],force_x) -- if this one is different from the others, the save file will be corrupted; if it is forced during save loading, the game will immediately crash when the save is loaded. This seems to actually move you collision-wise, but not visually.
--memory.writeword(all_x[2],force_x) -- the same; also if this one is forced, the save load screen will display a glitched white block. Does nothing live - perhaps this is the saved x position only?
--memory.writeword(all_x[3],force_x) -- changes map ID!!! but only live, not when loading save. Can be used to save inside a MZ (open start menu, change value to warp you into MZ), with bizarre results.
--memory.writeword(all_x[4],force_x) -- immediately snaps you into place, but without changing map id. Is saved when you save the game only if forced DURING the save, otherwise your new position is NOT saved. Interestingly, THIS IS ONLY GRAPHICAL
--memory.writeword(all_x[5],force_x) -- seems related to graphics loading
--memory.writeword(all_x[6],force_x) -- this one...
--memory.writeword(all_x[7],force_x) -- ...and this one are related; if one of them is flipped, the screen goes black and the other one starts counting like a madman. Counting resets when reloading the graphics. When forcing these to be set and taking a step, the perspective twists, showing this is contorlling the camera.
--memory.writeword(all_x[8],force_x) -- unknown?

function force_m(pos)
memory.writeword(all_m[1],pos) -- name tag. but based on real x,y,z! (i.e. OW locations get their name based on your coordinates)
memory.writeword(all_m[2],pos) -- graphics, but only after reload
--memory.writeword(all_m[3],pos)
--memory.writeword(all_m[4],pos)
end
function force_x(pos)
memory.writeword(all_x[1],pos) -- collision
memory.writeword(all_x[3],pos) -- graphics
memory.writeword(all_x[4],pos) -- matrix
--memory.writeword(all_x[2],pos)
--memory.writeword(all_x[5],pos)
--memory.writeword(all_x[6],pos)
--memory.writeword(all_x[7],pos)
end
function force_y(pos)
memory.writeword(all_y[1],pos) -- collision
memory.writeword(all_y[3],pos) -- graphics
memory.writeword(all_y[4],pos) -- matrix
--memory.writeword(all_x[2],pos)
--memory.writeword(all_x[5],pos)
--memory.writeword(all_x[6],pos)
--memory.writeword(all_x[7],pos)
end
function force_z(pos)
memory.writeword(all_z[1],pos) -- collision
memory.writeword(all_z[3],pos) -- graphics
memory.writeword(all_z[4],pos) -- matrix
--memory.writeword(all_x[2],pos)
--memory.writeword(all_x[5],pos)
--memory.writeword(all_x[6],pos)
--memory.writeword(all_x[7],pos)
end

force_m(3) -- Jubilife city
force_x(180) -- Jubilife city
force_y(777) -- Jubilife city
force_z(2) -- Jubilife city

gui.text(0,144,string.format("ASLR data: 0x%X / map data: 0x%X",aslr_data_ptr,mapdata_ptr))
gui.text(1,154,string.format("Matrix: %d, X: %d, Y: %d, Z: %d",m,x,y,z))
gui.text(0,164,string.format("X: %d %d %d %d %d %d %d %d",memory.readword(all_x[1]),memory.readword(all_x[2]),memory.readword(all_x[3]),memory.readword(all_x[4]),memory.readword(all_x[5]),memory.readword(all_x[6]),memory.readword(all_x[7]),memory.readword(all_x[8])))
gui.text(0,174,string.format("Addrs: %X %X %X %X\n       %X %X %X %X",all_x[1],all_x[2],all_x[3],all_x[4],all_x[5],all_x[6],all_x[7],all_x[8]))
end
gui.register(whereami)

Interesting script!
From just initial testing, I think there's some confusion between map and matrix. Eg. Jubilife city is map header 3 in matrix 0. Route 204 is map header 345 in matrix 0. I'm not completely sure what the script is doing, but if I run it indoors I end up in that building's void so the matrix isn't being set.

I think the map header should be considered a result rather than something to set - it's the place you end up being in at certain coordinates within a certain matrix. (It gets a little more confusing with being indoors since warps point at a header which then loads the correct matrix, but I think that's just because they decided it should work like that? That seems to be backwards from how the engine runs. I think the fact that other headers are found by walking out of bounds in that target matrix shows that something doesn't line up there. Or maybe not backwards, but still a way to call them in the other order. Maybe you could do it by setting the map if you use a warp at the same time.)

If I run the script while already in Jubilife it seems to line my X up with the pokecenter, but not Y so I guess that address might not be right, at least for one of them? Also graphical glitches but that might be because of the Y. If I run the script in a different route I still go to the X of the Jubilife Pokecenter door. If I walk around with the script running (only possible with walk anywhere, even if it puts me in a clear spot) npcs get cloned.

To search for the matrix address you'll need to find the find the matrix values with Spiky's DS Map Editor, since there's no real correlation between header number and matrix number.

(Interestingly, a lot of the generic buildings are different headers that call the same matrix. This means the exact same map (graphics and movement) is loaded but with different npcs, warps, text, scripts and etc.)

EDIT: Ok that difference between warping via header and travelling via matrix has got me thinking. The 3 layer matrices and the 1 layer matrices are laid out differently. The overworld/marsh are [headers, mystery zone heights, map files] while indoor matrices are just [map files] because the entire indoor place uses the same header. (http://www.pokecommunity.com/showthread.php?t=353897) When you move between two matrix cells in the overworld it loads the map header, mystery zone height, and map data from the matrix in that order. Does that mean that it's trying to read 2 layers above the map data in an indoor matrix when you walk out of bounds? Or maybe even the same layer, since it sounds kinda illogical to reference things relative to the third layer... That might explain why indoor matrices are all so similar, if they're getting some data from the start of the map file that's mostly the same. That doesn't explain being affected by flags though... unless hey. If it tries to look "2 layers above" the map file in memory without putting any map header data in that memory, it'll be reading whatever's there just before the map data. That sounds possible?

This wild speculation is convincing me that the Great Marsh is going to be interesting. I just took a quick look now and riding North 800 steps from the top left has given me a couple Turnback Caves and Mystery Zones... but no Floaroma or Veilstone Store... so no second section?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on September 30, 2015, 02:23:33 am
I've progressed some further with my script. I've done some simple digging for matrix values too, and the script now looks like this:
Code: [Select]
function whereami()
aslr_data_ptr = memory.readdword(0x021C4D28)
mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)
m_pksv = memory.readword(mapdata_ptr + 0x14A4)
x_pksv = memory.readword(mapdata_ptr + 0x14A4 + 8)
y_pksv = memory.readword(mapdata_ptr + 0x14A4 + 12)
z_pksv = memory.readword(mapdata_ptr + 0x14A4 + 0x6C99A)

mtx = {0x22B2E,0x6791C,0x67A40}
m   = {0x14A4,0x24BC0,0x24CE8}
x   = {-0x61C5A,-0x61C72,0x14AC,0x24AE4,0x24AF0,0x24AFE}
y   = {         -0x61C7A,0x14B0,0x24AEC,0x24AF8,0x24B06}
z   = {         -0x61C76,       0x24B02,                0x6DE3E,0x994A6,0xC5F96,0xC5FBE}

function _force(where,what)
for i,v in ipairs(where)
do
memory.writeword(mapdata_ptr+v,what)
end
end

function force(_mtx,_m,_x,_y,_z)
_force(mtx,_mtx)
_force(m,_m)
_force(x,_x)
_force(y,_y)
_force(z,_z)
end

--force(0,3,145,750,2) -- Jubilife city
--force(0,8,21,13,0) -- Poketch void
--force(0,8,21,65505,0) -- one step before SS
--_force(y,65504) -- after having warped into one step before SS, force to walk one more step into SS

gui.text(0,184,string.format("mtx: %d m: %d x: %d, y: %d, z: %d",memory.readword(mapdata_ptr+mtx[1]),m_pksv,x_pksv,y_pksv,z_pksv))
end
gui.register(whereami)
What is interesting is that it seems to warp correctly now, but that it still fails to load the next map on its own. That is, if you uncomment the line 'force(0,8,21,65505,0) -- one step before SS', your new location will be correctly set to a few steps above Poketch Co such that, if you take one more step, you will enter the Floaroma Meadows. However, forcing the game to take that step by uncommenting the line after that does not do anything. Interestingly, you can't take that step yourself either - you're blocked by an invisible wall. If you save and reset, however, you can take that next step all of a sudden, and you will load Floaroma Meadows, but if you try to have the step walked automatically by uncommenting the _force(y,65504) line, it won't load Floaroma Meadows again. Unless, and this is the only scenario in which this works, you save one step before SS, load your save, and while at the journal pages activating the _force(y.. line; only in this case, you are correctly warped into Floaroma Meadows.

So, we still won't manage to automate searching the void. Apparently, pressing up and walking does something extra than just changing your y coordinate, which is apparently crucial for loading a new map area...
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on September 30, 2015, 02:33:33 am
What is interesting is that it seems to warp correctly now, but that it still fails to load the next map on its own. That is, if you uncomment the line 'force(0,8,21,65505,0) -- one step before SS', your new location will be correctly set to a few steps above Poketch Co such that, if you take one more step, you will enter the Floaroma Meadows. However, forcing the game to take that step by uncommenting the line after that does not do anything. Interestingly, you can't take that step yourself either - you're blocked by an invisible wall. If you save and reset, however, you can take that next step all of a sudden, and you will load Floaroma Meadows, but if you try to have the step walked automatically by uncommenting the _force(y,65504) line, it won't load Floaroma Meadows again. Unless, and this is the only scenario in which this works, you save one step before SS, load your save, and while at the journal pages activating the _force(y.. line; only in this case, you are correctly warped into Floaroma Meadows.
Nice progress!
On your previous script I was able to walk after warping with a walk anywhere code, try that.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on September 30, 2015, 03:13:22 am
On your previous script I was able to walk after warping with a walk anywhere code, try that.
Thanks! Now I can take that extra step, but it still only loads the correct area (Floaroma Meadows) if I came from the real Poketch Co (which turns out to be matrix 141, so change the commented code above with the below). If I warp directly to Poketch Co @ [21,65505] (from my original position of - coincidentally - somewhere in Jubilife), I get a mystery zone when I move that one step up, which I presume is the mystery zone from Jubilife's [21,65504/5] coordinates as opposed to Poketch Co's, but which is only shown to me after I manually take a step because that is the moment when map names happen to drawn in the top-left corner. In other words, the map name probably didn't shift because I crossed a map line in Poketch Co, but rather because my x and y coordinates were out of bounds for Jubilife and the game only updates the map name after you take a step. This means my warping is still unsuccessful: my x,y,z coordinates shift correctly, but my attempts to force the game to load a specific map or matrix are still not right.
Code: [Select]
--force(0,3,145,750,2) -- Jubilife city
--force(141,8,21,13,0) -- Poketch void
--force(141,8,21,65505,0) -- one step before SS
--_force(y,65504) -- after having warped into one step before SS, force to walk one more step into SS

What I wouldn't give for a disassembly of the keypress handler or the map handler right now  ;D
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Wack0 on September 30, 2015, 07:41:24 am
What I wouldn't give for a disassembly of the keypress handler or the map handler right now  ;D

Then go set some conditional breakpoints and find them :D
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on September 30, 2015, 12:24:40 pm
That was Pearl. Yes, Arceus is always visible but does not have a script. The trigger (3x1 space that triggers a script when you stand in it) only exists when flag 16664 is set (0x4118 in hex).

In Platinum it all looks the same except that Arceus only appears when flag 590 (hex 0x24E) is set, and script 3 (empty in Pearl) changes some flags.
Code: [Select]
Script #3

028B 0x2 0x4000
If 0x4000 0x0
CompareLastResultJump 0x1 Function_#12
CheckFlag 0x11E
CompareLastResultJump 0x1 Function_#12
SetFlag 0x24E
End


Function #12

ClearFlag 0x24E
End

This script manages whether Arceus will appear, based on some other flags. Probably to make it appear on entering? Not completely sure without going through everything but that sounds like a safe bet. Scripts 2 and 4 are exactly the same except for the after battle checks, so calling them through another npc if possible will work just as well on Platinum as it would on Diamond/Pearl.

After battle in Pearl:
If you lost: go to Pokecenter & set flag 0x26C
If "WildBattle2" set flag 0x26C and say "ARCEUS disappeared from sight..." (is this if ran away? or defeated it?)
Else: clear flag 0x11E

After battle in Platinum:
If you lost: go to Pokecenter & set flag 0x24E
If "WildBattle2" set flag 0x24E and say the same
If 0x4056 = 0: set variable 0x4056 = 1 and clear flag 0x11E
Else: clear flag 0x11E

Another result to the battle was added. Is it for caught? Is Arceus not rebattleable in Diamond/Pearl? Or maybe it had to be reworked for some other reason. Either way it shouldn't cause problems.

I see, thanks.

"ARCEUS disappeared from sight..." appears if you defeat it or if you run away. You can see this on my video of the Hall of Origin event in Platinum, though I don't show what happens when you run.

Video: https://www.youtube.com/watch?v=s-mJkCVZ1pg (https://www.youtube.com/watch?v=s-mJkCVZ1pg)

As to Diamond and Pearl, I currently don't have a save file ready so that I can test the event. I did find something interesting, though. The game seems to return the message "The Azure Flute echoed hollowly... It appears to be meaningless using the Azure Flute here..." in English or 「てんかいのふえ は むなしく なりひびいた⋯⋯ この ばしょで つかっても いみが ないようだ⋯⋯」 in Japanese if you go to Spear Pillar with the Azure Flute and the event flag set but don't meet all the conditions required to trigger the event (entering the Hall of Fame, obtaining the National Pokédex, and defeating Team Galactic at Spear Pillar). POKESAV lets you manage the save file's event flags, which comes in handy.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on September 30, 2015, 01:46:41 pm
What I wouldn't give for a disassembly of the keypress handler or the map handler right now  ;D

Then go set some conditional breakpoints and find them :D
Even if I had the skill, I can't manage - when I fire up gdb connected to my desmume and press Ctrl+C, desmume says 'Breaking execution', but it doesn't. That makes live debugging via the gdb stub kind of impossible...
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Wack0 on September 30, 2015, 02:11:45 pm
What I wouldn't give for a disassembly of the keypress handler or the map handler right now  ;D

Then go set some conditional breakpoints and find them :D
Even if I had the skill, I can't manage - when I fire up gdb connected to my desmume and press Ctrl+C, desmume says 'Breaking execution', but it doesn't. That makes live debugging via the gdb stub kind of impossible...

would no$gba debug version work?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 01, 2015, 12:16:32 pm
would no$gba debug version work?
Ah, thanks for the pointer - I thought no$ was still dead! I'll try playing with it a bit, but I'm a complete noob at debugging, so I'm anticipating that I won't come up with any revolutionary findings. But thanks for the tip!

EDIT: OK, need some help again. I couldn't understand the nocash debugger, so I went back to playing with desmume. I noticed that changing the values at [mapdata_ptr+0x24AF0] and [mapdata_ptr+0x24AF8] changes the map id to the one that is found at the specified x and y coordinates. Or crashes the emu :-\. What I wanted to do is write a 'scanner': increment one of these values by 32, print the resulting map header, try again. However, I don't know how to print to stdout, and I can't exactly write 200000 gui.text() commands. Does anyone know how to write to stdout?
EDIT2: Fixed. Grepping the desmume source yields the desired command: 'print'  :-X
The script now prints a map of every 32x32 section of your current matrix to the lua console.

Note: this code still suffers a critical defect for being valid for void exploring: when walking through the void, the matrix sometimes changes. This will affect what map ids you will get next. However, since this script does not actually walk, these matrix changes are never triggered. Thus, once you cross a matrix boundary, the results from this script would no longer be valid. I don't have the knowledge to fix this - we'd need to know what exactly triggers a matrix change, and debugging this is just miles beyond me, I'm afraid.

Code: [Select]
aslr_data_ptr = memory.readdword(0x021C4D28)
mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)

mtxs = {0x22B2E,0x6791C,0x67A40}
ms  = {0x14A4,0x24BC0,0x24CE8}
xs   = {-0x61C5A,-0x61C72,0x14AC,0x24AE4,0x24AF0,0x24AFE}
ys   = {         -0x61C7A,0x14B0,0x24AEC,0x24AF8,0x24B06}
zs   = {         -0x61C76,       0x24B02,                0x6DE3E,0x994A6,0xC5F96,0xC5FBE}

function whereami()
m_pksv = memory.readword(mapdata_ptr + 0x14A4)
x_pksv = memory.readword(mapdata_ptr + 0x14A4 + 8)
y_pksv = memory.readword(mapdata_ptr + 0x14A4 + 12)
z_pksv = memory.readword(mapdata_ptr + 0x14A4 + 0x6C99A)
gui.text(0,174,string.format("matrix data starts at %X",mapdata_ptr+mtxs[1]))
gui.text(0,184,string.format("mtx: %d m: %d x: %d, y: %d, z: %d",memory.readword(mapdata_ptr+mtxs[1]),m_pksv,x_pksv,y_pksv,z_pksv))
end
gui.register(whereami)

-- The below functions don't really warp you (your real coords don't change), but do load the map header of the next section
function readmap()
return memory.readword(mapdata_ptr+0x14A4)
end
function readfakex()
return memory.readword(mapdata_ptr+0x24AF0)
end
function writefakex(pos)
memory.writeword(mapdata_ptr+0x24AF0,pos)
end
function readfakey()
return memory.readword(mapdata_ptr+0x24AF8)
end
function writefakey(pos)
memory.writeword(mapdata_ptr+0x24AF8,pos)
end

for newy=0,65535,32
do
writefakey(newy)
line = ""
for newx=0,65535,32
do
writefakex(newx)
emu.frameadvance()
line = string.format("%s%05d ",line,readmap())
end
print(line)
end
(Also, run this script. It does some hilarious things to your game, at least when you start it from the overworld (remember, it doesn't correctly switch matrices!) ;D ) )
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 02, 2015, 05:03:12 am
Nice work on your script! I tried it out myself and it does look rather funny :P
By the way, I think it does show valid data as explained below, so maybe all that's needed now is an organised way to output it. Perhaps just .csv (basically plain text) so we can load it into google docs or excel or etc. Another approach would be to ignore most values and have it search for some specific ones, outputting their coordinates. I guess it depends whether we want a hard to look at map of the entire void or a way to search for specific places, both of which may differ between save files.


Note: this code still suffers a critical defect for being valid for void exploring: when walking through the void, the matrix sometimes changes. This will affect what map ids you will get next. However, since this script does not actually walk, these matrix changes are never triggered. Thus, once you cross a matrix boundary, the results from this script would no longer be valid. I don't have the knowledge to fix this - we'd need to know what exactly triggers a matrix change, and debugging this is just miles beyond me, I'm afraid.

I don't think the matrix does change while exploring. I just did a short test, see this video (A little over double speed because I wanted to test quickly).

[youtube]https://www.youtube.com/watch?v=UVuOdV1REWk&feature=youtu.be[/youtube]

Basically when going through warps or saving/loading the matrix depends on the header. When travelling between areas as you do on the overworld, in the great marsh or in the void (of any matrix), headers depend on matrix.
I'm on a trip to Fake Sinnoh now to confirm this, since this was just a short journey.
Edit: I got to North Fake Sinnoh. Matrix stayed 0 the whole way, but... I can't believe I forgot this? The headers don't line up with the world? So I guess there is something else to how they're loaded... :/
Apparently I need to go look over all the basics again haha. Saving in NFS should put me there in the real world right? Anyway, this script is a good start.
Quote from: doc
Stickyman’s SPHoO void: 70,000 North, 2,912 East
Maybe some coordinates are stored as 4 byte rather than 2 byte? I hope it isn't just that along the journey the good data is changed (though that sounds very possible) because if it's path specific I don't see any trustworthy way of faking it like this, we'd have to make the lua actually travel it properly. That would be so much slower and also means we don't avoid the Pt/HG/SS crashes that this script probably would? (not tested).

Edit again: Yes, I'm seeing three 4 byte x coordinates. They do underflow to full 4 byte numbers, so these must be why the headers are different.
They're at mapdata_ptr + 14AC,  24AE4,  24AF0

Here's the script I used, a slight edit on your first one:
Code: [Select]
local function whereami()
local aslr_data_ptr = memory.readdword(0x021C4D28)
local mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)
local map = memory.readword(mapdata_ptr + 0x14A4)
local x = memory.readword(mapdata_ptr + 0x14A4 + 8)
local y = memory.readword(mapdata_ptr + 0x14A4 + 12)
local mat = memory.readword(mapdata_ptr + 0x00022B2E)
gui.text(2,3,string.format("Map: %d, X: %d, Y: %d, Mat: %d",map,x,y,mat))
gui.text(2,182,string.format("ptr: %x",mapdata_ptr))
end
gui.register(whereami)
It doesn't show fps itself, I just turned that on in the HUD.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 02, 2015, 10:06:51 am
By the way, I think it does show valid data as explained below, so maybe all that's needed now is an organised way to output it. Perhaps just .csv (basically plain text) so we can load it into google docs or excel or etc. Another approach would be to ignore most values and have it search for some specific ones, outputting their coordinates. I guess it depends whether we want a hard to look at map of the entire void or a way to search for specific places, both of which may differ between save files.
What it's doing right now (or at least, it should; I haven't tested it all the way) is printing a map to desume's stdout (the lua window). That it, for every 32 steps it takes to the right, it prints a zero-padded map id plus a space, and once it's reached x=65536 (which is the same as 0), it increments y by 32 and starts a new line. As such, when you let the script run, you will have a full map, and if there's a 510 in there all you can immediately see how you get to it.

Quote
I don't think the matrix does change while exploring. I just did a short test, see this video (A little over double speed because I wanted to test quickly).
Looks like you're right :o
Quote
Edit: I got to North Fake Sinnoh. Matrix stayed 0 the whole way, but... I can't believe I forgot this? The headers don't line up with the world? So I guess there is something else to how they're loaded... :/
Apparently I need to go look over all the basics again haha. Saving in NFS should put me there in the real world right? Anyway, this script is a good start.
Well, we know that all of FS is basically s**t due to not being loaded properly (e.g. lots of routes missing or not lining up correctly), but for our purposes, none of this is relevant - the only thing that matters is that we can walk anywhere (barring z issues) and that we have to find a way to reach a map that is of id 510. (And then hope that it's still going to be a 510 after we walk back to whereever our script #1/#2 npc is.)
Quote
Quote from: doc
Stickyman’s SPHoO void: 70,000 North, 2,912 East
Maybe some coordinates are stored as 4 byte rather than 2 byte? I hope it isn't just that along the journey the good data is changed (though that sounds very possible) because if it's path specific I don't see any trustworthy way of faking it like this, we'd have to make the lua actually travel it properly. That would be so much slower and also means we don't avoid the Pt/HG/SS crashes that this script probably would? (not tested).

Edit again: Yes, I'm seeing three 4 byte x coordinates. They do underflow to full 4 byte numbers, so these must be why the headers are different.
They're at mapdata_ptr + 14AC,  24AE4,  24AF0
Well, something must definitely be going on, since the FS at 70k N should be exactly the same as the FS at 5k-430 N otherwise, and this is evidently not the case. Does my script correctly reach the Stickyman HoO? If so, then data changes along the way, but my script manages to emulate that properly. If not, then either data does change along the way but my script's way of "walking" doesn't trigger that (so we'd need to reprogram it to also do stuff to these other RAM pointers you mention), or the data doesn't change but these RAM areas do change as a function of real walking and we will still need to do the same.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 02, 2015, 11:04:27 am
What it's doing right now (or at least, it should; I haven't tested it all the way) is printing a map to desume's stdout (the lua window). That it, for every 32 steps it takes to the right, it prints a zero-padded map id plus a space, and once it's reached x=65536 (which is the same as 0), it increments y by 32 and starts a new line. As such, when you let the script run, you will have a full map, and if there's a 510 in there all you can immediately see how you get to it.
It's just a little hard to look at is all, unless there's a way to get a horizontal scrollbar? (Assuming the new line of void prints on a new line? Yeah I guess it does.)

Well, we know that all of FS is basically s**t due to not being loaded properly (e.g. lots of routes missing or not lining up correctly), but for our purposes, none of this is relevant - the only thing that matters is that we can walk anywhere (barring z issues) and that we have to find a way to reach a map that is of id 510. (And then hope that it's still going to be a 510 after we walk back to whereever our script #1/#2 npc is.)
All the maps are there, minus tilesets which makes them look weird. I guess since neither headers nor even collision dara are there it's more "Fake" than "Real", but my worry is that if the coordinates really are 2 bytes then they can't distinguish between Real Sinnoh and any of the fakes.

Do we know what happens of you go to Fake Sinnoh then back to Real Sinnoh? I'll go test that now.

Well, something must definitely be going on, since the FS at 70k N should be exactly the same as the FS at 5k-430 N otherwise, and this is evidently not the case. Does my script correctly reach the Stickyman HoO? If so, then data changes along the way, but my script manages to emulate that properly. If not, then either data does change along the way but my script's way of "walking" doesn't trigger that (so we'd need to reprogram it to also do stuff to these other RAM pointers you mention), or the data doesn't change but these RAM areas do change as a function of real walking and we will still need to do the same.
Your script only increments to 65k, since that's a full 2 byte number so I don't see how it could reach 70k. I haven't run it extensively though, and in theory (so if it does wrap after 2 bytes) that'd show up near the end of your script since 70k North would be around 60k South, and you do horizontal first.
I don't really get how both a 2 byte and 4 byte number can be mapped to the same thing which sounds like an issue (unless you've just got the small end of it?)
Maybe if you just change both it'll work.


Quote from: doc
As a footnote I might add that going too far in either direction will lead to all areas acting like BSoD
This is something to keep in mind. 4 bytes gives us 4,294,967,295 possible values for each coordinate which is way too many. That takes too long to measure, too long to travel to manually and the game isn't stable enough it sounds like, so the search should probably be restricted... though hey if your method of virtually traveling doesn't suffer from instability maybe it'd be interesting to measure anyway? It'll take forever though.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 02, 2015, 01:38:46 pm
It's just a little hard to look at is all, unless there's a way to get a horizontal scrollbar? (Assuming the new line of void prints on a new line? Yeah I guess it does.)
There's no way to make the window bigger, AFAICS. My intention was for someone to copy this into notepad/excel and then examine it from there.

Quote
Your script only increments to 65k, since that's a full 2 byte number so I don't see how it could reach 70k. I haven't run it extensively though, and in theory (so if it does wrap after 2 bytes) that'd show up near the end of your script since 70k North would be around 60k South, and you do horizontal first.
That's my point, at 65536 it should just have rolled around so 70k==4.5k. But there's a different map at 4.5k than at 70k, so something else must be going on.
Quote
I don't really get how both a 2 byte and 4 byte number can be mapped to the same thing which sounds like an issue (unless you've just got the small end of it?)
Maybe if you just change both it'll work.
The DS is little-endian, so a number '1234' would be stored in memory as '34 12'. So this is very much possible :)
Quote
Quote from: doc
As a footnote I might add that going too far in either direction will lead to all areas acting like BSoD
This is something to keep in mind. 4 bytes gives us 4,294,967,295 possible values for each coordinate which is way too many. That takes too long to measure, too long to travel to manually and the game isn't stable enough it sounds like, so the search should probably be restricted... though hey if your method of virtually traveling doesn't suffer from instability maybe it'd be interesting to measure anyway? It'll take forever though.
I guess we'll have to see. Note that a BSOD is basically the result of interpreting data RAM as (invalid) instructions, so if I knew anything about debugging, this might eventually become a vector for ACE...

EDIT: well, this is concerning. The below does NOT reach Stickyman's HoO  D: D: D:
Code: [Select]
-- PoC: reach SFHoO
-- to be run when saved+reset @430N
-- 70kN,2912E
function SFHoO()
oldy=memory.readword(mapdata_ptr+0x24AF8)
for incr=0,70000,32
do
writefakey(oldy-incr)
emu.frameadvance()
end
writefakex(memory.readword(mapdata_ptr+0x24AF0)+2192)
end
SFHoO()
I'm doing something right, because I do get different maps than the standard Floaromas and Veilstones above Jubilife (e.g. I get Victory Road now), but no fake HoOs...  :'(
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 03, 2015, 02:57:32 am
I'm sorry, I thought I had implemented your suggestion of treating the coordinates as 4-byte data rather than 2-byte but it seems I hadn't.

Changing the words to dwords gives different results - the previous script now puts me squarely at Route 205. This is still not the promised SFHoO, but it's different compared to the Mystery Zone (which becomes Oreburgh City when you save in it) that I got when I was reading and writing words.

Code: [Select]
aslr_data_ptr = memory.readdword(0x021C4D28)
mapdata_ptr = memory.readdword(aslr_data_ptr + 0x4)

mtxs = {0x22B2E,0x6791C,0x67A40}
ms   = {0x14A4,0x24BC0,0x24CE8}
xs   = {-0x61C5A,-0x61C72,0x14AC,0x24AE4,0x24AF0,0x24AFE}
ys   = {         -0x61C7A,0x14B0,0x24AEC,0x24AF8,0x24B06}
zs   = {         -0x61C76,       0x24B02,                0x6DE3E,0x994A6,0xC5F96,0xC5FBE}

function whereami()
m_pksv = memory.readword(mapdata_ptr + 0x14A4)
x_pksv = memory.readword(mapdata_ptr + 0x14A4 + 8)
y_pksv = memory.readword(mapdata_ptr + 0x14A4 + 12)
z_pksv = memory.readword(mapdata_ptr + 0x14A4 + 0x6C99A)
gui.text(0,174,string.format("matrix data starts at %X",mapdata_ptr+mtxs[1]))
gui.text(0,184,string.format("mtx: %d m: %d x: %d, y: %d, z: %d",memory.readword(mapdata_ptr+mtxs[1]),m_pksv,x_pksv,y_pksv,z_pksv))
end
gui.register(whereami)

-- The below functions don't really warp you (your real coords don't change), but do load the map header of the next section
function readmap()
return memory.readword(mapdata_ptr+0x14A4)
end
function writefakex(pos)
memory.writedword(mapdata_ptr+0x24AF0,pos)
end
function writefakey(pos)
memory.writedword(mapdata_ptr+0x24AF8,pos)
end

-- PoC: reach SFHoO
-- to be run when saved+reset @430N
-- 70kN,2912E
function SFHoO()
oldy=memory.readdword(mapdata_ptr+0x24AF8)
for incr=0,70000,32
do
writefakey(oldy-incr)
emu.frameadvance()
end
writefakex(memory.readdword(mapdata_ptr+0x24AF0)+2192)
end
SFHoO()

EDIT: Also tried this, but this BSODs me and then dumps me at the Sunyshore elevator right before it finishes walking 2912E after the 70kN
Code: [Select]
function travel_x(steps,dir)
if dir == "E" then dir = 1 end
if dir == "W" then dir =-1 end
for incr=0,steps,1
do
writefakex(readfakex()+incr*dir)
if (incr % 100) == 0 then print(string.format("Took my %d'th step",incr)) end
if incr == 65536 then memory.writeword(mapdata_ptr+0x24AF0+2,memory.readword(mapdata_ptr+0x24AF0+2)+1) end
emu.frameadvance()
end
end
function travel_y(steps,dir)
if dir == "S" then dir = 1 end
if dir == "N" then dir =-1 end
for incr=0,steps,1
do
writefakey(readfakey()+incr*dir)
if (incr % 100) == 0 then print(string.format("Took my %d'th step",incr)) end
if incr == 65536 then memory.writeword(mapdata_ptr+0x24AF8+2,memory.readword(mapdata_ptr+0x24AF8+2)+1) end
emu.frameadvance()
end
end

-- PoC: reach SFHoO
-- to be run when saved+reset @430N
-- 70kN,2912E
-- Save+reset
-- 4894S, 2816W
travel_y(70000,"N")
travel_x(2912,"E")
--travel_y(4894,"S")
--travel_x(2816,"W")
EDIT2: actually, this is wrong, because it's incrementing by incr*dir whereas it should be incrementing by just dir. But this dumps me into a MZ when I'm supposed to SR after 70kN, 2912E so that isn't right either.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 04, 2015, 12:17:46 am
There's no way to make the window bigger, AFAICS. My intention was for someone to copy this into notepad/excel and then examine it from there.
I've tried this, but it has a maximum amount of text. After too much is written the older data is deleted. So if it's possible to write a file that would be really useful. I also tried converting it to csv (find and replace spaces for commas with notepad) but Google docs didn't like it (no reason given) and libreoffice said it exceeded the maximum number of columns. So that's a shame. It also doesn't display properly in notepad with word wrap disabled, apparently it has a max line length.
Notepad++ shows it fine so that's one way to read it.

Looking at the first few lines, the script doesn't seem to give correct results though. When both x and y are very low in matrix 0 they should show the real layout of the overworld, right?

That's my point, at 65536 it should just have rolled around so 70k==4.5k. But there's a different map at 4.5k than at 70k, so something else must be going on.
I tried to test this, but at one point the player enters a warp and crashes. I wonder whether that's a problem with that spot, or it's because of how the script works. x:17792 y:5664 was where I got it, though idk if it's consistent.




I'm sorry, I thought I had implemented your suggestion of treating the coordinates as 4-byte data rather than 2-byte but it seems I hadn't.

Changing the words to dwords gives different results - the previous script now puts me squarely at Route 205. This is still not the promised SFHoO, but it's different compared to the Mystery Zone (which becomes Oreburgh City when you save in it) that I got when I was reading and writing words.



EDIT: Also tried this, but this BSODs me and then dumps me at the Sunyshore elevator right before it finishes walking 2912E after the 70kN

EDIT2: actually, this is wrong, because it's incrementing by incr*dir whereas it should be incrementing by just dir. But this dumps me into a MZ when I'm supposed to SR after 70kN, 2912E so that isn't right either.

I walked manually to the SPHoO to test if it was right, and it did show up. The top left coordinates are (B60,FFFEECE1) if that helps you, bottom right being (B7F,FFFEED00).
Also, apparently the script gets confused if I try to output the 4 byte x or y as decimal while they're negative? They get stuck at -2147483648 and won't change unless I make it positive/overflow to 0. There's probably something I'm misunderstanding but I blame lua.

While testing that I found something weird just to the west of real Sinnoh (when x underflows). It's basically... the opposite of Fake Sinnoh? No graphics load, but movement permissions still exist and you can find wild Pokemon.
This is really quick to reach so it probably is already known, but I can't find any videos about it. I think it should be called Invisible Sinnoh :P

[youtube]https://www.youtube.com/watch?v=loahWwUxymA[/youtube]

This video starts from 430N. I couldn't find any wild Pokemon without first turning on walk anywhere to get through the walls, so maybe no one ever realised how this place acts. Since some things are intact, I wonder if scripts load and etc... though no npcs are visible so they probably can't be interacted with if they are there.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 04, 2015, 04:01:36 am
SUCCESS! This script reaches Stickyman's HoO. The key was to treat everything as a dword, with proper overflow of the 65536 steps, as you had already suggested. I guess my previous implementation had a mistake.
Code: [Select]
function travel(steps,dir)
if dir == "E" then dir = 1; addr=mapdata_ptr+0x24AF0 end
if dir == "W" then dir =-1; addr=mapdata_ptr+0x24AF0 end
if dir == "S" then dir = 1; addr=mapdata_ptr+0x24AF8 end
if dir == "N" then dir =-1; addr=mapdata_ptr+0x24AF8 end
for incr=0,steps,1
do
memory.writedword(addr,memory.readdword(addr)+dir)
if (incr % 32) == 0 then emu.frameadvance() end
if (incr % 100) == 0 then print(string.format("Took my %d'th step",incr)) end
end
end

-- PoC: reach SFHoO
-- to be run when saved+reset @430N
-- 70kN,2912E
-- Save+reset
-- 4894S, 2816W
travel(70000,"N")
travel(2912,"E")
--travel(4894,"S")
--travel(2816,"W")
--travel(0,"N")

I also quickly wrote the below script, intended to be a VoidScanner(r)(tm)  :P  8)
It walks 0xFFFFFFFF (i.e. something like 4 billion) steps north * as many steps west, and prints the map id plus coordinates to a file (as requested  :P ), named VoidScanner.txt, for every 32 steps taken.
I'm still testing to see if its results are correct. What I am already seeing is that the game consistently freezes at x = 0xFFFE5AB5 (as had been noted before: going too far into either cardinal direction causes a freeze). Not sure how I should deal with this - advice would be appreciated!

Code: [Select]
mapdata_ptr = memory.readdword(memory.readdword(0x021C4D28)+0x4)

-- Scan the void: walk 0xFFFFFFFF in every god-forsaken direction...
-- (only try N and W since only these underflow x and y and we're not interested in mapping out real Sinnoh)
-- note: will be printed upside-down and flipped
file = io.open("VoidScan.txt","w")
for incry=0,0xFFFFFFFF,32
do
memory.writedword(mapdata_ptr+0x24AF8,memory.readdword(mapdata_ptr+0x24AF8)-32)
for incrx=0,0xFFFFFFFF,32
do
memory.writedword(mapdata_ptr+0x24AF0,memory.readdword(mapdata_ptr+0x24AF0)-32)
emu.frameadvance()
file:write(string.format("%05d[%08X,%08X] ",memory.readword(mapdata_ptr+0x14A4),memory.readword(mapdata_ptr+0x24AF0),memory.readword(mapdata_ptr+0x24AF8)))
file:flush()
end
file:write("\n")
file:flush()
end

Quote
Also, apparently the script gets confused if I try to output the 4 byte x or y as decimal while they're negative? They get stuck at -2147483648 and won't change unless I make it positive/overflow to 0. There's probably something I'm misunderstanding but I blame lua.
Probably some sort of overflow protection in lua itself. -2147483648 is the lowest value a 32-bit signed integer can have.

Quote
While testing that I found something weird just to the west of real Sinnoh (when x underflows). It's basically... the opposite of Fake Sinnoh? No graphics load, but movement permissions still exist and you can find wild Pokemon.
This is really quick to reach so it probably is already known, but I can't find any videos about it. I think it should be called Invisible Sinnoh :P
Interesting! This corroborates my earlier suspicions that graphics and collision data are loaded in different ways, i.e. are independent from one another: FS has correct graphics but bad collision, and now you've found FS's reverse counterpart  :XD:
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 04, 2015, 05:20:45 am
Nice!
I'm getting an event that may be the same crash you're getting. The character walks 2 steps up, 2 steps down then goes through a warp.
While running the game at real time this causes a crash, but if I fast forward the warp works and I'm teleported to matrix 230 (apparently Vista Lighthouse). The script keeps running, but the results are now incorrect since it's the wrong matrix so it's still a problem.
Maybe if the script sets the matrix each time that would be a workaround, but since fast forward actually affects how the game behaves it might be safer to not use it, so we'd need to avoid this completely.

The problem area wouldn't be the lighthouse itself, but the area that warps you to it. The elevator at Map 516 Matrix 207 does this. The script is triggered the moment you enter, no interaction. The doc mentions this elevator and one in Hearthome causing problems under "I got kicked out of the void!"

This is an autorun event that can't be disabled, so the only way I see to completely avoid it is reverting to a saved state and skipping that area. Saving states on every loop of the script sounds slow, so you'd need to choose a reasonable interval and make sure the script can deal with being a little behind where it was up to.
That said, I may have found a sneakier solution... talk to someone. While their message is open, start the lua script. This seems to stop the warping script from running since you're busy. The textbox also bounces with the place name which is pretty silly to watch.

No guarantees it's a perfect solution. I'm up to FFF00000 so far without problems, but searching the output shows I haven't been to map 516 yet. That's a lot further than I got on other attempts so it might have solved something?

Just before hitting post my screen turned black at FFE?????. The script and game are still running, maps and music still changing, but this may be a limit for real exploration. I'll try to test it manually in another instance (which could take a while and/or be hard thanks to autowarps :P). VoidScan.txt still says I haven't hit map 516 so it's not related to the warp... still could be related to having a textbox open though.

EDIT: I just ran some numbers and that would take something like 3 hours 40 minutes to ride to, at the rate of 10 spaces per second (which probably isn't completely accurate). I think I'll pass for now. Meanwhile the script is still going well, now just passed FFCD0000. Still doesn't say it's found map 516 (neither map 511).

EDIT again: Just crashed at FFC444AC. The last 7 maps it visited were map 0, but before that was 38. The Canalave Library.
Something I'm noticing is that every map it visits is repeated. Here I see three map 38s in a row. I don't think the void normally acts like this though, maps tend to be alone (long stretches of mystery zone or the various jubilifes being the very notable exceptions that make it seem otherwise). Is the script running too fast for the game to keep up maybe?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 04, 2015, 06:14:54 am
EDIT again: Just crashed at FFC444AC. The last 7 maps it visited were map 0, but before that was 38. The Canalave Library.
Something I'm noticing is that every map it visits is repeated. Here I see three map 38s in a row. I don't think the void normally acts like this though, maps tend to be alone (long stretches of mystery zone or the various jubilifes being the very notable exceptions that make it seem otherwise). Is the script running too fast for the game to keep up maybe?
Oh no, it's just that I'm printing a map every 32 steps. So if a map is bigger than 32 steps it will be printed multiple times.

I've actually already found a HoO (it's 510 btw, not 516), but I had sort of cheated while doing it... My starting point was the Floaroma Flower Shop, but before I began searching I warped myself to [0,0] on that map, hence the cheating bit. But with that starting point, I found a HoO somewhere in like WWWWWWWWFS or something.

I'm now seeing what happens if I limit the script to maximally five FSs in a row and then trying from various entry points. Because it's going to take aaaages to map all of the void, and just as many ages for a non-cheater to walk normally to WWWWWWWWWWWWWFS or something like that.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 04, 2015, 06:49:57 am
Oh no, it's just that I'm printing a map every 32 steps. So if a map is bigger than 32 steps it will be printed multiple times.
Usually if a map shows up it is only 32 steps across though - eg. Stickyman's HoO. This is only a 32x32 area in the void even though when the real map is visited it's 64x64. Sure it is possible for a map to show twice in a row, but in VoidScan.txt I don't see any single maps at all. Always 2, 3 or sometimes 4 of the same in a row.

I changed the script to wait 4 frames instead of 1 (just a guess, maybe less are fine) and I'm getting very few duplicates. Still some, but few enough that perhaps those duplicates are real? Of course this does slow the scanning down.

I've actually already found a HoO (it's 510 btw, not 516)
Nice! When I said 516 I was referring to the elevator that I suspect is causing the crash btw.

but I had sort of cheated while doing it... My starting point was the Floaroma Flower Shop, but before I began searching I warped myself to [0,0] on that map, hence the cheating bit. But with that starting point, I found a HoO somewhere in like WWWWWWWWFS or something.
Oh, does the script not set x and y to 0 before it starts? I guess it doesn't, I'll add that now. I've just been running it from the middle of Jubilife, oops. Well, I guess it doesn't really matter since it gives coordinates anyway.

I'm now seeing what happens if I limit the script to maximally five FSs in a row and then trying from various entry points. Because it's going to take aaaages to map all of the void, and just as many ages for a non-cheater to walk normally to WWWWWWWWWWWWWFS or something like that.
Yeah, limiting the search like that sounds good. Those 5x64k steps should give plenty of space for interesting things to show up.
Pawny mentioned earlier that the voids of many inside places are similar/less interesting, so the Overworld might give better results.


I just got another crash warp that sent me to map 113, matrix 210. That header is part of Hearthome, perhaps the department store so I guess I ran into the other elevator now. I got that when I started from 0,0 and didn't have someone to talk to, so all the more reason to use that sneaky trick which does seem to work.

EDIT: It found a Hall of Origin in the overworld void at 00510[0000D8E0,0000FFE0]
So that's about 55,520 steps West and 400 steps South of 430N.
No wait, no it's not. Ok the script is only writing the small end of the coordinate to the file it looks like? Oops.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 04, 2015, 07:51:01 am
Usually if a map shows up it is only 32 steps across though - eg. Stickyman's HoO. This is only a 32x32 area in the void even though when the real map is visited it's 64x64. Sure it is possible for a map to show twice in a row, but in VoidScan.txt I don't see any single maps at all. Always 2, 3 or sometimes 4 of the same in a row.

I changed the script to wait 4 frames instead of 1 (just a guess, maybe less are fine) and I'm getting very few duplicates. Still some, but few enough that perhaps those duplicates are real? Of course this does slow the scanning down.
This is a very important observation, thank you. It is entirely possible that a single frame is not enough time for the game to update the map value. I've changed this to two frames now, let's see what happens to me. Also, I noticed a very stupid bug: I was not resetting the x value when I proceeded to the next line of y values, so what you would think is NFS would actually be NWWWWW...WWWFS etc. I've fixed that too in the below code, which now also appends to VoidScan.txt rather than clobbering it first:

Code: [Select]
file = io.open("VoidScan.txt","a")
file:write("\n-------------------------------------------------------------\n")
for incry=0,65536*4,32
do
oldx = memory.readdword(mapdata_ptr+0x24AF0)
for incrx=0,65536*4,32
do
emu.frameadvance()
emu.frameadvance()
emu.frameadvance()
file:write(string.format("%05d[%08X,%08X] ",memory.readword(mapdata_ptr+0x14A4),memory.readdword(mapdata_ptr+0x24AF0),memory.readdword(mapdata_ptr+0x24AF8)))
file:flush()
memory.writedword(mapdata_ptr+0x24AF0,memory.readdword(mapdata_ptr+0x24AF0)-32)
end
file:write("\n")
file:flush()
memory.writedword(mapdata_ptr+0x24AF0,oldx)
memory.writedword(mapdata_ptr+0x24AF8,memory.readdword(mapdata_ptr+0x24AF8)-32)
end

Quote
Oh, does the script not set x and y to 0 before it starts? I guess it doesn't, I'll add that now. I've just been running it from the middle of Jubilife, oops. Well, I guess it doesn't really matter since it gives coordinates anyway.
No, because I wanted to make it realistic for doing a real run later on, and if you enter a door from behind you're not at [0,0] but rather at [door.x,door.y+1]  :P

Quote
I just got another crash warp that sent me to map 113, matrix 210. That header is part of Hearthome, perhaps the department store so I guess I ran into the other elevator now. I got that when I started from 0,0 and didn't have someone to talk to, so all the more reason to use that sneaky trick which does seem to work.
I also seem to vaguely recall something about the beta areas of the Hearthome gym doing crashy things, I dunno  :-\

Quote
EDIT: It found a Hall of Origin in the overworld void at 00510[0000D8E0,0000FFE0]
So that's about 55,520 steps West and 400 steps South of 430N.
No wait, no it's not. Ok the script is only writing the small end of the coordinate to the file it looks like? Oops.
see above - due to a mistake on my part this is actually 400/32*65536 further West than the log would have you believe - I'm so sorry  :-X :P

EDIT: still seeing lots of duplicate maps with 2 emu.frameadvances()... trying 3 now
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 04, 2015, 08:09:19 am
see above - due to a mistake on my part this is actually 400/32*65536 further West than the log would have you believe - I'm so sorry  :-X :P

This was before any looping at all - it was still the version of the script that goes west until it crashes.
I'm looking at the outputs and seeing 00002[0000FFE0,0000FFE0] when the coordinates were actually [FFFFFFE0,FFFFFFE0]. None of them have the higher end set to anything but 0, so I think it's got the wrong address... but it's the same as the others? It's reading it wrong maybe? Are you getting this?

No, because I wanted to make it realistic for doing a real run later on, and if you enter a door from behind you're not at [0,0] but rather at [door.x,door.y+1]

Ah, that makes sense. For overworld I think I'll make it start at 430N from now on, instead of 0,0 (although, that does mean intentionally ignoring a Hall of Origin that I do know exists ~400 South and (something big) West of 430N... but hey there'll be plenty more where that came from.)

I'll just edit this reply in since I don't have anything new post worthy yet:
You mean it hadn't gone south at all yet?
No, I'm not. It's possible that it got the wrong address if you resetted without restarting the script (that would not update the mapdata_ptr value). That's the only explanation I can think of - everything seems fine on my end (I'm testing from behind the door inside the building on Iron Island, and a random excerpt of my log is '00000[FFFC71E4,FFFFFF69]').
Yep. Sorry for the panic though, the current script is working... I don't see any difference in the script for file writing so I can't say what the problem was? Sorry, but it works now. I've been stopping the script, restarting the game and deleting the .txt between attempts. It probably was my error though, more likely to be mistakes than just a random occurence :P
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 04, 2015, 08:23:28 am
This was before any looping at all - it was still the version of the script that goes west until it crashes.
You mean it hadn't gone south at all yet?
Quote
I'm looking at the outputs and seeing 00002[0000FFE0,0000FFE0] when the coordinates were actually [FFFFFFE0,FFFFFFE0]. None of them have the higher end set to anything but 0, so I think it's got the wrong address... but it's the same as the others? It's reading it wrong maybe? Are you getting this?
No, I'm not. It's possible that it got the wrong address if you resetted without restarting the script (that would not update the mapdata_ptr value). That's the only explanation I can think of - everything seems fine on my end (I'm testing from behind the door inside the building on Iron Island, and a random excerpt of my log is '00000[FFFC71E4,FFFFFF69]').

Quote
Ah, that makes sense. For overworld I think I'll make it start at 430N from now on, instead of 0,0 (although, that does mean intentionally ignoring a Hall of Origin that I do know exists ~400 South and (something big) West of 430N... but hey there'll be plenty more where that came from.)
Let's hope so, since if not we would have to break the news 'yeah, so, we found the HoO, but without cheats you'll be walking West for about a month straight' :P
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 05, 2015, 02:00:25 pm
I've been thinking. The script in its current form takes ages to run with no certainty of success. However, maybe it's possible to cut down on the runtime by not checking every 32x32 area.

The doc says that the void repeats diagonally. Is this always true? If so, we could change the algorithm to:
(by 'FS' I mean a 65536-step wide chunk, even if this does not necessarily lead to Sinnoh-with-graphics-but-without-collisions)

The big question: is this right? That is, does the correlation hold that the void repeats diagonally within the whole 65536-step continuum? And does it also hold across it, i.e. after the step counter has underflown more than once?

I'm asking both from a mathematical perspective (is my reasoning correct, i.e. if the void repeats diagonally, will scanning 16 FSs be equivalent to scanning 4 in multiple directions?) as well as from a game-technical perspective (does the void really repeat diagonally to such an extent that we may rely on it in the way I propose?).

(Oh, by the way, if this is indeed correct, then the HoO I found at [Wx??]FS of the Floaroma Flower Shop might suddenly have halved its infeasibility of being reached :P )

EDIT: also, I was thinking maybe I was wrong to exclude SFS and EFS from consideration. My reasoning was that they would just be mirrors of real Sinnoh, but this is only the case if starting (a) from [0,0], and (b) from the overworld; on top of that, real Sinnoh is not 65536x65536 tiles in size so it might still hold some secret HoOs? Though on the other hand, their coords will obviously not underflow, so they might not load the improper maps from before the beginning of the real matrix data (I'm assuming that's what's happening) that we rely on?
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on October 05, 2015, 05:00:03 pm
Wow, you two seem to be very tech-savvy about this. I feel a bit overwhelmed by your posts :-[ :)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 05, 2015, 09:46:36 pm
I've been thinking. The script in its current form takes ages to run with no certainty of success. However, maybe it's possible to cut down on the runtime by not checking every 32x32 area.

The doc says that the void repeats diagonally. Is this always true? If so, we could change the algorithm to:

Correct. For indoor areas the repetition is directly diagonal - 32 steps up and 32 east will lead you to the exact same area.
It's different for the overworld though. "Sinnoh requires 960 steps east before you reach the same area while indoor areas require 32."
If you have a way to run the big numbers and want to confirm this, I have a scan of the overworld that's up to Y: FFFFE000. Yeah, it's been running for a while (I have no clue how long, since it seems to pause when the screen turns off).
It sadly hasn't found a Hall of Origin yet (If areas do repeat at 32N 960E then I would expect to see my really far away one... Eventually? Apparently not yet.)

My preferred way to visualise this would have been with a spreadsheet, and fill in all the Mystery Zones and Fake Jubilifes with a dark grey. Then zooming out would make it easy to see any other maps.
As it stands, the only thing that'll open this without crashing is Notepad++ and even that's getting slow, so I have no idea how to go about visualising it. At least I can still search it.

The scan (47mb) is here. I'll stop this scan now since we're figuring out more efficient ways to do it :P
https://mega.nz/#!vphD2CYb!V-XbRrZUap0iIakg_-yGBAVLsp3FhCjo5WF4jHpJetw

Maybe next for the overworld I'll do (960/32 =)30 spaces West, infinitely North. That'll fit within a spreadsheet and should eliminate the repetition.

I was thinking maybe I was wrong to exclude SFS and EFS from consideration. My reasoning was that they would just be mirrors of real Sinnoh, but this is only the case if starting (a) from [0,0], and (b) from the overworld; on top of that, real Sinnoh is not 65536x65536 tiles in size so it might still hold some secret HoOs? Though on the other hand, their coords will obviously not underflow, so they might not load the improper maps from before the beginning of the real matrix data (I'm assuming that's what's happening) that we rely on?
There are more things down there, since your script that went to 65k had results. Even if they load data from after the matrix rather than before, that still sounds useful.

Wow, you two seem to be very tech-savvy about this. I feel a bit overwhelmed by your posts :-[ :)
Well we're nearly through making this script work, maybe we'll make a bit more sense after that :P
The other puzzle is how to use the Hall of Origin once we get there, and I don't have any ideas for that yet.


EDIT:
The Hall of Origin has been found!
00510[FFFFFF60,FFFF8720]
30,528 steps North and 180 steps West of 430N.
That's really close.
I just made the trip manually and it is there! Correct music and everything! (This also confirms that scanning with the script is accurate).
Now to check a fresh save file, to see if it's consistent.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 06, 2015, 02:09:02 am
Quote
Correct. For indoor areas the repetition is directly diagonal - 32 steps up and 32 east will lead you to the exact same area.
It's different for the overworld though. "Sinnoh requires 960 steps east before you reach the same area while indoor areas require 32."
Quote
The other puzzle is how to use the Hall of Origin once we get there, and I don't have any ideas for that yet.
The overworld is useless for us, since they won't contain the npcs from indoors we'll use to trigger the Arceus script.

My observation was the following: if I save+reset in a pokemon center and then change my coordinates using pokesav, the npcs from the pokemon center are still there at their original coordinates and can be talked to to trigger the Arceus script. This means that if we want to battle Arceus we must:
(I really really hope this 'npcs are stored separately from map location and hence will still appear if you've underflowed x/y as long as you haven't entered a warp' holds though if we've walked there ourselves, rather than haxed it. If not, then we're screwed and won't be able to trigger the script after all  :-X )

Quote
The Hall of Origin has been found!
00510[FFFFFF60,FFFF8720]
30,528 steps North and 180 steps West of 430N.
That's really close.
You saved and reset at 430N, didn't you? I don't know why, but that seems to wipe the npcs from your save, meaning you won't have those npcs anymore to trigger the script...
(I do hope very much I'm wrong though, in which case you should be able to walk to [0,0] and see the npcs from Poketch Co, and if you're then still in a HoO - you should be given that you're in the HoO matrix - you can talk to two of those npcs to trigger the battle)

Quote
If you have a way to run the big numbers and want to confirm this, I have a scan of the overworld that's up to Y: FFFFE000.
Thanks, this is helpful. I'll write a quick script later today to see whether it indeed repeats.

Quote
My preferred way to visualise this would have been with a spreadsheet, and fill in all the Mystery Zones and Fake Jubilifes with a dark grey. Then zooming out would make it easy to see any other maps.
As it stands, the only thing that'll open this without crashing is Notepad++ and even that's getting slow, so I have no idea how to go about visualising it. At least I can still search it.
Why don't you simply use 'find' (assuming Windows)? Open a command prompt, cd to the folder containing the script, enter command '<VoidScan.txt find "00510"'. If a blank line is returned, you haven't found a HoO yet. If a massive line is returned, you got it. If you have 'grep' available (not standard Windows) you can use '<VoidScan.txt grep -Po "00510\[[,0-9AF]\]"' to then print the exact coordinates.

Quote
There are more things down there, since your script that went to 65k had results. Even if they load data from after the matrix rather than before, that still sounds useful.
That script never went south and/or east, but I'll include those directions in a future iteration nonetheless.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 06, 2015, 03:40:23 am
The overworld is useless for us, since they won't contain the npcs from indoors we'll use to trigger the Arceus script.

My observation was the following: if I save+reset in a pokemon center and then change my coordinates using pokesav, the npcs from the pokemon center are still there at their original coordinates and can be talked to to trigger the Arceus script. This means that if we want to battle Arceus we must:
  • (save and reset inside an indoor area?)
  • find a way from there to the HoO without having to save and reset again (at all or just in the OW?)
(I really really hope this 'npcs are stored separately from map location and hence will still appear if you've underflowed x/y as long as you haven't entered a warp' holds though if we've walked there ourselves, rather than haxed it. If not, then we're screwed and won't be able to trigger the script after all  :-X )
Hm, the main problem with that I'm seeing is the NPCs have the specific map coordinates they're set to, so you would need to move the Hall of Origin to those coordinates. The only way to do that I know of is save and reset there? Maybe some kind of key item could do something? Another option is going to Fake (your place), which I think will only show the NPCs if you're in the right header (as happens with Jubilife in Fake Sinnoh) but I've never tested with an indoor area so perhaps it's different.

I do suspect that NPCs are reloaded just by travelling - you can ride all over the overworld without going through warps via walk anywhere codes and all the NPCs work fine. That may only be for the Overworld though, since indoor areas don't have much reason to dynamically load NPCs and there are some exceptions in the Overworld (I just looked. On Route 201 you can still see the head of a Twinleaf guy, but if there's no inbounds place to see a neighbouring NPC then you can see it unload when switching areas. One example is Canalave city.)

With a bit of quick testing, visiting a Mystery Zone from inside a building has no affect at all on the NPCs. Visiting a different header (in this case Floaroma Meadows) will make them invisible. Sometimes they can still be talked to (people in Poketch Co.) but sometimes they can't until the graphics are reloaded (Your mum at home). I don't really see what difference leads to this, but I notice your mum's shadow is in the wrong place so maybe it's a Z thing? Why do buildings have different Zs?
I hope this doesn't mean walking from the building to the HoO entirely in Mystery Zones, that sounds tedious :P

I feel like I might be on to something there, except for the slight detail of needing to be in the HoO for the right scripts to load and needing to not enter anything so the right events don't unload... Perhaps there's some distinction between scripts and events/NPCs that will let us abuse this?

What if the NPCs that follow you could be brought there? They're only meant to go to specific areas, so they probably call specific scripts that are within them, right? That does potentially mean starting a new game to get the one that runs the correct script, if the repeatable ones (only Amity Square off the top of my head?) don't do it.

You saved and reset at 430N, didn't you? I don't know why, but that seems to wipe the npcs from your save, meaning you won't have those npcs anymore to trigger the script...
(I do hope very much I'm wrong though, in which case you should be able to walk to [0,0] and see the npcs from Poketch Co, and if you're then still in a HoO - you should be given that you're in the HoO matrix - you can talk to two of those npcs to trigger the battle)
Yep, I'm using the standard 430N tactics. Even if this one isn't useful for catching Arceus, it's still cool to be able to travel there since it hasn't been found before.

Fake Jubilifes (including the one at 430N) are set to the same scripts, events and therefore NPCs as real Jubilife by the way. This doesn't really help since they're all the way over at the coordinates of Jubilife City.

Another idea: Void areas repeat. In Fake Sinnoh, if the visible Jubilife City overlaps with a Jubilife header the NPCs will appear (in theory this goes for any other city or route, though you're incredibly unlikely to find the header)
If there's an area where the Hall of Origin overlaps with Fake Jubilife City, well it turns out that the HoO I found is surrounded by Jubilifes so we can make the NPCs appear. They would disappear again on entering the HoO but maybe that can lead to something? *shrug*


Why don't you simply use 'find' (assuming Windows)? Open a command prompt, cd to the folder containing the script, enter command '<VoidScan.txt find "00510"'. If a blank line is returned, you haven't found a HoO yet. If a massive line is returned, you got it. If you have 'grep' available (not standard Windows) you can use '<VoidScan.txt grep -Po "00510\[[,0-9AF]\]"' to then print the exact coordinates.
That... sounds a lot more convenient. I'll do that next time files get too big :P

That script never went south and/or east, but I'll include those directions in a future iteration nonetheless.
The script you wrote to try travel to the SPHoO treated the coordinates as 2 byte, so when it underflowed it only went to 65k. So after seeming to travel 70k north, it had effectively traveled 60k South. You mentioned Victory roads being either there or on the way :P

Since the scan is still running, I just found another overworld void HoO. This is a different one rather than a repetition, because it's next to a Mystery Zone instead of Jubilifes.
00510[FFFFFC60,FFFD7E80]
Unless the neighbouring Mystery Zone is useful in some way I don't see any reason to actually travel out to this one :P
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 06, 2015, 10:32:52 am
Quote
Hm, the main problem with that I'm seeing is the NPCs have the specific map coordinates they're set to, so you would need to move the Hall of Origin to those coordinates. The only way to do that I know of is save and reset there?
I've just done the following: save+reset inside Veilstone Gym (hey, that's how far I am on my Pearl atm), pokesav my coordinates to the HoO, load the save. All of the Veilstone Gym's npcs are there and can be talked to. Save + reset again, the npcs are still there and can still be talked to (talking to Maylene triggers Arceus). So, presumably, if we were to find a HoO, we are allowed to save+reset in it to change our matrix so that it becomes the new map positioned at [0,0] (where our npcs will be). Problem solved, hello Arceus!

All of this is contingent on being actually able to keep those indoor npcs present for the duration of the whole run. I am unable to reproduce your different behavior for real maps vs MZs - I just tried from my hacked-to-HoO save and Maylene vanished both when I went west (Iron Island) as well as south (MZ). Interestingly, the glitch blocks from where the shovable doors in the Veilstone Gym were remained (and could be moved) :-\ .

Quote
Sometimes they can still be talked to (people in Poketch Co.) but sometimes they can't until the graphics are reloaded (Your mum at home). I don't really see what difference leads to this, but I notice your mum's shadow is in the wrong place so maybe it's a Z thing? Why do buildings have different Zs?
The behavior looks consistent with a z change. Remember that buildings are forced to 2d perspective, which may interact with whatever is your z value. The script tells you what your z is though  ;D

Quote
What if the NPCs that follow you could be brought there? They're only meant to go to specific areas, so they probably call specific scripts that are within them, right? That does potentially mean starting a new game to get the one that runs the correct script, if the repeatable ones (only Amity Square off the top of my head?) don't do it.
That's an ingenious idea; can we tweak inside Amity Square (to prevent the lady from putting our pokemon back into its ball)?

Quote
If there's an area where the Hall of Origin overlaps with Fake Jubilife City, well it turns out that the HoO I found is surrounded by Jubilifes so we can make the NPCs appear. They would disappear again on entering the HoO but maybe that can lead to something? *shrug*
I don't see how the NPCs could be made to appear, given that you're on something like [30000,20000] (just making this up :P ), where no npcs have been programmed? Unless you want to S+R, but then your matrix changes to the HoO's (assuming you S+R inside the HoO), meaning you'd be surrounded by Iron Islands and Solaceon Ruins, none of which maps have usable npcs. (If you could make npcs appear though, you might be able to talk to them right across the map boundaries?)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ~Poke~ on October 06, 2015, 11:15:24 am
All of this is contingent on being actually able to keep those indoor npcs present for the duration of the whole run. I am unable to reproduce your different behavior for real maps vs MZs - I just tried from my hacked-to-HoO save and Maylene vanished both when I went west (Iron Island) as well as south (MZ). Interestingly, the glitch blocks from where the shovable doors in the Veilstone Gym were remained (and could be moved) :-\ .
There's still the trick of getting there without reloading the NPCs though, like you say. It's a shame the Mystery Zone thing didn't work in that situation.

That's an ingenious idea; can we tweak inside Amity Square (to prevent the lady from putting our pokemon back into its ball)?
The map looks like it's probably big enough? I can't find any mention of it on Google or Youtube though. I do think it was discussed or at least mentioned on the HoO forum, so maybe someone with that backup can do a quick search?
(I'm not good enough at tweaking to test... though maybe what we need is a lua script to tweak for us :P)

I don't see how the NPCs could be made to appear, given that you're on something like [30000,20000] (just making this up :P ), where no npcs have been programmed? Unless you want to S+R, but then your matrix changes to the HoO's (assuming you S+R inside the HoO), meaning you'd be surrounded by Iron Islands and Solaceon Ruins, none of which maps have usable npcs. (If you could make npcs appear though, you might be able to talk to them right across the map boundaries?)

This video shows it. (https://www.youtube.com/watch?v=8_ggSTu6pFk) (on real hardware!) Looks like maybe they use a 2 byte location, so they'll appear in Fake Jubilifes. Should work for any npcs provided you're in the right place and header, though that sounds really rare for anything other than a Jubilife (unless the indoor repetition lands on it? So diagonal Fake places?)
The video looks like they can't be talked to, but maybe that can be worked around? Might be a Z thing again, since Jubilife is raised.
I had some weird Z things happening at North Fake HoO so maybe that can be fixed somewhere in Fake Sinnoh.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 06, 2015, 11:39:05 am
Quote
The map looks like it's probably big enough? I can't find any mention of it on Google or Youtube though. I do think it was discussed or at least mentioned on the HoO forum, so maybe someone with that backup can do a quick search?
(I'm not good enough at tweaking to test... though maybe what we need is a lua script to tweak for us :P)
Never mind... I've checked with WTW and my Pachirisu disappeared the moment I entered the MZ surrounding Amity Square, so this won't work :(
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 06, 2015, 01:51:06 pm
More bad news. I've written a script that checks whether the dump uploaded earlier indeed repeats diagonally, and it doesn't. Well, at least, not for a bit. The script would take about 100 hours to run on my machine, so I stopped it after a few seconds, but the results so far are that of the 8192 repetitions it's tested (that number looks special but that's just Perl's line buffering mechanism :P ), it has found 7153 diagonal repetitions, but 1035 mismatches (plus four incomparable results, i.e. maps crossing underflow boundaries). This possibly invalidates the proposed shortcut of just scanning in two lines straight and merging the results afterwards.

A small excerpt of the log (first 100 lines):
Code: [Select]
Not comparable: 00000[00000000,FFFFFE60] 00000[FFFFFFE0,FFFFFE40]
Repetition: 00000[FFFFFFE0,FFFFFE60] 00000[FFFFFFC0,FFFFFE40]
Repetition: 00000[FFFFFFC0,FFFFFE60] 00000[FFFFFFA0,FFFFFE40]
Repetition: 00000[FFFFFFA0,FFFFFE60] 00000[FFFFFF80,FFFFFE40]
Repetition: 00000[FFFFFF80,FFFFFE60] 00000[FFFFFF60,FFFFFE40]
Repetition: 00000[FFFFFF60,FFFFFE60] 00000[FFFFFF40,FFFFFE40]
Repetition: 00000[FFFFFF40,FFFFFE60] 00000[FFFFFF20,FFFFFE40]
Repetition: 00000[FFFFFF20,FFFFFE60] 00000[FFFFFF00,FFFFFE40]
Repetition: 00000[FFFFFF00,FFFFFE60] 00000[FFFFFEE0,FFFFFE40]
Repetition: 00000[FFFFFEE0,FFFFFE60] 00000[FFFFFEC0,FFFFFE40]
Repetition: 00000[FFFFFEC0,FFFFFE60] 00000[FFFFFEA0,FFFFFE40]
Repetition: 00000[FFFFFEA0,FFFFFE60] 00000[FFFFFE80,FFFFFE40]
Repetition: 00000[FFFFFE80,FFFFFE60] 00000[FFFFFE60,FFFFFE40]
Repetition: 00000[FFFFFE60,FFFFFE60] 00000[FFFFFE40,FFFFFE40]
Repetition: 00000[FFFFFE40,FFFFFE60] 00000[FFFFFE20,FFFFFE40]
Repetition: 00000[FFFFFE20,FFFFFE60] 00000[FFFFFE00,FFFFFE40]
Repetition: 00000[FFFFFE00,FFFFFE60] 00000[FFFFFDE0,FFFFFE40]
Repetition: 00000[FFFFFDE0,FFFFFE60] 00000[FFFFFDC0,FFFFFE40]
Repetition: 00000[FFFFFDC0,FFFFFE60] 00000[FFFFFDA0,FFFFFE40]
Repetition: 00000[FFFFFDA0,FFFFFE60] 00000[FFFFFD80,FFFFFE40]
Repetition: 00000[FFFFFD80,FFFFFE60] 00000[FFFFFD60,FFFFFE40]
Repetition: 00000[FFFFFD60,FFFFFE60] 00000[FFFFFD40,FFFFFE40]
No repetition: 00000[FFFFFD40,FFFFFE60] 00007[FFFFFD20,FFFFFE40]
Repetition: 00000[FFFFFD20,FFFFFE60] 00000[FFFFFD00,FFFFFE40]
No repetition: 00000[FFFFFD00,FFFFFE60] 00003[FFFFFCE0,FFFFFE40]
Repetition: 00000[FFFFFCE0,FFFFFE60] 00000[FFFFFCC0,FFFFFE40]
Repetition: 00000[FFFFFCC0,FFFFFE60] 00000[FFFFFCA0,FFFFFE40]
Repetition: 00000[FFFFFCA0,FFFFFE60] 00000[FFFFFC80,FFFFFE40]
Repetition: 00000[FFFFFC80,FFFFFE60] 00000[FFFFFC60,FFFFFE40]
Repetition: 00000[FFFFFC60,FFFFFE60] 00000[FFFFFC40,FFFFFE40]
Repetition: 00000[FFFFFC40,FFFFFE60] 00000[FFFFFC20,FFFFFE40]
No repetition: 00000[FFFFFC20,FFFFFE60] 00552[FFFFFC00,FFFFFE40]
No repetition: 00000[FFFFFC00,FFFFFE60] 64476[FFFFFBE0,FFFFFE40]
No repetition: 00000[FFFFFBE0,FFFFFE60] 00552[FFFFFBC0,FFFFFE40]
No repetition: 00000[FFFFFBC0,FFFFFE60] 63816[FFFFFBA0,FFFFFE40]
Repetition: 00000[FFFFFBA0,FFFFFE60] 00000[FFFFFB80,FFFFFE40]
No repetition: 00000[FFFFFB80,FFFFFE60] 00528[FFFFFB60,FFFFFE40]
Repetition: 00000[FFFFFB60,FFFFFE60] 00000[FFFFFB40,FFFFFE40]
No repetition: 00000[FFFFFB40,FFFFFE60] 21828[FFFFFB20,FFFFFE40]
Repetition: 00000[FFFFFB20,FFFFFE60] 00000[FFFFFB00,FFFFFE40]
No repetition: 00000[FFFFFB00,FFFFFE60] 00008[FFFFFAE0,FFFFFE40]
Repetition: 00000[FFFFFAE0,FFFFFE60] 00000[FFFFFAC0,FFFFFE40]
No repetition: 00000[FFFFFAC0,FFFFFE60] 00108[FFFFFAA0,FFFFFE40]
Repetition: 00000[FFFFFAA0,FFFFFE60] 00000[FFFFFA80,FFFFFE40]
No repetition: 00000[FFFFFA80,FFFFFE60] 00016[FFFFFA60,FFFFFE40]
Repetition: 00000[FFFFFA60,FFFFFE60] 00000[FFFFFA40,FFFFFE40]
Repetition: 00000[FFFFFA40,FFFFFE60] 00000[FFFFFA20,FFFFFE40]
Repetition: 00000[FFFFFA20,FFFFFE60] 00000[FFFFFA00,FFFFFE40]
Repetition: 00000[FFFFFA00,FFFFFE60] 00000[FFFFF9E0,FFFFFE40]
Repetition: 00000[FFFFF9E0,FFFFFE60] 00000[FFFFF9C0,FFFFFE40]
Repetition: 00000[FFFFF9C0,FFFFFE60] 00000[FFFFF9A0,FFFFFE40]
Repetition: 00000[FFFFF9A0,FFFFFE60] 00000[FFFFF980,FFFFFE40]
No repetition: 00000[FFFFF980,FFFFFE60] 00509[FFFFF960,FFFFFE40]
No repetition: 00007[FFFFF960,FFFFFE60] 00000[FFFFF940,FFFFFE40]
No repetition: 00000[FFFFF940,FFFFFE60] 00509[FFFFF920,FFFFFE40]
No repetition: 00003[FFFFF920,FFFFFE60] 00552[FFFFF900,FFFFFE40]
No repetition: 00000[FFFFF900,FFFFFE60] 63964[FFFFF8E0,FFFFFE40]
No repetition: 00000[FFFFF8E0,FFFFFE60] 00489[FFFFF8C0,FFFFFE40]
No repetition: 00000[FFFFF8C0,FFFFFE60] 15793[FFFFF8A0,FFFFFE40]
No repetition: 00000[FFFFF8A0,FFFFFE60] 00489[FFFFF880,FFFFFE40]
No repetition: 00000[FFFFF880,FFFFFE60] 18008[FFFFF860,FFFFFE40]
No repetition: 00000[FFFFF860,FFFFFE60] 00487[FFFFF840,FFFFFE40]
No repetition: 00552[FFFFF840,FFFFFE60] 14336[FFFFF820,FFFFFE40]
No repetition: 64476[FFFFF820,FFFFFE60] 00000[FFFFF800,FFFFFE40]
No repetition: 00552[FFFFF800,FFFFFE60] 00285[FFFFF7E0,FFFFFE40]
No repetition: 63816[FFFFF7E0,FFFFFE60] 00000[FFFFF7C0,FFFFFE40]
Repetition: 00000[FFFFF7C0,FFFFFE60] 00000[FFFFF7A0,FFFFFE40]
No repetition: 00528[FFFFF7A0,FFFFFE60] 00000[FFFFF780,FFFFFE40]
Repetition: 00000[FFFFF780,FFFFFE60] 00000[FFFFF760,FFFFFE40]
No repetition: 21828[FFFFF760,FFFFFE60] 00000[FFFFF740,FFFFFE40]
Repetition: 00000[FFFFF740,FFFFFE60] 00000[FFFFF720,FFFFFE40]
No repetition: 00008[FFFFF720,FFFFFE60] 00000[FFFFF700,FFFFFE40]
Repetition: 00000[FFFFF700,FFFFFE60] 00000[FFFFF6E0,FFFFFE40]
No repetition: 00108[FFFFF6E0,FFFFFE60] 00000[FFFFF6C0,FFFFFE40]
No repetition: 00000[FFFFF6C0,FFFFFE60] 00016[FFFFF6A0,FFFFFE40]
No repetition: 00016[FFFFF6A0,FFFFFE60] 00541[FFFFF680,FFFFFE40]
No repetition: 00000[FFFFF680,FFFFFE60] 21524[FFFFF660,FFFFFE40]
Repetition: 00000[FFFFF660,FFFFFE60] 00000[FFFFF640,FFFFFE40]
Repetition: 00000[FFFFF640,FFFFFE60] 00000[FFFFF620,FFFFFE40]
Repetition: 00000[FFFFF620,FFFFFE60] 00000[FFFFF600,FFFFFE40]
Repetition: 00000[FFFFF600,FFFFFE60] 00000[FFFFF5E0,FFFFFE40]
Repetition: 00000[FFFFF5E0,FFFFFE60] 00000[FFFFF5C0,FFFFFE40]
No repetition: 00000[FFFFF5C0,FFFFFE60] 00003[FFFFF5A0,FFFFFE40]
No repetition: 00509[FFFFF5A0,FFFFFE60] 00000[FFFFF580,FFFFFE40]
Repetition: 00000[FFFFF580,FFFFFE60] 00000[FFFFF560,FFFFFE40]
No repetition: 00509[FFFFF560,FFFFFE60] 00000[FFFFF540,FFFFFE40]
No repetition: 00552[FFFFF540,FFFFFE60] 00000[FFFFF520,FFFFFE40]
No repetition: 63964[FFFFF520,FFFFFE60] 00000[FFFFF500,FFFFFE40]
No repetition: 00489[FFFFF500,FFFFFE60] 00000[FFFFF4E0,FFFFFE40]
No repetition: 15793[FFFFF4E0,FFFFFE60] 00552[FFFFF4C0,FFFFFE40]
No repetition: 00489[FFFFF4C0,FFFFFE60] 63932[FFFFF4A0,FFFFFE40]
No repetition: 18008[FFFFF4A0,FFFFFE60] 00552[FFFFF480,FFFFFE40]
No repetition: 00487[FFFFF480,FFFFFE60] 63664[FFFFF460,FFFFFE40]
No repetition: 14336[FFFFF460,FFFFFE60] 00000[FFFFF440,FFFFFE40]
No repetition: 00000[FFFFF440,FFFFFE60] 00100[FFFFF420,FFFFFE40]
No repetition: 00285[FFFFF420,FFFFFE60] 00000[FFFFF400,FFFFFE40]
No repetition: 00000[FFFFF400,FFFFFE60] 21828[FFFFF3E0,FFFFFE40]
No repetition: 00000[FFFFF3E0,FFFFFE60] 00552[FFFFF3C0,FFFFFE40]
No repetition: 00000[FFFFF3C0,FFFFFE60] 63964[FFFFF3A0,FFFFFE40]
No repetition: 00000[FFFFF3A0,FFFFFE60] 00514[FFFFF380,FFFFFE40]

This is the Perl script I used. Please check it for errors!

Code: [Select]
use warnings;
use strict;
$|=1;

open my $fh,'<','dump.txt';
my @array;

my $size = 0;
my $l;
while ($l = <$fh>)
{
chomp $l;
my @split = split / /,$l;
$size += @split;
push @array,\@split;
}

my $iter = 0;
for (my $i = 0; $i <= $#array; $i++)
{
my @ptr = @{$array[$i]};
for (my $j = 0; $i <= $#ptr; $j++)
{
# In the real void, the same map should appear at pos [x,y] and [x-1,y-1]. However, the script used here scanned upside-down and flipped, meaning the correct comparisons are between [x,y] and [x+1,y+1]
compare_map($array[$i][$j],$array[$i+1][$j+1]);
$iter++;
printf STDERR "iter %10.5f of %10.5f\n",$iter/1000000000000,$size**2/1000000000000 if $iter % 1000000 == 0;
}
}

sub compare_map
{
return if not defined $_[0] or not defined $_[1];
my @coords = @_;
$coords[0] =~ s/\[(.*)\]//;
my @coords1 = split /,/,$1;
$coords[1] =~ s/\[(.*)\]//;
my @coords2 = split /,/,$1;

$coords1[0] =~ s/....$//g; #keep only the first FFFx bit
$coords2[0] =~ s/....$//g; #keep only the first FFFx bit
$coords1[1] =~ s/....$//g; #keep only the first FFFx bit
$coords2[1] =~ s/....$//g; #keep only the first FFFx bit

if ($coords1[0] ne $coords2[0] or $coords1[1] ne $coords2[1])
{
printf "Not comparable: @_\n";
}
elsif ($coords[0] ne $coords[1])
{
printf "No repetition: @_\n";
}
else
{
printf "Repetition: @_\n";
}
}
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on October 06, 2015, 05:12:45 pm
The map looks like it's probably big enough? I can't find any mention of it on Google or Youtube though. I do think it was discussed or at least mentioned on the HoO forum, so maybe someone with that backup can do a quick search?
(I'm not good enough at tweaking to test... though maybe what we need is a lua script to tweak for us :P )

Found this.

Quote from: Commander Shepard
PROJECT FADS(revived)

Ok, so maybe FADS is the wrong name since whoever was the F is probably not going to be participating in this, I don't even know if Anthony is here still... Of course I'm here, but I'm the only active one. I'm unsure about Sweetgitcher though. That is a more of, "if you want to".

The purpose of Project FADS has changed very much over the course of the month from where it started to where it died (apparently). The original purpose was to look for Treeckovoid's SP HoO, until I accidentally stumbled upon my own real HoO going for Darkrai. As one of the project leaders, I decided that a real HoO was much more likely to lead to Arceus than what we all knew was unsavable, was.

The newly revived purpose of this thread is to find out what triggers this HoO.

To start, I believe einstein will be heading to the location and telling me if the HoO is there or not. If it is, I will have a list for both of us to compare our set flags, and whatever is on his list that isn't on mine, I will set, and check the location again.

If it isn't, then we will use the process of elimination. His list of flags (still comparing to my list) will add to mine and we will have fewer places that we will have to look.

The flag check list is as given:
Twinleaf Town
Route 201
Route 219-221
Sandgem Town
Route 202
Jubilife City
Route 218
Canalave City
Iron Island
Fullmoon Island
Newmoon Island
Route 203
Oreburgh City
Route 204
Floarama town
Floarama meadow
Fuego Ironworks
Valley Windworks
Route 205
Eterna Forest
Eterna City
Route 206-207
Wayward Cave
Route 211 + Mt. Coronet (Eterna-Celestic)
Route 216-217
Snowpoint City
Snowpoint Temple (definitely not in here, so don't worry about this location)
Mt. Coronet-Spear Pillar
Route 208
Hearthome City
Route 209
Solaceon Town
Route 210
Route 215
Veilstone City
Route 212-214
Pastoria City
Ruin Maniac Cave-Ruin Maniac Tunnel (doesn't matter which)
Shaymin Acquired (I bet this has happened all the time, so this doesn't matter)
Mesprit Freed
Cressalia Freed
Verity Lakefront
Acuity Lakefront
Valor Lakefront
Amity Square

Given all flags are set per area/event. This should definitely help, and looking back, it seems I managed to miss quite a bit.

The coordinates to the location are 63340 West, 64820 North. If that doesn't work, try the inverse. If that doesn't work, PM me.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: vowel on October 07, 2015, 10:36:15 am
I've done some more testing with Cheryl, the npc that follows you in Eterna Forest. Going to the MZ south of Eterna Forest leaves Cheryl's shadow behind in that location, but it can still be talked to. This then triggers the normal talking-to-Cheryl routine. I'm assuming that the game is loading Cheryl's script from the OW matrix in this case, rather than that it carried over from her having walked from the Eterna Forest map to the MZ. If this is true, then we would need to tweak a HoO map directly next to Amity Square/Eterna Forest/where else are these guys found, and then we could use them to trigger the Arceus script.

This seems very much impossible, though :-X

I'm beginning to think Arceus might not be triggerable... (given that my original idea of starting the tweak from an npc-filled place, saving in the HoO once found, and then going back to the coordinates of that npc-filled place - which would then be at the HoO - did not turn out to preserve the original npcs after all, unlike pokesavving)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Krys3000 on November 22, 2015, 08:44:01 am
Hello,

I am not sure how much HoO members have researched into the different Fake-Fake-(...)-Sinnohs to see which of them has the Newmoon Island in a correct location to XABB it and, maybe, get Darkrai. But that's something we did during our current Tweaking Trick project on the french website PRAMA Initiative, thanks to one of our members, Ankeraout, who designed very helpful lua scripts (self-tweaking, self-walking with invisible walls detection and bypassing, 10x speedhack, and lately a script that just allows anyone to reach any FS instantly).

(http://www.prama-initiative.com/phoebe-grid2.png)
Ouest = West, Nord = North, Sud = South, Est = East. Obviously.

Now we are trying them "legit way" on different games. It appears so far all of the green FS allows to XABB the island. Each island has a (undetermined) probability to actually allow Darkrai encounter; or, XABB will lead you to a double black screen and then you will have to reset and try another way. We have indeed seen one FS can "work" while another can't in a same save file.

Of course, FFFFFFS are not realistic on real game cartridge, it would take hours, if not days, to reach it, and you always have a risk for a crash or an event that kicks you back to Sinnoh. But in the end, this gives at least 17 different ways to catch Darkrai through Tweaking Trick, each having a chance to work, or not, on any game. It's probably enough to ensure that at least one will work, unless you're very unlucky.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: SatoMew on November 24, 2015, 12:58:30 pm
Krys3000, since you mentioned Fake Sinnoh, I'm sure you'll be interested to know that Fake Johto and Kanto have been found as well ;)

https://www.youtube.com/watch?v=ZkbmqxZ1xd4
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Krys3000 on November 24, 2015, 02:51:04 pm
Oh that's nice Sato, I wasn't aware of that. That same Ankeraout has tried to use WTW to progress in the void in other places a while back, but encountered freezes. It's great to have someone who actually did the job.

Unfortunately, this is impossible to do without WTW. It would be really great  ;D
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: JohnDragon on December 24, 2015, 09:54:48 pm
Alright I am a neophyte at best when it comes to pokemon glitches, the tweaking and void travel glitch is the 2nd real glitch i've done, the first being the mew glitch.  I ran into an issue when trying to make a Darkrai run that wasn't save corrupting, but I've also noticed no mention of it anywhere, including the glitch wiki here.  idk if this is really the right place to post something about this, but I thought it may be useful so i'll just tell you what I got.

https://www.youtube.com/watch?v=YRKPj4tcybE

I was using this video to walk me through the void path to New moon Island in NWFS.  All was according to plan up to the first set of 63,500 steps west.  Due to some sloppy pedometer usage I don't have an exact # of steps but at about 15,000 steps in or so I suddenly hit a trigger for apparently visiting the Pokemon Center basement for the first time, which I had not done yet in my runthrough of the game.  I move the same number of spaces as I would if i was at the bottom of the stairs in the pokemon center: 3 north, 1 west.  After the event was complete (the event does still say it adds the pal pad to my bag) I continued omw.  I do the rest of the path to NWFS newmoon and I get to the save location in the video.  The game WILL NOT let me use the explorers kit, and I get the rowan warning message when I press y for my registered EK.  My thought was that I'm now permanently considered in a building since I triggered an event in the void that is supposed to happen indoors.  Btw i should mention I'm playing diamond, although I wouldn't think it would matter.
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Krys3000 on December 26, 2015, 03:14:10 pm
First of all, why are you using the Explorakit? This is very dangerous, we only used to do that at the very beginning of tweaking. It's been years now we know about the XABB manoeuver. Once you reach the end, open the start menu (X) then any menu but the save menu (A) then leave it (B) and then leave the start menu (B). You will either:
- See your character standing in the black. Just save and reset and enjoy.
- See nothing but two black screens. That means you can't use this FS in your save file, reset and try another FS.

Now there's something else to be known: the XABB manoeuver, just as the Explorakit stuff before, cannot be done in the localization 'Mystery Zone' because the start menu cannot be opened there. The tricky thing is there is not many Fake-Sinnohs which appears to ALWAYS (= in every save file) have a good localization in Newmoon Island.

The proper FS that can be used for Darkrai are the following ones (Nord=North, Sud=South, Est=East, Ouest=West):
(http://www.prama-initiative.com/phoebe-gridoverall.png)

- Red : FS that has never been shown to display an usable localization on Newmoon Island, on any save file.
- Green : FS that have been shown to display an usable localization on Newmoon Island on every save file.
- Light green : FS that have been shown to display an usable localization on Newmoon Island on every save file that at least has two badges.
- Orange : FS that have been shown to MIGHT have a usable localization on a given save file, but also might not. Name written in red = doesn't appear to work if the game is too advanced. Name written in green = does appear to work on every save file that is advanced enough (game ended).

Right now we consider the NW FS to be in the 'Jubilife' localization in every game with at least two badges. So the first thing we need to know is if you couldn't use the EK because you were in a Mystery Zone. If so, that would mean NW is actually Orange.

Then, if this is the case, try another FS.

North-North

From the standard 430 N thing:
- 446 E
- 64190 N
- 319 O
- 650 N. This is North's Newmoon. Place yourself here:
(http://www.prama-initiative.com/DPP/tweakingtrick9.png)
- 65510 N
- Get to the entrance of Darkrai's Forest and do the XABB manoeuver.

South

From the standard 430 N thing:
- 414 S
- 1000 O
- 65821 S
- 1120 E
- Get to the entrance of Darkrai's Forest and do the XABB manoeuver.

To reach any other FS from those, you just have to walk 65535 steps in a wanted direction. As an example, from NW's Newmoon island, perform 65535 steps West to reach NWW's Newmoon Island.

My advice on FS selection is always to try those in order until you find one with a good localization (Jubilife is best) that does not get a double black screen after the XABB manoeuver:
- NW
- NN (unless your game is not really advanced) / S (unless your game is really advanced)
- NWW (high success rate) / EN (low success rate, but it's quicker)
- WSS (high success rate)
- WWWS (the only always usable FS, but incredibly long to reach)
- NNW (medium success rate, but who knows?)

Good luck!
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: JohnDragon on December 30, 2015, 01:09:31 pm
welp, i guess i was just following an out of date guide xD I could have sworn when I went to NWFS (Ouest-Nord) on the chart that it was a jubilife area, but I could not open the menu or use explorers kit.  I have 7 badges, and well I've had some more silly things happen since my last post xD.  I flew back to the mainland to reset out of the void since I had saved at 400N.  I triggered the pokemon basement dialogue so that I would not have that interfere with my next run.  I then tried to make ANOTHER run.  I followed the instructions, and I was on my last 63,500 N to NWFS again.  I left my 3ds inputing an up command while i ran a quick errand.  When I got back, I had overshot but run into ANOTHER event trigger, this time the hall of fame, which of course teleported me to the actual hall of fame and had me beat the game with 7 badges.  I haven't bothered messing with another try yet since I haven't felt like taking 20 more minutes to tweak back into the void.  Now that I've thought about it, I think i followed the directions wrong on that first run because it actually took me a couple tries to get to newmoon because I tried to take the exact path in the video and came against a long wall in the mystery zone between WFS and NWFS(now that i think about it I maybe was suffering from a blackout?).  When I actually made it to new moon it is possible that I ended up in NNWFS (Nord-Nord-Ouest) due to me being absent minded.  I really appreciate the help tho, i think that might be the error xD
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Krys3000 on December 31, 2015, 05:18:11 am
A few monthes ago, someone from PRAMA reported me this modified NW FS path that avoids most known event-triggering zones, crash zones, and invisible walls. I don't know if that's what you follow, but if not it might be interesting for you:

- From the Poketch door, do the standard 1 S, 5 E, 430 N steps. XABB, then save/reset.
- 415 S
- 81 W
- 275 S
- 64552 W
- 82 N
- 780 W
- 65449 N
- Go in front of the forest's entrance on the island.
- XABB. If you see the player, save/reset, then XABB again. If you don't, try another FS :)
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: JohnDragon on December 31, 2015, 10:04:50 am
thanks!  I think that is the path I took that last time I just overshot a bit and there happened to be a hall of fame trigger, I'll try it out soon
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: RedRaven on February 21, 2016, 04:04:28 am
Hey guys,

I have read your thread with very much interest. You have done an amazing job at mapping the void and trying to get this "script jam" by getting a script holder into what is "considered enough" as the HoO.

After re-reading through the most intense part of the thread, I have gathered a few things that must be noted:

a) it is not clear yet, by which mechanism setting only one of the 3-4 (x,y,z) triplets that exist in memory at a given time (like Pokesav does), succeeds in loading the script data but not the script holders. This must mean that they are on "different layers", as was pointed out before. Though a script was made to "map the void", we shouldn't forget that we only went so far as knowing the name of each void tile within a given (though pretty large) neighborhood.

b) this leads to the second point - did we determine by which exact mechanism a name (like "Jubilife", "veilstone" or other) is assigned to a map ID? I didn't go into the Spiky's map editor thing (I don't even have an emulator right now, just a few "real" games and hardware) but the complete table with map IDs, script files, and names, must be there, right? As the original idea from vowel was that we could find a fake, "broken" HoO where both the 232 script file and a script placeholder would exist, we shouldn't abandon that before having examined this table...

c) is there ANY region of the void where a triggerable event (other than the four "location-based" events like Hall of fame, Cynthia battle etc) was found? Or more generally, has anyone achieved finding a triggerable event holder that does a script it's not supposed to do (other than a broken script, i.e. freezing the game)? this "script import" is the key of this whole HoO research; the location of the real HoO (and its real duplicates) was a necessary step, but far from being enough.

Now, based on the requests I've seen, I've reused one of the only programs I've made in my limited programming experience, which is an ascii-to-bmp converter. By tweaking it a little bit (and debugging it for 4 hours because I'm really rusty at spotting out of bounds indexes, an un-accounted '\0' took me 3 hours to understand and find all by itself), I adapted it to the .txt file uploaded 2 pages before, containing the map IDs for the 8192x240 tiles North-West of 430N. So well, here are three 8192x240 px images showing what it looks like (I kept it in BMP so that there are no artifacts or data loss - hence the fat 5MB image files):

1) all data, from 0 to 65535 (https://mega.nz/#!5Mpi1IDb!QX0X2bPojGFS8jZmiE27yfkyy1RbA0TLZrLr0bgIW_w), represented in grayscale from 0 to 255 (so, 255x data loss)
2) the same data, but zoomed in on 0 to 558 (https://mega.nz/#!kJQGHbTb!jVcrSIY3T3AR_MUjIWvjbrc5EtEo4vTV2sx4EFdHcvY) ("real" IDs), with everything above set to black. Here, we hence have only 2.1x data loss
3) map of all tiles with ID=3 (https://mega.nz/#!kExVwSjB!At2VBcVJk3T5QEf_PXYSqTS20oXz17tunSIgMsRNL38) (real Jubilife). No data loss here.

and here is a preview (jpg, real resolution) so you can see more easily. Click on it to make it fatter. It's not the exact data but it's very close, probably because jpg detected the 1x30 px periodicity (and the big black zones)

(http://i.imgur.com/5rPIiqB.jpg)

As you can see, we can extract pretty much everything we want. Also, the 32x960 steps periodicity (1x30 tiles) is striking. And finally, there is a funny trend towards high map Ids, the further you get from the base point, 430N (which, let me remind it, is the lower right corner of the image).

I would love to have a larger dataset to see the big picture (pun intended). Processing this 50 MB file takes less than 1 sec, so there is still a big margin for larger files ;-)

My program is not yet in a very usable form, still a lot of tweaking for every change in input (I'm not a programmer originally...), but if it gets more organized at some point, I will post it!

So NOW, the idea with it, is to look at Spiky's map editor to see if any other map ID is associated with script file 232, by chance...then, we'll find where that is, go there, and see if any script triggers can be seen!

That's it folks, I'm going to sleep! Don't stop the effort, there are still many things we don't know about the Gen 4 engine! And thanks a bunch for everything you all did so far, it's really great!

EDIT: Now that I look at it and my eyes are not looking straight, I realize this thing looks so much like an autostereogram (wiki (https://en.wikipedia.org/wiki/Autostereogram)) - only, the flat, sweked kind!
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: Glisp on March 23, 2016, 10:38:42 am
If I may say something, would it be possible map data is strung about like the game Earthbound? In Earthbound each location is part of one big map.
Eg: http://starmen.net/mother2/maps/fullmap.png

every interior and every exterior is located on a mishmash of data. What I'm wondering is if the void is like this. If it is, it may be possible to map locations
Title: Re: "Void Knowledge Archive, by the members of HallofOrigin"
Post by: ISSOtm on March 27, 2016, 08:04:07 am
I am not a pro of this generation's mapping, but I'd say no.

The game has what is called a "centerpiece", and it loads data according to said centerpiece.
Example : when you are in Jubilife City, you current map is Jubilife City (obviously) but your centerpiece is Sinnoh, because Jubilife is just part of Sinnoh.
This means that every location in Sinnoh is in one gigantic map ; however, interiors each have their centerpiece, meaning that they are completely independent from the rest.
You could say, "well, the maps have to be stored in ROM, so by sufficient walking, I could go to any map !"
Again, this is not based on solid evidence, but what I am going to say has chances to be true.
Remember the DS has a filesystem (like the GB's ROM banks) that you may have to switch between to load maps ; and also, the maps the game usually use are copied from ROM to RAM. So that means you should walk from the RAM all the way to the ROM. Good luck in doing this ;)
Last thing : during your walk, you would certainly encounter data interpreted by the game as collision, and while in RAM I guess you have ways to be trapped. And maybe that some portions of the ROM would simply be non-accessible because of their layout.


tl;dr : sadly no, it's not like earthbound.