Imanok
|
|
« Respuesta #30 : 28 de Enero de 2006, 08:09:39 pm » |
|
Imanok: si lo que quieres es usar directamente un LOCATE X,Y:PRINT A$ en SCREEN 2 puedes hacerlo.
Simplemente, estando en SCREEN 2 y con todos los patrones de los 3 bancos ya definidos, usa el comando POKE &hFCAF,1. Con eso conseguirás que el BASIC crea que está en SCREEN 1, con lo que podrás usar LOCATE, PRINT, etc.
Ah, sí?? sólo con eso??... y qué diferéncia hay entre ésto del poke y el modo mixto ese del que tanto se ha hablado??... porque parece que sea lo mismo... Aparte de eso... has comprobado que lo del OUT que comentaste funciona??... en mi programa no me ha funcionado y luego he hecho pruebas utilizando el código que habías puesto tú y nada... puede ser que no hayas puesto la dirección correcta?? Aprovecho y otra duda... Ya he visto que si quiero borrar la pantalla, al hacer un CLS me cargo todo... entonces, hay alguna forma de borrar toda la pantalla visible, que sea más rápida que vpokear el patron 0 en todas las posiciones una por una??... es que no veas qué peñazo... Pero cuidadín con lo que haces, ¿vale? Siiiiiiiiiiiiiiiiiiiiiiiiiiiiii!!!!!
|
|
|
En línea
|
|
|
|
e_sedes
|
|
« Respuesta #31 : 28 de Enero de 2006, 08:25:52 pm » |
|
Simplemente, estando en SCREEN 2 y con todos los patrones de los 3 bancos ya definidos, usa el comando POKE &hFCAF,1. Con eso conseguirás que el BASIC crea que está en SCREEN 1, con lo que podrás usar LOCATE, PRINT, etc.
no habría que hacer primero SCREEN 1: WIDTH 32 antes que el SCREEN2? Para que así el BASIC escriba en los lugares correspondientes a cada carácter, no? Yo esto me lo acabo de aprender mirando el listado del Memory, que no lo sabía y mola.
|
|
|
En línea
|
sempre fun un valente corredor
|
|
|
Imanok
|
|
« Respuesta #32 : 28 de Enero de 2006, 08:54:27 pm » |
|
Ya he visto que si quiero borrar la pantalla, al hacer un CLS me cargo todo... entonces, hay alguna forma de borrar toda la pantalla visible, que sea más rápida que vpokear el patron 0 en todas las posiciones una por una??... es que no veas qué peñazo...
Autorespuesta! Investigando con eso de los pokes, he visto que lo mejor para borrar la pantalla es: POKE &hFCAF,1:CLS:POKE &hFCAF,2 Y ale, pantalla borrada en un pis pas!!
|
|
|
En línea
|
|
|
|
jltursan
|
|
« Respuesta #33 : 28 de Enero de 2006, 08:59:19 pm » |
|
Vaya, mi gozo en un pozo, no parece que funcione ¿es posible que sólo vaya en algunos equipos?, ¿o será culpa del emulador?. La idea parecía buena, la tabla de nombres en ambos modos (1 y 2) está en el mismo sitio; así a priori podría haber colado... Autorespuesta!! Acabo de descubrir que para que funcione la entrada a screen 2 debe de hacerse desde screen 1, no desde screen 0. O sea, algo así como: screen 1:screen 2 ...nada más empezar.
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
jltursan
|
|
« Respuesta #34 : 28 de Enero de 2006, 09:01:51 pm » |
|
no habría que hacer primero SCREEN 1: WIDTH 32 antes que el SCREEN2? Para que así el BASIC escriba en los lugares correspondientes a cada carácter, no? ¡Ajum!, creo que me he repetido, sospecho que era esto a lo que te referías... En cualquier caso el truco está genial (pena de tener que cargar los tres bancos)
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
e_sedes
|
|
« Respuesta #35 : 28 de Enero de 2006, 10:40:25 pm » |
|
¡Ajum!, creo que me he repetido, sospecho que era esto a lo que te referías... En cualquier caso el truco está genial (pena de tener que cargar los tres bancos) Pozí, eso era. Y si, está genial. Ya me lo apliqué al algo que estoy intentando hacer y el dibujado de la pantalla se ha disparado, jeje, mola. Ten en cuenta que haciendo CLS te llena la pantalla con el tile 32 (el caracter del espacio), y para PRINTar los caracteres inferiores hay que poner chr$(0)+chr$(64+n), siendo n el nº de tile. Un poco lioso pero no demasiado.
|
|
|
En línea
|
sempre fun un valente corredor
|
|
|
e_sedes
|
|
« Respuesta #36 : 28 de Enero de 2006, 11:09:24 pm » |
|
Ah, y también el WIDTH32 es importante para poder acceder bien a toda la pantalla. Y con KEYOFF apuras un pelín más el uso de PRINT. Para la última linea y el último carácter de la penúltima hay que vpokear. Tal vez esto ya lo controlases, pero bueno, yo tuve que refrescarme la memoria.
|
|
|
En línea
|
sempre fun un valente corredor
|
|
|
WYZ
Visitante
|
|
« Respuesta #37 : 28 de Enero de 2006, 11:41:53 pm » |
|
defusr=&H77E:a=usr(0)
rellena la pantalla con &H300 tiles &H20 ( o 32) si hay un 1 en &HFCAF y con tres bancos de tiles incrementando de 1 en 1 si hay un 2 pero no te limpia la definicion de caracteres.
Ah, se me olvidaba. Hay que poner Keyoff
|
|
« Última modificación: 28 de Enero de 2006, 11:50:31 pm por WYZ »
|
En línea
|
|
|
|
Imanok
|
|
« Respuesta #38 : 30 de Enero de 2006, 10:21:56 am » |
|
Ten en cuenta que haciendo CLS te llena la pantalla con el tile 32 (el caracter del espacio), y para PRINTar los caracteres inferiores hay que poner chr$(0)+chr$(64+n), siendo n el nº de tile. Un poco lioso pero no demasiado.
Te refieres a que para printar los caracteres del 0 al 31 hay que hacer chr$(0)+chr$(64+n) ??... si es así, lo he probado y no funciona... alguna otra solución para printar esos caracteres?? (usando PRINT, no vpoke).
|
|
|
En línea
|
|
|
|
e_sedes
|
|
« Respuesta #39 : 30 de Enero de 2006, 02:36:02 pm » |
|
Te refieres a que para printar los caracteres del 0 al 31 hay que hacer chr$(0)+chr$(64+n) ??... si es así, lo he probado y no funciona... alguna otra solución para printar esos caracteres?? (usando PRINT, no vpoke).
Opss, perdón, es chr$(1)+chr$(64+n). Prueba ahora.
|
|
|
En línea
|
sempre fun un valente corredor
|
|
|
SapphiRe
Visitante
|
|
« Respuesta #40 : 30 de Enero de 2006, 02:52:49 pm » |
|
Simplemente, estando en SCREEN 2 y con todos los patrones de los 3 bancos ya definidos, usa el comando POKE &hFCAF,1. Con eso conseguirás que el BASIC crea que está en SCREEN 1, con lo que podrás usar LOCATE, PRINT, etc.
Para volver a convencer al MSX de que está en SCREEN 2, pokea la misma dirección con el valor 2. Así podrás volver a usar CIRCLE, LINE, PAINT, etc.
Esto demuestra, una vez más, lo iguales que son SCREEN 1 y 2 en el MSX, lo cual nos da muchísimo juego a la hora de hacer efectos interesantes con los gráficos
|
|
|
En línea
|
|
|
|
Imanok
|
|
« Respuesta #41 : 30 de Enero de 2006, 04:47:19 pm » |
|
Opss, perdón, es chr$(1)+chr$(64+n). Prueba ahora.
Ahora sí!
|
|
|
En línea
|
|
|
|
Imanok
|
|
« Respuesta #42 : 31 de Enero de 2006, 08:46:01 am » |
|
Por cierto, he descubierto otra forma de poder escribir los patrones 0-31 con un PRINT, haciendo lo siguiente:
-Inicializamos como habéis comentado SCREEN 1:WIDTH32:SCREEN2:cargo_set:POKE &hFCAF,1 -A partir de aquí, mostramos por pantalla (con vpokes) los patrones que queramos de entre los 32 primeros. -Hacemos un CTRL+STOP y nos situamos sobre la línea de patrones que acabamos de dibujar, insertándole delante un número de línea y un PRINT", para incluirlo en nuestro programa y ya está (luego ya coloco esa línea donde me convenga).
Lo que he hecho ha sido dibujar toda la pantalla con vpokes, hacer CTRL+STOP y crear 23 líneas de programa con los patrones de cada línea. Como ya habéis comentado, el último patrón de la penúltima línea y la última línea completa, hay que hacerlos con vpoke... pero vamos, la diferencia de velocidad es grandísima (entre dibujar toda la pantalla con vpoke's o con print's, quiero decir).
|
|
« Última modificación: 31 de Enero de 2006, 08:52:35 am por Imanok »
|
En línea
|
|
|
|
jltursan
|
|
« Respuesta #43 : 31 de Enero de 2006, 11:32:53 am » |
|
Hacemos un CTRL+STOP y nos situamos sobre la línea de patrones que acabamos de dibujar, insertándole delante un número de línea y un PRINT", para incluirlo en nuestro programa y ya está Esos carácteres creo que se podían obtener desde el teclado usando la tecla GRAPH, ¿no?. EL problema debe de ser, como habeis comentado, obtenerlos a partir de CHR$
|
|
|
En línea
|
Doom dee doom dee doom
|
|
|
Imanok
|
|
« Respuesta #44 : 01 de Febrero de 2006, 08:59:09 am » |
|
Esos carácteres creo que se podían obtener desde el teclado usando la tecla GRAPH, ¿no?. EL problema debe de ser, como habeis comentado, obtenerlos a partir de CHR$ Yo pensaba que la primera fila de la tabla de patrones no se podía pintar con GRAPH... pero va a ser que sí. Torpedo que es uno...
|
|
« Última modificación: 01 de Febrero de 2006, 09:00:47 am por Imanok »
|
En línea
|
|
|
|
|