# Speedrun asistido por herramientas

Un speedrun asistido por herramientas (en inglés tool-assisted speedrun, abreviado como TAS), se define como un speedrun en un emulador, con el objetivo de crear una demostración de una partida teóricamente perfecta. El autor de TAS (llamado TASer) usa sus conocimientos sobre la mecánica de los videojuegos de su interés junto con el uso de emuladores especializados, con tal de optimizar lo más posible el tiempo de partidas. Las herramientas utilizadas para este fin incluyen el uso de guardados y rebobinados, ralentizar y avanzar cuadro por cuadro, crear macros y scripts para realizar acciones automatizadas, etc. En el extremo de este esfuerzo, se pueden utilizar medios como el desensamblador y la fuerza bruta.
La idea no es hacer que el juego sea más fácil para los jugadores, sino más bien producir una partida que lleve el límite de la jugabilidad al extremo, por encima de las habilidades humanas. Como tal, en lugar de ser una rama de los deportes electrónicos centrada en logros prácticos, el speedrunning asistido por herramientas se ocupa de la investigación de los límites teóricos de los juegos y sus respectivas categorías de competencia, y de producir contenido con énfasis en el valor del entretenimiento, como incluir trucos y acrobacias que de otro modo serían prohibitivamente difíciles de incorporar.
Otro tipo de demostración asistida por herramientas es low optimised tool-assisted demonstration (LOTAD), la cual busca crear una partida con el mínimo de errores, a través de métodos más sencillos, como el rebobinado.

## Historia
### 1999-2001

El término fue acuñado durante los primeros días de spedrunning en Doom, durante el cual se realizó la primera de estas ejecuciones (aunque a veces también se los denominó "demos construidas"). Cuando Andy "Aurican" Kempling lanzó una versión modificada del código fuente de Doom que hizo posible grabar demos en cámara lenta y en varias sesiones, fue posible que los primeros jugadores comenzaran a grabar demos asistidos por herramientas. Un par de meses después, en junio de 1999, Esko Koskimaa, Peo Sjoblom y Joonatan Donner abrieron el primer sitio para compartir estas demostraciones, "Speedruns asistidos por herramientas".
Al igual que muchas otras comunidades de TAS, los encargados del mantenimiento del sitio enfatizaron el hecho de que sus demostraciones eran para fines de entretenimiento en lugar de competencias, aunque el intento de lograr el mejor tiempo posible con las herramientas se convirtió también en una competencia. El sitio se convirtió en un éxito, actualizándose generalmente varias veces a la semana con demostraciones grabadas por sus encargados y enviadas por sus lectores. Después de un corto tiempo, cuando se lanzó la versión 2.03 del puerto fuente Marine's Best Friend de Lee Killough (basado en el puerto fuente de Boom), fue aún más fácil para las personas grabar estas demostraciones, agregando la funcionalidad de volver a grabar sin tener que volver a reproducir la demostración hasta que llegó al punto donde el jugador quería continuar.
El sitio estuvo activo hasta el 10 de agosto de 2001, cuando Jonathan Donner publicó un mensaje de noticias indicando que su sitio sería un archivo de ahora en adelante, y apuntando hacia The Doomed Speed Demos Archive, un sitio principalmente para speedruns normales, de las cuales el autor acordó hacerse cargo de la publicación de TAS. Aunque la popularidad disminuyó desde entonces, las demos construidas todavía se han enviado hasta noviembre de 2005, y generalmente se hacen con PrBoom.

### 2003-presente

En 2003, un video de un jugador japonés llamado Morimoto completando el juego Super Mario Bros. 3 en 11 minutos realizando acrobacias, comenzó a flotar en Internet. El video resultó ser controvertido, ya que no mucha gente sabía sobre TAS en ese momento, especialmente para la NES. Como el video no estaba claramente etiquetado como tal, muchas personas sintieron que habían sido engañadas cuando descubrieron que se había hecho usando un emulador. Sin embargo, el video inspiró a Joel "Bisqwit" Yliluoma a comenzar un sitio web llamado NESvideos, que se dedicó a TAS para la NES. Al principio, alojó videos solo para NES, pero a medida que la comunidad creció, sus miembros agregaron las características requeridas para la ejecución de TAS en emuladores para otros sistemas. El nombre del sitio se cambió luego a TASVideos. A partir de mayo de 2020, TASVideos es la comunidad web en inglés más grande que produce y aloja TAS; a noviembre de 2021, el sitio tiene 4592 grabaciones TAS completas (2380 en formato reproducible en emulador) (sin incluir las grabaciones obsoletas), de las cuales 2213 son las más rápidas de su tipo.
Se han realizado TAS para algunos hack ROM notables, así como para juegos oficiales. En 2014, se desarrolló un robot, TASBot, capaz de ejecutar TAS a través de la entrada directa de mando (pulsación de botones) hacia la consola en cuestión.
Una personificación en broma TAS, llamada TAS-san, se ha hecho popular entre los usuarios japoneses de Internet. Los TAS cargadas en sitios como Nico Nico Douga, YouTube o TASVideos pueden describirse como un nuevo récord mundial por TAS-san, quien se dice que tiene la memoria y los reflejos sobrehumanos necesarios para ejecutar dicho speedrun en tiempo real (ejecutado por un humano).

## Metodología

Crear un TAS es el proceso de encontrar el conjunto óptimo de entradas para cumplir un criterio dado, generalmente completando un juego en el menor tiempo posible. No se imponen límites a las herramientas utilizadas, pero el resultado debe ser un conjunto de pulsaciones de botones cronometradas que, cuando se reproducen en una consola real, logran el criterio objetivo. El método básico utilizado para construir este conjunto de entradas es registrar la entrada mientras se juega en un emulador, todo mientras se guarda y carga el estado del emulador repetidamente para probar varias posibilidades y solo mantener el mejor resultado. Para hacer esto más preciso, el juego se ralentiza. Inicialmente, era común reducir la velocidad a una fracción baja (por ejemplo, 5%) de la velocidad normal. Sin embargo, debido a los avances en el campo, es posible incluso detener la reproducción del juego y avanzar cuadro por cuadro.
Una herramienta raramente utilizada es la fuerza bruta en busca de entradas ideales haciendo que una computadora juegue, probando todas las entradas posibles. En teoría, este proceso podría encontrar el conjunto ideal de entradas para cualquier juego, pero dado que el espacio de todas las entradas posibles crece exponencialmente con la longitud de la secuencia, esto solo es viable para optimizar porciones muy pequeñas del TAS. En cambio, se puede usar un algoritmo heurístico. Aunque este enfoque no garantiza una solución perfecta, puede resultar muy efectivo para resolver juegos de rompecabezas simples.
La velocidad de ejecución asistida por herramientas se basa en la misma serie de entradas que se reproducen en diferentes momentos, siempre dando los mismos resultados. En cierto modo, la emulación debe ser determinista con respecto a las entradas guardadas (por ejemplo, las semillas aleatorias no deben cambiar de una ejecución a otra). De lo contrario, un speedrun óptimo en una reproducción podría no completarlo en una segunda reproducción. Esta pérdida de sincronización, o "desincronización", ocurre cuando el estado de la máquina emulada en un índice de tiempo particular ya no se corresponde con el que existía en el mismo punto en la producción de la partida grabada. Las desincronizaciones también pueden ser causadas por estados de guardado incompletos, que hacen que la máquina emulada se restaure en un estado diferente al que existía cuando se guardó. Las desincronizaciones también pueden ocurrir cuando un usuario intenta hacer coincidir las entradas de un archivo de entrada descargado y no poder hacerla funcionar correctamente debido a las diferencias entre versiones de distintas regiones.
Los problemas con la emulación, como el no determinismo y los estados de guardado incompletos, a menudo solo se descubren bajo las condiciones precisas cuadro por cuadro. Los desarrolladores de emuladores a menudo no otorgan alta prioridad a los problemas de velocidad porque tienen poco efecto en el juego normal; en consecuencia, la comunidad ha bifurcado varios emuladores para que sean adecuados para la tarea. Estos incluyen mejoras generales en Snes9x, y de grabación de partidas en Gens, Visual Boy Advance y Mupen64. Si se usa un emulador bifurcado para producir un TAS, la reproducción difiere entre emuladores normales y modificados, produciendo potenciales desincronizaciones en las entradas.

### Alteración de memoria

Una de las características del TAS, es que se pueden realizar miles de pulsaciones de botones por segundo, lo que depende de la cantidad de botones del mando y el uso de multitaps, del emulador, del software (videojuego) y el hardware (la consola). La pulsacion repetida de botones ocasiona un efecto fundamental: la alteración de la memoria, permitiendo la ejecución arbitraria de código. Dicha técnica permite alterar el juego en curso, e incluso inyectar otros juegos dentro de la memoria del juego anfitrión.
La ejecución arbitraria de código junto con partidas guardadas, también facilita otra técnica común, la manipulación de la suerte, que consiste en generar números pseudoaleatorios, con tal de lograr resultados favorables en algún aspecto del juego (lo que a su vez resuelve el problema del determinismo). Usando un savestate anterior a algún evento, es posible experimentar con pequeñas variaciones de entrada hasta que el evento tenga el resultado deseado. Dependiendo del juego y el evento, este puede ser un proceso que consume mucho tiempo, a veces requiere rebobinar constantemenre y, como tal, puede ocupar una gran parte del tiempo total dedicado a la creación del TAS. Los ejemplos de manipulación de suerte incluyen hacer que en Tetris caiga la pieza deseada, o que caiga un objeto raro la primera vez que uno mata a un enemigo en algún juego de acción.
Otra técnica raramente utilizada es desensamblar o depurar el ejecutable o ROM del juego. Al exponer la lógica del juego, esto permite al jugador manipular la suerte sin prueba y error, o revelar errores oscuros en el motor del juego. Una técnica relacionada más común es monitorear las direcciones de memoria responsables de ciertos efectos para saber cómo o cuándo cambian. Varios emuladores especializados disponen de estas características.
Todas estas técnicas implican una interacción directa con el estado del juego de maneras que no son posibles para un humano usando una consola real, pero el resultado final, el conjunto de entradas que conforman el speedrun, no depende de tal manipulación del estado de la máquina emulada. Por lo tanto, el uso de herramientas en TAS es diferente del tipo de manipulación de estado que proporcionan herramientas como Gameshark, ya que dicha manipulación no sería expresable como una secuencia de entradas temporizadas.
Para que un TAS sea aceptado en sitios como TASVideos, se debe ejecutar un juego sin modificaciones externas que alteren la jugabilidad, por ejemplo mediante el uso de cheats; la ejecución arbitraria de código se realiza en tiempo de ejecución a través de las mecánicas y controles del propio juego.

## Relación con speedrun en tiempo real

Los speedrun asistidos por herramientas se cronometran en una categoría distinta de los speedrun en tiempo real (RTA), por razones de equidad. Ya que los RTA son ejecutados por humanos en una consola real, a menudo se evita un camino difícil en favor de uno más seguro, pero más lento, para evitar riesgos como morir y tener que comenzar de nuevo, fallar una acrobacia y perder más tiempo, o fallar una configuración para un truco difícil. Dependiendo del juego, los speedrun asistidos por herramientas pueden superar a sus contrapartes en tiempo real, desde minutos hasta horas. Para un ejemplo de un speedrun en tiempo real altamente optimizada, en Super Mario Bros., el TAS más rápido se registró en un tiempo de 04:54.032, mientras que el speedrun en tiempo real se registró en un tiempo de 4:55.646.

### Convenciones de tiempo

Los speedrun asistidos por herramientas se cronometran por entrada, es decir, desde el encendido del juego hasta la última entrada necesaria para llegar a la escena final y/o los créditos del juego. Cualquier escena introductoria, pantallas de carga de juegos y diálogos finales después de la última batalla del jefe (si es necesario ingresar para desplazarse por el texto) se incluyen en los tiempos finales. Los tiempos son exactos (al cuadro más cercano), un nivel de precisión que no es posible con ejecuciones no asistidas porque no puede determinarse a partir de una grabación cuando termina exactamente la entrada. Speed Demos Archive y Twin Galaxies miden solo la duración del juego propiamente dicho, y comienzan a cronometrar cuando el jugador obtiene el control del personaje y finaliza el cronometraje cuando el jugador lo pierde. Estas diferencias en las convenciones de temporización pueden resultar en tiempos aparentemente discrepantes entre ejecuciones no asistidas y asistidas por herramientas. Por ejemplo, un speedrun en Super Mario Bros. ejecutado por Andrew Gardikis fue registrado con un tiempo de 4:58, mientras que un TAS ejecutado por HappyLee, se registró un tiempo de 4:47.31, con una diferencia de 0.69 segundos menos con respecto al récord TAS, pero si se considera el tiempo desde que arranca el juego, su tiempo cronometrado es de 5:01.

### RTA más rápidos que TAS

Debido a que los speedrun asistidos por herramientas a menudo tardan más tiempo en crearse que los speedrun en tiempo real, el descubrimiento de un truco que ahorre tiempo puede llevar a una situación en un speedrun en tiempo real llegue a registrar un tiempo menor que los speedrun asistidos por herramientas previamente creados (lo que obligaría al creador del TAS a buscar más formas de optimizar el tiempo de juego).
El 13 al 21 de agosto de 2007, se registró récord de 4 minutos menos que un TAS previamente grabado en Pokémon Blue, debido al descubrimiento de un nuevo truco, el que permite caminar a través de las paredes. Sin embargo, el 21 de agosto se presentó un TAS que mejoró en 20 minutos el mencionado speedrun en tiempo real.
Desde el 12 de enero de 2020, el récord en Donkey Kong Country fue de 810 milisegundos menos que mejor TAS del momento, debido a un nuevo truco que le permitió a Diddy Kong agarrar un barril DK y lanzar el barril DK cerca de un barril oculto al comienzo del último nivel, que omite todo el último nivel y la animación de finalización de nivel también.
Algunos juegos pueden producir fallas beneficiosas si se manipula el cartucho insertado, que no puede reproducirse en un emulador. Uno de los ejemplos más famosos es The Legend of Zelda: Ocarina of Time, donde levantar un lado del cartucho provoca una falla que permite al jugador caminar a través de paredes sólidas.

### Abuso de glitches

Una de las diferencias más importantes entre los distintos tipos de speedrun es la explotación de glitches. Aunque su explotación suele ser frecuente en speedrun en tiempo real, los speedrun asistidos por herramientas a menudo hacen un uso mucho más intenso de ellos. Esto puede deberse en parte a que la mayoría de los problemas técnicos son muy difíciles de explotar sin la precisión ofrecida por las técnicas de TAS. En algunos casos, un truco se basa no solo en el tiempo preciso, sino en múltiples variables en la memoria que también tienen un estado específico, que sería casi imposible de recrear en tiempo real y sin un conocimiento detallado del programa del juego.

### Factor de entretenimiento

Estas diferencias también conducen a expectativas diferentes en los distintos tipos de speedrun. Recibir daño sin que ello represente un beneficio de tiempo para un récord es mal visto, mientras que en RTA puede ser aceptable, dado que puede ser difícil de evitar.
Otra diferencia está en los estándares de uso del tiempo de espera en el speedrun: en situaciones en las que no es posible hacer que el juego se mueva más rápido, y el jugador tiene que esperar, como en el desplazamiento automático o en cualquier otra área del juego en la que el jugador no tiene control sobre la velocidad, las pautas de TASVideos aconsejan hacer algo entretenido para los espectadores. Un ejemplo de esto es la reunión de 99 vidas extra en las secciones de desplazamiento automático en Super Mario Bros. 3. En los speedrun en tiempo real, los jugadores generalmente no correrían el riesgo de morir y tener que comenzar de nuevo para entretener al espectador.
Las ejecuciones que resulten poco interesantes pueden ser rechazadas para su publicación, incluso si la ejecución en sí está técnicamente optimizada. Una mala elección de juego puede contribuir a la falta de entretenimiento. En este contexto, un "mal juego" puede representar una elección de objetivos que no demuestra los méritos del uso de herramientas, por lo que elegir un objetivo diferente puede aliviar este problema. En otros casos, como un TAS de Excitebike creado por Thomas Seufert, un juego anteriormente impopular, había logrado un notable aumento del entretenimiento debido a las mejoras masivas puestas en juego por una mayor precisión gracias a las herramientas disponibles.
Cuando alguien envía un archivo de partida grabada terminado con sus datos de entrada para su publicación en el sitio web de TASvideos, el público votará si considera que la partida es entretenida o no. Según su sitio web, las partidas que se ajustan a las reglas de su sitio y tienen una tasa de voto de Sí del 80% es una señal de que el público está interesado en la partida y es más probable que sea aceptada.

### Validación de speedrun en tiempo real

Debido a que los speedrun asistidos por herramientas pueden dar cuenta de todos los aspectos del código del juego, incluido su funcionamiento interno, y presionar los botones con extrema rapidez y precisión, pueden usarse para ayudar a validar un speedrun en tiempo real previo.
Algunos jugadores han grabado partidas en video fraudulentamente, ya sea creando montajes de otros speedrun o alterando el tiempo de reproducción, haciéndolos pasar por TAS o RTA según sea el caso.
* Uno de los casos más conocidos es el de Billy Mitchell, a quién se le arrebató en 2018 sus récord Guinness en Donkey Kong y Pac-Man, por considerar que usó un emulador. Sin embargo, en 2020, la organización, reinstauró los récords de Mitchell tras otra investigación.
* En 2018, el récord de Todd Rogers para Dragster se eliminó de Twin Galaxies y los récord Guinness después de que un experimento demostrara que su tiempo de 5.51 segundos era imposible de lograr incluso en un TAS.
* Otro caso de RTA fraudulento es el de Badabun, donde Tavo Betancourt transmitió una partida de Super Mario Bros., terminándolo en 05:12. Más tarde, se descubrió que solo fingía que jugaba una serie de partidas TAS de otros jugadores. El youtuber Karl Jobst, tras analizar el video, lo calificó como "el peor speedrun falso de YouTube". La transmisión fue parodiada por varios youtubers del género, incluyendo Kosmic, poseedor del récord mundial RTA de Super Mario Bros. en 2020.

## Speedrun notables

* Super Mario Bros.:
** Actual récord mundial, por HappyLee en 2011, con un tiempo de 4:57.31, usando warps, y completando el juego sin warps en 2018 en 18:36.78. El récord TAS fue eventualmente superado por el récord RTA, siendo el más reciente ejecutado por Tree_05 en una consola real, en un tiempo de 4:54,864; Niftski ostenta el récord mundial con un tiempo de 4:54,798, pero ejecutando Super Mario Bros./Duck Hunt en un emulador.
** En mayo de 2024, OnehundredthCoin publió en TASVideos una ejecución que inserta un videoclip con audio dentro de Super Mario Bros. mediante la ejecución arbitraria de código, usando una versión modificada del emulador Bizhawk que permite intercambiar ROM en tiempo de ejecución. La ejecución empieza con la ROM de Super Mario Bros. 3 insertado, y cambianbdo rápidamente a la ROM de Super Mario Bros. apenas iniciada la ejecución, con tal de provocar una alteración de memoria, iniciando en el mundo N-1 (8-3), continuando hasta el mundo N-2 (8-4). Al llegar hasta Bowser, comienza la inyección de código que reproduce el videoclip de Bad Apple!! usando los propios tiles del juego, junto con audio en formato PCM. La ejecución fue validada en una consola real.
* Tetris: Este juego ha sido objeto de múltiples ejecuciones de TAS, entre las que destacan obtener la puntuación máxima o completar uno de los modos de juego en el menor tiempo posible, e incluso formar patrones, haciendo uso intensivo de manipulación de la suerte.
* Pokémon Rojo: Glitch de guardado permite completar el juego en 01:09.95, dando como resultado un tiempo de juego de 0:00, mostrado al final de la partida.
* Pokémon Amarillo: Ejecución arbitraria de código permite inyectar varios juegos (no jugables, basicamente demostraciones en secuencias de video) dentro de Pokémon Amarillo, como Pokémon Oro, Tetris, Super Mario Bros. Deluxe, entre otros, además de inyectar y reproducir la canción final de Portal en formato PCM y un extracto de una escena de Bob Esponja en formato FMV.
* Super Mario Bros. 3:
* Ejecución arbitraria de código junto con el glitch de créditos, permiten inyectar un hack que simula una consola tipo Unix, cuyos comandos permiten seleccionar niveles y otorgar a Mario características extra.
* Super Mario World:
** Glitch de créditos, ejecutado por varios jugadores en emulador desde 2011, y por SethBling en 2015 en una consola y controles reales.
** Ejecución arbitraria de código permite inyectar una versión jugable de Flappy Bird, Pong, Snake, Super Mario Bros. y Super Mario Maker.
** Varias ROM modificadas tipo kaizo son creadas específicamente para ser ejecutadas en TAS y entretener a los espectadores.
* Super Mario 64: El récord TAS actual es de 04:18.98 y fue creado en 2021. El tiempo más rápido conseguido por una persona en una consola real es de 6:29:95.