
MrWint's GBC Pokémon: Yellow Version “Arbitrary Code Execution” (2017) - geocar
http://tasvideos.org/5384S.html
======
aquova
Every time I see this video I am blown away by the technical skill involved. I
would have difficulty creating this with video editing software, let alone
writing assembly programs to inject into a game to actually do this. The
Portal song in particular stands out, the only other game that I know of that
tries to do voice playback is the Pokemon Yellow Pikachu cry you hear at the
beginning of the video, and it's rough at best. I know this program isn't
faced with the same size limitations as an actual cartridge, but it's still
incredibly impressive.

~~~
khedoros1
> The Portal song in particular stands out, the only other game that I know of
> that tries to do voice playback is the Pokemon Yellow Pikachu cry you hear
> at the beginning of the video, and it's rough at best.

Bionic Commando has a few speech samples. There's a game called Cannon Fodder
(an Amiga port, I think?) that opens with full motion video, with matching
audio. They're both pretty rough, quality-wise.

The explanation of the demo video has a good explanation of how the wave
output hardware works, and how they got such high-quality output. I think it's
a combination of bad timing and non-use of the volume-shifting tricks that
kills the audio quality in commercial games; if I make an emulator dump the
samples to file and import it into Audacity or something, the output is _much_
clearer (about what you'd expect for mono, 4-bit samples at 10KHz or so).

------
qz3
There was a time where is discovered the speedrun and tas communities and
binge-watched everything it has to offer. I was constantly amazed by what the
players achieved, and I especially liked the ones where the gap between tas
and human player closes.

SethBling made an elaborate, frame-perfect glitch exploit run of Super Mario
World where he warps from the first level to the end credits - absolutely
unbelievable.

[https://youtu.be/14wqBA5Q1yc](https://youtu.be/14wqBA5Q1yc)

------
cschep
This is next level excellence. Seriously hard work. Well done!

------
ddoolin
I got a good chuckle at pushing uncompressed Spongebob video through that
4-bit input. Nicely done.

~~~
Willson50
How does he do that?

~~~
GuiA
This is described in the document (sections of interest are "Emulator Choice"
and "SpongeBob video sequence"). To make it very brief, what's happening is
that Pokémon Yellow is acting as an interpreter for commands that get sent to
an engine that renders tiles+sounds. These commands are sent through the key
inputs. A specific emulator that polls the keys at a subframe rate (very very
subframe indeed - thousands of inputs per frame) is used so a lot of data,
such as video, can be sent.

In a way, you can imagine what you're seeing not as a GameBoy Color game being
played, but as a video being streamed to a GameBoy Color video player using a
specific codec optimized for the GameBoy hardware.

~~~
Torn
Great response - I think what a lot of people miss in these pokemon code
execution setups is that the inputs are being streamed to the console _really_
fast

