- Se explica la estrategia de Super Mario 64 para conseguir la estrella Watch for Rolling Rocks sin una nueva entrada de A, usando solo el A hold que viene desde antes de empezar: 0.5 pulsaciones de A
- La entrada de A se divide en press, hold y release; si se mantiene A presionado desde la estrella anterior, puede contarse como 0.5 para una estrella individual y como 0 entradas adicionales para toda la run
- La clave de la estrategia es mover la posición home del Scuttlebug, elevarlo usando el límite de activación de la sala y luego asegurar la altura de la plataforma de la estrella con misalignment y rebotes
- La velocidad horizontal necesaria se genera con Hyper Speed Walking, combinando agua poco profunda, una pendiente pronunciada, gate y detección de out-of-bounds; acumular la velocidad toma unas 12 horas
- La ruta de movimiento por PU está diseñada para volver al main map y acercarse al elevator y a la plataforma de la estrella, ajustando la conversión a short de floor collision, el syncing speed de cada pendiente y la QPU alignment
Criterio de 0.5 pulsaciones de A
- Una pulsación de A no es una entrada instantánea, sino que se divide en tres etapas: press, hold y release
- press se usa para hacer saltar a Mario
- hold puede usarse para un pequeño kick, nadar bajo el agua, caer lentamente durante un twirl o caer lentamente con Wing Cap
- release no tiene actualmente casos útiles o importantes
- 0.5 pulsaciones de A se refiere a una situación en la que no se presiona A de nuevo, sino que se sigue haciendo hold de A desde antes
- El ejemplo de Over the Rainbow muestra esta forma de contar
- Para llegar a la cannon platform basta con hacer hold de A
- El primer lanzamiento de cannon y el segundo lanzamiento de cannon requieren cada uno un A press
- Si se mira solo una estrella individual, se cuenta como 3 A presses
- En una run completa del A Button Challenge, el A press anterior usado para entrar al course puede mantenerse en hold para cubrir el primer requisito de hold
- Por eso Over the Rainbow queda en 2.5 A presses para una estrella individual y en 2 A presses adicionales para la run completa
- La estrategia de Watch for Rolling Rocks también empieza el level con A ya presionado, y en la run completa esa entrada se cuenta como una continuación de un A press anterior
Transporte y elevación del Scuttlebug
- Scuttlebug Transportation aprovecha la propiedad de que la posición home del Scuttlebug se actualiza cuando choca con Mario
- El Scuttlebug patrulla dentro de cierto radio alrededor de su home
- Cuando Mario entra en ese radio, hace un lunging attack
- Si el Scuttlebug choca con Mario, la posición del Scuttlebug en el momento del choque se convierte en su nuevo home
- El transporte tiene restricciones
- El Scuttlebug no puede salir de su native room y se atora en la door
- Si camina hacia una wall estando demasiado por debajo de su home actual, puede desaparecer, así que hay que evitarlo durante el transporte
- El objetivo es mover al Scuttlebug y su home cerca de la corner debajo de la estrella Watch for Rolling Rocks
- Scuttlebug Raising eleva al Scuttlebug usando el rango de activación de la rolling rocks room
- La room y los objects dentro solo se activan cuando Mario está dentro de la rolling rocks room o en la pequeña yellow region fuera de la door
- Cuando Mario está fuera de esa zona, la room se ve negra y los objects quedan invisibles y no se mueven
- Aunque el Scuttlebug esté inactivo, puede girar hacia Mario y empezar un lunge
- Después de que Mario entra en la yellow region para activar al Scuttlebug, si sale de nuevo de la yellow region cuando el Scuttlebug llega al peak de su trajectory, el Scuttlebug no cae y se queda detenido a esa altura
- Repitiendo este proceso se sigue elevando al Scuttlebug
- El radio de detección del Scuttlebug no es una sphere, sino un cylinder que se extiende infinitamente hacia arriba y hacia abajo, así que se puede seguir provocando el lunge por más alto que esté
- En esta estrategia se hace que el Scuttlebug haga lunge hacia su home para que permanezca justo encima de la corner
- Si Mario lo activa dentro del Scuttlebug radius, el Scuttlebug puede hacer lunge hacia Mario y moverse hacia la door
- Ese método es más rápido, pero no se usa en esta estrategia porque se necesita una posición cercana a la corner
Misalignment y obtención de altura
- La parte superior de la corner tiene una propiedad llamada misalignment
- En el código del juego, floor collision checking y wall collision checking se procesan de forma distinta
- Como resultado, en un área de 1x1 unit Mario puede entrar debajo del floor sin ser empujado por la wall
- Si Mario está a menos de 79 units debajo del floor, se hace snap hacia arriba sobre el floor
- Al final, se combina un Scuttlebug bounce y un ground pound con el misalignment para obtener suficiente altura como para subir a la plataforma de Watch for Rolling Rocks
Hyper Speed Walking y movimiento por Parallel Universe
- La velocidad necesaria se genera con Hyper Speed Walking
- En una slope demasiado pronunciada, normalmente Mario no puede mantenerse de pie y se resbala
- En la underwater portion de una slope sumergida en agua poco profunda, si intenta correr uphill, corre hacia atrás y su velocidad sigue aumentando sin upper bound
- Normalmente es difícil acumular mucha velocidad porque cae al agua o se acaba la slope, pero usando el gate y out-of-bounds se puede acumular velocidad en el mismo lugar
- La bottom del gate se trata como ceiling
- Si Mario intenta moverse demasiado cerca justo debajo de un ceiling, el juego rechaza el cambio de posición
- Después de ganar cierta velocidad, si se gira la dirección para que la intended next position pase la wall y quede out-of-bounds, el juego no deja a Mario out-of-bounds y lo mantiene en su lugar
- Como el out-of-bounds continúa, se puede acumular velocidad por más tiempo que con el gate ceiling
- En esta estrategia se abre el gate, se genera parte de la velocidad con el gate ceiling y luego se gira el angle hacia out-of-bounds para acumular el resto de la velocidad
- Acumular la velocidad toma unas 12 horas
PU, QPU y syncing speed
- La position de Mario es un floating point number, pero para el floor triangle collision test se convierte a short
- La fractional portion se trunca
- Los números demasiado grandes o demasiado pequeños entran en el rango de -32768 a 32767 mediante el modulo operator
- Aunque la posición real esté fuera de ese rango, la posición usada para floor detection hace loop de vuelta dentro de la box original
- Aunque no haya terreno en la posición real de Mario, si la posición de floor detection está sobre terreno, el juego trata a Mario como si estuviera en el suelo
- A estas zonas que funcionan como copias del map original se les llama Parallel Universe, o PU
- En un PU no hay graphics ni objects como elevator o item block, enemy, coin, star ni wall
- La consola N64 puede hacer crash si la camera sigue a Mario al PU, así que esta estrategia evita el crash manteniendo la camera fija en el main map
- El juego revisa si Mario está sobre el floor en cada quarter step de su movimiento
- En un movimiento simple por PU, hay que cruzar 4 PU de una vez para que cada quarter step quede sobre el terreno
- A la distancia de 4 PU se le llama QPU
- La speed real y la de facto speed usada para el movimiento son distintas
- La de facto speed se determina como una parte de la speed real según la slope steepness
- Cuanto más pronunciada es la slope, menor es la de facto speed incluso con la misma speed
- La speed en la que la distancia de QPU y los quarter step coinciden es el syncing speed
- El syncing speed más bajo es exactamente la velocidad que mueve 1 QPU
- Sus múltiplos también son syncing speed, lo que permite moverse varios QPU de una vez
- Cada slope tiene un conjunto distinto de syncing speed
- En el ejemplo de movimiento por PU de Secret Aquarium, había que satisfacer sucesivamente los syncing speed de varias slope; llegar al primer syncing speed tomaba unas 12 horas, y al second syncing speed unas 25 horas
- La ruta de Watch for Rolling Rocks está diseñada para poder hacerse con 12 horas de acumulación de velocidad en lugar de 25
- El path que sube desde el lake está compuesto por decenas de floor triangles con distintas slope
- De ellos se eligieron seis triangles, de T1 a T6, cuyas steepness son strictly decreasing
- Las height de esos seis triangles cubren sin gaps toda la vertical distance necesaria desde bottom hasta top
- Usando estos triangles en orden, se completa el route blueprint solo con el first syncing speed de la initial slope
Ruta final y obtención de la estrella
- La ruta básica empieza en la slope de Hyper Speed Walking, sube por el path sobre el lake, toma 2 elevators, llega a la Amazing Emergency Exit platform y luego se lanza hacia la Watch for Rolling Rocks platform
- Durante el movimiento por PU, si la speed está un poco por debajo del syncing speed se mueve relative forward, y si está un poco por encima se mueve relative backward
- Aunque el angle se desvíe apenas de una cardinal direction, la sideways movement se amplifica mucho por la distancia de QPU
- La gestión de QPU alignment es importante
- La grid correspondiente a múltiplos de 4 PU se llama QPU grid
- Cuando Mario está sobre esta grid, está QPU aligned
- Otros movimientos de cantidad de PU requieren condiciones especiales como out-of-bounds o slope change
- Si queda QPU misaligned, puede ser difícil volver al main map
- En el lake path, sobre cada triangle de T1 a T6, se baja la speed hasta cerca del syncing speed de esa slope y luego se avanza uphill al siguiente triangle
- En cada transición de triangle cambia la QPU alignment, pero la ruta está planificada para que al final se cancelen entre sí y quede QPU aligned
- En el sexto triangle se acerca al main map en zigzag
- Como en los PU no hay objects, los elevators deben usarse después de volver al main map
- La razón para seguir haciendo hold de A es poder presionar B para hacer un pequeño kick
- Sin el kick, Mario atraviesa el elevator
- Con el kick puede subirse al elevator y ganar height
- El movimiento final consiste en hacer kick hacia la Amazing Emergency Exit platform y luego girar la dirección para hacer launch hacia el Scuttlebug
- Este movimiento crea un displacement de 10 PU a la derecha y 3 PU hacia abajo, así que se ajusta de antemano la posición 3 PU arriba y 10 PU a la izquierda para terminar en el main map
- Al mismo tiempo, también se ajusta la relative map position para que el movimiento final sea posible
- El Scuttlebug se activa en cuanto se entra a la PU version de la room, y hay que alcanzarlo antes de que caiga demasiado, así que en el final approach solo hay unos pocos frames de margen
- Finalmente, con el Scuttlebug bounce y el ground pound en el misalignment se obtiene suficiente height para subir a la Watch for Rolling Rocks platform, y se consigue la estrella con 0.5 A presses
1 comentarios
Opiniones de Hacker News
Siento que este podría ser el video perfecto de YouTube.
De fondo tiene un gran soundtrack de Mario y gameplay, gráficos hechos a mano que muestran visualmente qué está pasando, y una narración que explica lo que se ve en pantalla.
Incluso toma como referencia otros videos de YouTube y comentarios, es increíblemente detallado y demuestra muchísimo conocimiento, pero no intenta vender nada.
Se siente hecho más por cariño que por vistas; para mí, es la cúspide de YouTube.
Son detallados y muestran mucho conocimiento, saltando entre neuroquímica/bioquímica, psicología, videojuegos, conducta humana, cultura y religión, y cómo todo eso ha cambiado con el tiempo.
Para mí, eso es la cúspide de YouTube.
A mí me cuesta soportarla.
La profundidad de conocimiento y capacidad de análisis de pannenkoek es realmente asombrosa.
Ver sus videos de SM64 me elevó tanto el estándar que se volvió muy difícil encontrar un nivel similar de rigor y calidad de producción en otros juegos.
Lo más cercano que he visto hasta ahora fue un video sobre cómo unos speedrunners dominaron el azar en un puzzle de Wind Waker.
https://youtu.be/1hs451PfFzQ
AsumSaus también tiene muchos videos diseccionando mecánicas raras de Melee.
Casi todos son excelentes, así que es difícil elegir, pero https://www.youtube.com/watch?v=rA8kpvTBh8Q y https://www.youtube.com/watch?v=9fo0cPmj4VA son buenos puntos de partida.
Cubre la disposición de memoria, cómo funcionan bugs no intencionales, conjuntos de instrucciones de CPU, cómo ocurren las cosas a nivel de hardware, etc.
Lo recomiendo muchísimo.
https://www.youtube.com/@RGMechEx
https://www.youtube.com/channel/UCYDnJiF0_RqSjkjvjRbG1tA
En particular, su serie sobre hacer crashear Paper Mario de montones de formas raras se volvió un meme.
Lamentablemente no tiene actividad desde 2020.
Sus videos son cortos, pero el análisis es bueno.
Recomiendo mucho https://youtu.be/6sPS4yqC72I o https://youtu.be/TM7SutJyDCk.
Esto es porno nerd de la más alta pureza, y me encanta.
Explicaciones como que la detección de colisiones del juego en realidad recibe valores de punto flotante y los convierte a short me hacen cosquillas en el cerebro de una forma rara.
Dice mucho que un juego como SM64 siga fascinando y atrapando a la gente décadas después de su lanzamiento.
Siento que cada vez hay menos juegos mainstream actuales que compartan ese nivel de pasión por parte de los jugadores.
La historia completa del desafío del botón A
https://www.youtube.com/watch?v=yXbJe-rUNP8
Es un video de más de 5 horas, así que lo pongo de fondo o lo veo para pasar el rato.
La cantidad de conocimiento y el nivel de explotación de bugs que muestra esta gente son absurdos.
Algunas de las cosas descubiertas son una locura, y sorprende la cantidad de elementos que apenas funcionan.
Bismuth en general también es un YouTuber de mucha calidad.
Me reí muchísimo en la parte de “acumular velocidad durante 12 horas”.
https://youtu.be/kpk2tdsPh0A?t=640
El razonamiento es realmente clarísimo.
Me gusta que haya tanta gente increíblemente inteligente en internet.
Claro que cada quien es libre de usar su cabeza como quiera, pero obsesionarse a este nivel con un bug extremadamente oscuro de un juego de hace unos 30 años, para demostrar que una maniobra imposible de ejecutar en la práctica sin ayuda de herramientas es técnicamente posible, me parece realmente extraño.
El video explicativo es excelente, pero el objetivo de fondo me parece absurdo.
Si te gustan las historias de universos paralelos, recomiendo mucho ver el speedrun 1-Key de SM64 https://youtube.com/watch?v=iUt840BUOYA y luego la explicación de Bismuth https://youtube.com/watch?v=wjge1bVobN0.
Es un logro técnico realmente asombroso, basado en gran medida en la investigación de pannenkoek2012.
Los universos paralelos y toda la ambientación alrededor de ellos existen porque un entero de 16 bits se desborda dentro del código de comprobación del suelo.
Mario 64 normalmente guarda la posición como punto flotante, pero en la detección de colisiones la convierte a un entero de 16 bits.
Realmente sorprendente
Cada vez que veo a personas movidas tan fuertemente por alguna pasión que llegan a dedicarle este nivel extremo de entrega, me impresiona
Rara vez he sentido una pasión capaz de hacerme trabajar así de duro
A veces pienso que sería bueno que personas así usaran su talento y energía en cosas realmente importantes, como curar enfermedades o lograr avances científicos
Al menos, incluso desde su propio punto de vista, podrían sentir que no desperdiciaron un gran potencial
Con solo el esfuerzo que se puso en este video, creo que podría haber salido un paper de investigación decente
Ojalá tuviera este nivel de motivación para mi trabajo, pero en general simplemente me deja admirado
Me gusta este video
Más recientemente también hizo un video sobre elementos técnicos específicos del N64, y ojo con el punto flotante
https://youtu.be/nYDmBdUalgo
¿Podrían recomendar más videos de madriguera de conejo como el del post original?
El tema no importa
Me gustan estos videos que muestran qué tan profundo se puede llegar en algo
Mi favorito por ahora es https://youtu.be/_hjRvZYkAgA
https://youtu.be/KVgoy_a_gWI
https://youtu.be/6gjsAA_5Agk
Este video también explica qué es una entrada A de 0.5 y por qué importa
Como Mario 64 no presta atención a la acción de soltar un botón, los runners no cuentan el soltarlo por separado
Como siempre puedes elegir no soltar A, en una run de mínimo de entradas A solo sueltas A para volver a presionarlo
En una narración en vivo se podría explicar brevemente qué “significa” 0.5 A, pero sin esa explicación es muy probable que uno se pregunte por qué importa
También hay que explicar que Mario se comporta distinto cuando mantienes A presionado que cuando no lo haces
Si en el primer caso presionas A y no lo sueltas, el segundo caso puede tomar prestada esa entrada
Si presta atención al estado de mantenerlo presionado, como al planear en el aire, ¿no implica eso necesariamente que también presta atención al estado de no tenerlo presionado, como estar en el aire pero sin planear?
Para pasar de estar planeando en el aire a estar en el aire sin planear, tienes que soltar el botón
¿Estoy entendiendo mal?
Solo he jugado unos 5 minutos de M64, pero lo tengo en mi lista para algún día, y sigo recomendándoselo a mis hijos para que se enganchen y así hacerme tiempo para jugarlo también
Para saltar por segunda vez, primero tienes que soltar el botón
0.5 en realidad se acerca más a la idea de que una sola entrada de A se extiende a través de varios niveles
A primera vista uno piensa “¿qué demonios es 0.5?”, pero al final es solo una cuestión de semántica