Cómo generar tipo de letra diferente en Basic? ¿y ASM?

Pagina 3/4
1 | 2 | | 4

Van celeroncillo

Expert (87)

afbeelding van celeroncillo

02-07-2011, 18:26

Hola, a ver si al final me decido.... con tantas opciones. Tengo 1 duda, tal y cómo yo lo hacía con screen 2 me voy olvidando, con la opción de SapphiRe no sé cómo editar yo las Tiles, pero es exactamente lo que quiero, vamos, que sea en el screen que sea el tipo de letra es el definido, con la opción de e_sedes también me vale, y aunque he generado unas tiles bien con el icvgm303, grabado, y modificado los data, tengo un caos a la hora de cargarlo (un pequeño ejemplo con la A please) y por ultimo el ejemplo de assembler me vale, pero no se cómo incluir mas línes de texto, de hecho la linea del ejemplo 10114 no me aparece el texto. En resumidas varias soluciones y todas muy buenas (para mi), pero tal vez la que más se aproxima es la de SapphiRe, pero me quedo K.O. al intentar definir yo las tiles, un ejemplito con una simple A ya me vale (creo) para "pillar" el sistema.
Por cierto, me gustan todas las opciones, pero e_sedes, lo mismo, ese ejemplo please.
Gracias a todos

Van Warchild

Paragon (1271)

afbeelding van Warchild

02-07-2011, 21:20

Desde luego, de todos los ejemplos que han puesto se puede aprender algo... esto está lleno de maestros! (que no "maestrillos" eh?) LOL!

El listado de Sapphire me ha sorprendido, siempre pensé (yo sí que soy "alumnillo"Tongue) que cada cambio de Screen te obligaba a redefinir caracteres. Muy pero que muy útil, aunque no acabo de entenderlo del todo. A base de pruebas, a ver qué tal. Si se puede combinar con los otros listados, pues ya la bomba... no tener que redefinir, no tener que hacer el print#1 en los modos gráficos, varias maneras de redefinir los caracteres... todo esto para los que estamos intentando aprender un poquito, nos va de maravilla LOL!

Celeroncillo, si no me equivoco, para usar el listado de Sapphire con tu set de caracteres deberías eliminar las lineas 70 a 90, que tal como indica se encargan de leer, modificar y guardar en memoria el set de caracteres de la rom. Dejándolo en la misma dirección que usa él, después de "Poke &hc000+x," deberías colocar el dato para tu caracter (el dato que lees con "DATA's" ).

Algo así creo (lo dicho, que me corrijan si estoy metiendo la gamba hasta la cabeza):

...

70 for x=0 to 2047
80 read n: poke &hc000+x,n
90 next x

Ten en cuenta que esto redefine todo el set de caracteres y deberías escribir DATAS para todo el set de caracteres... así que tendrás que discriminar de la forma que mejor veas para redefinir solo los que realmente quieres redefinir. Si sus códigos están, por ejemplo, entre 65 y 90 (solo las letras mayúsculas), los pasos serían copiar el set de la rom tal cual hasta el caracter 64, redefinir y copiar tras ellos los que componen tu set y copiar tal cual de la rom el resto, del 91 al 255.

Y lo más importante que te voy a decir: no me hagas ni caso hasta que alguien no diga que no estoy diciendo alguna burrada... vamos que esto es lo que he podido deducir, pero a mí no me preguntes "¿por queee?" jajaja Wink

Van anonymous

incognito ergo sum (109)

afbeelding van anonymous

03-07-2011, 11:48

Vale, cierto, faltaba un paréntesis de cierre delante del mod 256. Esto de no poder copiar del msx y pegar aquí es un poco chungo.

A ver, para editar los tiles es fácil, simplemente elige un programa de edición (yo, personalmente uso el Polka!, me he acostumbrado tanto a él que ya hasta hago utilidades para mejorarlo) y editas el set completo. Luego grabas el set en disco y lo puedes cargar directamente con BLOAD. Después simplemente modificas las rutinas para que apunten al nuevo set grabado y listos, ya lo tienes para todos los screens.

@assembler, la modificación que pretendía hacer era engordar las letras para hacer un efecto "bold", pero la rutina correcta no era multiplicar por 1.5, sino hacer un or del valor con su mitad. Ha salido de casualidad pero coincido contigo en que queda bastante bien para tan poco esfuerzo.

@warchild, en cada screen se tiene que tener un set de caracteres por defecto y su dirección puede ser cambiada como has visto. Sin embargo, en screens gráficos hay que usar el print#1 si se quiere usar este set, porque en SC2 no hay ningún tile predefinido en VRAM, sino que se cogen de la memoria de la CPU (ya sea RAM o ROM).

Van Warchild

Paragon (1271)

afbeelding van Warchild

04-07-2011, 00:31

Buino lo decía por otro listado, de e_sedes, en el que indicaba un poke para no tener que usar el print#1. Supuse que se podría usar en conjunto, aunque no lo he probado. Question

Van anonymous

incognito ergo sum (109)

afbeelding van anonymous

04-07-2011, 00:55

Ese poke requiere que el set esté ya en VRAM, algo que no contempla mi solución. A cambio permitiría letras multicolor con simples prints. Eso si, olvidad los comandos gráficos como circle paint o draw, que no funcionarán. Echadle un vistazo a un artículo de la msxclub llamado extrascreen.

En mi opinión es la mejor manera de trabajar en general con screen 2, salvo hacerlo ya en ensamblador claro está.

Van Warchild

Paragon (1271)

afbeelding van Warchild

05-07-2011, 08:06

Entiendo que a la hora de usar esos caracteres como texto, la solución que mejor se adapte a lo que uno va hacer puede ser una u otra. Pero para el uso a nivel gráfico hay algo que no acabo de pillar del funcionamiento de screen 2. Si no entiendo mal, tienes tres juegos de 255 caracteres cada uno que puedes redefinir. ¿Se pueden usar los tres juegos de caracteres a la vez? Siendo esos caracteres los tiles que compusieran un gráfico, ¿cómo se colocan? ¿con un vpoke a la dirección de la vram y ya? ¿Sería una forma de usar sprites por software en screen 2?

Van anonymous

incognito ergo sum (109)

afbeelding van anonymous

05-07-2011, 10:17

En SC2 tienes tres bancos de 256 tiles cada uno. Cada banco se ocupa de un tercio de pantalla, es decir, el banco 1 de las ocho primeras filas de tiles, el 2 de las 8 de enmedio y el 3 de las 8 de abajo. En cada banco puedes definir cada tile como quieras. Si quieres usar el mismo tile para los tres bancos, hay que definirlo tres veces. De este problema surge el tema del modo mixto, que no es más que una forma de decirle al VDP que haga un modo de SC2 especial en el que sólo hay un banco de tiles. No es totalmente compatible con todos los MSX1.

Así que como ves no es que se puedan o no usar los tres a la vez, sino que se deben usar los tres a la vez si quieres ser compatible totalmente. Ya en MSX2 o superior puedes poner el modo de un único banco y ahí ya sólo se redefine una vez, lo que ofrece posibilidades adicionales.

Una vez definidos los tiles, se colocan con un vpoke a la dirección adecuada de la VRAM en la tabla de nombres. Pero si tienes que poner varios, es mejor hacer el truco del listado de e_sedes (hacer creer al BASIC que está en SC1) y usar un locate y luego un print.

Van anonymous

incognito ergo sum (109)

afbeelding van anonymous

05-07-2011, 20:37

Os remito al artículo "ExtraScreen" publicado en el número 58 de la MSX-Club (Diciembre 1989) donde se explica como crear un "nuevo" modo de pantalla al que denomina ExtraScreen, aunque no es más que un Screen 2 con el poke en FCAF (tal y como sugiere e_sedes).

Es un artículo interesante que incluye una pequeña explicación de cómo se generan los gráficos en SC2 y las coincidencias de ese modo con SC1 (lo que permite que el poke funcione). Después vienen unas rutinas en ensamblador que incluso aprovechan la capacidad del MSX BASIC de ampliar comandos (gracias a la palabra reservada CMD).

Cuando lo leí hace más de 20 años, lo tecleé y aprendí bastante. Incluso llegué a hacerme un modo especial en el que los dos primeros tercios de pantalla eran SC2 (y en ellos funcionaban los comandos gráficos) y el tercio inferior era SC1 (pero con posibilidad de letras multicolor). Era algo realmente curioso ver como se podía editar un listado de BASIC mientras en la parte superior había gráficos Big smile

Van e_sedes

Expert (112)

afbeelding van e_sedes

06-07-2011, 13:24

Recuerdo el artículo ese de "ExtraScreen", en su día lo miré un poco por encima y no me enteré de nada, Tongue. Más adelante, cuando ya supe un poco más, me resultó de lo más interesante. Recomiendo buscar documentación del VDP. Una vez que empiezas a comprender su funcionamiento te das cuenta de que no es tan complicado y puedes afrontar mejor estas cosas.

@celeroncillo, en cuanto tenga un momento pongo el ejemplo ese, a ver si a la noche.

Van assembler

Champion (378)

afbeelding van assembler

06-07-2011, 13:40

e_sedes, ¿De donde puedo sacar esa documentación sobre el VDP para hacer "cosas"?

Pagina 3/4
1 | 2 | | 4