Street Fighter 2 CE - Sega Megadrive - Sound driver patch

1, 2, 3
Hola, quise meterme en esta "conversación" para decir algunas cosas.

Primero, para transferir datos a la vram no estamos limitados al Vblank (en el Genesis/Md aun se puede transferir cuando el video está activo, pero mas lento), tambien se puede "forzar el vblank", que es lo que yo hago en el port de Wolf3d para transferir el buffer de 16kb a la vram(que representa 512 tiles), esto no es algo fuera de lo común, algunos juegos de Gen/MD lo hacen, incluso creo que el mismo Street Fighter 2 CE también lo hace.

Señor Ventura,
El H32 y H40 se refiere a la resolución, es decir 256 y 320. Cuando se usa el modo H40 la transferencia es mayor que en H32, en el modo de H40 se transfieren unos 205 bytes por linea durante el vblank o el Vblank forzado(en algunos documentos recientes se dice que en realidad es de 198 bytes por linea), ahora en el modo de H32 es parecido al de Snes.
Sobre el Hdma y dma de snes, (no pretendo ser un experto en ello) esto es lo que se:
el Snes tiene 8 canales dma que pueden ser Hdma o dma, el dma es como el de Gen/Md para transferir grandes cantidades de datos durante el vblank o vblank forzado, los hdma se usa para tranferir un maximo de 4 bytes por linea por canal durante el periodo activo de la imagen, y generalmente se usan por ejemplo para el modo 7(para crear el efecto 3d usualmente se utilizan 4 canales Hdma), también para cambiar un color por linea (color gradients), o para cambiar el hscroll por linea(por ejemplo para crear el efecto 3d del suelo en Street fighter 2).
Que estupendo tenerte por aquí, muchas gracias por la claración :)

Parece ser que en snes el DMA se usa únicamente durante el VBLANK, y el HDMA se usa el resto del tiempo (y nunca durante el VBLANK), por lo que, si hay bus durante la pantalla activa (al contrario de lo que se venía afirmando), lo que ocurre, es que como bien dices, el ancho de banda que proporciona es mínimo, y además CREO que no sirve para transferir sprites a la vídeo ram.


En megadrive la cosa anda así:
-En H32 hay 161 espacios de acceso durante el VBLANK, y la cifra baja a 16 durante la pantalla activa.
-En H40 hay 198 espacios de acceso durante el VBLANK, y la cifra baja a 18 durante la pantalla activa.

En supernintendo la cosa es un poco diferente:
-En H32 hay 165.5 espacios de acceso durante el VBLANK, y en teoría la cifra baja a CERO durante la pantalla activa... lo que ocurre, es que en ese momento entra en juego el HDMA, pero desconozco la equivalencia de su ancho de banda en "espacios de acceso".
-En H40 no tengo ningún dato, aunque es bien sabido que la cosa decae, y debe ser bastante gordo, porque no hay juegos a 320x240 (podría ser eso, aunque me inclino mas a que si no hemos visto juegos a esa resolución, es por culpa del bug del generador de imagenes).


Pregunta para los expertos: ¿Cuántos ciclos de reloj ocupan el motorola y el 65c816? (eficiencia, etc).
Lo que pasa en el snes es que cuando se intenta enviar datos a la vram durante el periodo activo la imagen se destruye(el snes explota [carcajad] ... es broma), lo que creo es que solo se puede escribir en un momento exacto (durante el hblank) y eso es lo que hace el hdma.

En el snes la transferencia de DMA es fijo (como dices unos 165 o 166) sin importar la resolución, ademas no existe el modo de 320x224, solo 256 o 512 de ancho x 224 o 448 de alto, pero esos modos de hres(512x224, 512x448 o 256x448)se usó muy poco en juegos, el modo de 512 solo puede tener 2 backgrounds uno con 16 colores y el otro con 4 colores.
El Gen/MD tiene resoluciones desde 256x224 hasta 320x448.
gasega68k escribió:Primero, para transferir datos a la vram no estamos limitados al Vblank (en el Genesis/Md aun se puede transferir cuando el video está activo, pero mas lento), tambien se puede "forzar el vblank", que es lo que yo hago en el port de Wolf3d para transferir el buffer de 16kb a la vram(que representa 512 tiles), esto no es algo fuera de lo común, algunos juegos de Gen/MD lo hacen, incluso creo que el mismo Street Fighter 2 CE también lo hace.

Buenas gasega68k. Lo de transferir datos fuera del vblank ya lo comentamos varias veces, y es cierto que es más lento, más cuando tienes cargadas mil cosas, por eso en principio queda descartado salvo que sea una demo con lo que quieres mostrar en concreto. Lo de forzar el vblank queda fuera de mis conocimientos, pero si es compatible con el resto del código el poder mandar 512 tiles suena brutal.

PD:
gasega68k escribió:Hola, quise meterme en esta "conversación" para decir algunas cosas.

¿Por qué "conversación"? XD XD XD
Bua, llego tarde a la charla, es lo que tiene la vida real, que hay que trabajar


gasega68k gracias por los comentarios

Sobre el SF2 CE, creo que usa un modo de 24 tiles de alto, en vez de 28, forzando el vblank para tener mas periodo para transferir datos, o al menos, es lo que imagino que habran echo, seria lo logico


Manveru Ainu, no se porque tiene que quedar descartado, la transferencia es valida en todo momento, mientras no necesites enviar otro codigo en un momento dado, tenes via libre

Como te comente antes, en el ejemplo del Metal Slug, estaba enviando mas de 500 tiles de golpe. El problema no era la transferencia, si no, tener que escribir todo el mapa de tiles de golpe
Hay alguien que tenga la Rom con el parche de los colores y el del sonido ya aplicados?
Imagino que todos los que lo han probado, ya la tienen
Lo que pregunto es si efectivamente son compatibles, si funcionan sin errores.
Si, aplica el parche de color a la v7 y listo

A mi personalmente, no me gusta nada el parche de color la verdad
theelf escribió:Bua, llego tarde a la charla, es lo que tiene la vida real, que hay que trabajar

Como todos jejeje, pero bueno es lo que tiene el siglo XXI que puedes coger el móvil en cualquier sitio y sólo necesitas 1 minuto para entrar y poder echar un ojo y contestar en foros, redes sociales... jejeje.

theelf escribió:Manveru Ainu, no se porque tiene que quedar descartado, la transferencia es valida en todo momento, mientras no necesites enviar otro codigo en un momento dado, tenes via libre

Bueno es lo que pensaba y eran mis dos posibilidades: o que en las demos se centre todo el potencial de la consola en lo que quieres mostrar, es decir sin tener preocupaciones que hacer nada más tipo sonido, gestión de fondos y esas cosas, o

theelf escribió:Como te comente antes, en el ejemplo del Metal Slug, estaba enviando mas de 500 tiles de golpe. El problema no era la transferencia, si no, tener que escribir todo el mapa de tiles de golpe

que tienes algún tipo de buffer de control para que si vas a subir un número de datos superior al que el ancho de banda permite, que se corte en ese momento y continúe en el siguiente vblank o cuando pueda, lo que me parece genial.
A mi tampoco me convence el parche de color, algunos escenarios como el de Guile lo veo muy apagado, el de Honda..., me quedo con los que trae el juego de serie. Por cierto en el mismo foro están provando el mismo driver con el Super Street Fighter II.
A mi al final no me ha quedado claro si seria posible ese sf2 con los sprites de cps1
naxeras escribió:A mi al final no me ha quedado claro si seria posible ese sf2 con los sprites de cps1


Te has perdido entre tantos tiles, vblank y sprites [+risas] [+risas] Yo igual.....

Si consiguen aplicarlo al Super Street Fighter 2 (que no creo que tarden en hacerlo) quedará para MegaDrive uno de los mejores Street Fighters para 16 Bits !!!
Vareland escribió:
naxeras escribió:A mi al final no me ha quedado claro si seria posible ese sf2 con los sprites de cps1


Te has perdido entre tantos tiles, vblank y sprites [+risas] [+risas] Yo igual.....

Si consiguen aplicarlo al Super Street Fighter 2 (que no creo que tarden en hacerlo) quedará para MegaDrive uno de los mejores Street Fighters para 16 Bits !!!

yo me quedo con champion edition ,la version super la odio incluso en arcade ,no me gustaron los cambios nada de nada ,ni la voz del comentarista ni las músicas y menos esos personajes nuevos tan cutres ,sobre todo deejay y el indio ese.
y las versiones de 16 bits son cutres con ganas .
pero para gustos ,colores ,hay mucha gente que le gusto esta versión.
titorino escribió:
Vareland escribió:
naxeras escribió:A mi al final no me ha quedado claro si seria posible ese sf2 con los sprites de cps1


Te has perdido entre tantos tiles, vblank y sprites [+risas] [+risas] Yo igual.....

Si consiguen aplicarlo al Super Street Fighter 2 (que no creo que tarden en hacerlo) quedará para MegaDrive uno de los mejores Street Fighters para 16 Bits !!!

yo me quedo con champion edition ,la version super la odio incluso en arcade ,no me gustaron los cambios nada de nada ,ni la voz del comentarista ni las músicas y menos esos personajes nuevos tan cutres ,sobre todo deejay y el indio ese.
y las versiones de 16 bits son cutres con ganas .
pero para gustos ,colores ,hay mucha gente que le gusto esta versión.


Si en el fondo estamos de acuerdo, pero por mi comentario igual no he dicho lo que queria expresar. Queria decir que, dejando de lado que guste mas o menos, seria una de las versiones mas fieles al arcade. Yo le he echado mas horas al Champion Edition que al Super, pero también he jugado mucho a éste último.
gasega68k escribió:Lo que pasa en el snes es que cuando se intenta enviar datos a la vram durante el periodo activo la imagen se destruye(el snes explota [carcajad] ... es broma), lo que creo es que solo se puede escribir en un momento exacto (durante el hblank) y eso es lo que hace el hdma.


Al parecer la cosa funciona así:

Durante el VBLANK tienes 8 canales DMA que son usados para transferir datos de la ROM a la VRAM, o a la RAM del sistema, o a la RAM del SPC700. Tambien puede ser empleado para comunicar a la RAM del sistema con la VRAM, ya que las tablas para las transformaciones del modo 7 se almacenan en la RAM del sistema, y no en la memoria de vídeo.

En este proceso, solo se puede usar un canal DMA simultáneamente, así que durante el VBLANK, por motivos obvios, no se puede emplear el HDMA.
Luego hay otro impedimento, tras el VBLANK hay un período de 40 ciclos de reloj en que los datos movidos por el DMA son actualizados por el sistema, y en ese tiempo, directamente todos los buses DMA y HDMA son desactivados (no hay ningún transporte de datos ni de la ROM a las memorias internas de la snes, ni hay ningún transporte de datos entre las memorias internas de la snes).

El resto del tiempo que no es lo comentado, es el denominado período activo, y en el si está activo el HDMA. Por lo que, muy en contra de lo que se decía de snes, si hay un bus funcionando en todo momento.
Lo malo es lo que tu dices, que no solo el espacio de acceso que permite es irrisorio, es que además intentar enviar cualquier sprite a la memoria de vídeo da como resultado la corrupción de datos.

¿El punto fuerte del HDMA?, pues que que tiene un acceso total a los registros del PPU1 y PPU2 durante el período activo, lo cual permite usar una cantidad muy notable de recursos gráficos sin que la CPU tenga que perder tiempo en gestionarlo, y eso, por fín es una ventaja (que ya era hora, porque todo parecían pegas).

Es por esto que un SFX como PPU3 hubiera sido algo monstruoso: Un SFX corriendo paralelamente al 65c816, y sin que apenas existan restriscciones, ni se estorben, hubiera aumentado el rendimiento gráfico exponencialmente. No quiero ni pensarlo xD


Tengo que indagar mas sobre el bus de 24 bits de la super, porque me parece escaso que con ese potencial solo tenga un poco mas de capacidad que el de la mega (a 256x224).


gasega68k escribió:En el snes la transferencia de DMA es fijo (como dices unos 165 o 166) sin importar la resolución, ademas no existe el modo de 320x224, solo 256 o 512 de ancho x 224 o 448 de alto, pero esos modos de hres(512x224, 512x448 o 256x448)se usó muy poco en juegos, el modo de 512 solo puede tener 2 backgrounds uno con 16 colores y el otro con 4 colores.
El Gen/MD tiene resoluciones desde 256x224 hasta 320x448.


Si, si existe un modo de 320x224, e incluso tambien uno de 400x300. El problema es que a esas resoluciones, el ancho de la pantalla aumenta de longitud, y el generador de imágenes tiene un bug en que a partir de 256, elimina el excedente de sprites por scanline (32 por línea, o 34 tiles) de dentro hacia afuera, y no al revés, por lo que, a resoluciones mayores que 256x224, era mas fácil que este bug hiciera de las suyas, y dar como resultado una imagen "rasgada" mas veces de las que gustaría.

Y esto sin contar con que 165.5 espacios de escritura a 320x224 (que es una resolución a la que hacen falta mas tiles/sprites para conformar la imagen), tal vez se hagan insuficientes (según el juego claro, pero la necesidad de un mayor ancho de banda siempre estará ahí).


Ciertamente, el DMA es lo peor que tenían las 16 bits caseras, porque eran terriblemente asíncronas. Y lo peor es que es un error que causa el driver, y ese es un error de planificación de quien lo ideó, y no de falta de potencia del DMA.
Según parece, el espacio de escritura durante la pantalla activa tiene que ver con el excedente de líneas de la resolución, es decir:

A 256x224, realmente la resolución total es de 256x312 en formato pal (256x224 de forma activa), y 256x262 en formato NTSC (de nuevo, 256x224 forma activa). Es un excedente que podría usarse durante la pantalla activa, y no se usa.
Bytes por línea es de ~ 1364/8 ~ 170.5
NTSCbytesPerFrame = (1364 * 38) / 8 = 6.479
PAL2bytesPerFrame = (1364 * 88) / 8 = 15.004

Tienes 15 espacios de escritura muy majos que tiras por la borda, porque el ancho de banda del HDMA ni de coña equivale a eso (y encima no sirve para transferir tiles/sprites).

Y esto sin hablar de que, si son máquinas habilitadas para trabajar con resoluciones superiores, y por lo tanto el DMA aumenta su ancho de banda para proporcionar los bytes por línea suficientes (mas el excedente), ¿POR QUÉ BAJAN SU CAPACIDAD APOSTA CUANDO SE TRABAJA EN RESOLUCIONES INFERIORES?, ¿por qué no se trabaja a 256x224 con el excedente de 176/224 líneas, si precisamente el DMA está habilitado para ese ancho de banda, y por lo tanto puede existir esa resolución?. Eso no es un error de hardware, es una limitación impuesta adrede.


Y en megadrive sucede lo mismo, de forma innecesaria. El límite de sprites baja de 80 a 64 cuando bajas la resolución de 320x240 a 256x224. ¿Por qué?, ¿se podría solventar reescribiendo la bios y los drivers?.


Manveru Ainu escribió:Lo de forzar el vblank queda fuera de mis conocimientos, pero si es compatible con el resto del código el poder mandar 512 tiles suena brutal.


Tienes 16/18 espacios de acceso durante la pantalla activa. Espero que alcance [+risas]

¿A cuántos tiles se supone que equivale eso? (en na transferencia a VRAM en período activa).
Snes NO tiene un modo de 320x224.

¿Qué quieres decir con esto?
A 256x224, realmente la resolución total es de 256x312 en formato pal (256x224 de forma activa), y 256x262 en formato NTSC (de nuevo, 256x224 forma activa). Es un excedente que podría usarse durante la pantalla activa, y no se usa.Es un excedente que podría usarse durante la pantalla activa, y no se usa.
Me refiero a un excedente de información (para usarse en otras lides, si hiciese falta, durante el período de pantalla activa), no a ampliar la resolución.

P.D: Lo de la resolución, que yo sepa no se ha usado nunca una resolución de 320x240, pero si he leído que no se trata de una imposibilidad, por lo que he deducido que se desaconseja porque el generador de imágenes tiene un bug (que afecta a 256x224, por lo que a 320 el scanline se hace mas largo, y por lo tanto mas propenso a sufrir esos efectos).
No es un excedente de información, son las líneas de control del sistema de TV, la consola se encuentra en el Vblank durante ese período por lo que puedes procesar el siguiente frame o hacer lo que quieras con ella.

No es que se desaconseje usar 320x240, es que directamente ese modo gráfico no existe en la consola.
Claro, esas líneas que no son empleadas, son una parte del ancho de banda (espacios de acceso) que no se está usando.

Sobre la resolución, ya digo que el generador de imágenes no permitía mas de 256 pixels de ancho en sprites, o en su defecto 32(sprites) por scanline. ¿Tu realmente sabes a ciencia que es debido a la ausencia de ese modo gráfico, y no a que no se accede por motivos de estabilidad?.
La consola soporta tres resoluciones:

256x224 progresivo
512x224 progresivo
512x448 entrelazado

No hay más.
Y luego todos los juegos juegos usan 256x224 pero bien que en la publicidad hablaban de 512x448.

Siempre salia en las comparativas que la SNES tenía mayor resolución que la Mega y luego en la práctica a la hora de jugar nunca es así.
Hay algún juego que otro que usa los 512 pixels horizontales. Imposible no era.
¿Los Donkey Kong Country no usan mas resolucion que la media de titulos de Snes? Al menos esa es la impresion que da a ojo, aunque quizas tambien se debe al estilo grafico. =0
En sega-16 han colgado ésta comparativa hecha a partir del parche de sonido https://www.youtube.com/watch?v=M68RcXjiFNI
estoybien escribió:En sega-16 han colgado ésta comparativa hecha a partir del parche de sonido https://www.youtube.com/watch?v=M68RcXjiFNI



Aunque me voy a salir del guion... solo digo, joder! siempre me sorprendo que buen port tuvo la PCengine!
Se nota que el código ese ha hecho maravillas con las voces, aunque el BRR por hardware de la snes marca mucho las diferencias.

Y como cantan los gráficos al compararlos directamente con el arcade... es que no me puede creer que no pueda mejorarse.
Dio_Brand escribió:¿Los Donkey Kong Country no usan mas resolucion que la media de titulos de Snes? Al menos esa es la impresion que da a ojo, aunque quizas tambien se debe al estilo grafico. =0


no.
Han colgado ahora lo mismo para super street fighter 2 en el mismo foro, os agradará leer que también aumenta la calidad de las voces digitalizadas.

Todavía hay muchos juegos por los que pueden utilizar ésta mejora del driver.
naxeras escribió:
Dio_Brand escribió:¿Los Donkey Kong Country no usan mas resolucion que la media de titulos de Snes? Al menos esa es la impresion que da a ojo, aunque quizas tambien se debe al estilo grafico. =0


no.


ok.
estoybien escribió:En sega-16 han colgado ésta comparativa hecha a partir del parche de sonido https://www.youtube.com/watch?v=M68RcXjiFNI


La comparativa será de sonido pero podrían haber regulado el brillo y en contraste en las versiones domesticas ya que el stage de Ryu y Guile se ven oscuros a más no poder [Ooooo]
estoybien escribió:En sega-16 han colgado ésta comparativa hecha a partir del parche de sonido https://www.youtube.com/watch?v=M68RcXjiFNI


Uff la verdad es que el SF2 sigue sonando mal en Mega Drive incluso con el parche en comparación con el de SNES, mucho más limpio. Y por cierto impresionante el sonido de la versión de PCE, al ver la comparativa se aprecia aún más.
En SNES suena totalmente apagado, la compresion es brutal. Da la impresion de tener un low pass para filtrar tambien
ZIDEVS escribió:
estoybien escribió:En sega-16 han colgado ésta comparativa hecha a partir del parche de sonido https://www.youtube.com/watch?v=M68RcXjiFNI


Uff la verdad es que el SF2 sigue sonando mal en Mega Drive incluso con el parche en comparación con el de SNES, mucho más limpio. Y por cierto impresionante el sonido de la versión de PCE, al ver la comparativa se aprecia aún más.


A mí no me suena tan mal, suena a "Mega Drive" pero al menos las melodías son muy reconocibles. En SNES por ejemplo algunas están tan filtradas que cuestan reconocerlas (por ejemplo la de Dalshim en algunos momentos).

La verdad que en la época me parecía que la recreativa era gráficamente casi igual a la de Mega Drive e "idéntica" a la de SNES y ahora viendo esta comparativa [Ooooo] [carcajad]
Tengo muchas ganas de jugarlo en la mega de verdad, pero en el emulador, basta probar la versión original y ahora la parcheada y la diferencia es tremenda. ¡Hasta parece raro que las voces sean tan limpias! Y desde luego queda un port muy parecido ya a la recreativa. La música suena muy muy parecida (la de snes suena a remix churrero) Lástima que resulte prácticamente imposible arreglar el SSF2: la horrible música y los fondos.... :(
134 respuestas
1, 2, 3