Karoshi MSX Community

Desarrollo MSX => Desarrollo (Español/Spanish) => Mensaje iniciado por: cybernoid en 11 de Diciembre de 2007, 12:29:51 pm



Título: mi lio particular con screen 2
Publicado por: cybernoid en 11 de Diciembre de 2007, 12:29:51 pm
Hola,

estoy intentando imprimir caracteres en screen 2 con vpokes, la cuestión es que no me aclaro o algo hago mal.

el codigo es el siguiente.
10 screen 2
20 vpoke 520,255 : rem tabla de patrones A= 65*8 = 520
30 vpoke 6144,65 : rem table de nombres, imprimo A (65)
40 vpoke 8192,100: rem tabla de colores

la cuestiones que no sale nada, nada de nada  :P pero si sustituyo la linea 40 por for n=8192 to 9000:vpoke n,100:next   sale algo, pero es como si el caracter que he redefinido se imprimiera duplicado


¿alguna idea?


Título: Re: mi lio particular con screen 2
Publicado por: cybernoid en 11 de Diciembre de 2007, 12:54:56 pm
Hola,

estoy intentando imprimir caracteres en screen 2 con vpokes, la cuestión es que no me aclaro o algo hago mal.

el codigo es el siguiente.
10 screen 2
20 vpoke 520,255 : rem tabla de patrones A= 65*8 = 520
30 vpoke 6144,65 : rem table de nombres, imprimo A (65)
40 vpoke 8192,100: rem tabla de colores

la cuestiones que no sale nada, nada de nada  :P pero si sustituyo la linea 40 por for n=8192 to 9000:vpoke n,100:next   sale algo, pero es como si el caracter que he redefinido se imprimiera duplicado


¿alguna idea?


me autorespondo un poco.

la memoria de video no se autolimpia cuando inicializo screen 2 ¿correcto?, y en una posicion estaba el 65 por eso parecia que se duplicaba.
y la tabla de nombres (6144) no corresponde con el primer pixel de la pantalla

¿correcto?


Título: Re: mi lio particular con screen 2
Publicado por: pentacour en 11 de Diciembre de 2007, 01:19:00 pm
En la tabla de patrones redefines los caracteres. Es decir, de la 0 a la 7 deberías redefinir por ejemplo una A si es lo que quieres imprimir. De la 8192 a la 8199 irían los colores de esa A. Todo esto sería para el carácter código 0.

Si ahora pones en la tabla de nombres, en la 6144 un 0 debería dibujar la A en la primera posición. Si quieres llenar toda la primera línea de A's, bucle de 6144 hasta 6144+31 escribiendo 0's.

Diría que por defecto en el Screen 2 tienes la tabla de patrones inicializada a 0, es decir, en la 65*8 no tienes una A dibujada (creo recordar, vamos).


Título: Re: mi lio particular con screen 2
Publicado por: SapphiRe_MSX en 11 de Diciembre de 2007, 01:31:07 pm
Diría que por defecto en el Screen 2 tienes la tabla de patrones inicializada a 0, es decir, en la 65*8 no tienes una A dibujada (creo recordar, vamos).

En efecto.

  Al inicializar Screen 2, las tres tablas de patrones (una para cada tercio) están todas a 0. Las tablas de colores están rellenas con los colores de frente y fondo que se hayan indicado y la tabla de nombres está inicializada con los valores 0-255 repetidos tres veces, es decir:

0, 1, 2, 3 ...  31 (en la primera fila)
32, 33, 34, 35 ... 63 (en la segunda fila)
...
224, 225, 226 ... 255 (en la octava fila)
0, 1, 2, 3 ...  31 (en la novena fila)
32, 33, 34, 35 ... 63 (en la décima fila)
...
224, 225, 226 ... 255 (en la decimosexta fila)
0, 1, 2, 3 ...  31 (en la decimoséptima fila)
32, 33, 34, 35 ... 63 (en la decimooctava fila)
...
224, 225, 226 ... 255 (en la vigesimocuarta fila)

  Screen 2 se puede usar como Screen 1 si toqueteamos en la tabla de nombres una vez estén definidos los patrones (ejemplo Namake's Bridgedrome, QBIQS y Entropipe, vamos... yo es lo que he hecho hasta ahora). También se puede usar, de forma más compleja, no tocando la tabla de nombres (o tocándola lo mínimo) y trabajando siempre con las tablas de patrones y colores (ejemplo: Caverns of Titan).

  Espero que esto os lo aclare más.

Saludos
--
Sph.


Título: Re: mi lio particular con screen 2
Publicado por: cybernoid en 11 de Diciembre de 2007, 01:31:34 pm
En la tabla de patrones redefines los caracteres. Es decir, de la 0 a la 7 deberías redefinir por ejemplo una A si es lo que quieres imprimir. De la 8192 a la 8199 irían los colores de esa A. Todo esto sería para el carácter código 0.

Si ahora pones en la tabla de nombres, en la 6144 un 0 debería dibujar la A en la primera posición. Si quieres llenar toda la primera línea de A's, bucle de 6144 hasta 6144+31 escribiendo 0's.

Diría que por defecto en el Screen 2 tienes la tabla de patrones inicializada a 0, es decir, en la 65*8 no tienes una A dibujada (creo recordar, vamos).

ok, vamos a ver, yo redefino el espacio que hay de la posición 0 a la 7, después hago vpoke 6144,0  con lo que se supone que ha impreso en la posición 0 el caracter redefinido  

¿ahora como le doy color?  a que posicion de memoria tengo de ir ¿a 8192 ?  pero la vpokeo y no pasa nada (vpoke 8192,100)


Título: Re: mi lio particular con screen 2
Publicado por: pentacour en 11 de Diciembre de 2007, 01:37:06 pm
En la 8192 defines el color del patron y fondo para la primera fila de la A. Si dibujas la A en una grid de 8x8, la 8192 indica el color para la primera fila, 8193 para la segunda... y 8199 para la base de la A. Es decir, 8 posiciones consecutivas para cada carácter.


Título: Re: mi lio particular con screen 2
Publicado por: SapphiRe_MSX en 11 de Diciembre de 2007, 01:43:52 pm
¿ahora como le doy color?  a que posicion de memoria tengo de ir ¿a 8192 ?  pero la vpokeo y no pasa nada (vpoke 8192,100)

Depende de qué valor hayas vpokeado en la posición 0 y de qué colores hayas definido para la pantalla, porque estás poniendo un color 6 de frente y un 4 de fondo. Si has puesto screen 2 sin definir colores igual tienes el 4 ya de fondo (el famoso color 15,4,4) y quizá hayas hecho un vpoke 0,0 con lo que, en efecto, un vpoke 8192,100 no se vería en absoluto...


Título: Re: mi lio particular con screen 2
Publicado por: cybernoid en 11 de Diciembre de 2007, 01:46:15 pm
En la 8192 defines el color del patron y fondo para la primera fila de la A. Si dibujas la A en una grid de 8x8, la 8192 indica el color para la primera fila, 8193 para la segunda... y 8199 para la base de la A. Es decir, 8 posiciones consecutivas para cada carácter.

yo flipo, estaba haciendo eso mismo y no me chutaba, y ahora lo pruebo y me funciona :|  increible... GRACIAS!

por cierto, no hay manera de imprimir directamente en pantalla pasando de la tabla de nombres?  igual que el spectrum?
tengo siempre de redefinir caracteres para imprimir en pantalla algo o puedo ir y dibujar directamente?






Título: Re: mi lio particular con screen 2
Publicado por: jltursan en 11 de Diciembre de 2007, 02:17:03 pm
Claro que puedes, puedes olvidarte de la tabla de nombres e ir directamente a la de patrones y colores. Si dejas la de nombres tal como ha explicado Sapphire (por defecto), el resultado es que tienes algo muy parecido a lo que hay en el Spectrum, por ejemplo. Puedes dibujar libremente en toda la pantalla :)


Título: Re: mi lio particular con screen 2
Publicado por: cybernoid en 11 de Diciembre de 2007, 02:50:11 pm
gracias a todos :) voy a seguir jugando

a ver que sale  :)


Título: Re: mi lio particular con screen 2
Publicado por: Jon_Cortazar en 11 de Diciembre de 2007, 04:50:07 pm
Aún así yo te recomendaría funcionar con screen2 como si fuera un modo de tiles (usando caracteres en lugar de pintar libremente), porque te va a facilitar la vida para mogollón de cosas (hacer mapas, poder redefinir un caracter y que se cambie automáticamente en todas sus instancias de pantalla), etc... es un poco más rollo porque hay que asumir previamente los caracteres que se van a utilizar, pero luego ganas en comodidad a la hora de gestionar los gráficos: palabra!

Y por supuesto, felicidades por tus progresos!!  :D


Título: Re: mi lio particular con screen 2
Publicado por: cybernoid en 11 de Diciembre de 2007, 05:22:39 pm
Aún así yo te recomendaría funcionar con screen2 como si fuera un modo de tiles (usando caracteres en lugar de pintar libremente), porque te va a facilitar la vida para mogollón de cosas (hacer mapas, poder redefinir un caracter y que se cambie automáticamente en todas sus instancias de pantalla), etc... es un poco más rollo porque hay que asumir previamente los caracteres que se van a utilizar, pero luego ganas en comodidad a la hora de gestionar los gráficos: palabra!

Y por supuesto, felicidades por tus progresos!!  :D

gracias viejo ^^

la verdad es que gracias al apoyo de esta comunidad me estoy animando un monton a investigar, incluso he empezado un pequeño proyecto ^^ !!
espero que con el tiempo y una caña ese proyecto vea la luz, como digo es muuuuy pequeño pero para empezar creo que esta bien.
por cierto, una duda se me plantea que tiene algo que ver con el tema.

¿que programa utilizáis para definir sprites con mas de un color (vamos, cuando usais mas de un sprite para una figura)?


lo dicho, gracias a todos!! :)


Título: Re: mi lio particular con screen 2
Publicado por: jltursan en 11 de Diciembre de 2007, 06:51:33 pm
...a güevo :(

Todavía no he encontrado ningún programa que se maneje con los sprites del MSX1. Me tengo que apañar a base de separar los colores mentalmente , separar los planos una vez dibujado a todo color o utilizar planos en herramientas como el PsP o el GIMP. Reconozco que estaría cojonudo encontrar algún editor de sprites que permitiera eso... ::)


Título: Re: mi lio particular con screen 2
Publicado por: pentacour en 11 de Diciembre de 2007, 07:07:39 pm
Yo usaba uno que se podía utilizar en web o bajarlo y usarlo en local, pero ahora no estoy en casa y no recuerdo el nombre. Aunque no es todo lo ágil que me gustaría.

Estoy pensando que un editor de sprites sería un buen complemento para el nMSXtiles (he venido a hablar de mi libro!!)  :P



Título: Re: mi lio particular con screen 2
Publicado por: jltursan en 11 de Diciembre de 2007, 08:00:41 pm
Seguramente era el TinySprite (http://msx.jannone.org/tinysprite/tinysprite.html) de Rafael Jannone, de lo mejorcito; pero no soporta planos...

Definitivamente si el nMSXtiles soportara planos de sprite sería un puntazo :D