In the NES game Journey to Silius a few people have experienced a wrong death warp, meaning once you pass a check point, if you die, then you will spawn at that check point. But a few people have had the game place them at the upcoming check point instead even though they never actually went that far in the stage. Without in-depth knowledge of assembly I ask for some mild assistance to determine what memory addresses are read at the time of death and how the game determines where to place the character after the death event. I suspect that it may be a single address that controls this but it may very well be something different. No one has been able to determine how to duplicate this phenomenon beyond the few times that people have seen it happen to them. Any help would be greatly appreciated. Here are some memory addresses that may be related to it. This is an NES programming mystery to be solved... who wants to solve it?

Thanks for the links. I will post any findings here regarding this matter. Please feel free to look into how the game determines where you appear after a death. Finding out how this wrong warp occurs would be huge, and it is only a matter of someone who knows how to pick this apart, someone knowledgeable would be able to do it rather quickly.

What I'd suggest for step 1 is just record an FCEUX movie until you make the bug happen. Stop there and save the movie. (Or if this bug is exploited by an existing TAS, tell us where to get the .FM2 and at what frame it happens.)

That is basically required work for investigating this problem, and it's not something you have to have expert knowledge to do. Once you have a recorded case of the bug, give that to an expert.

Check the checkpoints. See if there are some flags/registers set in memory in correspondence to those flags. Find the address; edit the value of the address; kill the player. Does the spawn location change?

So far no one who TASed this game has been able to reproduce the bug. I spent two hours doing random things in the same spot, mimicking a video that captures this phenomenon and so far no results. So I moved on to looking at RAM addresses, particularly any value changes at the moment of when I pass through a check point, hoping that I would be able to see if there are ways to manipulate this address via game play, something I may be able to catch while doing trials. I have started the process messing with a lua script to write in values to different addresses to see if I can narrow a few of them.

Ok so I made some progress. Memory Address 017E determines the next spawn. This value goes up the farther you progress in the level, so what causes the wrong warp is that sometimes this value increases quicker than usual but I have not been able to isolate what influences this value to duplicate it. So if the value is 4 when you die it will put you back at the beginning of the level at value 0, but if you die at 6 then it puts you back at 5. So in the video above the value of the next spawn point is 10, and in the case where it does not work that value is only at a 9 so it places me back at 5, and in the case where it does work then that value is 11 so it places you at 10. Now to isolate why it increases quicker in the latter case.

Spawn locations are checked up with an indirect value that points to a table of "valid" checkpoint locations per level...(Thought about if values could be changed during that sequence or read from others... Seems not.)This is that routine:

Now... I've debugged the first level through a routine and the only way $017E is written to is an INC function, which happens after so many bytes (compared to a ROM address table) are reached. Is there a particular level where the death skip is reported more frequently?

The following link is to the video I did showing the death warp. Now, I have found that for some reason when you take a hit in the face at the bottom of the 2nd elevator it may cause address 017E to jump, and when it does I have observed that it can increase as much as 6, so instead of having a value of 8 at that point in the stage you end up with a 14! This is what enables you to die later in the stage when the value hits 26 and it will warp you forward to where that value is usually achieved. I also created a tas video attached that shows this occurring in level 4. You will just need to watch it up to that point, see video link for reference. And see what is happening in the ram as to why this spike in value occurs. That would be awesome!

Basic Observation #1 The Run Speed value is added to Micro Frame Location each frame. The Run Speed value has an acceleration stage such that it increases, 4, 8, 12, 16, 20, 24, and then fluctuates between 22 and 26 each frame.

Basic Observation #2 While your character jumps the Run Speed value will fluctuate between 21, 22, and 23, so the length of a jump will also influence the final value of the Micro Frame Location upon reaching the Scroll Boundary.

Basic Observation #4When the Micro Frame Location value exceeds 255 it will roll over to 0 and this will increment Macro Frame Location by 1.

Basic Observation #5 Every 16 counts on the Macro Frame Location value will increment the Spawn Location by 1. The Macro Frame Location value increases with scrolling to the right, and decreases with scrolling to the left. Likewise every 16 counts on the Vertical Location will also increment the Spawn Location by 1. Vertical Location increases with scrolling down and decreases with scrolling up.

Interestingly I can see what is occurring in order for this glitch to work but I do not understand why it happens. And if I could understand why then perhaps that knowledge could be used to determine if it could be exploited in other areas of the game and if so then where.

When you reach the top of the 2nd elevator in Stage 4, when you reach this Scroll Boundary the Macro Frame Location value seems to reach 96 every time, as the Micro Frame Location rolls over around this time. Depending upon the Run Speed values through this section of stage 4, as well as the value changes when in a jump animation, or knock backs, this may cause the Micro Frame Location value to roll over to 0 or it could go as high as 24 depending upon the Micro Frame Location value the previous frame. Such that if the Micro Frame Location value were 230 and the Run Speed was 26 then on the following frame the Micro Frame Location value will roll over to 0. Likewise, if the Micro Frame Location value was 254, then it would roll over to 24 with a Run Speed of 26 the previous frame.

Therefore, when you reach the top of the 2nd elevator in Stage 4, the Micro Frame Location value could be anywhere between 0 and 25.

When you reach the bottom of the 2nd elevator and get hit by an enemy bullet the screen will scroll to the left, and the Micro Frame Location value will decrease by 4 every frame while in the damage animation which scrolls the screen. Depending upon the Micro Frame Location value, such that if it were 24, then it would reach 0 after 6 frames. Interestingly enough each time the Micro Frame Location value decreases by 4 while the Macro Frame Location value is 96, the Spawn Location value will increment by 1 each frame.

Therefore, for some reason, once the Macro Frame Location reaches 95, the Spawn Location will no longer increment even though your character is in the same damage animation scrolling the screen. In other words, it is related to screen scrolling but the magic number seems to be Macro Frame Location value 96. As long as this value is 96, the Spawn Location value will increment by 1 each frame, otherwise it will not.

Yes... Also remember that $32 (Vertical (up/down) frame location) is a part of the equation regarding checkpoint value incrementation. I've noticed areas in Level 2 simply by falling down gaps that the checkpoint counter increases.

(I've even tried seeing if for some reason someone could trigger a boss spawn on death as well.)

Edit: Yeah... I meant up/down. (Gotta get my sleep more regular. )

Last edited by B00daW on Fri Sep 08, 2017 9:42 am, edited 1 time in total.

Who is online

Users browsing this forum: No registered users and 3 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum