› Foros › Retro y descatalogado › Consolas clásicas
EMaDeLoC escribió:
(GIF de Conker64)
EMaDeLoC escribió:Conker64, la eminencia suprema en la consola, lo explicó muy bien.
Aquí explicando el modo 2 Cycle:
A-Jensen escribió:¿Multitexturas? desde cuando a un código especifico para ello? es simplemente colocar una textura transparente sobre otra. Vamos, que te lo has inventado tu, como si en Tomb Raider, Crash o Legacy of Kain no hubiese agua con transparencias.
EMaDeLoC escribió:Y desde luego no me lo invento. Manual de programación de la N64, página 187 (189 del PDF):
Se consigue al activar el modo 2 Cycle que efectua dos ciclos de color combiner en un mismo pixel. Página 175, 177 del PDF.
Entiendo que ese es el proceso que coje los samples al vuelo según lo vaya requiriendo la situación y luego volviéndolos a vaciar. Tambien entiendo que es aquí donde se pone el límite de voces simultáneas para que la caché de samples de audio nunca supere un limite establecido e interfiera con la asignación de RAM a otros procesos.Accommodate the DMA callback routine:
As occasion demands, to transfer the waveform data in ROM to RDRAM, you must accommodate the DMA callback routine called from the synthesizer driver. To do this, you need to set the pointer to the DMA initialization routine in the synthesizer driver's configuration structure. This DMA initialization routine is called once for each physical voice; it initializes the DMA buffer with the first call and is set to return the pointer (ALDMAproc) to the function called when actually requiring the waveform data. ALDMAproc receives the address, length, and state pointer of the required data and returns the pointer to the buffer storing its data as the return value.
• Add VADPCM for AIFC + .n64 SDK/src samples
EMaDeLoC escribió:Como siempre magistrales tus clases sobre la consola.
¿Llegaste a leer la información que dí de la RDRAM de la N64? Fue aquí y aquí.
¿Te cuadra con algo que sepas sobre desarrollo en la consola? ¿Se habla en alguna parte de un tamaño recomendado de lectura de datos de la RAM?
¿Sabes como compara el z-buffer de cada pixel? ¿El z-buffer esta en la RAM?
.
Conker64 escribió:2000 sprites a 60fps
Conker64 escribió:- 500MB/s de lectura, de escritura o combinados? De escritura creo que se va a quedar muy lejos de los 500MB/s, en los tests de fillrate conseguía algo cercano a 200MB/s, dibujando rectángulos 320x240x16bit de 1 sola textura sin hacer nada más (target 60fps), sin recarga, tendría que revisar muy bien, porque en las multiplicaciones si me equivoqué en algo puede ser muy arriba o muy abajo el resultado, comprobar que corre de fondo o si podría sacar más, que seguramente sí, porque eran tests en libdragon.
Conker64 escribió:La CPU consigue muy poco ancho de la RAM, es el componente más castigado del sistema en ese aspecto, tienes los tests del autor de CEN64 aquí, que probablemente los hizo en ASM donde nada interfiere (nota: tests sin cache, obligando a la CPU a acceder a RAM)
https://forums.cen64.com/viewtopic.php?f=15&t=35
Conker64 escribió:- El Z-Buffer se hace por hardware, la comparación de pixel la hace el RDP al activar el bit Z-compare (y algunas cosas más), es muy rápido, aunque repercute en el rendimiento, hace 2 lecturas o escrituras por pixel.
Conker64 escribió:- Sí, el Z-Buffer es una región en la RAM.
EMaDeLoC escribió:Conker64 escribió:- Sí, el Z-Buffer es una región en la RAM.
¿Pero es una región separada del framebuffer o cada pixel de este tiene información de Z? Creo recordar que alguién dijo que debido al bus de 9bits cada pixel eran 15 bits de color y 3 bits de Z (o 16 y 2, no lo recuerdo bien). Por lo que he comentado antes, sería mucho más óptimo de esta manera al solicitar a la RAM paquetes de mayor tamaño.
Aviso: según como sea esto, se nos puede caer el mito del World Driver Championship.
Vaya tochete técnico...
EMaDeLoC escribió:¿Pero es una región separada del framebuffer o cada pixel de este tiene información de Z? Creo recordar que alguién dijo que debido al bus de 9bits cada pixel eran 15 bits de color y 3 bits de Z (o 16 y 2, no lo recuerdo bien). Por lo que he comentado antes, sería mucho más óptimo de esta manera al solicitar a la RAM paquetes de mayor tamaño.
Aviso: según como sea esto, se nos puede caer el mito del World Driver Championship.
cegador escribió:¿qué quieres decir con lo de WDC? Explícamelo como si fuera una abuela.
cegador escribió:¿qué quieres decir con lo de WDC? Explícamelo como si fuera una abuela.
radorn escribió:El Zbuffer es otro framebuffer de 16 bits independiente de los búferes gráficos, y, además, debido a cómo funciona la RAM o el controlador de memoria, para mejorar el rendimiento un poco (o, para no ahogarlo tanto), se suele almacenar en una región apartada de la de los gráficos. Creo que es algo de que cada bloque de 1MB o 512K tiene replicados ciertos mecanismos de control, así que se alivia algo el problema de la latencia si escribes alternativamente a uno y a otro.
EMaDeLoC escribió:Pero compartiendo el mismo bus no veo como puede aliviarse el problema.
Descripción escribió:Este cartucho de "trucos" tiene una funcion opcional por la cual se puede activar un programa de monitorización junto con el juego. El cartucho, además, tiene un botón extra que si es pulsado durante una partida con el monitor activado, permite acceder a funciones de búsqueda de trucos y también visualizadores de memoria, incluído uno que interpreta toda la RAM con el formato de datos de framebuffer, con el visualizador enfocado en el framebuffer que se está mostrando en pantalla actualmente.
La mayoría de juegos tienen un buffer doble, como el caso de GoldenEye, demostrado en este video, que le permite mostrar una imagen mientras la siguiente se está dibujando. En el primer ejemplo del video se puede ver esto claramente, pues he tenido la suerte de interrumpir el renderizado cuando el siguiente cuadro aún no ha terminado de renderizarse.
También hay juegos con triple buffer
Además de esto, desplazándonos por el resto de la RAM acabamos encontrándonos con el Z buffer, otro búfer de 16bits del mismo tamaño que los de imagen, que almacena los valores de profundidad a medida que se va dibujando la escena para poder determinar si el pixel nuevo debe dibujarse por encima del anterior.
En el segundo ejemplo vemos una de las torres de vigilancia con cristales, y vemos como estos no se muestran en el framebufer. No tengo una teoría clara en este momento de cómo funciona el tema de las transparencias, pero, imagino que, para empezar, se dibujarán en último lugar, después de que todo lo demás haya sido renderizado, y tendrán algún tratamiento especial.
radorn escribió:Bueno, el bus en sí no tiene por que tener tanta latencia o ninguna. La latencia viene dada por las celdas de la RAM y el proceso para leer y escribir en ellas. Tu mismo analisis de que leer tiene mas latencia que escribir lo atestigua.
Conker64 escribió:Tras poner todas las capas para el escenario más complejo de SOTN aún rondaba los 100fps, podría poner Alucard y algún bicho gigante, más algunos efectos, pero libdragon no es el mejor ejemplo para eso, especialmente cuando no se usa hilos (audio sobretodo) ni el RSP.
Conker64 escribió:Los 400K serían rectángulos, recuerdo que daba lo mismo si eran de 4x4 que de 8x8, a partir de 16x16 perjudicaban el rendimiento, en 3D habría que estudiarlo todo de nuevo, de todas formas si la consola llegaba a 100-120K texturizando como en el caso de World Driver, alcanzaría cifras superiores si todo fuera goraud o flat, creo que podríamos partir de ahí.
SuperPadLand escribió:La música del SotN es en midi?
Conker64 escribió:Vorbis es la primera librería que porté a N64
radorn escribió:@SuperPadLand Entonces, música mono a 22k con mucha compresión cargando los buses con el tráfico y los procesadores con la decodificación, y probablemente editada para acortar partes.
Aceptarías usar un 64DD (real o emulado por el cartucho) como almacenamiento extra para música?
O adaptaciones MIDI...
MasterDan escribió:@SuperPadLand No me parece que un cartucho gran tamaño se salte las normas de los 90. En aquella época no se usaron por temas de costos, pero se podrían haber usado tranquilamente (otra cosa es que serían más caros que los de NEOGEO).
Igualmente, me parece que en si el tamaño de cartuchos de la 64 es el menor de sus problemas (Siendo los importantes el tamaño de la caché de texturas y la latencia de la RAM si he oído bien).
SuperPadLand escribió:Tú mismo te contestas de porqué un cartucho de 256 megas se saltaría las normas de los 90, pero además se salta otras normas de espacio físico sino busca como funcionan realmente los cartuchos de 64 megas en N64 para saltarse el límite de 32 megas de aquellos años.