Pues nada, voy a aportar mi granito (o más bien camión gordo) de arena al debate.
Como sabéis, yo en los 80 tuve un MSX1 y luego me pasé al Amiga 500 en 1992, con lo que no viví la época de los juegos MSX2 en disco de los años 90. Cuando me reenganché me hice con un 2+ algo cascadete que luego fue reemplazado por un Turbo-R ST. En cuanto a comodidad para ir a RUs, tengo mi 1chipMSX y mis dos HX-10 (el mío de toda la vida y uno para llevar a RUs y ferias).
En mi caso mi idea fue empezar a programar algo directamente para MSX2 (allá por el año 2000), pero se cruzó mi tesis doctoral por el medio y me fue imposible. Gracias (una vez más) a pitpan, me reenganché en la programación con el Pong512 y luego con el Namake's en la Dev'05. ¡Al final me había centrado en el MSX1!
Luego llegó el QBIQS (allá por 2006, sí) y en un principio estaba pensado como juego exclusivamente de MSX1. Sin embargo, con el paso del tiempo he visto que algunas cosas que me hubiera gustado hacer en MSX1 eran sencillamente imposibles y he tenido que recurrir al MSX2. Al final el juego es dual. Aquí he de estar de acuerdo con lo que ha dicho Ramones:
El hecho de intentar hacer un juego dual como comenta Edu lleva, si no te quieres volver loco y hacer dos códigos totalmente distintos a que alguna de sus versiones sufrirán un bajón técnico, repito, si no te quieres complicar. Y si haces dos códigos totalmente separados, la programación se complicará demasiado, puesto que mantener dos códigos significa repetir código en muchas partes, tener problemas de bugs que ocurren en una versión y en otra no... olvidos, etc, etc... una locura.
¡Qué razón llevas! En el caso del QBIQS el código es el mismo para las dos versiones, pero está lleno de:
ld a,[MSXVERSION]
or a
jp z,@@MSX1
; --- Y aquí va la parte específica MSX2 de la rutina ---
Todo eso no se ve. La gente cogerá el cartucho, lo pinchará en el MSX1 y verá una cosa, pero al hacerlo en un MSX2 verá otra. ¡Ah! ¡Qué bonito! Pero la currada que hay por debajo es brutal.
Y en el caso del Goonies más aún, porque si mal no me equivoco en MSX1 es Screen 2 y en MSX2 debe ser Screen 5. Un par de modos muy similares entre sí, desde luego
Y la programación se complica muchísimo (en casos que al principio ni te planteas).
Pero cuánta sabiduría hay encerrada en esta simple frase. Voy a poneros un ejemplo muy concreto y que a simple vista es algo normal y que no ha de traer problemas: se me ocurrió (como es lógico) utilizar Screen 4 en lugar de Screen 2 para poder tener 8 sprites en línea y que no hubiera parpadeos (aunque sólo parpadean los puntos de mira en unas condiciones muy concretas). Nada más fácil: cambiamos de sitio las tablas. Como en el código las direcciones de las tablas son constantes bastaba con cambiar su valor, crear la tabla de colores de los sprites en modo 2 partiendo de la tabla de atributos... Todo perfecto, sin problemas... ¡Pues no! Resulta que no se veía nada en absoluto.
El VDP de los MSX2 es muy listo y funciona igual que el de los MSX1 en modos MSX1. Es decir, que asume que sólo hay 16K de VRAM. Si escribes en la posición 16383, el puntero avanza a la posición 0. Sin embargo, en modos MSX2 avanza a la posición 16384, aumentando en 1 el valor del registro R#14. Así que toda escritura posterior a VRAM se hace donde no se debe hacer.
En consecuencia: la pantalla en negro.
Así que algo tan simple como eso, supuso una tarde entera de desesperación porque yo miraba el código y parecía estar bien. De hecho estaba bien, sólo tenía que tocar nuevamente el R#14 para que todo volviera a la normalidad. Pero ojo, sólo en MSX2, así que nuevamente un trozo de rutina como el anterior:
ld a,[MSXVERSION]
or a
jp z,@@MSX1
; --- Y aquí va la parte específica MSX2 de la rutina ---
Tras el QBIQS vendrá el KNT. En un principio se pensó como juego MSX1, pero luego sucedió algo a principios de este año que me obligó a replantearme esa decisión, por lo que pasó a ser un juego para MSX2. En primer lugar con 64K de VRAM parecía que tendría bastante (y de hecho sobraría), pero por restricciones técnicas al final (lo se, Ramones, soy un flojeras) el juego exige un MSX2 con 128K de VRAM.
El juego no va a aprovechar (ni mucho menos) todas las capacidades del MSX2, pero es la forma en la que visualmente puedo hacer lo que quiero que sea el juego. A partir de ahí me apetece muchísimo meterme a programar algo más bestia para MSX2 o superior, cambiando la rutina anterior por la siguiente:
ld a,[MSXVERSION]
or a
ret nz
; --- Y aquí va la parte específica MSX1 del juego ---
DI
HALT
De hecho, salvo que se muestra un mensajito indicándolo, el KNT tiene esa rutina
Por todo ello, opino que los juegos duales son muy bonitos, pero demasiado ingratos y que te encorsetan mucho más de lo que quisieras. Si QBIQS naciera ahora, sería exclusivo de MSX2 (de hecho recomiendo encarecidamente jugarlo en un MSX2 con 128K de VRAM para poder experimentarlo bien).
Para los no desarrolladores, deciros que entre sólo un 20% y un 40% del tiempo destinado a programar un nuevo video-juego se dedica a tareas gratas al programador. El resto son mierdecillas rutinarias que nada aportan pero que tienen que hacerse. Ésta es al menos mi percepción. Una vez que el "engine" principal funciona, que es la parte de desafío de cada proyecto, ponerse con los detalles supone un esfuerzo de voluntad importante: rutinas de puntuaciones, marcadores, etc. Lo que se podría llamar "pulido" del juego. Y también es ingrata para el programador la tarea de ajustar curva de dificultad, al menos en mi caso.
No puedo estar más de acuerdo contigo. Una vez el motor del juego está terminado, todo funcionando, jugable al 100%... es que el "vestirlo" para convertirlo en un juego es algo totalmente aburrido. Por no hablar de la curva de dificultad. A mí es algo que me ha llevado mucho tiempo idear cómo hacerlo (la idea surgió de un divertido bug, por cierto). Y una vez hecho estás tan acostumbrado a jugar que todo te parece sencillísimo y aprietas un poco más las tuercas... para darte cuenta de que el resto del mundo se ve con la lengua fuera para llegar a la mitad del juego cuando tú sin despeinarte te terminas el último nivel con la gorra.
Aquí es donde entra la también ingrata tarea del beta-tester: jugar a un juego hasta el aburrimiento para encontrar bugs, opinar sobre la curva de dificultad... Cuanto más complejo sea el juego, más beta-testing hará falta y eso es algo que también hay que tener en cuenta en el desarrollo. Si al beta-tester le molan más los juegos MSX2 igual te va a poner caras raras con algo en MSX1. O directamente se olvida de probar el juego en MSX1 y no encuentra ese bug tan obvio que se estrella de frente contra la pantalla
Y es que todos somos humanos y no podemos evitar tener nuestras preferencias y prejuicios.
Si quiero todo lo que dices, es que no quiero un MSX.
Lo tengo en otras máquinas diseñadas así y donde hacer eso es "natural". Exigir a una máquina lo que no es me parece aberrante.
100% de acuerdo.
En cuanto al parque... me juego lo que quieras a que un 90% de los usuarios tiene un sistema 2+FM compatible. Se podría hacer otra encuesta.
Y también te aseguro que serían bien recibidos esos programas para este sistema.
Como ya he dicho, tengo un Turbo-R. Encantado de que se sacase más software para MSX2+ y superior.
Y tercero: la compatibilidad. Programando para MSX programas para TODAS las generaciones del sistema y no dejas a nadie atrás
Sí, pero... ¿tú programas para la gente o aquello que a tí en particular te apetece programar y que deseas? Si programas para tí (como en un principio yo hago, esto es un hobby y como tal tiene que ser tomado) y descubres que no estás contento con los resultados y que saltando a la siguiente generación tienes los medios para conseguir que el juego que tienes en la mente salte a la pantalla... ¿por qué no hacerlo? Hoy en día TODO el mundo puede ejecutar cualquier cosa de MSX2 o superior.
El que programa lo hace como hobby, porque le gusta, y no porque está cobrando un sueldo por ello. Como hobby, el programador programa lo que le gusta.
Vamos, lo que estoy diciendo yo (que llevo ya no se sabe cuanto escribiendo el mensajito).
En resumen (que ya me estoy poniendo pesado), creo que empezar por el MSX1 y descubrir las limitaciones que me imponía el sistema para tener que saltar a la siguiente generación ha sido una experiencia muy enriquecedora que ha hecho que ahora mire nuevamente al MSX2 para centrarme en él.
Lo que no significa que no vuelva a hacer nada para MSX1, claro está...
Pufff, por fin puedo darle al botón de "Publicar"