[HILO OFICIAL] Nintendo 64

@EMaDeLoC y @SuperPadLand
No sé si es que estoy espeso y os estáis refiriendo a otra cosa. Pero los "saltos bruscos" de fps de 60 a 30 a 20 a 15... (o 50 a 25 a 16,7 a 12,5 en PAL) se debe a que se usa doble buffer para pintar la pantalla y la tasa de fps va ligada al refresco de la pantalla. Me parece que ya se ha hablado de esto en el pasado y que incluso puse este vídeo que lo explica bastante bien (aunque está en inglés) : https://www.youtube.com/watch?v=SyK8_9NPU6E

La explicación del doble buffer comienza en el 1:55. Básicamente tienes un buffer donde se construye la imagen y se manda al monitor para que la dibuje, pero mientras se está dibujando no se puede generar otra imagen en el buffer porque está ocupado. Entonces se crea un segundo buffer donde generar el siguiente frame mientras se dibuja el actual, y cuando se ha terminado de dibujar en el buffer 1, el monitor comienza a dibujar el buffer 2 y se borra lo que hay en el buffer 1 para volver a generar el siguiente frame. Como el monitor tiene un refresco de 60 Hz puede dibujar hasta 60 imágenes por segundo (una imagen cada 16 milisegundos). Esto sería el caso ideal.

¿Pero qué pasa cuando no hay potencia suficiente para generar la imagen en 16 ms? Pues que se vuelve a enviar la imagen del último buffer que está completo mientras se le da tiempo al otro buffer a terminar de construir su imagen. Si tarda menos de 33 milisegundos entonces puede empezar a dibujarse en el siguiente refresco del monitor. Cambiaría de imagen cada 2 refrescos de 60 Hz, por lo que percibiríamos 30 imágenes por segundo.
Si todavía se necesitase más tiempo (entre 33 y 50 ms), necesitaría un refresco más y se cambiaría de imagen cada 3 refrescos (20 fps). Si necesita repetir la imagen un refresco más bajaría a 15 fps (60/4). Y la tasa sigue bajando en fracciones de 60 cuanto más tiempo se necesite para terminar de dibujar el frame (12 fps para 5 refrescos, 10 fps para 6 refrescos...).

Hay una forma de evitar saltos tan bruscos y es tener un tercer buffer que permita ir generando una nueva imagen sin tener que esperar a los tiempos de refresco del monitor. Si por ejemplo se tardan 20 ms en generar los frames, hasta los 33 ms que hay que esperar para que el monitor dibuje la imagen hay un tiempo que con doble buffer no se está aprovechando para nada. Ahí es donde se empezaría a dibujar una tercera imagen para tenerla lista en el refresco más cercano. De este modo, el buffer 1 necesita dos refrescos para terminar y dibujar su imagen, pero el buffer 2 a los 21 ms ya se está generando, y a los 40 ms se está generando el buffer 3 que acabaría a los 60 ms. En el monitor veríamos los siguiente:
-Primer refresco a los 16 ms. No se dibuja nada porque no ha terminado de generar la imagen en el buffer 1.
-Segundo refresco a los 33 ms. Se dibuja el buffer 1.
-Tercer refresco a los 50 ms. Se dibuja el buffer 2.
-Cuarto refresco a los 67 ms. Se dibuja el frame 3.
-Quinto refresco a los 83 ms. Se dibuja el buffer 1 de nuevo (ha empezado a generar la imagen cuando el buffer 3 ha terminado a los 60 ms y ha terminado a los 80 ms).
-Sexto refresco a los 100 ms. Se dibuja el buffer 2 (ha empezado a generar la imagen cuando el buffer 1 ha terminado a los 80 ms y ha terminado justo a los 100 ms).
-Séptimo refresco a los 116 ms. Se repite la imagen del buffer 2 porque el buffer 3 no ha tenido tiempo de terminar (acabará a los 120 ms).

En el ejemplo de arriba con triple buffer estamos consiguiendo unos 50 fps (de cada 6 refrescos se repite 1) que es una mejora muy bestia que si se estuviera usando doble buffer. Pero hay muchos inconvenientes:
-Tener un buffer extra significa dedicar parte de la memoria RAM a este cometido. Y además de un buffer de imagen también hay que generar su correspondiente Z-buffer así que es un gasto importante.
-Se está introduciendo entre 1 y 2 fps de lag porque la lógica del juego sigue funcionando sin esperar a lo que se muestra en pantalla.
-Se introduce stuttering (tirones) cuando se repite algún frame. Si la carga gráfica es constante el tirón ocurre a intervalos regulares por lo que es todavía más notable y molesto.
Por eso, aunque la ganancia en rendimiento es considerable, con el tiempo me he vuelto más defensor de emplear doble buffer y controlar la carga gráfica para no saltar del framerate objetivo (sea 60 ,30 o 20) y tener una experiencia constante que experimentar esos tirones y el lag (que en este caso es de 2 fps como mucho, pero porque estamos rozando los 60 fps. Si rondáramos los 20 fps el lag podría ser de 6 o 7 frames).

Luego está el tema de desactivar el V-sync, que no sé si la N64 puede funcionar de esta manera. Lo que ocurre en este caso es que en lugar de dibujar las imágenes de arriba a abajo desde el principio hasta el final, se dibuja hasta donde de tiempo y el segundo buffer comienza a dibujar desde esa línea hasta lo que le de tiempo y se va mandando al monitor para que lo dibuje según le llega. El resultado es el "screen tearing" o cortes horizontales en la imagen que son molestísimos si hay un poco de movimiento, pero técnicamente el rendimiento sería de 60 fps y 0 lag todo el rato. Muy falso todo, porque si la potencia no da vas a ver muchos cortes en cada refresco del monitor (2 cortes si el juego fuese a 20 fps en doble buffer) y además los cortes seguramente van a ir variando de posición. Se ve en el vídeo que es puesto antes a partir del 6:00.

Los juego en N64 usan doble buffer por regla general. Pero Quake 2 cuando detecta el Expansion Pak cambia a triple buffer (y también aumenta la profundidad de color aprovechando la memoria extra) y con eso consigue un rendimiento medio más alto.
https://www.youtube.com/watch?v=SyK8_9NPU6E
He probado algunos juegos en la n64 y me he dado cuenta que las pilas han muerto con la consecuente pérdida de partidas. Tengo experiencia cambiando pilas de juegos de Gameboy y advance, pero cuando abrí el cartucho de 64 me di cuenta de que la pila iba diferente. No se ven las dos patillas, solo una, y la otra va por debajo. Como puedo cambiarla por otra?
He buscado tutoriales y lo hacen con un cúter, yo preferiría hacerlo bien con soldador y tal.
thens escribió:He probado algunos juegos en la n64 y me he dado cuenta que las pilas han muerto con la consecuente pérdida de partidas. Tengo experiencia cambiando pilas de juegos de Gameboy y advance, pero cuando abrí el cartucho de 64 me di cuenta de que la pila iba diferente. No se ven las dos patillas, solo una, y la otra va por debajo. Como puedo cambiarla por otra?
He buscado tutoriales y lo hacen con un cúter, yo preferiría hacerlo bien con soldador y tal.


No tiene mucho misterio, es similar a las otras consolas que comentas. Calentando con el soldador puedes sacar la pila fácilmente y luego soldar otra igual. Lo más fácil es comprar una pila que tenga las patillas ya puestas.
@X_Glacius ¿en este caso no se podría poner un portapilas?
coyote-san escribió:@X_Glacius ¿en este caso no se podría poner un portapilas?


Sí, se puede poner perfectamente. Pero teniendo en cuenta que las pilas duran 15-20 años… cuántos cambios nos quedan? Jaja
@coyote-san en NES, SNES y N64 sí, es mejor poner un portapilas y usar una CR2032 de buena calidad que dé 20 años. Existen ya cacharros que dumpean los saves y los pueden sobreescribir, si se tercia.
thens escribió:He probado algunos juegos en la n64 y me he dado cuenta que las pilas han muerto con la consecuente pérdida de partidas. Tengo experiencia cambiando pilas de juegos de Gameboy y advance, pero cuando abrí el cartucho de 64 me di cuenta de que la pila iba diferente. No se ven las dos patillas, solo una, y la otra va por debajo. Como puedo cambiarla por otra?
He buscado tutoriales y lo hacen con un cúter, yo preferiría hacerlo bien con soldador y tal.

Yo de la 64 no he cambiado ninguno, pero para la gameboy no encontré ninguna pila de soldar y lo que hice fue amputar las patillas de la pila cortando a ras de la pila con unos alicates de modelismo y una cuchilla, y hacer un sándwich de cinta aislante con la pila entre las patillas.

Con unos alicates como estos
http://www.madeinscale.com/594-thickbox ... a-fina.jpg

Y aquí un vídeo del proceso de corte y ensamblado, sólo que el lo hace a un Pokémon de Gameboy con un cuchillo pero es básicamente lo mismo.


Si no te queda más remedio que hacerlo así, como fue mi caso, las pilas las venden en el super, y el alicate que te digo es la herramienta ideal para el trabajo corta la unión entre la pila y la patilla sin dañar ni la patilla ni la pila, la marca da un poco igual si no vas a cambiar muchas, lo importante es que la cuchilla sea lo más fina posible. Otra idea es usar una funda termoretráctil en lugar de cinta aislante para hacer el sándwich patillas -pila.
@X_Glacius lo difícil que veo es que las patillas son verticales, no veo el punto de soldadura. De todas formas lo investigaré.
Son estas https://amzn.eu/d/3XOY8CB ?
thens escribió:@X_Glacius lo difícil que veo es que las patillas son verticales, no veo el punto de soldadura. De todas formas lo investigaré.
Son estas https://amzn.eu/d/3XOY8CB ?


Sí. En Youtube tienes muchos videos:

Sacado del hilo de novedades retro:

aki7 escribió:Se han publicado los prototipos que existen del juego Riqa para Nintendo 64. Un juego que fuera cancelado, y al que describen como una especie de mezcla entre Perfect Dark y Tomb Raider, y que ahora cualquiera puede probar teniendo en cuenta que este juego aún requería de más tiempo de desarrollo ya que no está terminado. Más detalles en https://archive.org/details/riqa-build-of-2000




Este sí que no lo conocía de absolutamente nada, no pinta mal, especialmente si tenemos en cuenta que Tomb Raider en N64 sólo tenemos el Indiana.
SuperPadLand escribió:Sacado del hilo de novedades retro:

aki7 escribió:Se han publicado los prototipos que existen del juego Riqa para Nintendo 64. Un juego que fuera cancelado, y al que describen como una especie de mezcla entre Perfect Dark y Tomb Raider, y que ahora cualquiera puede probar teniendo en cuenta que este juego aún requería de más tiempo de desarrollo ya que no está terminado. Más detalles en https://archive.org/details/riqa-build-of-2000




Este sí que no lo conocía de absolutamente nada, no pinta mal, especialmente si tenemos en cuenta que Tomb Raider en N64 sólo tenemos el Indiana.


No me suena de nada pero qué buena noticia!
MVG hace una reivindicación al arte y genialidad de desarrollar juegos en N64 y PS1:



La única pega que le veo es que recalca que la N64 solo tiene 4KB de caché de texturas, y me mosquea que siempre se diga este dato como una debilidad de la consola frente a la PS1, cuando la PS1 tenía la mitad, 2KB. [enfado1]
Me parece increíble que a estas alturas todavía nadie haya comprobado estas cosas y matizado los pros y cons de cada sistema en este aspecto, cuando lo único que hace falta es leerse un poco sus respectivos SDK.
EMaDeLoC escribió:MVG hace una reivindicación al arte y genialidad de desarrollar juegos en N64 y PS1:



La única pega que le veo es que recalca que la N64 solo tiene 4KB de caché de texturas, y me mosquea que siempre se diga este dato como una debilidad de la consola frente a la PS1, cuando la PS1 tenía la mitad, 2KB. [enfado1]
Me parece increíble que a estas alturas todavía nadie haya comprobado estas cosas y matizado los pros y cons de cada sistema en este aspecto, cuando lo único que hace falta es leerse un poco sus respectivos SDK.


Desde que están las demos de la mega textura y el bump mapping, no hay argumento que valga.

Me surge una pregunta, ¿cuales son las consolas que imponen técnicamente una mayor distancia con respecto a sus competidoras a lo largo de la historia?, porque se me antoja que la N64 puede estar en un top 3 perfectamente.
@Señor Ventura Yo me la juego y digo que es la que más distancia impone, pero más que por mérito de sus desarrolladores, por nacer las de su generación en plena transición de motores gráficos 3D y su estandarización.

Saturn es el ejemplo del uso de tecnicas 2D para crear un 3D convincente.
PS1 es la primera máquina 3D real, pero primitiva.
N64 es la primera en utilizar técnicas que se consideran estandar del 3D: filtro trilineal, mip-mapping, anti-aliasing, Z-buffer...
Dreamcast es la primera consola de 3D estandarizado, es decir, que sus librerias 3D tienen pocas diferencias con las de estandares de la época como OpenGL, Glide o DirectX.

A partir de ahí no hay más innovaciones grandes, solo meter más y más polígonos.

Pero bueno, también entre consolas de 8 y 16 bits ha habido grandes saltos tecnológicos.
A ver si podéis refrescarme la memoría. Estoy dándole otra pasada al Banjo Kazooie y en la zona de lava desde donde se accede a la fase Mad Monster Mansion hay un camino que da hacia la hermana de Gruntilda y un pequeño agujero en la pared a su lado por el que no puedes entrar. Pensé en convertirme en hormiga pero el hechizo de Mumbo se deshace si te alejas. ¿Que demonios hay detrás del agujero y como puedo entrar? Quizás sea una de esas cosas que dejaron a medias tras la cancelada conexión con el Banjo Tooie...
Conker64 escribió:@EMaDeLoC
La PS1 no es 3D real, le falta Z [oki]


Imagen



Lo cual me hace pensar en los juegos 3D en las 16 bits. Hay ejemplos en que observas que no les tiembla un polígono, ¿como suplen el buffer Z? xD

Puedes notar un temblequeo en las texturas con polígonos, pero seguramente por falta de precisión (tienen que ser enteros).

Imagen
Imagen
Señor Ventura escribió:Lo cual me hace pensar en los juegos 3D en las 16 bits. Hay ejemplos en que observas que no les tiembla un polígono, ¿como suplen el buffer Z?

¿Qué tiene que ver el buffer Z con que los polígonos tiemblen o no?
El tembleque de vértices (no el de texturas) tanto en Playstation como en Saturn tiene más que ver con la falta de precisión subpíxel del raster que por la falta de tener una unidad de coma flotante (con enteros puedes usar fixed point que da bastante el pego).

El de texturas, es por que a la GPU de ambas no les llega nada de información de la Z.

Sí que es verdad que lo de las 4k es el chivo expiatorio de los problemas de memoria unificada de N64 y la gente suele poner a eso como el problema que fastidia toda la arquitectura sin mucho sentido, y compararla con otras arquitecturas en ese aspecto menos. La Saturn por ejemplo no tiene ni cache de texturas y es más rápida en acceder a la información de la textura que PS1. La PS1 solo tiene 2k pero si te sales de esa cache solo pone en compromiso a la GPU. Si te sales de la cache de la N64 arrastras a todos los componentes, pero luego lo puede compensar en parte con la burrada que es su CPU y el RSP.
Misscelan escribió:El tembleque de vértices (no el de texturas) tanto en Playstation como en Saturn tiene más que ver con la falta de precisión subpíxel del raster que por la falta de tener una unidad de coma flotante (con enteros puedes usar fixed point que da bastante el pego).

De hecho el RSP de la 64 trabaja con fixed point.
Ahora que me fijo... en el segundo gif no se aprecian deformaciones, pero se ven trazos del fondo del circuito que deberían quedar por detras de las imágenes de mario y fox, y sin embargo se ven por delante. Era obvio que no hay buffer z, aunque son cosas diferentes.
Conker64 escribió:@EMaDeLoC
La PS1 no es 3D real, le falta Z [oki]

Mmmm... Bueno, el GTE es capaz de manejar vectores con tres coordenadas, algo de 3D si tiene, pero como he dicho, primitivo.
Señor Ventura escribió:Lo cual me hace pensar en los juegos 3D en las 16 bits. Hay ejemplos en que observas que no les tiembla un polígono, ¿como suplen el buffer Z? xD

Las texturas temblantes no tienen nada que ver con el buffer Z, sino con la falta de corrección de perspectiva. Si haces un 3D por software y tienes potencia suficiente para añadir el cálculo de corrección de perspectiva, o simplemente algún atajo matemático que se acerque bastante, la textura no va a temblar al cambiar su perspectiva. En PS1 no se podía arreglar eso por CPU porque todo el pintado lo hacía la GPU y no se podía sortear, no al menos sin enormes sacrificios de rendimiento.

Misscelan escribió:La PS1 solo tiene 2k pero si te sales de esa cache solo pone en compromiso a la GPU. Si te sales de la cache de la N64 arrastras a todos los componentes, pero luego lo puede compensar en parte con la burrada que es su CPU y el RSP.

La GPU de PS1 puede leer una textura grande directamente de la memoria de vídeo y hasta del tamaño de la página de texturas, 256 x 256 píxeles, sin necesidad de almacenarla en el caché. Pero a un coste de rendimiento muy alto por lo que solo se usó con polígonos de forma puntual. Creo que en Resident Evil 2 para las texturas de los modelos, que suele usarse mucho en comparativas para decir que PS1 tenía mejores texturas que N64, cuando es más una excepción que una regla.
La N64 no puede saltarse la caché, todo lo que sea textura tiene que pasar por la TMEM (caché). Si quieres saltartela, has de hacerlo a golpe de CPU y pintando directamente en el framebuffer, y evidentemente es costoso en rendimiento y pobre en calidad.
RiGaL escribió:A ver si podéis refrescarme la memoría. Estoy dándole otra pasada al Banjo Kazooie y en la zona de lava desde donde se accede a la fase Mad Monster Mansion hay un camino que da hacia la hermana de Gruntilda y un pequeño agujero en la pared a su lado por el que no puedes entrar. Pensé en convertirme en hormiga pero el hechizo de Mumbo se deshace si te alejas. ¿Que demonios hay detrás del agujero y como puedo entrar? Quizás sea una de esas cosas que dejaron a medias tras la cancelada conexión con el Banjo Tooie...


No recuerdo,pero mira en la guía a ver si se puede entrar o si es mero adorno: https://www.guiasnintendo.com/guias-nintendo-64.html
SuperPadLand escribió:
RiGaL escribió:A ver si podéis refrescarme la memoría. Estoy dándole otra pasada al Banjo Kazooie y en la zona de lava desde donde se accede a la fase Mad Monster Mansion hay un camino que da hacia la hermana de Gruntilda y un pequeño agujero en la pared a su lado por el que no puedes entrar. Pensé en convertirme en hormiga pero el hechizo de Mumbo se deshace si te alejas. ¿Que demonios hay detrás del agujero y como puedo entrar? Quizás sea una de esas cosas que dejaron a medias tras la cancelada conexión con el Banjo Tooie...


No recuerdo,pero mira en la guía a ver si se puede entrar o si es mero adorno: https://www.guiasnintendo.com/guias-nintendo-64.html


Sí, justo ahí miré. Se entra con la transformación del mundo de la mansión, dentro está uno de los trucos de Cheato.

Ya que estamos, lo que sí es un misterio, si no recuerdo mal, es la puerta que hay en el hueco de un lateral del mundo del desierto al que solo se puede acceder o volando o con una alfombra cercana. No hay manera de abrirla.
RiGaL escribió:
SuperPadLand escribió:
RiGaL escribió:A ver si podéis refrescarme la memoría. Estoy dándole otra pasada al Banjo Kazooie y en la zona de lava desde donde se accede a la fase Mad Monster Mansion hay un camino que da hacia la hermana de Gruntilda y un pequeño agujero en la pared a su lado por el que no puedes entrar. Pensé en convertirme en hormiga pero el hechizo de Mumbo se deshace si te alejas. ¿Que demonios hay detrás del agujero y como puedo entrar? Quizás sea una de esas cosas que dejaron a medias tras la cancelada conexión con el Banjo Tooie...


No recuerdo,pero mira en la guía a ver si se puede entrar o si es mero adorno: https://www.guiasnintendo.com/guias-nintendo-64.html


Sí, justo ahí miré. Se entra con la transformación del mundo de la mansión, dentro está uno de los trucos de Cheato.

Ya que estamos, lo que sí es un misterio, si no recuerdo mal, es la puerta que hay en el hueco de un lateral del mundo del desierto al que solo se puede acceder o volando o con una alfombra cercana. No hay manera de abrirla.

Eso forma parte de las llaves y los huevos.

Si recuerdo correctamente, según leí en las revistas de la época los programadores estuvieron probando que se pudiera cambiar el cartucho con la consola encendida y querían conectarlo con banjo tooie de alguna manera, pero no consiguen hacerlo funcionar de manera consistente y se quedó como Easter egg en el primero y función aislada en el segundo.
EMaDeLoC escribió:[
La GPU de PS1 puede leer una textura grande directamente de la memoria de vídeo y hasta del tamaño de la página de texturas, 256 x 256 píxeles, sin necesidad de almacenarla en el caché. Pero a un coste de rendimiento muy alto por lo que solo se usó con polígonos de forma puntual. Creo que en Resident Evil 2 para las texturas de los modelos, que suele usarse mucho en comparativas para decir que PS1 tenía mejores texturas que N64, cuando es más una excepción que una regla.
La N64 no puede saltarse la caché, todo lo que sea textura tiene que pasar por la TMEM (caché). Si quieres saltartela, has de hacerlo a golpe de CPU y pintando directamente en el framebuffer, y evidentemente es costoso en rendimiento y pobre en calidad.


Me expliqué mal, no quería decir: "trabajar fuera de la cache" sino "qué pasa cuando buscas un dato y no está en la cache" y como creo que eso es el factor limitante en este caso y no el tamaño de la cache de texturas.

Como has mencionado la ps1 puede renderizar texturas fuera de la cache de hasta ese tamaño, siempre que hagas eso tardará el doble de tiempo en acceder. Este cuello de botella se queda limitado a este dominio, osea un problema que solo concierne a la GPU y que se soluciona cambiando cosas en la GPU.

La n64 se comporta de otra manara. Desde el punto de vista visual, daría un poco igual si tiene 1k de cache de texturas porque la CPU tiene margen de sobra para teselar el polígono y a la cache se podría subir la misma textura en varios trozos, el problema es lo que pasa cuando no está en la cache y hay que copiarla de la ROM a la RAM y luego al TMEM.

Si el framebuffer, el zbuffer, la música, los datos 3d o las texturas, que están todos en la misma RAM, quieren algo al mismo tiempo alguien se va a tener que esperar. Y con ese me refería a que arrastra a los demás componentes. Cuando eso pasase, y se generase un cuello de botella hay varias cosas que podrías hacer para reducir el acceso a RAM para cada componente, en el caso de las texturas puedes ahorrarte variantes y bajar la resolución. 4 u 8k de cache no creo que cambiase mucho esto.

TLDR: que la cache de texturas no creo que fuese el principal factor limitante en la calidad de las texturas en esa generación
5377 respuestas
1104, 105, 106, 107, 108