Pero, entonces, antes digiste que lo mirarias, y ahora me parece entender que no piensas que funcione?
No, no he dicho eso.
Digo que para juegos, el utilizar seis canales virtuales va a consumir mucha CPU y hace que el juego se vuelva muy muy sensible a la sincronización.
Para entendernos pongamos un ejemplo basado en cómo organizo yo los frames:
-Nada más saltar la interrupción y recuperar el control (si se lo quitas a la BIOS mejor que mejor) lo más urgente es SIEMPRE volcar a VRAM, ya que mientras no te salgas del retrazo vertical puedes volcar a toda velocidad.
-Tras terminar el volcado a VRAM, se pueden volcar los registros del PSG.
-Después viene el cálculo de movimientos, colisiones... etc. Todo lo propio del juego.
-Tras eso, preparo la pantalla para volcarla en el siguiente frame.
-Por último llamo al reproductor de sonido para que genere los nuevos registros del PSG y tras eso se mezclan con los FX.
y volvemos a empezar.
Sin embargo, para hacer seis canales virtuales (en MSX2, porque ya en MSX1 sería un poco locura) habría que activar una interrupción por línea a mitad de pantalla (pero de pantalla completa, no de pantalla visible), de forma que tras saltar la interrupción se volcasen los registros alternativos del PSG.
Esto puede caer perfectamente en mitad de los cálculos del siguiente frame, por lo que hay que tener bastante cuidado a la hora de respetar registros, etc.
Añade, además, que hay que ejecutar DOS VECES el reproductor del PT3, una vez sobre cada uno de los módulos. No he mirado el reproductor multi-módulo, pero me da que o introduce cambios profundos en el código del mono-módulo, o bien se mueven los datos del reproductor en RAM. Eso implica un par de LDIR grandes y un triple buffer para datos musicales. Quizá Kun pueda aportar algo aquí, que se que algo hizo al respecto.
Ahora coge todo eso y mételo en un juego en el que la acción debe calcularse al frame para que todo vaya fluido. O el motor del juego está lo suficientemente optimizado como para que no de problemas o corres el riesgo de perder frames a tutiplen.
El hacerlo con seis canales REALES simplifica algo la tarea, ya que te quitas el problema de la sincronización a mitad de pantalla. Aunque parezca poco ahorro, es muchísimo, ya que sólo en reconocer que tipo de interrupción es se come ni más ni menos que dos líneas completas de pantalla. Si sólo se controla un tipo de interrupción (la de retrazo vertical), el comprobar el tipo de interrupción es muchísimo más inmediato.