Finalmente me he decidido a traducir la información más interesante de la url que pasé anteriormente (
http://cowboyprogramming.com/2010/0...he-sega-saturn/) del blog de Mick West (desarrollador de Skeleton Warriors en la compañia Neversoft) y después comentaré mis impresiones al respecto.
Cowboy Programming escribió:
1995 Programación en Sega Saturn por Mick West
Este es un documento que escribí en 1995, mientras trabajaba en el primer juego de
Neversoft: Skeleton Warriors.
Fue el primer juego en el que trabajé y no utilicé el juego de instrucciones de Motorola 68K.
La foto me muestra en el trabajo alrededor de ese momento. El kit de desarrollo de Saturn (la "Caja pequeña" y el ICE) está a la derecha.
El hardware de desarrollo
La máquina de destino es Sega Saturn, que tiene dos microprocesadores SH2 Risc y un 68000.
Actualmente solo usamos el Master SH2, el esclavo SH2 se usará cuando descubramos cómo hacerlo. El 68000 se usa para controlar el chip de sonido, no deberíamos escribir ningún código ya que utilizaremos la biblioteca de sonido suministrada por Sega.
El programa está escrito casi en su totalidad en C. Usamos el compilador GNU SH2 para producir la salida del conjunto SH2. Hay algunos módulos SH2, la mayoría limitados a datos puros.
Aún no he escrito nada significativo en SH2.
El sistema de desarrollo que usamos es
PsyQ.
Este no es el sistema de desarrollo estándar de Sega, sin embargo,
se considera que es el mejor para todos los que lo han probado. El sistema alternativo es SNASM, por Cross Products, que es propiedad de Sega. La mayor parte del código de muestra proporcionado por Sega está destinado a ejecutarse en el sistema de desarrollo SNASM, sin embargo, es fácilmente convertible a PsyQ.
El sistema PsyQ consiste en una placa de interfaz SCSI que instalas en el PC, un cartucho que se conecta a la Saturn, y un cable para conectar a los dos. El código fuente se compila en el PC y se descarga a Saturn donde se ejecuta. El código se puede depurar desde el PC.
El enlace está controlado por un programa TSR (PSYBIOS) que maneja las comunicaciones entre las máquinas. También permite que Saturn cargue archivos desde el PC de la misma forma que los cargaría desde el CD. Usamos esta característica para cargar los archivos para cada nivel.
Mick también tiene un par de cajas grandes y ruidosas en su habitación. Él también tiene dos PC. El más pequeño de los dos es un
E7000PC, que es un Emulador de Circuito Inicial SH2, útil para indicar dónde ha fallado el programa si el depurador PsyQ no lo detiene. También es útil para ver las escrituras de memoria, pero todavía no lo he usado.
La segunda de las cajas ruidosas es lo que se conoce como "
caja pequeña" (la "caja grande" original era aproximadamente del mismo tamaño que una nevera pequeña). Esto es esencialmente una Saturn, con interfaces adicionales para el E7000 y para el emulador de CD. También tiene interruptores en la parte delantera para cambiar la identificación del país y para cambiar entre PAL y NTSC.
El emulador de CD es lo que la otra computadora tiene dentro. Un tablero grande que utiliza el disco duro de la computadora para pretender ser una unidad de CD. Puedes construir una imagen de CD en esto y emular en modo de tiempo real para ver cómo se verá el juego cuando llegue al CD.
Esto parece funcionar casi en cierta medida, aunque hay algunos problemas con los que estoy trabajando con Sega para tratar de resolverlos.
Me resulta especialmente interesante este relato de Mick West, por tratarse de un programador occidental trabajando en 1995, en el texto habla del día a día en el desarrollo para Saturn y, como podréis comprobar a continuación, programar era casi una odisea.
Lo primero que quiero resaltar es que Skeleton Warriors es un juego de Acción en 2D, que probablemente sería ostensiblemente mas sencillo de programar que los juegos 3D que podrían llevar al límite técnico al sistema (que son los que queremos tratar en este hilo). La fecha de lanzamiento de Skeleton Warriors según Sega Retro fue abril de 1996 en USA y septiembre de 1996 en Europa, el juego no fue lanzado en Japón.
Nótese que el juego salió a la venta ya bien avanzado el periodo de vida de la consola.
El desarrollador pone de manifiesto la dificultad para adaptarse a trabajar con SH2 (arquitectura RISC), cuando anteriormente siempre había estado trabajando con Motorola 68K (arquitectura CISC) (Mega Drive llevaba uno de estos, entre muchos otros sistemas). Si la adaptación de 68K a SH2 no tiene que ser sencilla, no me quiero ni imaginar lo que sería para los programadores pasar a trabajar con dos SH2 en paralelo, al menos durante los primeros años.
Básicamente viene a decir que el juego está siendo desarrollado completamente en C y que únicamente está utilizando uno de los procesadores SH2. Y aquí quiero incidir, no está utilizando el SH2 esclavo porque
¡¡¡no sabe cómo hacerlo!!!, es decir, no habla de un problema de arquitectura del sistema, ni de un problema de rendimiento, si de problemas de sincronización de los SH2, si de falta de capacidad de los buses de datos, todo es mucho más básico, tenía problemas para hacer funcionar el código en paralelo, probablemente porque en la documentación de desarrollo de la que disponía no venia bien detallado.
Otro de los aspectos que se tratan en el texto es la información al respecto de los equipos de desarrollo. Este suele ser un tema bastante desconocido para los aficionados, a nivel personal, tengo la suerte de tener un amigo que trabajó de betatester para Sega América y me ha explicado más menos cual fue la situación con Saturn, lo que me permite entrar un poco en detalle sobre lo que habla Mick West en el texto:
Cuando Mick West habla de “
small box” se refiere al
dev kit Saturn Sophia:
Comenta dos cosas negativas que ya me había dicho mi amigo tester:
1º - Se trataba de un sistema bastante ruidoso (mucho) que hacia que trabajar con él fuese un suplicio.
2º - El sistema producía “crashes” con cierta frecuencia.
Añado un tercer punto que no lo comenta Mick West pero que sí me comentó mi amigo:
3º - Saturn Sophia era un sistema bastante caro de adquirir para realizar el trabajo, sin entrar en cifras, costaba tres veces más que el devkit necesario para programa/testear en PSX.
Este kit de desarrollo se tuvo que utilizar hasta mediados de 1995, que salió el segundo kit de desarrollo oficial de Saturn: Saturn CartDev (
https://segaretro.org/Saturn_CartDev). Nótese que en Sega Retro comentan que incluso la primera versión de este segundo kit de desarrollo no era muy confiable, sin embargo, es con este kit de desarrollo donde los estudios comienzan a sacar todo el potencial de la arquitectura paralela de Saturn.
Sí, lo habéis adivinado, los que tenían Saturn Sophia y querían actualizarse al Saturn CartDev tenían que pasar por caja y pagar un coste bastante alto del sistema. Lo que nos lleva al siguiente Dev Kit:
Sega Saturn PSY-Q dev kit, que es el que utilizaba Mick y el que utilizó Psygnosis para realizar sus ports a Saturn (
http://www.psygnosis.org/history/SATURNPSYQ/), luego los resultados eran los que eran.
NOTA: Si no me equivoco, este es el kit de desarrollo que me enseñó nuestro admin, Ryo Suzuki, en una de las primeras ediciones de Retro Barcelona.
También habla el artículo del Hitachi E7000P, y por lo que comenta Mick, se trata de un accesorio que se podía conectar al Sophia y al PSY-Q.
EN CONCLUSIÓN: El articulo nos muestra que el panorama para un desarrollador externo a Sega en Saturn era absolutamente complicado, así salieron los ports que salieron, que daban la sensación de que Saturn era mucho menos capaz que Playstation y creo toda esta situación debemos tenerla en cuenta a la hora de analizar el “Potencial Teórico VS Realidad”, porque la visión sencilla es la de pensar que la arquitectura hardware de Saturn está mal diseñada, pero eso no está nada claro, de hecho, mi percepción personal como alguien que está cursando la ingeniería informática, es que el diseño de la arquitectura de Saturn es bastante bueno y que los principales problemas de Saturn fueron otros.