Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: msx dummie en 11 de Septiembre de 2007, 10:49:18 am



Título: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: msx dummie en 11 de Septiembre de 2007, 10:49:18 am
Buenos dias chicos.
Vuelvo a la carga con una nueva duda.
ayer estuve dandole un poquito de caña y teclee un listado de un pequeño juego en el que finalmente consegui que nuestra nave (con el diseño que yo queria y no con el del tutorial que use) apareciese en la pantalla y pudiese moverla a mi voluntad, incluso disparar a un blanco! increible! si me lo dices hace 2 meses flipo!!! ;D
ya se que esto para vosotros sera hasta gracioso, pero yo de verdad que estoy orgulloso jy todo....ejejejj
bueno, la duda que tengo es saber como puedo hacer para diseñar sprites con varias capas de color y poder tratarlo como un único elemento. quiero decir: para un personaje o nave que tenga cuatro colores.
¿Es necesario listar 4 sprites unos sobre otros y cada vez que se mueve darle ordenes desde basic a esos cuatro sprites ??? me refiero a si no existe una forma mas sencilla de agruparlos en una sola variable o algo asi.
bueno, espero vuestra ayuda, como siempre muchisimas gracias!
un saludo!
BºRJª


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: Jon_Cortazar en 11 de Septiembre de 2007, 11:19:47 am
¿Es necesario listar 4 sprites unos sobre otros y cada vez que se mueve darle ordenes desde basic a esos cuatro sprites ??? me refiero a si no existe una forma mas sencilla de agruparlos en una sola variable o algo asi.

Efectiviwonder, así es! ;). 4 colores= cuatro sprites solapados!. Y tendrás que desplazarlos a la vez usando tu programa, como tu bien dices: no hay forma de "agruparlos", si es a eso a lo que te referías.

Enhorabuena con tus progresos!  :D


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: WYZ en 11 de Septiembre de 2007, 07:36:25 pm
La mejor forma de "agruparlos" desde el BASIC que se me ocurre es algo asi:

; Teniendo en las variables X% e Y% la posición de la nave
; y la definición de los sprites como los 4 primeros de 16x16

VPOKE &H1B00,Y%
VPOKE &H1B04,Y%
VPOKE &H1B08,Y%
VPOKE &H1B0C,Y%

VPOKE &H1B01,X%
VPOKE &H1B05,X%
VPOKE &H1B09,X%
VPOKE &H1B0D,X%

... bueno , también se podría hacer un programilla en CM para acelerar esto.


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: pitpan en 12 de Septiembre de 2007, 07:52:48 am
Sólo una breve explicación: los VPOKEs que indica WYZ equivalen al uso de PUT SPRITE, ya que lo que hace es atacar directamente la tabla de atributos de sprites localizada en la VRAM. ¿La ventaja? Pues muy simple: puedes mover una coordenada, el patrón de sprite o el color mandando un único byte en lugar de mandar 4 de golpe, como hace el PUTSPRITE. El resultado es que todo es - en principio - un poco más rápido.

De todos modos, una vez entendidos los rudimentos del hardware del MSX (VDP, PSG) y las bases de la programación, pásate al ensamblador para hacer que las cosas se muevan bien. Además, todos coincidirán conmigo: el ensamblador sólo parece difícil, pero NO LO ES. Una vez que uno reúne el valor suficiente como para empezar, ya está todo hecho ;)


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: SapphiRe_MSX en 12 de Septiembre de 2007, 11:31:59 am
Además, todos coincidirán conmigo: el ensamblador sólo parece difícil, pero NO LO ES. Una vez que uno reúne el valor suficiente como para empezar, ya está todo hecho ;)

...hasta que llega el día (o más bien la noche) en la que te sorprendes a tí mismo soñando en ensamblador... ;D ;D ;D


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: msx dummie en 12 de Septiembre de 2007, 02:09:31 pm
buffff... creo que me queda bastante hasta que llegue el ensamblador, yo ganas le estoy poniendo, las unicas nociones que tenia de esto eran recuerdos de mis clases del cole con el amstrad... print, input y poco mas.. jejejj :-\
asi que estoy con libros y con todo lo que pillo por internet que me pueda resultar util...
y aunque la verdad es que he avanzado, ya os digo que estoy empezando de cero total.
con respecto a los rudimentos del hardware del msx(vdp??, psg??) estoy totalmente pez...
¿conoceis algun buen totorial sobre esto?
y ademas, WYZ, el listado que me pones de vpokes ¿que significa exactamente? ¿serias tan amable de explicarmelo? ¿asi como para tontos please?
bueno, gracias por vuestra ayuda, porque sino, de verdad que en vez de perdidisimo estaria desquiziado del todo...
un saludo!


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: pitpan en 12 de Septiembre de 2007, 05:29:34 pm
Respecto a BIOS, PSG, PPI, VDP, etc. te recomiendo que descargues el MSX RED BOOK. Está muy bien.

En cuanto a los VPOKEs, la tabla de atributos de sprites está por defecto en la dirección 1B00h de la memoria de video (VRAM). Lo que hace la instrucción PUT SPRITE es actualizar estos valores. Puedes hacer lo mismo escribiendo directamente a la VRAM con VPOKE (como POKE pero con la V de "vídeo").

La tabla de atributos (SPRATR en mi propia jerga) se compone de 32 bloques de 4 bytes organizados de forma consecutiva, correspondiendo cada bloque a cada uno de los planos de sprites disponibles en el TMS9918 y derivados.

La estructura de estos 4 bytes es la siguiente:

offset 0 : coordenada vertical (Y)
offset 1 : coordenada horizontal (X)
offset 2 : patrón de sprites (P)
offest 3 : color del plano (C)

Por lo tanto, en esta clave, sería equivalente

PUTSPRITE plano,(X,Y),C,P

A lo siguiente

VPOKE &h1B00+4*plano,Y
VPOKE &h1B01+4*plano,X
VPOKE &h1B02+4*plano,P       (o P*4 si usas sprites de 16x16 píxeles)
VPOKE &h1B03+4*plano,C

La equivalencia es válida en general, aunque la instrucción putsprite es más compleja: incluye control de bordes, que con VPOKEs habría que hacer a través del bit de Early Clock (EC)... pero de esto mejor hablamos otro día. De momento, quédate con la copla de que hacen lo mismo. Eso sí, si usas multiplicaciones tal y como aparecen en el ejemplo, la ejecución será MUY LENTA.

Si te acostumbras a usar VPOKEs, el paso al ensamblador será menos traumático :)

Espero que esto te haya servido de algo. O, como mínimo, que no te haya liado más. :D


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: WYZ en 12 de Septiembre de 2007, 08:27:29 pm

y ademas, WYZ, el listado que me pones de vpokes ¿que significa exactamente? ¿serias tan amable de explicarmelo? ¿asi como para tontos please?
bueno, gracias por vuestra ayuda, porque sino, de verdad que en vez de perdidisimo estaria desquiziado del todo...
un saludo!

Pues claro que podría pero ahi tienes una perfecta explicacion por pare de Mr. Robsy.

Un mapa de la memoria de la VRAM en los distintos modos ayuda mucho. Hay una instrucción del Basic llamada BASE que te simplifica mucho esta labor.


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: msx dummie en 12 de Septiembre de 2007, 09:53:38 pm
Respecto a BIOS, PSG, PPI, VDP, etc. te recomiendo que descargues el MSX RED BOOK. Está muy bien.

sabes donde puedo descargarlo?


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: msx dummie en 12 de Septiembre de 2007, 09:57:23 pm

 
Un mapa de la memoria de la VRAM en los distintos modos ayuda mucho. Hay una instrucción del Basic llamada BASE que te simplifica mucho esta labor.
[/quote]

de que forma?
me refiero a... cual es la manera de usar esta instrucción.


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: nerlaska en 13 de Septiembre de 2007, 05:56:19 am
Te he pasado algunas cosillas a tu email. Espero que te sirvan.


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: msx dummie en 13 de Septiembre de 2007, 10:49:31 am
Te he pasado algunas cosillas a tu email. Espero que te sirvan.

recibido!
muchas gracias, sabes si tienen calidad como para imprimirlos?
sobre todo la guia de basic me interesaria tenerla impresa...


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: nerlaska en 13 de Septiembre de 2007, 11:10:15 am
Si, yo la tengo impresa y se ve perfectamente.


Título: Re: MOVER SPRITES CON VARIOS COLORES EN BASIC
Publicado por: msx dummie en 13 de Septiembre de 2007, 02:54:45 pm
bueno, despues de mi viaje por el mundo de los vpokes, aprovecho para daros las grácias a todos, que con tanta curiosidad uno se olvida a veces!
estoy con ello y os seguiré contando mis avances y dudas. de momento tengo un taco de cosas para estudiar... ;)