› Foros › Retro y descatalogado › Consolas clásicas
Señor Ventura escribió:Si la scene de la megadrive tuviera algo como esto ya habríamos visto los resultados
Señor Ventura escribió:P.D:
La versión MSU1 también tiene su logro, o mejor dicho, se han buscado las vueltas para mejorar los números en resolución que suelen dar los vídeos reproducidos por el MSU1.
Funciona a 512x448, e IMAGINO que eso es posible porque el bad apple del MSU1 no es un vídeo, sino una transferencia de tiles a un plano normal y corriente. Es decir, que los gráficos no los reproduce el MSU1 como suele ocurrir con os vídeos, sino el sistema de vídeo de la super nintendo con los tiles que le llegan a la VRAM... el sonido ya si es cosa del MSU1, aunque del mismo modo que el original también podría haberse encargado el SPC700.
Señor Ventura escribió:Esto es posible porque gracias al ancho de banda que proporciona el MSU1 para tiles de planos (los tiles de sprites se transfieren a la velocidad normal a través del DMA), no hace falta descomprimirlos, ya que pueden viajar hasta a 9MB de datos por segundo de forma autónoma. El frame buffer solo tiene que conformar los scanlines con los tiles que llegan sin coste de procesamiento a velocidades de vértigo.
Señor Ventura escribió: aunque con la ventaja de que a 5,72KB por frame ahora solo viajan los tiles de los sprites, en vez de tener que compartirlo con los tiles de los planos (que ahora van aparte).
puch666 escribió:Realmente es una pena que no esté portado para la mega, y mas teniendo en cuenta que es uno de los pocos casos donde prácticamente no tendría problemas con la paleta de colores
puch666 escribió:Realmente es una pena que no esté portado para la mega, y mas teniendo en cuenta que es uno de los pocos casos donde prácticamente no tendría problemas con la paleta de colores
Diskover escribió:puch666 escribió:Realmente es una pena que no esté portado para la mega, y mas teniendo en cuenta que es uno de los pocos casos donde prácticamente no tendría problemas con la paleta de colores
Está en Mega Drive y en la mayoría de plataformas.
https://www.youtube.com/watch?v=BnYedfyCVug
ROM: http://www.sega-16.com/forum/showthread ... emo-thread
Tienes versión incluso en NES:
https://www.youtube.com/watch?v=qRdGhHEoj3o
ROM: http://www.geocities.jp/littlimi/arc/fc ... -03-22.zip
¡Y hasta en Atari 2600!
https://www.youtube.com/watch?v=Ko9ZA50X71s
ROM: http://atariage.com/forums/topic/226949 ... ?p=3119932
Señor Ventura escribió:Esto es posible porque gracias al ancho de banda que proporciona el MSU1 para tiles de planos (los tiles de sprites se transfieren a la velocidad normal a través del DMA), no hace falta descomprimirlos, ya que pueden viajar hasta a 9MB de datos por segundo de forma autónoma. El frame buffer solo tiene que conformar los scanlines con los tiles que llegan sin coste de procesamiento a velocidades de vértigo.
Con un rendimiento así, un juego con unos escenarios como los de un metal slug serían coser y cantar. Eso si, los sprites ya estarían contenidos a las limitaciones de siempre, aunque con la ventaja de que a 5,72KB por frame ahora solo viajan los tiles de los sprites, en vez de tener que compartirlo con los tiles de los planos (que ahora van aparte).
Gammenon escribió:No hay versión para 32X o Mega CD, ya puestos a meterle hardware extra al asunto?
magno escribió:Esto ya lo habíamos hablado tú y yo, @Señor Ventura....
TODO en la SNES es una transferencia de tiles a un plano normal y corriente (incluso MODO 7) y eso es lo que da la sensación de video. El MSU-1 no "crea" hardware para video en ningún caso ni "reproduce" nada de video, lo único que hace es enviar las tiles y el tilemap a VRAM y lo que se representa en pantalla es un plano de tiles normal y corriente.
Lo que sí hace el MSU-1, en cambio, es incorporar un DAC de audio para dos canales, de modo que SÍ genera audio analógico que luego aprovecha el mezclador de salida de la SNES para reproducirlo en pantalla de la TV. Esto se puede hacer gracias a que Nintendo reservó dos pines del conector para audio analógico, con sus canales L y R independientes, que se suman mediante un sencillo sumador a la salida del SPC700 que tiene la SNES, así puedes superponer los efectos sonores que genere éste con la música de fondo que genera el MSU-1
magno escribió:Uf, esto ha sonado totalmente comercial... ¿tú no serías el que hacías las descripciones de las cajas de las consolas de Nintendo en los 90?
magno escribió:En serio, esto también es erróneo totalmente. El MSU-1 no "proporciona" ningún ancho de banda, puesto que solo se puede comunicar con el resto de la SNES como cualquier ROM: a través del bus A. Esto implica que cualquier acceso a la PPU se tiene que hacer por un DMA que comunica los buses A (el del conector del cartucho) y el B (el de acceso a la PPU, que se ve desde fuera como los famosos "registros" en la zona $21XX y $42XX).
Así que el ancho de banda para planos y para tiles es el mismo, el que permita el DMA, que te recuerdo que funciona a 2.58MHz (aunque va a 1 byte por ciclo, es decir 2.58MBytes por segundo como mucho, no sé de dónde sacas el 9MB...). Obviamente, si estás enviando desde la ROM a la VRAM, tienes que hacerlo descomprimido, porque si estuviera comprimido primero hay que almacenarlo en RAM para el proceso de descompresión.
Como se suele usar el MSU-1 (y esto recuerdo que también te lo comenté) es crear un tilemap fijo en VRAM que no se toca nunca y que determina la zona visible en pantalla que tendrá el video. Luego por DMA vas enviando las tiles con los gráficos que forman el video desde el MSU-1.
magno escribió:¿De dónde has sacado toda esa información que has puesto? Es bastante errónea en su conjunto...
magno escribió:Efectivamente, la Mega aquí no sufre con la paleta Lo que me parece raro es que para hacer la demo en SNES hayan usado 2BPP, es decir, 4 colores por píxeles, ya que la gracia de la demo es utilizar el blanco y negro... la escala de grises es poco visible debido a la cantidad de movimiento del video.
EDITO: ya sé por qué lo de 2BPP, es porque querían reproducir las sombras en el suelo que aparecen en el video original de la demo.
Sexy MotherFucker escribió:¿No estás muy fino estos días verdad xD? Resident Evil de Saturn cómo primera versión, Final Fantasy Tactics en Snes, y ahora ésto; espero que estés en mejor forma para el debate de Gamecube
Magno lo ha aclarado todo, y hasta cosas de las que yo no tenía ni puta idea, muchísimas gracias.
Te doy un positivo de cualquier forma, ya que cómo a mí la scene de Super Nintendo no me interesa lo suficiente cómo para seguirla a diario, agradezco que alguien llene el hueco en EOL y me de la info masticadita.
Eso sí macho; duerme más horas, o tómate un café antes de postear, que echo de menos al Ventura con atención al detalle xDD. O es éso; o bien tienes que aprender a refrenar tus emociones y contrastar la info antes de sacar pecho por la Snes, yo en el pasado he tenido muchas cagadas por esto último (con la MD xD).
Te se quiere, pero en mejor forma.
Señor Ventura escribió:No me hagas caso, lo de los 9MB es un bus interno del MSU1 para tansferir las roms de la tarjeta SD a la memoria del cartucho. Podemos correr un tupido velo xD
Señor Ventura escribió:Si me gustaría preguntar algo sobre el DMA de la snes... ¿la frecuencia a la que funciona en realidad viene impuesta por las especificaciones de la VRAM?, o es nominal.
Señor Ventura escribió:En realidad, si el MSU1 aportase su propio DMA para transferir tiles de fondos ( y para ello se tendría que puentear a todo el sistema de vídeo por completo aportando uno enterito desde el cartucho), los tiles de los sprites no se podrían transferir por medio del DMA de los PPU's, así que ni por esas sería coherente.
Es una imposibilidad, mejor olvidarlo.
Señor Ventura escribió:Juraría que el sombreado ha estado presente en todas las versiones a 1BPP, así que lo de usar 2BPP es solo conseguir el logro de aportar mas información a la imagen.
Señor Ventura escribió:Si lo de que el frame rate lo está causando un problema con la descompresión por LZ2, pero realmente pinta subsanable para mejorar la tasa de refresco, hablamos de un salto cualitativo (en lo técnico) muy importante, al aportar no solo 2BPP, sino también streaming de audio a 32Khz.
magno escribió:La frecuencia de 2.68MHz viene impuesta por muchos factores; sabes que el micro de la SNES puede funcionar a 2.68MHz o a 3.85MHz, ambos vienen derivados del master clock de la SNES, que es de entorno a los 21MHz.
A su vez, estas frecuencias se derivan de hacer accesos a memoria de 6 ciclos de master clock (es cuando funciona a 3.85MHz) o 8 ciclos (cuando funciona a 2,68MHz).
La PPU de la SNES funciona a esos 21MHz, y necesita de 8 ciclos para completar las operaciones sobre cada píxel, por lo que digamos que se comportaría como si funcionara a 2.68MHz. Esto hace que para comunicarte con ella has de usar un reloj de 2.68MHz. Por tanto, el DMA de la SNES ha de funcionar a esa velocidad de modo que en cada ciclo de reloj haya un nuevo dato en la PPU.
Si la PPU hubiera sido menos compleja, o bien se hubiera diseñado en una electrónica más óptima (y mucho más cara), quizá podría haber realizado las operaciones en 2 o 3 ciclos de reloj, y hubiéramos tenido una CPU funcionando a 10 o 7 MHz.
magno escribió:Esa compresión no existe realmente, es una denominación que han usado ellos, y supongo por el nombre que se basa en considerar que el segundo plano de color siempre está inutilizado. Pero claro, si tienes que pasar por RAM para descomprimir, has perdido toda la capacidad de poner frames en pantalla que te permite hacer DMA desde el MSU directamente a VRAM.
Eso es lo mágico del S-DD1, que te permite hacer DMA desde la ROM a VRAM descomprimiendo al vuelo. Creo que el SA-1 también permite descomprimir y hacer DMA desde su RAM (la del cartucho) a la VRAM.
SUPER_ARU escribió:@Señor Ventura
estate mas tranquilo tio
Señor Ventura escribió:O bueno, ya que estamos, no limitar tanto el HDMA, que no necesita mas para ejecutar instrucciones de los PPU's, pero teniendo en cuenta que puede usarse para transferir datos a la RAM del spc700, tener un segundo bus simultáneo para descargar de trabajo al DMA hubiera sido impagable..
Señor Ventura escribió:Para ser sincero, nunca he terminado de ver la ventaja de descomprimir en la WRAM si luego no puedes transferir desde ahí mientras que al mismo tiempo transfieres desde la ROM. De ser así aumentarías virtualmente la tasa del ancho de banda, pero al parecer el DMA totalmente secuencial, y hasta que no termina de transferir desde la WRAM, no empieza a transferir desde la ROM. Y con el sonido por lo visto también sucede lo mismo, tiene que esperar su turno.
Señor Ventura escribió:Con respecto al SDD1, supongo que por el mismo motivo, descomprime tiles antes de enviarlos de la ROM a la VRAM a través del bus de datos, ¿no?. A menos que pueda acceder a las direcciones de memoria de la VRAM para meter mano a los tiles comprimidos desde ahí... de ser así, sería como tener un ancho de banda de casi 11KB por frame.
¿Cual es el método entonces?, ¿descomprime antes de enviar?, o una vez enviado.
titorino escribió:Aprovecho para preguntar una cosilla sobre el msu1.
¿Hay algun tutorial en español de programación ?
Me gustaria hacer unas pruebas con alguna rom pero no tengo ni idea de por donde empezar.
carlosyeah escribió:Matadme si quereis, pero no deberian sacar el bad apple SIN msu1?
Es como hacer trampa, yo quiero sonidos y graficos de la snes original....si no que chiste tiene.
SUPER_ARU escribió:@Señor Ventura
estate mas tranquilo tio
la mejor versión de bad apple sin duda
https://www.youtube.com/watch?v=240Vq6tIxio
magno escribió:La PPU de la SNES funciona a esos 21MHz, y necesita de 8 ciclos para completar las operaciones sobre cada píxel, por lo que digamos que se comportaría como si funcionara a 2.68MHz.
magno escribió:El HDMA es como es, no es que esté limitado. el HDMA es Horizontal DMA y lo que hace es aprovechar el tiempo de HBlank de la señal de video para actualizar valores de la PPU. Esto hay que verlo así: la PPU es un subsistema formado por un micro que lee una memoria (la VRAM) para formar una imagen en pantalla. Mientras está dibujando píxeles (parte activa de la señal de video NTSC/PAL) no le puedes tocar la memoria ni su configuración, porque estarías cambiando los datos que en ese instante está "consumiendo" de VRAM. Por tanto te tienes que esperar que no hay zona activa para actualizar tanto los datos de VRAM como el resto de configuración de la PPU, y esto ocurre en el VBlank, que dura bastante y ocurre una vez cada frame, y ocurre también en el HBlank, que dura 4.7us y es muy corto, aunque se repite cada línea.
magno escribió:Todos los DMA del mundo mundial son secuenciales, ya que el bus a una memoria RAM suele ser único; por ejemplo en los ordenadores, el DMA se hace directamente sobre el bus de datos de la RAM normalmente con el northbridge de la placa base. Aquí pasa lo mismo y además, como el micro ya tiene las interrupciones usadas para otras cosas, el DMA ha de detener al micro durante su ejecución, porque si no podría haber colisión y estar haciendo un DMA lyendo de RAM y a la vez la CPU escribiendo en la misma posición de RAM.
En estos sistemas que no son multitarea ni multihilo (vamos, que no tienen scheluder), todo tiene que esperar su turno; la forma en la que lo hagas es lo que hará que incremente el rendimiento o no de tu juego.
Y la ventana de descomprimir en WRAM es que no hay más narices: lees la entrada comprimida de ROM, procesas esos datos y los dejas en WRAM; si esos datos son tiles, les haces un DMA a VRAM; si es una paleta, pues los escribes en CGRAM, o si simplemente es el mapa de acción de una escena, los dejas donde están. No podrías descomprimir directamente a VRAM por varios motivos:
1) Es lento, ya que tienes que escribir en $2118/29 los dos bytes y estos registros se acceden en el banco $00 por lo que entonces el bucle de lectura desde ROM lo tendrías que hacer con direccionamiento largo
2) Es lento porque solo lo puedes hacer en el NMI (único momento en el que se puede escribir en VRAM), o bien poner la consola en forced vblank y entonces dejar la pantalla del juego en negro.
3) No es práctico porque normalmente la descompresión de bloques grandes puede durar un par de frames, por lo que por fuerza entonces tendrías que tener la pantalla en forced blank, si no irías viendo cómo se va actualizando la pantalla frame a frame y eso queda raro.
4) No es práctico porque los algoritmos de compresión se suelen basar en la repetitividad de los datos, por lo que tienes que ir a buscar datos repetidos a otras direcciones de memoria, y eso es muy incómodo y lento de hacer con la VRAM.
magno escribió:Se podría acceder a las direcciones de VRAM, pero no es práctico ni sencillo. El SDD-1 no descomprime ni antes ni después de enviar, sino durante. Es la magia de ese chip. Desde el punto de vista del programador, éste programa un DMA para traerse unos datos desde ROM, ponte que es un escenario del SF2A; el chip SDD-1 monitoriza el bus y se da cuenta de que quieres hacer un DMA desde una dirección de ROM y entonces intercepta el DMA y empieza a traerse datos desde ROM, que está comprimidos. Los va descomprimiendo byte a byte y en cada ciclo de DMA, pone en el bus de datos un byte ya descomprimido. Como te comenté, el DMA es a 2,64MHz y el S-DD1 funciona con el master clock de 21,47MHz, así que antes de que tenga que pone el dato en el bus tiene 8 ciclos de reloj para descomprimir el dato. Además, trabaja con bus de 16 bits de cara a la ROM, eso quiere decir que en cada ciclo de lectura de datos comprimidos se trae 2 bytes y, en el peor de los casos, tendría que poner 1 de ellos en el bus de datos como byte descomprimido, así que virtualmente va 16 veces más rápido que el resto del sistema durante ese DMA.
Sexy MotherFucker escribió:¿Podría ser este uno de los motivos por los que decidieron no dotar a la Snes de un outpout progresivo superior a los 256x224/39? ¿Porque no les salía "rentable" teniendo en cuenta la relativa lentitud de proceso? Después de todo a mayor número de pixels más operaciones sobre estos.
Al modo entrelazado de 512x448 sí le encuentro razón de ser para pantallas de inicio, menús, etc. Las 239 líneas de la vertical entiendo que "rascan" valioso tiempo de proceso en la C.P.U y que por eso apenas se usó ese ratio; de hecho juegos cómo Rendering Ranger R 2 usan ese outpout pero dejando líneas horizontales vacías...
Señor Ventura escribió:de hecho, si hubiese un cuello de botella en comparación con la resolución de 256x224, sería el sistema de vídeo quien la provoca.
512x224
Sexy MotherFucker escribió:Señor Ventura escribió:de hecho, si hubiese un cuello de botella en comparación con la resolución de 256x224, sería el sistema de vídeo quien la provoca.
Si precisamente eso es lo que estoy preguntando en el primer párrafo...
Sexy MotherFucker escribió:¿Este modo progresivo es viable? Es que no quiero caer en el típico argumento de que "en 16 años de scene nadie lo ha usado"; pero es que realmente desde 1990 entiendo que nadie lo ha usado en contexto de juego, si acaso para pantallas de presentación y poco más; ¿me estoy equivocando?
En serio; me flipa tu capacidad para ver el vaso siempre medio lleno después de que te den jarrazos de agua fría una y otra vez; y sabes que yo te lo digo sin maldad xDD
Sexy MotherFucker escribió:@Señor Ventura que me estoy refiriendo a que si debido a que el PPU tarda 8 ciclos en completar operaciones por pixel; quizás debieron pensar que un outpout de 320x224 habría demasiado downgrade cómo para considerarlo aceptable. El ejemplo de los 512x448 lo he puesto DE PASADA ya que estaba.
El resto son flipes emocionales tuyos defendiendo la Snes xDD
Esa es mi duda, y me gustaría que se me contestase en modo Snes-Defense-OFF para evitar impurezas.
Señor Ventura escribió:No siempre me equivoco, me rompes el corazón xDD
Coño, pues di 320x224 xDDD
Sexy MotherFucker escribió:Pensé que se sobreentendía xD. Y es que una de las pocas, poquísimas cosas, que yo siempre he valorado del hardware de la Snes es la alta frecuencia de reloj de sus PPUs; 21 megaherciacos, y ahora resulta que es un cifra algo engañosa. ¡Si el jarrazo de agua fría también ha sido pa mí! xDD
theelf escribió:Oigan, las dos demos tienen el codigo fuente disponible, especialmente la de github, parece un paso a paso de lo bien explicada que esta
No es mas logico en vez de intentar adivinar que hicieron... ver el codigo, y hablar de "lo que se hizo"?
Sexy MotherFucker escribió:Una duda técnica:
¿Podría ser este uno de los motivos por los que decidieron no dotar a la Snes de un outpout progresivo superior a los 256x224/39? ¿Porque no les salía "rentable" teniendo en cuenta la relativa lentitud de proceso? Después de todo a mayor número de pixels más operaciones sobre estos.
Señor Ventura escribió:Entiendo, básicamente se trata de un excedente de tiempo que puedes emplear, y no un bus virtual adicional (excepto para transportar tiles, puesto que ya queda conformada la imagen del scanline pertinente en el frame buffer y no se puede alterar, aunque deduzco que si puedes traer tiles que si puedan servir para el siguiente frame, siempre y cuando el sistema de vídeo exija que el frame buffer se construya con todo lo que hay en la VRAM, sin zonas reservadas).
Señor Ventura escribió:Entonces, el tiempo de HDMA para actuaizar datos puede servir para cambiar los parámetros de las PPU's, por ejemplo para calcular la posición de un plano en modo 7... pero ese tiempo tras cada dibujado de cada línea también se puede usar para comunicarse con el spc700 y su RAM en lugar de otras tareas, ¿no?.
Señor Ventura escribió:La cuestión sería acortar el tiempo que requiere el dibujado de cada scanline, ya que eso dejaría mas tiempo para transferir mas por HDMA... pero como el sistema de vídeo funciona a la frecuencia a la que funciona, ¿no hubiera sido interesante interpretar por ejemplo los píxeles negros como "ausentes", y saltarse ese paso?, de ese modo llegas antes al final de cada línea, y te queda mas tiempo para lo que demandes.
Señor Ventura escribió:¿Podría ser esta la manera en que la demo del bad apple consigue hacer streaming de audio a 32Khz por HDMA? (ya que casi todo es negro). Y si es así, ¿significa que puedes "escribir" un driver para que el sistema gráfico cambie su forma de funcionar?.
Señor Ventura escribió:¿Eso significa que el super mario world no descomprime directamente a la VRAM, sinoq ue descomprime a la WRAM, y de ahí a la VRAM?.
Señor Ventura escribió:Sobre el papel te da igual tener tiles en WRAM y ROM que transferir a la VRAM, porque siempre le van a llegar datos a 2,68 mbits por segundo, hagas lo que hagas, ¿no?. La única diferencia que te podría dar un poco mas de rendimiento, es la que permita a dos memorias comunicarse con menos lag (si usas una ROM lenta, tal vez te resultaría mejor enviar comprimidos los datos a la WRAM, descomprimirlos, y luego enviarlos a la VRAM).
Señor Ventura escribió:Sea como sea, para mi es un chasco, nada le va a llegar a la VRAM a una tasa mas rápida que 5,72KB/f (sin tocar los scanlines, se eniende).
Señor Ventura escribió:A 512 de resolución horizontal sigues teniendo disponible 224 pixels de resolución vertical.
a esa resolución vertical la cpu no se involucra mas solo porque ahora el PPU1 tenga que dibujar líneas mas largas... de hecho, si hubiese un cuello de botella en comparación con la resolución de 256x224, sería el sistema de vídeo quien la provoca.
Si a esa resolución se tarda lo mismo en conformar el frame buffer, entonces la composición de cada scanline es simplemente mas disperso. El DMA conservaría todo su tiempo para transferir datos, así que eso lleva a la conclusión de que a 512 de resolución horizonta pinta los pixels mas rápido que a 256, y este es el motivo por el que en esas condiciones hay un downgrade en cuánto a la profundidad de color. Siempre emplea 166 bytes por línea, a cuaquier resolución.
Esto sería así si la CGRAM es la responsable del número de ciclos que tarde el PPU1 en pintar cada pixels. Si no me equivoco, basta con reducir el número de colores (que casualmente es lo que ocurre), y por lo tanto no se debería perder tanto rendimiento como se presupone a 512x224).
La cuestión es si a 512x448 ya interviene la cpu, y cuánto.
magno escribió:Siento decir que no he entendido nada; no entiendo muy bien qué pinta la CGRAM en la resolución, ya que la CGRAM solo es una paleta de colores de donde cada tile elige un color para pintar cada píxel.
Sexy MotherFucker escribió:Ahora bien; ¿entonces cómo dice Ventura la Snes puede generar un outpout progresivo de 512x224? Y de ser así; ¿a un coste menor o mayor que el del modo entrelazado?
Sexy MotherFucker escribió:¿Cómo le influye eso a la Snes en un hipotético 512x224p VS 512x448i?
titorino escribió:Me imagino que le pusieron ese estandar para que la cpu fuese mas desaogada.
Si te apañas bien y haces unos sprites adaptados puedes tener el campo de visión como quieras.
Sexy MotherFucker escribió:De todas formas por lo que me has contestado antes entiendo que un modo pogresivo de 512x224 también penalizaría de la hostia a nivel de rendimiento gráfico; ya que habría que procesar más pixels por frame con un procesador de vídeo que tarda 8 ciclos en completar las operaciones en éstos. Vamos; que no veo un Contra III, un Street Fighter II Turbo, o un Earth Worm Jim a 512x224p con una calidad aceptable. De hecho a 320 ya habría que realizarles un downgrade en el caso que fuese posible ese outpout.
Muy posiblemente le pusieron el tope "realista" en 256x224/39 por si deslucía mucho a 320, y también supondrían que 512 en progresivo era una utopía en un juego de calidad media; por lo que nadie lo intentaría siquiera utilizarlo (cómo de hecho pasó).