¿Cómo dibujaba la megadrive polígonos?

Hola.

Dado que el sistema gráfico de megadrive está basado en el uso de sprites y sus correspondientes tiles...
¿cómo dibujaba polígonos?

Se me ha ocurrido que a lo mejor toda la pantalla estaba llena de sprites consecutivos.
Entonces por software se hacían los cálculos 3D y se pintaba la escena en los tiles que tenían asociados
esos sprites.

¿Era algo así?

Un saludo.
Algo asi, no pinta en los tiles de los sprites sino en los del background (aunque la megadrive no distingue, puede usar todos los tiles para una cosa u otra).
Se define un área de memoria como framebuffer y se emplea como "pantalla virtual". Esta zona corresponderá con el área donde por lo general lo que se tiene almacenado son los tiles pero en este caso se emplea para dibujar pixels.

Si la pantalla la rellenan 40x28 tiles pues si queremos que el engine 3D sea a pantalla completa en un área de este tamaño de la VRAM se van ubicando los pixels escribiendo valores de color en las posiciones correspondientes de dicho buffer hasta completar el dibujo de las figuras que se pretenda.

Cuando la imagen esté completa se hace un volcado de ésta a la superficie del plano.

Si se quiere más suavidad a la hora de actualizar el dibujo se recurrirá a un "doble buffer" (mientras se lee y escribe sobre la pantalla uno se va preparando el siguiente frame en otro).

Evidentemente todo el cálculo poligonal consiste en trigonometría por sofware y diversas rutinas de dibujo de líneas optimizadas para la ocasión.

Algo así.

Si queréis bichear en más profundidad bajaros el gensKmod y cotillear durante la ejecución de los juegos y demos la VRAM: CPU > Debug > Genisis > VDP.
Probarla con la rom del cubo de las sgdk que se ve "más o menos" bien la manera en que se usa el área de tiles como framebuffer.
realbrucest escribió:Se define un área de memoria como framebuffer y se emplea como "pantalla virtual". Esta zona corresponderá con el área donde por lo general lo que se tiene almacenado son los tiles pero en este caso se emplea para dibujar pixels.

Si la pantalla la rellenan 40x28 tiles pues si queremos que el engine 3D sea a pantalla completa en un área de este tamaño de la VRAM se van ubicando los pixels escribiendo valores de color en las posiciones correspondientes de dicho buffer hasta completar el dibujo de las figuras que se pretenda.

Cuando la imagen esté completa se hace un volcado de ésta a la superficie del plano.

Si se quiere más suavidad a la hora de actualizar el dibujo se recurrirá a un "doble buffer" (mientras se lee y escribe sobre la pantalla uno se va preparando el siguiente frame en otro).

Evidentemente todo el cálculo poligonal consiste en trigonometría por sofware y diversas rutinas de dibujo de líneas optimizadas para la ocasión.

Algo así.

Si queréis bichear en más profundidad bajaros el gensKmod y cotillear durante la ejecución de los juegos y demos la VRAM: CPU > Debug > Genisis > VDP.
Probarla con la rom del cubo de las sgdk que se ve "más o menos" bien la manera en que se usa el área de tiles como framebuffer.



Sin tener idea de programación muy curioso el cubo!! Gracias! :) :)
3 respuestas