- Oct 9, 2002
- 28,298
- 1,235
- 136
They use TAS (Tool Assisted Speedrun) utilities to pull this off using using only the controller inputs.
So they have a programmable controller to send input events with precise timing. It starts out glitching the game like mad using controller #1 input events. While it looks like random glitching, but they're actually loading graphics tiles into an area of memory (OAM table or "object attribute map"). The x/y coordinate values of those objects would later be interpreted as code. When the actual code vulnerability is triggered and the code executes, it simulates 8 controllers (2 multitaps) for maximum bandwidth to insert even more code.
Then, their code runs... :biggrin:
Jump to 38s because they had the wrong cartridge inserted at first (had to swap with one that had the save file erased).
https://www.youtube.com/watch?v=jnZ2NNYySuE#t=38s
This one shows the input events:
https://www.youtube.com/watch?v=OPcV9uIY5i4
Jump to 1m38s to see the 8 virtual controllers entering data.
[edit]
The original concept was to load a pixel-accurate playable version of the original Super Mario Bros (which they actually accomplished earlier this year).
https://www.youtube.com/watch?v=RHlGY40XU_o#t=7m7s
(jump to 7m7s)
At the presentation, the graphics were a little glitchy (they never saw it do that before). They also had to wrap-up the presentation because there wasn't much time.
From what I understand, it's supposed to be a pixel-accurate version of SMB with perfect play control and the wanted to have an SMB speed-runner play it.
So they have a programmable controller to send input events with precise timing. It starts out glitching the game like mad using controller #1 input events. While it looks like random glitching, but they're actually loading graphics tiles into an area of memory (OAM table or "object attribute map"). The x/y coordinate values of those objects would later be interpreted as code. When the actual code vulnerability is triggered and the code executes, it simulates 8 controllers (2 multitaps) for maximum bandwidth to insert even more code.
Then, their code runs... :biggrin:
Jump to 38s because they had the wrong cartridge inserted at first (had to swap with one that had the save file erased).
https://www.youtube.com/watch?v=jnZ2NNYySuE#t=38s
This one shows the input events:
https://www.youtube.com/watch?v=OPcV9uIY5i4
Jump to 1m38s to see the 8 virtual controllers entering data.
[edit]
The original concept was to load a pixel-accurate playable version of the original Super Mario Bros (which they actually accomplished earlier this year).
https://www.youtube.com/watch?v=RHlGY40XU_o#t=7m7s
(jump to 7m7s)
At the presentation, the graphics were a little glitchy (they never saw it do that before). They also had to wrap-up the presentation because there wasn't much time.
From what I understand, it's supposed to be a pixel-accurate version of SMB with perfect play control and the wanted to have an SMB speed-runner play it.
Last edited: