Submission #5518: Sonikkustar & Alyosha's SMS Psycho Fox in 02:02.17

Sega Master System
baseline
(Submitted: Psycho Fox (USA, Europe).sms USA/Europe)
BizHawk 1.12.2
7321
59.9227510135505
137
Unknown
Submitted by Alyosha on 5/22/2017 12:38 AM
Submission Comments
Psycho Fox is a simple platformer for the Sega Master System. This run is a real time improvement over the currently published run thanks to some devious abuse of the SMS architecture.

Game objectives

  • Emulator used: BizHawk 1.12.2
  • Beats the game as fast as possible
  • Abuses programming errors

Comments

This one might be a bit controvertial but I figured it's an interesting enough circumstance that is was worth trying to put on the workbench. This trick was originally pointed out by MESHUGGAH here as a possible emulator bug. But as it turns out, this is a valid trick that just so happens to be possible due to a simple programming oversight.
The improvement in this run is entirely due to reducing loading times by abusing non-maskable interrupts (NMIs) that are generated in the SMS when the 'pause' button is hit. It might seem counter-intuitive that pressing the pause button would make a game go faster, but it does turn out to be the case if pressed at the right time.
Here is what the game is doing during typical loading screen frame:
Halt, wait for interrupt (~50000 cycles)
Vblank, Execute necessary code for the frame (~7000 cycles)
Repeat
What happens when you press pause, is that an NMI occurs in those ~50000 cycles where nothing is happening. The NMI itslef doesn't do anything important except for Return to where the code would be executing after a normal interrupt, so basically it's doing two frames in one. EX:
Halt, wait for interrupt (zero cycles in this case since pause is pressed immediately)
NMI
Execute frame code
Halt again
VBlank, frame code again
The basic idea is that the return from interrupt returns to the same place regardless of which interrupt is triggered. There is plenty of time in a frame to add another interrupt without effecting anything else.
And that's all there is to it!
So is it legit? Personally I think so, it's valid input that is doable real time (since on average you'd hit an NMI during HALT about 75% of the time.) And, why would you not want loading screens to go faster?

feos: At the first glance it looked like a rejection to me, because not a single frame of gameplay was improved through optimization. But I double-checked, and there's no rule demanding that for every obsoletion, only for switching game regions. So yeah, as long as something can be sped up with player input alone, it is considered an optimization technique. Accepting as an improvement to [1996] SMS Psycho Fox by Sonikkustar in 02:10.27.
fsvgm777: Processing.
Last Edited by on 1/1/2022 6:13 PM
Page History Latest diff List referrers