Hello, I'm here again because I want to talk about "Wrong-warps", and I have news, I might have an idea of what is happening but I don't know the code, so I had to improvise.
What happened that got me theorizing on the "Wrong-Warp" glitch is a little bug that happens after you reset in a "Wrong-Warp" state.
However, before let's assume something:
1. Assume that the game has 3 "Data types" stored: Rewind-data, Player-data and Level-data. Where Rewind-data is the one read when you press "Z" and that stores the past positions, Player-data stores the position of the player, it's current level and facing-direction, while the Level-data stores what the level looks like, its pushable objects and, most importantly, the id and ways to change level (warp-zones)
2. Assume that the game handles the data from Player-data to Level-data in a continuous flow between the two, allowing for certain data to be corrupted without the game knowing until a certain action triggers it.
Ok, from here this is the steps that should be done: if you are in the main hub the get to any room you want and then proceed.
From that place just warp to the hub with "Return to hub", then press "Z" as your first action, the screen will shake a lot and then you'll be back to where you were before. Like if nothing happened, however leaving the room will cause a wrong-warp and, most importantly, pressing "R" will automatically "Wrong-warp" you to the main hub.
Here is my conclusion:
You are playing normally when you warp to the hub, at that point the game sees this action and informs the Player-data that the current level is now "Hub" and loads that level.
After you press "Z" the game goes back to the Rewind-data and sees a warp, telling the game to redraw the previous level on the screen and to load all of the stuff that was present in that level, but making 1 giant mistake, the game doesn't inform the Player-data that the level id was changed.
Now leaving the room will cause a few things to happen:
1. the game is going to check which level the player was in.
2. Because the player was in "the hub" (the player-data says that about the player), the game is going to check where the player left the room.
3. The game is going to ask the level-data where he should send the player next.
4. The level-data is going to look at the information presented and and not understand, according to the level data the player left the room "Hub" from a non-existing exit in the middle of the level.
5. In an attempt at fixing everything the level-data messes up and ends up sending the player where it shouldn't be, in a not-existing level.
6. A patch catches this fact and re-warps the player to the "Oops, wrong-warp" screen, changing both the Player-data and the level-data.
7. The room gets loaded and the player gets their input back, without the "Z" option available.
There is also to note that after pressing "Z" and "Wrong-warping", pressing of "R" will make the game reset the room the player is in, but because the player is now technically in the "Hub" room then pressing "R" will essentially warp to the "Hub" instantly.