Consola Virtual SNES solo en New 3DS: Los motivos técnicos

Nintendo ha realizado tres cerdadas con la aparición de juegos de la Consola Virtual en New 3DS, las cuales son las siguientes:

  1. Dado que el sistema de cuentas no esta implementado en las consolas todavía no se puede realizar Crossbuy ya que los juegos no están asociados a una cuenta sino a una consola, esto hace que la gente tenga que volver a comprarlos de nuevo y encima a un módico y razonable precio de 8 unidades monetarias.fuck-you2
  2. Los juegos son solo para New 3DS.

Sobre el segundo punto he visto algo en Twitter que me ha producido risa y demuestra el nivel actual de los N64 Kids, capaces de agarrarse a un clavo ardiente con tal de justificar a Nintendo y decir burradas como las siguientes:

Captura de pantalla 2016-03-04 a las 8.26.08Ejecuta Nativamente…

Joe-Biden-Laughing-Shaking-his-Head

Si ejecutara nativamente entonces GBA tendría que tener el mismo hardware que SNES, lo cual es falso y ya comente en una entrada de no hace mucho como funciona GBA y cuales son sus entrañas, las cuales no son las mismas que las de SNES y por tanto no puede ejecutar los juegos de SNES nativamente por lo que los ports de SNES a dicha consola fueron reprogramados.

Como inciso y recordatorio, pienso que lo que debería hacer  Nintendo, y llevo tiempo diciendo esto, es lo que yo llamo Virtual Console Cloud basado en pagar una cuota mensual para el servicio o que este dentro de un servicio al estilo PSN+ o Xbox Live. ¿En que consistiría? Como los juegos de NES, SNES y N64 ocupan muy poco entonces estos se pueden distribuir libremente por internet a través de streaming, pero no sería juego en la nube ya que no se ejecutaría de forma remota sino que se ejecutaría de forma local. Pensad en esto como un servició al estilo Youtube en una aplicación concreta donde al buscar un juego se cargaría la ROM desde el servidor a la RAM de nuestra consola y se ejecutaría desde la misma de forma directa.

En todo caso no hace falta un hardware dedicado para ejecutar fielmente un juego antiguo, lo que se necesita es una emulación fiel por ciclo de reloj. Recordad que el hardware de las consolas antiguas ejecutaba las cosas al milímetro en lo que a tiempos se refiere y en esto se incluye a SNES. La ventaja que tiene Nintendo en conseguir un emulador nativo es muy grande ya que ellos tienen las consolas y pueden realizar la emulación sin tener que tirar de ingeniería inversa. Dado que el timing es importante en una consola así es necesaria una emulación que sea precisa en los ciclos de reloj y mantenga los tiempos de los juegos intactos, pero no es lo mismo que ejecución nativa porque para que la ejecución sea nativa el hardware ha de ser el mismo.

¿Por qué 3DS no puede emular SNES de forma precisa? Es por falta de potencia, esto tiene lógica si tenemos en cuenta que Wii  que si que tiene un emulador de SNES tiene una CPU mucho más potentes que el ARM11 de la 3DS base, si tiramos del Drhystone entonces tenemos:

  • 3DS: 268 Mhz*1.25 DMIPS/ciclo*1 núcleo (el otro esta reservado al sistema)= 335 DMIPS.
  • Wii: 729 Mhz*2.3 DMIPS/ciclo*1 núcleo (la consola solo tiene 1)= 1677 DMIPS.

¿Que tiene de especial New 3DS? El número de núcleos pasa de dos a cuatro aunque uno esta reservado para la CPU, la velocidad de los 268 Mhz a los 804 Mhz y se añade una cache L2 de 2MB en total en la CPU, lo cual debería servir para aumentar el rendimiento, teniendo en cuenta el uso de un solo núcleo entonces:

  • New 3DS: 804Mhz**1.25 DMIPS/ciclo*1 núcleo= 1005 DMIPS.

¿Es posible que la CPU de 3DS sea de tan poca potencia que no pueda emular con la suficiente velocidad los juegos de SNES o en su defecto no pueda ejecutarlos de forma fiel en el timing? Claro esta que no nos podemos olvidar de una cosa, 3DS puede ejecutar juegos de GBA que requieren más potencia, claro esta que el set de conjuntos e instrucciones es el mismo al usar ambas una CPU ARM pero el hardware de GBA tiene cosas como su PPU que tienen que ser emuladas y esta como comente en esa entrada es una versión derivada de la de SNES. ¿Tanto trabajo le cuesta al ARM11 en interpretar las instrucciones para la CPU de SNES? Bueno, no podemos olvidar que en muchos juegos la CPU de SNES se ponía en modo co-copresador y dejaba el mando a una CPU más potente, pero lo que esta claro es que si Nintendo no puede ejecutar los juegos de SNES de forma fiel en 3DS es que esta en su CPU no tiene la potencia suficiente.

oh-no

¿Os sorprende? Todos los que tenemos conocimientos técnicos sabemos este hecho, la CPU de 3DS es una mierda pinchada en un palo y uno de los mayores cuellos de botella del sistema. Su potencia es una fracción de la de Wii. Por otro lado pensad que por ejemplo PSP que lleva un MIPS R4000 que curiosamente tiene la misma potencia por ciclo en DMIPS que el ARM11 no puede emular al cien por cien de forma fiel tampoco en el modo 333Mz donde por la velocidad de reloj es mejor CPU que 3DS.

Personalmente no creo que los juegos de SNES corran nativamente en New 3DS, no creo que Nintendo pierda le tiempo con un emulador así de complejo, creo que no hay ningún secreto excepto que la 3DS estándar no tiene una CPU lo suficientemente potente como para que ciertos juegos con procesadores de apoyo corran lo suficientemente rápidos. En especial juegos como este:

yoshis_island3

Por lo que aunque resulta paradójico tweets como este:

Captura de pantalla 2016-03-04 a las 8.25.15

Tienen razón, el motivo por el cual SNES no es emulada bien por 3DS es porque no lo hace lo suficientemente bien y el motivo es la mierda de CPU que tiene. Y alto, que emular y ejecutar son dos cosas distintas, emular requiere una hardware con una potencia más alta que el hardware original.

Anuncios