Savewarping is allowed. It is not that uncommon for the optimal route to contain several "SAVE + RESET", while there isn't really an option to reset the game (OoT, anyone?). On console, you'd hit the magical key combination for soft reset, after each save, problem solved.
On emulator, you try the same, but nothing happens! -_-;
This leads to the belief that the magical key combination isn't programmed into the game, but into the hardware. This makes sense, otherwise some rogue games might have tried to use a different key combination.
How is it possible, then, that most games handle the soft reset different? Different ending animations, maybe a sound during the reset sequence that other games don't have, etc.
My current proposal is that the hardware catches the magical sequence, and instead of sending the regular "key pressed" events to the game, it sends a "reset" event.
I hope you're still with me? I'm probably talking a lot of crap right here. I have no idea how the emulators work, how N64 hardware works, what the basic game framework looks like, etc. It's just a hypothesis. I would like to ask the people that do know what's going on the following questions:
* Do N64 games work with a message queue, and periodically receive input messages, system messages, and the like from the N64 hardware (to which they respond, and then work on the next message, if there is none, wait for the next)?
* Do we know the above? If not, how do we find out? Are there debuggers and blabla available to go hunting for information?
* Is it likely that the reset sequence is caught by the N64 hardware, and processed by sending the game a "RESET" message?
* How do we locate the message loop, if such a thing exists, and more importantly, how do we send messages to it? If it does have one, the emulator should already be sending the game messages in one way or another, otherwise the game wouldn't be able to respond to input.
* How is input information transferred to the game?
* How do we find out what message is the "RESET" message? Do we already know?
This is mainly guesswork and if someone could fill me in on the details I'd appreciate it very much. I don't know if anyone is working on a soft reset feature for emulators, if there are people working on it, who are you? Leave a message ^.- If there aren't, let's start working on it together right away.