› Foros › Retro y descatalogado › Consolas clásicas
BMBx64 escribió:Si nos fijamos solo se ven estas capas a través de la ventana y ahí viene la primera optimización, comprobar desde dentro hacia afuera para recoger información sobre los tiles que quedan tapados por otros, en lugar de pintar todo a lo bruto, creo que eso ya daría margen para mucho más.
BMBx64 escribió:
Lo de la cache es porque el RDP lee de ahí, si quieres pintar desde la RAM puedes hacerlo con la CPU.
--
Flash-Original escribió:Dejo este video aqui que me ha parecido interesante para quien quiera jugar traducciones en n64
BMBx64 escribió:@Señor Ventura
Pues me ha dado por observar que hace la PSX en ese escenario y me he encontrado con esto..
Muy parecido a lo que estoy haciendo sin optimización, obviamente hay clipping fuera de la pantalla (no queda así) y la distribución de los rectángulos es bastante distinta, para la hierba parecen tiles de 32x64 a lo bestia sin preocuparse de los huecos, yo he usado 16x16, quizás debería probar con esa configuración, los arboles van formados sueltos, la copa y el tronco, yo eso lo hago en 5 o 6 pasos y lo que es más importante, no veo que elimine de dentro hacia afuera que es lo que quiero hacer, pero igual puede que sea cosa del emulador y no lo que hace el juego.
@dirtymagic
Yo no lo haría pero la opción está ahí
@Flash-Original
Cualquier cosa que tenga que ver con la consola es bienvenida, el hilo suele estar muy parado
--
Ayer entré un rato al irc con los programadores de la scene N64, cosillas:
- Hay un emulador de GB y de SNES en desarrollo para N64, ambos programados por la misma persona y en ASM, usando el RSP y el RDP para acelerar.
- Motivo por el que additive blending no es posible en el RDP: el ADD para incrementar luz si que está disponible en el RDP, lo que pasa es que los componentes RGB se dan la vuelta al pasar de 255, supongamos que la suma de ADD de 2 luces amarillas es X, si ahora hubiera una tercera luz la mezcla quizás sobrepasaría el rango en lugar de llegar a una luz "máxima intensificada", solución? Mezcla controlada por software.
- El RDP se puede configurar para saltarse lineas de pintado en el buffer de pantalla, por ejemplo en un modo entrelazado, eso aumenta el ancho de banda.
- Libdragon tiene "bugs que se desconocen" y aunque los tests que lanzo funcionan en mi consola PAL, podrían no hacerlo en otras, incluso el medio en el que se carga la rom puede causar problemas en PI (interfaz del cartucho), la nueva librería que están preparando aún no es pública.
- El F3DEX2 acelera el cálculo de vértices (pone más polígonos que Fast3D, la primera revisión), ya lo puse en el hilo pero es bueno confirmarlo.
- El modo doble buffer lleva vsync, ese es el motivo del porqué los juegos bajan de 60 a 30, de 30 a 20 de golpe, etc, se puede mejorar usando triple buffer, pero no se aconseja desactivar el vsync por el tearing (cosa que hace PS2 en los God of War por ejemplo, curioso), hay juegos que podrían funcionar más suaves en N64 al usar Expansion pak, precisamente porque pasan de un modo doble buffer a triple buffer (requiere más memoria)
john D9 escribió:[boing] un emulador para snes y otro para Gb en desarrollo, son excelentes noticias se nota que tienen grandes proyectos es un gusto saber que hay personas poniendo talento y dedicación en la n64, seria genial poder disfrutar juegos de snes en la n64.
Es interesante ver como luce el escenario de castlevania SotN con todas sus capas en conjunto y la sensación de movimiento de las plantas.Flash-Original escribió:Dejo este video aqui que me ha parecido interesante para quien quiera jugar traducciones en n64
no conocía ese artefacto pero creo que el everdrive 64 o el 64 drive son mejores opciones para jugar traducciones hize un breve análisis del everdrive https://www.youtube.com/watch?v=QUKjvvOVw2c&t=25s
Señor Ventura escribió:BMBx64 escribió:Si nos fijamos solo se ven estas capas a través de la ventana y ahí viene la primera optimización, comprobar desde dentro hacia afuera para recoger información sobre los tiles que quedan tapados por otros, en lugar de pintar todo a lo bruto, creo que eso ya daría margen para mucho más.
Esta es una de las cosas que en las 16 bits descartas hacer por falta de potencia, pero teniendo potencia de proceso de sobra en la n64, no es una mala idea, desde luego.
Así cargas en memoria solo los tiles que vayan a ser mostrados, y a cada frame se hace el cálculo pertinente.
Veo que vas avanzando bien, ánimo con eso
Señor Ventura escribió:@Sexy MotherFucker Estoy leyendo que la N64 tiene un fill rate de 62.5 mpixels/s con el mip mapping y el resto de efectos desactivados. Mas del doble que la playstation.
Pero la saturn es la que verdaderamente es el mostruo aquí. Si esto está bien, y no hay nada que no cuente, sus números son para frotarse los ojos:
https://segaretro.org/Sega_Saturn/Hardware_comparison
Editado: Joder, estoy leyendo de la misma página una comparativa entre las 16 bits, y que artículo mas engañoso, la madre que los parió... ya lo había leído hace tiempo, pero no me había percatado que son los mismos que comparan las saturn/psone/n64, y viendo las cosas que cuentan, como para fiarse...
https://segaretro.org/Blast_processing
diego777 escribió:Señor Ventura escribió:@Sexy MotherFucker Estoy leyendo que la N64 tiene un fill rate de 62.5 mpixels/s con el mip mapping y el resto de efectos desactivados. Mas del doble que la playstation.
Pero la saturn es la que verdaderamente es el mostruo aquí. Si esto está bien, y no hay nada que no cuente, sus números son para frotarse los ojos:
https://segaretro.org/Sega_Saturn/Hardware_comparison
Editado: Joder, estoy leyendo de la misma página una comparativa entre las 16 bits, y que artículo mas engañoso, la madre que los parió... ya lo había leído hace tiempo, pero no me había percatado que son los mismos que comparan las saturn/psone/n64, y viendo las cosas que cuentan, como para fiarse...
https://segaretro.org/Blast_processing
Yo habia leido en algun foro que saturn tenia filtros tipo n64 y que nunca lo usaron!
O sea que pudiendo evitar el pixelado 3d no pudieron implementarlo en ningun juego.
sera verdad?
https://youtu.be/NpCnnSkxIMg?t=8m17s
Lo encontre!
el piso no pixela.
Y eso no es magia.
es hardware.
Sexy MotherFucker escribió:@Expansion_Pack yo no lo considero así, creo que SIN expansiones de RAM ambas ofrecen resultados muy similares, pero con puntos fuertes y débiles diferenciados.
Con 4 MB de RAM extra o cartuchos de ROM ya hay poca discusión: Saturn.
Expansion_Pack escribió:Sexy MotherFucker escribió:@Expansion_Pack yo no lo considero así, creo que SIN expansiones de RAM ambas ofrecen resultados muy similares, pero con puntos fuertes y débiles diferenciados.
Con 4 MB de RAM extra o cartuchos de ROM ya hay poca discusión: Saturn.
Ok!
¿Y la N64 cuan capacitada está para 2D? Imagino que poco ya que vimos poquísimos juegos en 2D. ¿Sería posible un Metal Slug en ella de la calidad de Saturn?
Expansion_Pack escribió:Entiendo por 'fillrate' ratio de relleno, ¿no?
Me has dado mucha info técnica interesante aunque muchas cosas no las entiendo porque para mí es lenguaje demasiado técnico
Se ha hablado muy poco de las 2D de la 64, molaría que se especificara su potencial. ¿Es posible un Metal Slug en ella? Me refiero a tal cual se ve en una Saturn.
Expansion_Pack escribió:Me gustaría saber porqué la Saturn es el monstruo que es para juegos 2D, por encima de PSX.
Señor Ventura escribió:@dirtymagic ¿Casi 12.000 sprites la saturn, y 4 planos de scroll?.
Joder, ¿es en serio?.
varios escribió:Expansion_Pack escribió:Me gustaría saber porqué la Saturn es el monstruo que es para juegos 2D, por encima de PSX.
Porque Sega preparo el hardware de la Saturn para las 2D. Cuando vió que Sony daba más importancia al apartado 3D añadió apaños (añadir chips para manejo de 3D) que hicieron la consola más compleja de programar de sui generación.
A nivel de 2D es la mejor de su generación, a nivel 3D no. Los juegos de lucha o de shoot em up son mejores en Saturn y más con el cartucho de 1 Mb o 4 Mb) n general que en otras consolas de su generación, ya que a nivel de hardware 2D era la mejor.
https://www.youtube.com/watch?v=_IAqWJyUguI
https://www.youtube.com/watch?v=5jxCiPWUEzM
https://www.youtube.com/watch?v=kMWhT7G_k9g
varios escribió:Expansion_Pack escribió:Me gustaría saber porqué la Saturn es el monstruo que es para juegos 2D, por encima de PSX.
Porque Sega preparo el hardware de la Saturn para las 2D. Cuando vió que Sony daba más importancia al apartado 3D añadió apaños (añadir chips para manejo de 3D) que hicieron la consola más compleja de programar de sui generación.
A nivel de 2D es la mejor de su generación, a nivel 3D no. Los juegos de lucha o de shoot em up son mejores en Saturn y más con el cartucho de 1 Mb o 4 Mb) n general que en otras consolas de su generación, ya que a nivel de hardware 2D era la mejor.
https://www.youtube.com/watch?v=_IAqWJyUguI
https://www.youtube.com/watch?v=5jxCiPWUEzM
https://www.youtube.com/watch?v=kMWhT7G_k9g
dirtymagic escribió:Señor Ventura escribió:@dirtymagic ¿Casi 12.000 sprites la saturn, y 4 planos de scroll?.
Joder, ¿es en serio?.
Perdón es o no y ,es decir 8.333 o 3.333 Quads/sprite el VDP1 y 4 planos de scroll el VDP2, en teoría podría dibujar tantos sprites el VDP1, pero yo creo que el fillrate lo limita a 698 Quads/sprite ,de ahí que se diga que se utilizaba más el VDP2 que le dobla en fillrate y sacaría 1396 Quads/sprite.
Salud
Señor Ventura escribió:dirtymagic escribió:Señor Ventura escribió:@dirtymagic ¿Casi 12.000 sprites la saturn, y 4 planos de scroll?.
Joder, ¿es en serio?.
Perdón es o no y ,es decir 8.333 o 3.333 Quads/sprite el VDP1 y 4 planos de scroll el VDP2, en teoría podría dibujar tantos sprites el VDP1, pero yo creo que el fillrate lo limita a 698 Quads/sprite ,de ahí que se diga que se utilizaba más el VDP2 que le dobla en fillrate y sacaría 1396 Quads/sprite.
Salud
¿Entonces su límite son 1396 sprites, y no 8333, o 3333?.
BMBx64 escribió:De todas formas en un escenario real con 1300 sprites no me veo un for y que cada uno tenga su lógica, su física y sus colisiones, bastante le debe costar ya a esas cpus tener un bucle activo tan ancho con más instrucciones dentro.
BMBx64 escribió:En principio este test daba 104fps con tiles de 16x16, tras hacer que las texturas se pinten en orden para no recargarlas innecesariamente sube a 169fps, otros tests de scroll que he hecho previamente también suben de rendimiento y si diseñara específicamente mapas de scroll para usar tiles grandes y que se repitan (como el Yoshis Story) el rendimiento podría ser muy elevado.
He usado la función qsort para organizar en tiempo real los tiles en pantalla, básicamente primero se genera el scroll de forma habitual, pero en lugar de pintarlo se llena una lista, esa lista se ordena por número de textura y luego entonces se pinta, en este caso es una lista de 280 posiciones (16x16 de 320x224 son 20x14 tiles).
BMBx64 escribió:Por otro lado ya entiendo porqué libdragon no trae transparencias por hardware o otros efectos, para que la consola haga transparencias hay que ponerla en modo CYCLE1, libdragon solo trae los 2 primeros modos, el FILL y el COPY, ya iré poniendo novedades sobre esto.
BMBx64 escribió:En cuanto a planos con zoom en N64 la penalización no parece demasiado elevada, una vez tenga corregido x_scale podría empezar a montar planos que hagan zoom sin demasiado problema.
Sexy MotherFucker escribió:@Señor Ventura tú que creo que estás más puesto que yo en Neo Geo; ¿Metal Slug a 60 o 30?
No tan humillante como tener que trabajar a 30 fps en neo geo xDD
BMBx64 escribió:@Señor Ventura
Lo que vengo a decir es que esos datos de poco me sirven, lo primero que me planteo es que puedo hacer con esos "1300" sprites, en N64 no sería puedes poner X rectángulos, sino simplemente "puedes ponerlos", ya la velocidad que consigas depende de ti y de otros factores, la que tenga mejor cpu va a mover mejor el código de los mismos.
Esa función que he hecho es muy necesaria, en los juegos 3D en un escenario no usan 300 texturas como yo hago en un mapa de tiles, igual tienen 50 o 60 texturas activas en plan todo el suelo entero con la misma por ejemplo, también hay un listado para pintar en orden.
Aunque no quieras repetir el plano principal si deberías repetir partes del fondo en otros planos, porque dejas más rendimiento para poner sprites, utilizas la cache que está para acelerar y los planos cíclicos suelen repetir.
int tile_sort(int ox,int oy,int num)
{
int ot, zx, zy;
ox=(ox+scroll_posx)/scroll_sizex;
oy=(oy+scroll_posy)/scroll_sizey;
for(zx=0;zx<tile_partx[num];zx++)
{
for(zy=0;zy<tile_party[num];zy++)
{
ot=(ox+zx)+((oy+zy)*scroll_row);
if (ot<scroll_max) // max
{
if (ot>-1)
{
ot=bit_map0[ot];
if (ot==1) { return 1; }
}
}
else
break;
}
}
return 0;
}
uint16_t tile_sort(int ox,int oy,int num)
{
ox=(ox+scroll_x)>>bit_x;
oy=(oy+scroll_y)>>bit_y;
for(int zy=0;zy<tile_party[num];zy++,oy++) // y
{
int ot=ox+(oy*bit_row);
if (ot>-1) // min
{
for(int zx=0;zx<tile_partx[num];zx++,ot++) // x
{
if (ot<bit_max) // max
{
if (bit_map0[ot]==1) { return 1; }
}
}
}
}
return 0;
}
__rdp_ringbuffer_queue( 0x0000FFFF );
BMBx64 escribió:AEn cuanto a la penalización por usar 1cycle, no es exactamente 4 veces más lento
BMBx64 escribió:A mi una vez alcanzadas unas buenas 2D me encantaría pasar a las 3D.
Señor Ventura escribió: y a 640x480, que esa es otra.