abril 19, 2021

La tercera bala de plata

No tenía pensado hablar más de la Switch Pro, pero lo de esta semana en los foros de Retrasera ha sido cuando menos digno de enmarcar. Este post es largo, muy largo, pero es la tercera bala de plata necesaria para destruir toda la mentira colectiva de la Switch Pro.

Aunque están en el blog, os dejo las otras balas de plata:

El enorme ridículo de los medios con Switch Pro

Los medios «especializados» llevan años sacando noticias de foros, Retrasera y NeoFAG, ambos foros se han convertido en el agregador de noticias favorito y lo de la Switch Pro llega a niveles completamente ridículos.

En Retrasera hay un tal NateDrake, el cual tiene un canal de Youtube  bajo el nombre de Nathe the Hate, que se ha convertido en el principal insider sobre la Switch Pro. Un mindundi, un mierdas al que los de retrasera han elevado al nivel de insider y que todos los medios están sacando a primera fila como si fuese alguien con información verídica e importante.

Veamos con una simple búsqueda de Google para ver el enorme ridículo de los medios y como han convertido a este farsante, luego descubriréis los motivos, en una fuente fiable.

Dejemos esto colgado para posterior vergüenza de los medios.

Los mensajes de CorralX en Resetera

Hace unos días apareció un tal CorralX en el hilo de la demencia consumada de Retrasera sobre la supuesta Switch Pro. El que los medios leen para defecar sus fake news sobre dicha inexistente consola. Sus mensajes ha sido un jarro de agua fría para el cumulo de mentirosos liderados por el tal NateDrake.

Técnicamente PS5 y XSX también son compatibles a nivel de ISA tanto en CPU como en GPU, pero hacer que la compatibilidad hacía atrás funcione al completo les ha costado un gran esfuerzo para ambas compañías y Sony incluso ha dicho que unos pocos títulos podrían no funcionar o mostrar problemas.

Hay más en la compatibilidad que no solo la ISA, y los juegos pueden hacer todo tipo de suposiciones sobre el hardware que hay por debajo en las consolas, el cual es fijo.

(Eso sin considerar que muchos juegos son lanzados con comportamientos incorrectos que simplemente funcionan en un hardware especifico, pero que pueden no hacerlo en el nuevo, así que se busca preservar y emular ese comportamiento incorrecto).

Lo más seguro es que la mayoría del software funcionará sin problemas, pero se va a necesitar un testeo extensivo y algunos arreglos específicos a algunos juegos en el driver en algunos casos.

(La retrocompatibilidad) no es algo que deba asumirse como cierta en el caso de Nintendo o NVIDIA.

El sistema operativo y el ecosistema son la parte fácil.

Los problemas vienen desde los detalles a muy bajo nivel del hardware, los cuales pueden cambiar radicalmente de una GPU a otra y entre generaciones.

En teoría, tu no deberías hacer suposiciones y trabajar solo con lo que la abstracción de la API te de .

En la práctica es muy común en las consolas el abuso de detalles arquitecturales e incluso de bugs si esto te da un porcentaje de potencia adicional.

Preservar y emular esas diferencias es la parte compleja.

Por encima de ello no puedes asumir que un juego esta completamente correcto, debido  que muchos no lo son. Tienen fallos y hacen uso de la API incorrectamente, pero resulta que funcionan  correctamente debido a las peculiaridades del hardware o del driver. 

Estos pueden dejar de funcionar correctamente en el nuevo hw/sw debido a que si garantizas una retrocompatibilidad sin parches, entonces te toca a tí añadir los hacks en el driver o incluso el hw para emular o buscar una solución alternativa a esas particularidades.

(Los juegos en iOS y Windows) funcionan porque no pueden explotar esos detalles arquitecturales de bajo nivel en Windows, ya que hay diferentes venderores y diferentes generaciones de hardware de un mismo vendedor, así que esas suposiciones no son válidas en todos los clientes y configuraciones.

En consolas (esto es especialmente cierto para los estudios internos del fabricante) tu tienes una sola pieza de hardware, así que todo es juego limpio si significa darle un mejor producto a tus clientes.

Muchas compañías abusan de esos detalles incluso en PC (normalmente cuando portan desde las consolas) pero también se aseguran de detectar tu hardware y suelen tener una versión (del juego) «segura» y «correcta» para todo el mundo.

Lo mismo ocurre en iOS y Android (pese a que hay juegos que abusan excepcionalmente de detalles arquitecturales aquí también) 

También, cuando se lanza nuevo hardware, hay montones de hacks similares en los drivers del día uno para preservar los juegos existente pero rotos que habían hecho las suposiciones erroneas (ya sea de manera voluntaria o por desconocimiento)

Y los vendedores de hardware lo odian debido a que lo tienen que probar todo y buscarle soluciones a todo. Cuando un juego de alto calibre no funciona en tu nuevo hardware, a los jugadores no les importa de quien es la culpa. Le echan la culpa a quien vende el hardware desde que funcionaba bien en anteriores generaciones.

Este es el motivo por el cual Sony en PlayStation 2 y PSP añadio el hardware integro de la primera PlayStation para poder correr los juegos de esta de manera nativa. Es el motivo por el cual Nintendo añadio el hardware entero de la consola anterior en los SoC de GBA, Nintendo DS y 3DS. El motivo por el cual la Sega Genesis/Mega Drive tiene en su interior el hardware de Master System/Mark III.

La gente asume erróneamente que porque un hardware es de la familia NVIDIA Tegra si se pone en un NVIDIA Tegra posterior va a funcionar sin problemas, así tal cual. Cuando eso no es verdad. Tener la misma ISA, el mismo sistema operativo ayuda, pero tienes que añadir cosas como los aceleradores e incluso la forma de comunicarse con la memoria.

¿Un ejemplo de ello? La emulacion de la Xbox original es un infierno enorme por el hecho que hay piezas que son únicas de la consola y no han sido documentadas. Y hablamos de una consola con hardware de PC, por lo que no es fan fácil como tener una CPU y una GPU con una ISA compatibles. Ahora bien, ¿son tan compatibles las GPU actuales de NVIDIA con la ISA de las GeForce Maxwell?

(La GPU de Switch y su sucesora) están relacionadas de la misma manera que las GPU de Maxwell y Ampere lo están. Diferentes arquitecturas de una misma compañía, una es una evolución de la otra.

Algunos os preguntaréis. ¿Sí una es una evolución de la otra? ¿Cómo es posible que puedan haber problemas de compatibilidad? Por el hecho que las GPU no ejecutan un programa, sino que en PC los programas shader son compilados el vuelo por el controlador, en consolas debido a que el hardware es único no se hace la compilación por el driver gráfico, sino que los shaders ya se encuentran en un binario convertido.

Lo que mucha gente ignora, y lo podéis consultar en esta página, es que las ISAs de Maxwell-Pascal no es la misma que la de Volta, ni la de Turing ni la de Ampere.

Es decir, es una situación completamente distinta a la de Sony y Microsoft con AMD donde si que se han asegurado que la GPU sea retrocompatible en lo máximo posible. El único SoC NVIDIA Tegra que funcionaría sería en teoría el X2 y ni eso aseguraría una retrocompatibilidad al 100%.

De nuevo, esto no es verdad y es la GPU de hecho la mayor preocupación para la compatibilidad.

Ya he explicado en posts anteriores el por qué es el caso.

No será un problema para el 99% de los títulos pero requiere un testeo adecuado y las soluciones apropiadas por parte de Nintendo o Nvidia.

Por la enorme diferencia en la ISA de la GPU sería un problema mucho mayor, Nintendo y NVIDIA necesitan reescribir por completo la comunicación del sistema operativo con la GPU. El problema es que además la ISA esta relacionada con el código de los shaders, por lo que la mayoría no funcionarían en absoluto. Todos los shaders deberían descompilarse y volverse a compilar para comprobar que tienen el funcionamiento correcto en los juegos y no ocurren errores.

El farsante se pone nervioso

Lo explicado por CorralX en el hilo de resetera ha puesto totalmente nervioso a NateDrake, ya que ha salido a responderle a CorralX desde su propio canal de Youtube, desde el cual se ha hundido en el barro hasta el cuello solito.

Os pongo el vídeo en su canal, donde demuestra su enorme ignorancia en cuanto a hardware.

Lo que dicen es que es para enmarcar, en serio, os lo transcribó:

Debido a que es un nuevo SoC, este no es el Tegra X1, entonces por definición, mmm, este va a ejecutar código distinto que no es compatible a nivel de binario con la Switch actual …

Esto es la hostia, ahora resulta que el código no será binariamente compatible, no ha entendido realmente nada. En realidad todos los SoC con ISA ARM son compatibles a nivel de binario, el problema del que hablaba CorralX es sobre el comportamiento inusual del código que podría dar problemas de funcionamiento en los juegos, no que el binario no sea compatible. En fin, sigamos con el vendemotos.

… así que, ¿qué significa esto en términos del pueblo llano? …

El estafador intelectual sabe que esta tratando con ignorantes de los que se aprovecha y lo dice en su puta cara. ¡Es que es increible!

… significa que los juegos, los juegos actuales no funcionarán en el nuevo SoC. Así que, ¿como lo solucionan? Bien, hay tres formas en las que ellos pueden hacerlo de la manera correcta.

Veamos lo que dice el vendemotos ensalzado a fuente fiable por los medios y especialmente por Retrasera, que nos vamos a reir.

La primera de ella es emulación, emulación por software, que no es lo que pienso que vayan a hacer. Pero lo hemos visto en Xbox y Microsoft ha sido extremadamente exitosa con ello y lo han hecho con su Xbox Series X y su compatibilidad hacía atrás.

Ahora resulta que Xbox Series X emula a la Xbox One, increible.

En todo caso la emulación de Switch se puede hacer desde otro SoC. Por cierto, os dejo un vídeo, que no se si había puesto antes a modo de troleo.

En realidad se puede emular la Nintendo Switch en uno de los SoC más potentes para smartphones y tablets, el cual no es de NVIDIA. Obviamente la emulación no es la forma en la que Nintendo tirará de compatibilidad hacía atrás ya que no la asegura al 100% y tiene problemas de rendimiento.

Volvamos a las palabras del vendedor de crecepelo:

También lo hemos visto en el caso de Sony con PS5 y los juegos de PS4, quiero decir, simplemente funcionan. No tienes que pensar sobre ello, funcionan, no hay mejoras. mmm, mmm, si la implementación de Sony es por software, no estoy familiarizado en como lo hacen, pero pienso que hay algún tipo de virtualización o una capa de translación ahí.

No sabe de lo que habla, pone palabras y las combina sin tener ni puta idea. Las capas de translación de código es interpretación y no emulación. En el caso de PS5 y las Xbox Series, la compatibilidad es por hardware directo, AMD ya se ha asegurado de ello por ser una petición directa de Sony y Microsoft.

Con la Switch no pienso que vayan a utilizar emulación, lo que pienso que van a hacer, y de nuevo este soy yo especulando, por lo que no tengo ninguna idea de como van a resolver esto…

Recordad que esto es una reacción a los posts de CorralX en Retrasera, quien ha afirmado que la retrocompatibilidad no esta del todo asegurada solo por usar un SoC Nvidia Tegra más nuevo. Esto es Nate the Hate en pleno control de daños, ya que le han hecho una pillada enorme.

… pienso que lo van a hacer en hardware. Ahora bien, no estoy diciendo que vayan a tener un Tegra X1 entero funcionando lado a lado con el nuevo SoC. Aunque es algo que ya han hecho con anterioridad en su hardware…

Preparaos que vienen curvas.

… no esta fuera de sus posibilidades, quiero decir, si lo piensas, la Nintendo Wii y como emulaba o ejecutaba los juegos de Gamecube. Ya sabes, existe ese hardware físico dentro de esos sistemas.

Atención, la Nintendo Wii que utilizaba el hardware de Gamecube tal cual, necesitaba emular el hardware de Gamecube. ¡Brillante, cuanto menos brillante por parte de NateDrake!

Pero en este punto estamos hablando de una nueva generación, pero no estamos hablando de una revisión. ¿Cierto?

¿Entonces si no es una revisión? ¿Cómo es que la llamái Switch Pro y no Switch 2? Pregunto.

Así que pienso que este SoC va a tener un Tegra X1 Lite, colocado ahí de alguna manera. Tendrá lo suficiente del X1 para que, ya sabéis, pueda ejecutar los juegos existentes.

¿Dentro del SoC principal, fuera? No lo aclara en ningún momento, es más lo del Tegra X1 Lite no aclara a que se refiere realmente. Lo deja caer así como así.

Adelanto un poco…

Pero si hablamos de un nuevo SoC, entonces esas cosas están encima de la mesa. mm, quiero decir, que definitivamente este SoC tendrá una característica, que, que básicamente permitirá que un limitado conjunto del características del X1, justo las necesarias para conseguir que los juegos actuales se ejecuten, que será lo que definitivamente harán. Creo que será parte del coste que veremos en este hardware, donde veremos el incremento en el precio.

Habla de una característica, como algo mágico dentro del SoC, el cual no es otra cosa que meter un X1 entero. Es cierto que NVIDIA podría colocar el Tegra X1 entero y re-organizarlo por completo dentro del SoC de la siguiente consola, en realidad no le haría falta colocar todos los elementos ya que el Northbridge sería común y podría conseguirlo posiblemente utilizando un 33% del área del nuevo SoC, pero eso es mucho solo por la retrocompatibilidad.

La tercera posibilidad es que el nuevo hardware tenga características que provengan de la arquitectura del X1, y estoy seguro que Nintendo le ha hablado específicamente a NVIDIA. «Mira, este SoC que estáis construyendo para nosotros, tiene que tener algún tipo de emulación con el X1».

Es otra vez juntar palabras, por otro lado un hardware no emula a otro, si quieres implementar el funcionamiento de un hardware en concreto lo implementas en la circuitería y punto. Y si, de nuevo ha mostrado su ignorancia. Pero os voy a pasar algo que va en ese sentido para dejaros las cosas más claras, y no, no tiene que ver con el hardware.

NVIDIA tiene una ISA intermedia o virtual llamada PTX, la cual es compatible hacía adelante con todas las arquitecturas de NVIDIA y sus generaciones. PTX lo que permite a los programadores es tener el control exacto de la secuencia de las instrucciones que se ejecutan a bajo nivel. Desde que PTX esta considerada una ISA virtual, esta es trasladada a la ISA de cada una de las arquitectura de NVIDIA y es ejecutada en la nueva GPU.

Desconozco si en Switch los desarrolladores utilizan PTX para escribir el código que ejecutan los shaders. Deberían hacerlo y esto sería suficiente para asegurarse en parte la compatibilidad, pero los problemas de los que habla CorralX persistirían, ya que no son problemas de compatibilidad de código, sino de comportamiento del código lo que hace que la retrocompatibilidad de problemas en sistemas bajo la misma ISA.

Creo que esto es más que suficiente, no obstante no vais a ver esto comentado en los medios respecto a la supuesta Switch Pro. Su fuente principal de información es alguien con un enorme desconocimiento del hardware, un gigante con los pies de barro.