Super Mario Kart - Fullscreen Edition v2.0Lo que empezó como una idea bastante sencilla —quitar el mapa inferior de la pantalla para tener una vista de carrera mucho más grande— acabó convirtiéndose en uno de esos
hacks en los que cada solución abre tres problemas nuevos.
Y todo esto se ha hecho con ayuda de la IA. Eso sí:
echándole más horas que un reloj. 😅
La diferencia fundamental con otros
hacks que se limitan a ocultar el mapa es que aquí no se ha tapado simplemente lo que había abajo.
La cámara de carrera se ha desplazado y recalculado para aprovechar las 224 líneas completas de la pantalla, acercando la acción y haciendo que el kart, el suelo, los rivales, las sombras, los objetos y las colisiones sigan siendo coherentes con esa nueva perspectiva.
La v2.0 lleva esa idea un paso más allá: incorpora una
cámara de horizonte amplio, activada por defecto en los 20 circuitos, con una vista más alta y abierta, un horizonte propio y los decorados adaptados para aprovechar la nueva perspectiva. Y si preferís la vista anterior, basta con pulsar SELECT durante la carrera para alternar entre ambas cámaras.
No es simplemente «quitar el mapa de abajo». La cámara cambia de verdad, y todo lo que depende de ella tiene que acompañarla.
Y aquí llegó uno de los puntos de inflexión del proyecto. Al principio estábamos intentando solucionar uno por uno los miles de problemas que aparecían al quitar simplemente el mapa y bajar el personaje a la parte inferior de la pantalla.
Hasta que se me encendió la bombilla: ¿y si aprovechábamos la lógica que el juego ya utilizaba para el Player 2, que colocaba su kart aproximadamente en la posición que necesitábamos, y la reutilizábamos para el Player 1 cuando jugaba en solitario?Aquella idea permitió dejar de pelear contra una buena parte de los problemas desde cero y avanzar muchísimo más deprisa. No resolvía todo, ni mucho menos, pero
nos ahorró una cantidad enorme de trabajo y nos dio una base coherente sobre la que seguir construyendo el hack.
La parte que no se vePara conseguirlo hubo que meterse bastante más abajo de lo que parecía al principio.
Aquí hay un matiz importante sobre lo de «acercar la cámara». Al principio, después de ampliar la superficie de Mode 7 para llenar las 224 líneas, la parrilla de salida quedaba demasiado adelantada respecto a Mario: el kart estaba en la posición que queríamos, pero sus rivales y la marca pintada en el suelo se habían quedado lejos, como si Mario estuviera empezando la carrera varios metros por detrás.
La solución no era seguir desplazando al personaje, sino hacer lo contrario:
acercar el escenario hacia él. Es el mismo efecto que se produce cuando aceleras en el juego: el kart permanece en su posición y es la pista la que avanza hacia él. Así conseguimos que la parrilla, los rivales y todo lo que rodea al kart vuelvan a ocupar la posición que les corresponde respecto a él, pero aprovechando la nueva pantalla completa.
A partir de ahí es cuando hubo que conseguir que esa nueva referencia de cámara fuese coherente con todo lo demás. El juego utiliza el DSP-1 para buena parte de la proyección de la pista, así que no bastaba con mover el sprite de Mario: había que
hacer que la posición real del kart, el suelo, la sombra, los rivales, los objetos y las colisiones siguieran hablando el mismo idioma.
La cámara se acerca progresivamente al comenzar la carrera, en lugar de pegar un salto brusco, y la nueva posición se mantiene también en cosas como la sombra, los efectos, los objetos, los saltos y las colisiones.
Y ahí empezaron a aparecer los cadáveres.
Rivales que atravesaban a Mario, tuberías que parecían no existir, objetos que desaparecían al acercarse demasiado, sprites que al salir por arriba reaparecían por abajo, cabezas de Lakitu asomando donde no tocaba, monedas y efectos que seguían apareciendo 88 píxeles por encima del kart, humo que se había quedado en la posición antigua...
Cada uno de esos fallos obligó a localizar dónde los estaba generando el juego y corregirlo sin romper lo que ya funcionaba.
Incluso hubo que rehacer parte del orden de dibujado y estudiar cómo se construye la OAM para entender por qué determinados rivales podían solaparse mal. Se probaron soluciones que funcionaban aparentemente bien y luego resultaban demasiado costosas para el procesador.
En NTSC el margen de CPU es bastante menor que en PAL, así que también hubo que perfilar el código y eliminar trabajo innecesario.
La v2.0 incluye además una resincronización del
attract mode y una reducción de ciclos de CPU que no altera el resultado visual. Las pruebas comparativas muestran que el tartamudeo que aparece en determinados giros duros de Bowser Castle también se produce en la ROM original: no es una ralentización nueva introducida por esta versión.
Y, por supuesto, tocar la pantalla completa significa que el HUD original ya no tiene mucho sentido.
Un HUD nuevo aprovechando el espacioEl contador de vidas, las monedas y los dígitos de posición se han recolocado para aprovechar la nueva distribución. También se han adaptado las tablas de tiempos, los puestos finales, los menús de
Retry / End,
Ranked Out,
Game Over y otros elementos que originalmente estaban diseñados pensando en una pantalla partida.
Y aquí ocurrió otra cosa curiosa: algunos elementos que parecían sprites normales resultaron depender de HDMA, ventanas, tablas de color y otros sistemas de la SNES que no tienen absolutamente nada que ver con «mover una imagen unos píxeles».
En otras palabras:
cuanto más se tocaba, más cosas descubríamos que dependían indirectamente de aquel mapa inferior que ya no existía.
¿Y el 2P?Una de las condiciones del
hack era no destrozar el modo para dos jugadores. Después de todo el trabajo realizado sobre la lógica de 1P,
la rama 2P se deja ejecutar con el código original. El
hack utiliza puertas que detectan cuándo se está en 1P y dejan pasar la ROM original en 2P.
Así que, en lugar de intentar rehacer también la pantalla partida, se conserva el funcionamiento original. Las pruebas comparativas en bsnes muestran el comportamiento 2P idéntico al de la ROM sin modificar en los escenarios comprobados.
¿Y el mapa y el retrovisor?Se llegó a investigar y prototipar también el conmutador de SELECT para recuperar esas vistas, y técnicamente se puede hacer. El problema es que el mapa y el retrovisor del juego original no son simplemente dos imágenes que puedas colocar en una esquina: utilizan Mode 7, HDMA y una serie de cálculos que estaban pensados para dividir la pantalla en dos.
Después de ver hasta dónde había que llevar el apaño para conservarlos, decidí que
esta versión debía apostar por una pantalla limpia y por una vista de carrera completa, en lugar de volver a llenar el espacio recuperado con elementos heredados de la distribución antigua.
En la v2.0, SELECT tiene otra función:
alterna entre la cámara de horizonte amplio y la cámara clásica durante la carrera. No afecta a los menús. El mapa y el retrovisor siguen ocultos durante las carreras a pantalla completa, mientras que el mapa de resultados de Time Trial sí se muestra cuando corresponde.
Y, sinceramente, creo que queda bastante mejor así.
La cámara de horizonte amplioLa principal novedad de la v2.0 es una segunda cámara que ofrece una perspectiva más alta y abierta, con su propio horizonte. Está activada por defecto en los 20 circuitos y también se utiliza en los momentos de presentación y transición de la carrera, incluida la intro, el acercamiento a la parrilla y el giro de cámara al terminar.
No se trata únicamente de cambiar la posición vertical de la vista. Los fondos y los elementos del decorado también tienen que encajar con el nuevo encuadre.
Por eso se han adaptado los 20 circuitos: los cielos se han extendido para evitar bandas negras y saltos de color, las zonas añadidas continúan el tono de la franja de degradado adyacente, las nubes de Koopa Beach aparecen en las tres alturas desde la parrilla de salida y los pilares de Ghost Valley se han recortado para evitar que se dibujen fuera de los límites previstos.
¿Preferís la cámara anterior? Yo creo que se complementan bien: una es más parecida a la original (pero sin limitaciones de altura), mientras que la otra te permite ver más lejos. No hay que entrar en ningún menú ni reiniciar la carrera. Pulsad SELECT durante la carrera para cambiar entre la vista de horizonte amplio y la cámara clásica. Cada pulsación alterna entre ambas; en los menús el botón no hace nada.
Cámara nueva por defecto / Segunda cámara
La nueva vista es la opción predeterminada de esta versión, mientras que la anterior pasa a ser una segunda cámara opcional.
Glitches corregidos en la v2.0Además de la nueva cámara y los fondos adaptados, esta versión corrige varios fallos que habían quedado pendientes:
- Cara duplicada del jugador al ganar: desaparece el resto de cara que podía quedarse dibujado durante la cámara de meta.
- Parpadeo de montañas durante la carga: corregido.
- Ghost Valley: corregidas las líneas negras y azules intermitentes.
- Mancha de aceite: la detección de contacto utiliza el umbral nativo del juego, evitando resbalones falsos.
- Letrero ROUND: vuelve a estar centrado en la vista nueva.
- Attract mode: las demos se han resincronizado para que los rivales aparezcan correctamente al arrancar en frío.
También se ha reducido el trabajo de CPU en el
attract mode sin alterar el resultado renderizado.
Sobre las ralentizaciones en Bowser CastleDurante el desarrollo aparecieron ralentizaciones que obligaron a perfilar y optimizar el código. Antes de empaquetar la v2.0, comprobé también si el tartamudeo que se aprecia en ciertos giros duros a alta velocidad era consecuencia del
hack o un comportamiento que ya existía en el juego original.
Las pruebas se realizaron en bsnes, con estados reproducibles y maniobras guionizadas.
En
Bowser Castle 1, con una sesión de Time Trial arrancada en frío, la ROM original USA, la v1.5 y la v2.0 registran
exactamente los mismos tics de reloj: 11640 de 12000. Los tiempos parciales y finales y la trayectoria también coinciden.
En
Bowser Castle 3, utilizando un estado de carrera real, la v1.5 y la v2.0 registran igualmente los mismos tics:
2993 de 3000, con idéntico tiempo final.
La conclusión es que las ralentizaciones observadas en esas maniobras son un comportamiento nativo del juego, no una regresión introducida por la v2.0. Por ese motivo,
no se han modificado la planificación de la IA ni las físicas para intentar ocultarlo.
Se conserva de la v1.5La v2.0 mantiene las correcciones y mejoras incorporadas en la versión anterior:
- Resultados de Time Trial: se muestran correctamente todas las vueltas, sus resaltados, TOTAL y el mapa con BEST 5 / BEST LAP.
- Tamaño de los rivales: progresión geométrica corregida, con un factor aproximado de 1,3703 en las franjas T1–T10 y los once dibujos originales intactos.
- Parrilla de salida: corrección lateral desde el comienzo del acercamiento, conservando la intro, el zoom y la órbita.
- Sombras de Lakitu: corregidas en pantalla completa y en las dos vistas del modo para dos jugadores.
Pruebas y compatibilidadLa validación de la v2.0 se ha realizado mediante emulación, principalmente en bsnes y RetroArch.
Entre las comprobaciones efectuadas:
- Comparación de 2950 fotogramas del attract mode arrancado en frío frente a la ROM original, con resultado idéntico salvo la firma del hack.
- 27 estados de carrera reales, con 120 fotogramas comprobados por estado, sin diferencias de renderizado en las comparaciones realizadas.
- OAM de las cámaras de meta idéntica a la de la versión aprobada.
- Baterías de regresión de miles de fotogramas en los circuitos protegidos.
- Comparaciones de rendimiento en Bowser Castle 1 y Bowser Castle 3 frente a las versiones anteriores y, cuando corresponde, frente a la ROM original.
Importante: estas pruebas no equivalen a una validación exhaustiva de todos los escenarios posibles. No afirmo haber realizado nuevas pruebas de la v2.0 en consola real o flashcart. La prueba de hardware real que se había documentado correspondía a la v1.4. Tampoco se ha probado el core SNES9x utilizado en el hilo.
Si encontráis algún fallo, indicad el emulador y el core utilizados, el modo de juego y, si es posible, adjuntad un save state reproducible.
DESCARGAParche en formato BPS:Super Mario Kart - Fullscreen Edition (v2.0) (by Psicopompo) (bps).zip
Parche en formato IPS: Super Mario Kart - Fullscreen Edition (v2.0) (by Psicopompo) (ips).zip
El paquete contiene los parches IPS y BPS, LÉEME.md, README.md y los registros de cambios en español e inglés.
No incluye la ROM original.Instalación y datos de la ROM- ROM de origen: Super Mario Kart (USA) limpia, sin cabecera.
- Tamaño original: 524.288 bytes.
- CRC32 original: CD80DB86
- CRC32 parcheado v2.0: E9B8C210
- MD5 original: 7f25ce5a283d902694c52fb1152fa61a
- MD5 parcheado v2.0: 0f4d2c70b6057c8af55f584244d78911
- SHA1 original: 47E103D8398CF5B7CBB42B95DF3A3C270691163B
- SHA1 parcheado v2.0: 3C0A0D7B4E87CD6A54151F0B953A003E9353E65B
- Tamaño parcheado v2.0: 1.048.576 bytes.
- SHA256 parcheado v2.0: 008a5cedb569d07487b93dbfdb0c09c98f2b30cfecfe41916fee663c5fc9992b
Aplicad
un solo parche, IPS o BPS, sobre la ROM original limpia. Recomiendo BPS porque permite comprobar que la ROM de origen es la correcta.
El parche es acumulativo:
no debe aplicarse sobre la v1.4 ni la v1.5. Hay que partir de la ROM USA original. Las versiones PAL no están soportadas.
El checksum interno está corregido.
Datos de la versión- Versión actual: v2.0.
- Región: USA / NTSC, 60 Hz.
- Modo de un jugador: pantalla completa de 224 líneas, con cámara de horizonte amplio por defecto y cámara clásica seleccionable mediante SELECT durante la carrera.
- Modo de dos jugadores: conserva la pantalla partida original.
- Parches disponibles: IPS y BPS.
- Emuladores probados: bsnes y RetroArch.
- En el título aparece una pequeña línea Fullscreen Edition · Psicopompo bajo el copyright.
Enlaces de interésCréditosEl diseño del
hack, la investigación, las decisiones técnicas y la dirección de las pruebas son de Psicopompo, con asistencia de IA para el análisis del código, la implementación de cambios y el desarrollo de herramientas de comprobación.
La IA ha sido una herramienta de trabajo, no un sustituto de la investigación, las decisiones de diseño ni la validación de los resultados.
Super Mario Kart es propiedad de Nintendo. Este proyecto es un
hack no oficial y no incluye ni distribuye la ROM original.