Karoshi MSX Community
05 de Julio de 2021, 03:29:36 pm *
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: Modificar color caracteres en Screen 1  (Leído 3587 veces)
0 Usuarios y 1 Visitante están viendo este tema.
Fenris78
Karoshi Newbie
*
Mensajes: 9



WWW Email
« : 16 de Febrero de 2013, 02:50:52 am »

Saludos a todos.

Me llamo Jorge, de Sevilla. Cuando eramos crios teniamos un Dynadata en casa y hace algun tiempo he retomado la aficion con un MSX2. Hago juegos para PC desde hace algun tiempo, pero en MSX estoy muy pegado, la verdad.

El tema es que me he puesto a aprender MSX Basic y he comenzado a crear un minijuego. Por el momento me va mas o menos bien: tengo redefinidos algunos caracteres, creadas las rutinas de colision, movimiento... el tema es que ahora me gustaria modificar los colores de los caracteres que he redefinido para añadirle un poco de vida, pero no tengo claro como se hace. Entiendo que en Screen 1 solo puedo poner un color por cada cierta cantidad de caracteres y que debo de modificar la VRAM... pero no se ni en que direccion de la memoria debo modificar los datos ni que valor debo introducir.

¿Me podeis dar alguna orientacion?
En línea
j4mk3
Karoshi Maniac
****
Mensajes: 376


MSx Powa!


WWW Email
« Respuesta #1 : 16 de Febrero de 2013, 05:55:03 am »

Hola Bienvenido "de nuevo" al mundillo MSX,

Pues así rapido te comento que en screen 1 es 1 color cada 8 caracteres...bueno 2 colores, uno para los Ceros y otro para los Unos de los patrones.
Y para datos tecnicos, direcciones y detalles así para tener como referencia, lo mejor es la web de Portar MSX.
Es un solo HTML. si te lo guardas puedes hacer como yo, que me acompaña a todas partes Smiley
http://nocash.emubase.de/portar.htm
Sacado de portar:
Citar
SCREEN 1 - 32x24 coloured text mode

  0000-07FF   BG Tiles
  1800-1AFF   BG Map
  1B00-1B7F   OBJ Attributes
  2000-201F   BG Colors
  3800-3FFF   OBJ Tiles

The BG Colors array defines 32 colors (each 4 bit background, and 4 bit foreground, as in VDP register 7). The colors are assigned to the BG Tiles as follows: Tiles 00..07 share the first color, tiles 08..0F share the second color, etc, and tiles F8..FF share the last color.
En línea

---  G Fan  ---  Galious & Gradius  & G Boys   ---
--- Play HANS' ADVENTURE, STAN, THE DREAMER & BITLOGIC ---
pitpan
Karoshi Forum's Guru
*******
Mensajes: 1812


« Respuesta #2 : 16 de Febrero de 2013, 09:38:27 am »

O dicho más fácilmente: en SCREEN 1 sólo puedes poner dos colores, uno de fondo y uno de tinta, que comparten siempre 8 caracteres consecutivos.

Por ejemplo, si haces

VPOKE 8204,15*16+12

Conseguirás que los caracteres ASCII 96 a 103 sean verde oscuro sobre fondo blanco.

Muy fácil y un rápido. Lo único es que probablemente tendrás que reordenar tus caracteres para que al compartir colores no te den problemas.

Practica con esto y cuando te sientas con fuerza te podemos explicar cómo definir dos colores por cada línea horizontal (8x1 píxels) de cada carácter... También se puede hacer funcionar desde BASIC y te permite ganar mucho colorido.
En línea
Fenris78
Karoshi Newbie
*
Mensajes: 9



WWW Email
« Respuesta #3 : 16 de Febrero de 2013, 03:24:10 pm »

¡Muchas gracias a ambos!

Creo que ya lo voy pillando. ¿Estoy entendiendolo bien?

El ejemplo:

Código:
VPOKE 8204,15*16+12

2000 [HEX] -> 8192 [DEC]

1 color por cada 8 Bits. Si quiero llegar a la "tira" de 96-103:

96/8 = 12
8192 + 12 = 8204

Hasta aqui perfecto. Siguiendo vuestras instrucciones ya he conseguido cambiar los colores que necesitaba. Smiley Lo unico que aun no termino de entender es el
Código:
15*16+12
del final. El 15 y el 12 son los colores blanco y verde, pero ¿porque se realizan esas operaciones? me come la curiosidad.

Por cierto, ya me he guardado el HTML. ¡Muy util!
En línea
MsxKun
Karoshi Forum's Guru
*******
Mensajes: 1554


Kimochi-ii


WWW Email
« Respuesta #4 : 16 de Febrero de 2013, 03:58:46 pm »

Porque ambos colores se definen con un unico byte, usando cada color medio byte, o un nibble. Asi 15 y 12 , seria $F y $C, que al representarse en un solo byte se colocan juntos y queda $FC. Pero claro, de esta forma el valor $F realmente pasa a valer 16*$F o 16*15. Tanto 16*15+12 como $FC equivalen a 252. Cuando te acostumbras al hexadecimal todo es mas facil. Por este tipo de cosas, precisamente.
En línea

--

Cindy Lauper She Bops!
Fenris78
Karoshi Newbie
*
Mensajes: 9



WWW Email
« Respuesta #5 : 19 de Febrero de 2013, 12:20:09 am »

¡Comprendido y asimilado!

Gracias por las explicaciones. Me lo voy a apuntar todo porque para esto hacen falta apuntes. Smiley
« Última modificación: 19 de Febrero de 2013, 12:32:01 am por Fenris78 » 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!