zxpope escribió:hola,
como se hace un juego para PS2?
son tan baratas las PS2 de segunda mano, que he estado tentado de comprarla para trastear.
la arquitectura parece presentar tres unidades de proceso adicionales (float,float,3d)
https://upload.wikimedia.org/wikipedia/ ... ecture.pngeso... se maneja a mano, o hay librerias que te ayudan?
gracias!
Hay librerías que te ayudan, aunque no hay mucho publicado,
Conozco a un tipo que tiene montado un motor 3D en C para PS2 que sí hace uso de los dos procesadores marcados como vector unit, bueno en realidad ese esquema tiene cosas mal, y otras que son incorrectas.
El bus de memoria principal es de 128 bits, no de 16 xD , y son 3,2 GB/s; el ancho de banda de la memoria de vídeo son 48 GB / s.
La CPU principal es de 128 bits a 294/296 MHz dependiendo el modelo de consola, las instrucciones son muy raras y por ello muy potentes, porque pueden contener instrucción, datos y punteros a memoria en esos mismos 128 bits.
Los vector units, son procesadores de coma flotante en formato double a 150 MHz; son dos procesadores con un espacio de memoria de programa para cada uno de ellos de 256 KB (están embebidos en las propias vector unit, no los toman de los 32 MB principales); y si, corren en paralelo a la CPU principal y a la CPU de PS1; PS2 es un sistema con 5 CPUs corriendo en paralelo. La CPU de PS1 tiene a su disposición 2 MB EDO.
El adaptador de audio tiene disponibles otros 2 MB con bus a 32 bits. El adaptador de audio no es un mezclador, la mezcla tienes que hacerla por software e ir rellenando los punteros del mecanismo DMA que lee de estos 2 MB. Idéntico sistema de audio que un Atari STE

(exceptuando el chip Yamaha, que la PS2 no tiene chip de estos), sólo que admite hasta 5 voces de salida en lugar de 2, el mezclador que escribí es sólo estéreo hasta 48 KHz para PS2 y mono 12 KHz para STE. Para PS2 estaría bien hacer la mezcla de audio en la CPU de PS1,
El procesador gráfico también corre a 150 MHz (más o menos a nivel gráfico es una Voodoo 3, con una resolución máxima de 1280 x 1024 color a 32 bits, la resolución mínima es de 320x240), y tiene capacidades de cómputo de propósito general, su espacio de memoria de programa reside en los 4 MB, aunque debes dejar espacio para ir metiendo las texturas, sprites... según lo necesites. Lo normal es que con estos procesadores los juegos 3D hicieran las funciones de Transformación e Iluminación, puesto que el chip gráfico no dispone de estas funciones por hardware.
Todo traspaso de datos se hace por mecanismo de DMA, y es la CPU de PS1 quien empieza con la varita de director de orquesta, aunque luego después quede relegada a funciones de mover información de un lado a otro.
El mayor problema, que este bicho impresionante, apenas dispone de librerías que puedas utilizar, y menos de información sobre cómo utilizar todos estos procesadores, hacen falta ejemplos que no hay...

también, dada la potencia bruta, le falta RAM, al menos 12 - 16 MB más para poder mover cosas mejores, porque podría haberlo hecho.
Por ejemplo, con 48 MB de RAM principales, podría haber movido un port de Doom 3 o una adaptación decente de Half-Life 2. Porque los programas que manejan las transacciones de datos pueden residir en los 2 MB de la CPU de PS1, los sonidos en los 2 MB de audio, los programas que hacen las funciones gráficas tienen que ir en los dos bancos de 256 KB y en los 4 MB de la memoria de vídeo, y te queda toda la memoria principal para texturas y modelos 3D de personajes y escenarios. El kernel apenas consume RAM, unos pocos KB. Pero los 32 MB se quedaban un poco cortos, se lograron juegos muy buenos, como los Battlefront de la guerra de las galaxias, pero con un poco de memoria más habrían tenido texturas un poquito mejores (la máquina admite texturas comprimidas en un sólo formato, de hasta 1024x1024 en color de 8 o 16 bits, en color de 8 bits son 256 colores distintos en cada textura, ésta incluye 1 KB para guardar la paleta).
Tampoco hay sistema operativo, hay un kernel en tiempo real; por ejemplo las funciones malloc te las tienes que implementar tú mismo, no puedes cargar y descargar de memoria sin que ésta quede fragmentada, hay que desfragmentarla...
Lo que yo tengo montado es un SDK con codeblocks con una implementación de SDL, con un port del lenguaje BennuGD; todo para Windows; pero hace uso de la CPU principal de PS2 para casi todo.