Karoshi MSX Community
06 de Julio de 2021, 12:40:33 am *
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión
Noticias:
 
   Inicio   Ayuda Buscar Ingresar Registrarse  
Páginas: [1]
  Imprimir  
Autor Tema: MOVER SPRITES CON VARIOS COLORES EN BASIC  (Leído 5464 veces)
0 Usuarios y 1 Visitante están viendo este tema.
msx dummie
Karoshi Lover
***
Mensajes: 162



Email
« : 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!!! Grin
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 Huh 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ª
En línea
Jon_Cortazar
Administrator
Karoshi Forum's God
********
Mensajes: 2777



WWW Email
« Respuesta #1 : 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 Huh me refiero a si no existe una forma mas sencilla de agruparlos en una sola variable o algo asi.

Efectiviwonder, así es! Wink. 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!  Cheesy
En línea

Jon Cortázar Abraido (aka El Viejo Archivero)
RELEVO Videogames
[Dioniso: La cafeína está haciendo su trabajo; yo espero hacer el mío.]
[pitpan: Me sigue pareciendo más productivo jugar al SNAIL MAZE que seguir esta discusión.]
WYZ
Visitante
« Respuesta #2 : 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.
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #3 : 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 Wink
En línea
SapphiRe_MSX
Visitante
« Respuesta #4 : 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 Wink

...hasta que llega el día (o más bien la noche) en la que te sorprendes a tí mismo soñando en ensamblador... Grin Grin Grin
En línea
msx dummie
Karoshi Lover
***
Mensajes: 162



Email
« Respuesta #5 : 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 Undecided
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!
En línea
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #6 : 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 Smiley

Espero que esto te haya servido de algo. O, como mínimo, que no te haya liado más. Cheesy
En línea
WYZ
Visitante
« Respuesta #7 : 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.
En línea
msx dummie
Karoshi Lover
***
Mensajes: 162



Email
« Respuesta #8 : 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?
En línea
msx dummie
Karoshi Lover
***
Mensajes: 162



Email
« Respuesta #9 : 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.
En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #10 : 13 de Septiembre de 2007, 05:56:19 am »

Te he pasado algunas cosillas a tu email. Espero que te sirvan.
En línea

MSX4EVER2GETHER
www.nerlaska.com
msx dummie
Karoshi Lover
***
Mensajes: 162



Email
« Respuesta #11 : 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...
En línea
nerlaska
Karoshi Excellent Member
******
Mensajes: 1102


Programador


WWW Email
« Respuesta #12 : 13 de Septiembre de 2007, 11:10:15 am »

Si, yo la tengo impresa y se ve perfectamente.
En línea

MSX4EVER2GETHER
www.nerlaska.com
msx dummie
Karoshi Lover
***
Mensajes: 162



Email
« Respuesta #13 : 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... Wink
En línea
Páginas: [1]
  Imprimir  
 
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.21 | SMF © 2013, Simple Machines XHTML 1.0 válido! CSS válido!