New SDRAM Controller & Core Updates (Patreon)
Downloads
Content
(español abajo)
Arcade systems have many memory chips working at the same time. Whereas a computer system of the same age will have all devices built around a RAM memory, arcade games had no single central memory. Each subsystem had access to its memory, which often was exclusive.
This difference meant that huge data transfer ratios were achieved when compared to computers. That is one of the reasons why even 8-bit arcade games could be more impressive than 16-bit home computer games.
Although I have been able to use a modest SDRAM controller until now, I have had to use all sort of techniques and tricks to survive this far. But on the past release of Street Fighter 1, the noise in voices was mostly due to missing data samples from memory. On the CPS 1.5 beta, you can see -if rarely- graphical glitches due to memory access too.
So it was time I wrote a high-performance SDRAM controller. Gyurco -from the MiST scene- suggested I should try bank interleaving. SDRAM memories are divided internally in smaller memories. Access is done by setting up the transfer first and waiting for it next. It is possible to set up another transfer on a different bank (the smaller internal memories) while waiting for the first one to complete.
Comparing raw access numbers, the new memory controller is about five times faster than the old one. Operated at 96MHz, it produces 128MB/s, whereas the old one was making only 48MB/s. This type of bandwidth is plentiful for CPS2 and other modern arcade games.
In practice, the data throughput will be lower. There are memory refresh cycles, and the arcade system just doesn't need so much data!
There is also a hard limitation in the 128MB module design for MiSTer that prevents these high speeds from being achieved. So when keeping compatibility for that module, the speed performance will get a hit (about half the speed for random reads). But it should still be more than enough for CPS2.
The test core for this development has been Street Fighter 1. You can hit update now and get a new version with improved ADPCM voices.
I know this update may not sound exciting. But when I got it working, I couldn't sleep, literally. This is a deal changer.
For MiST/SiDi users, there has been an update in many cores related to the video output. An unfiltered video output option is now available, as long as an "analogue" style output. I personally like how the analogue option looks like. To me, it is as though I had my old monitor back.
Files are in the usual location. If you use MiSTer you can get the SF1 update using the update_all script.
Have a nice weekend!
Español
Esta semana me he concentrado en diseñar un controlador nuevo para la memoria SDRAM de alto rendimiento. ¿Por qué hace falta? Os dejo aquí un artículo que escribí hace años sobre máquinas recreativas y ordenadores que compara las memorias, está en español.
Con el nuevo controlador se puede conseguir una mejora bruta de cinco veces en transferencia de datos. Pasando de 24MB/s hasta los flamantes 128MB/s actuales. Esto abre muchísimas puertas, la primera, la de CPS2.
El cor con el que he probado el desarrollo es Street Fighter 1. Lo saqué al público la semana pasada pero las voces se oían de pena. La verdad es que las originales están grabadas con poca calidad. Pero ese no era el problema. Había datos que se perdían por culpa de la memoria, que no llegaba a todo a tiempo. Ahora con el nuevo controlador de memoria notaréis las voces mucho más claras.
Otro trabajo esta semana ha sido añadir dos opciones de vídeo para los usuarios de MiST/SiDi. Ahora pueden elegir una salida de vídeo sin ningún filtro y otra con un filtro "analógico". Este filtro imita la limitación de ancho de banda del sistema analógico de vídeo. A mí me encanta como se ve. Los cores de CAPCOM CPS0 y Double Dragon están actualizados con el nuevo sistema de vídeo.
Los ficheros están donde siempre, y si tenéis MiSTer podéis usar el update_all para obtenerlos.
¡Buen fin de semana!