
How a robot got Super Mario 64 and Portal “running” on an SNES - minimaxir
http://arstechnica.com/gaming/2017/01/how-a-robot-got-super-mario-64-and-portal-running-on-an-snes/
======
falcolas
I watched this live on Twitch, it was unbelievable. I forgot for a time that
they were still on the SNES - the streaming of the video was that good. Low
quality, but good enough that you forgot you were in the "TAS OS", and it
wasn't just Twitch streaming artifacts.

The TAS blocks at the Games Done Quick fundraising events are always amazing,
but this was a step above.

~~~
Chromozon
The way they did it was a bit confusing. They were playing Zelda, and then
they cut the game off right as they walked through a door. Shortly after,
Super Mario N64 popped up on the center of the screen. Twitch chat wondered if
they were still playing Zelda and playing SM64 through the Zelda game. It
wasn't clear what was going on, and they saved the explanation until the very
end.

~~~
acedio
Yeah, I think the effect would have been better had they explained what was
going on immediately rather than saving it until the end. Very cool tech,
regardless :)

------
phs318u
Wow. Just wow.

Being unfamiliar with this area I can't tell if this is ridiculously good or
just above average. Nevertheless, for _me_ this was an amazing display of both
hardware and software hacking.

This kind of falls into the same category of "out of the box" thinking that is
used by NASA ground crews to squeeze more and new functionality out of old and
distant hardware that far exceeds its original design parameters.

Loved it.

~~~
sp332
This is pretty insane. [https://arstechnica.com/gaming/2017/01/prepare-your-
switch-t...](https://arstechnica.com/gaming/2017/01/prepare-your-switch-tab-
shortcut-at-work-awesome-games-done-quick-is-back/?comments=1&post=32598703)

> > TASbot... Gods above and below, that's some mighty fine hacking to
> translate inhuman button presses into actual glitch code. It's like waving
> your hands madly in the air and conjuring up an airliner, Matrix-style.

> As TASBot's keeper I can tell you that what we have prepared this year is
> akin to gesticulating wildly and calling a space shuttle into existence out
> of nowhere. :)

------
wyldfire
> While the AGDQ SM64 and Portal TASBot runs were really just pre-recorded
> video and audio streaming through the SNES

phew! I was totally confused -- assumed they were somehow rendering and doing
the actual gameplay.

------
Groxx
Anyone know how / why they're able to send this much data over the controller
ports? That seems like a sample rate that's way into the "insane" realm,
irrationally beyond what any human could produce.

~~~
minimaxir
The live video includes a caveat that they "cheated" by networking directly
into the console for several orders of magnitude more button inputs. (i.e more
than the 8 controllers from the console)

The cheat was apparently controversial for the team.

~~~
Groxx
For tasbot though, I wonder what that actually means. If they soldered onto
the board to bypass a chip or something I can certainly see it being
controversial - they're usually very clear about "this system is unmodified,
we just have a bot pressing buttons".

~~~
lfowles
It's less button presses at this point and more putting data into the memory
where controller input is stored at an arbitrary rate.

Talk from Defcon:
[https://www.youtube.com/watch?v=9ZrNWiBzqUE](https://www.youtube.com/watch?v=9ZrNWiBzqUE)

~~~
Groxx
Aaaaaah. So that lets them update the value (up to) every time the memory is
accessed - that I can definitely see running so quickly. And still "using
controllers", arguably.

Still. Much amaze. Wow.

~~~
Groxx
(too late to edit) hmm, no, that video talks about how they did the twitch
chatroom thing. As I interpret it, they did that by tricking the snes to re-
poll the buttons faster than it would normally do, and they said they could
achieve every couple ms (instead of once per frame), which is wildly below
what the streaming video demo needed.

The video is awesome though, thanks for the link! Now ya've got me queueing up
tons of defcon videos....

~~~
lfowles
Hm, I might be remembering wrong or mixing it up with details from various
forums, but I thought it mentioned the FPGA version capable of pushing several
mb/s through the controller ports.

~~~
Groxx
Yeah, they mentioned it exists (2mb/s iirc) but made no attempt to describe
how it works.

------
blktiger
This is the Rube Goldberg Machine of programming.

~~~
agumonkey
I wonder if early programming projects weren't like this. Abusing low level
components to do things they weren't really meant to do.

~~~
white-flame
That accurately describes the Commodore 64 scene. Games, demos, disk speeders,
and copy protection particularly abused the hardware. Many games couldn't run
without hardware glitches from the video chip, and undefined CPU opcodes which
end up executing some weird fusion of otherwise normal instructions were often
exploited to save a few necessary cycles here or there.

~~~
agumonkey
True; but I meant even 50s computer projects. They were trying to make memory
out of mercury acoustic waves .. feels so hackish in a way

~~~
qwertyuiop924
Wait, was that real? I thought Stephenson made that up...

~~~
agumonkey
Unless there's some misunderstanding:

[https://duckduckgo.com/?q=mercury+delay+line&ia=web](https://duckduckgo.com/?q=mercury+delay+line&ia=web)

------
wodenokoto
How far into the video does TASBot begin?

~~~
acedio
The actual play starts at 29:00
([https://youtu.be/Ukq29ePnTqI?t=29m00s](https://youtu.be/Ukq29ePnTqI?t=29m00s)),
but the video streaming through the SNES starts at 55:50
([https://youtu.be/Ukq29ePnTqI?t=55m50s](https://youtu.be/Ukq29ePnTqI?t=55m50s)).

~~~
joshschreuder
Thanks for the timestamps. That's incredible!

------
buzzybee
During this stream[0], the TASBot setup is reused for a remote-playable
version of Stack-Up. There's an earlier stream where DwangoAC pitches how it
would work, which I'm having some trouble finding now.

(I recommend that streamer, too. His main project for several years has been
to play all NES games to completion.)

[0]
[https://www.twitch.tv/themexicanrunner/v/109380650](https://www.twitch.tv/themexicanrunner/v/109380650)

