Karoshi MSX Community
05 de Julio de 2021, 07:20:46 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: Dudillas MSX-BASIC (en especial trucos VDP)  (Leído 5551 veces)
0 Usuarios y 1 Visitante están viendo este tema.
theNestruo
Karoshi Lover
***
Mensajes: 236


Email
« : 28 de Agosto de 2011, 03:13:20 pm »

Hola.

Bueno, después de comentar lo del Wii Party en "sugiérenos un juego", al final me puse a enredar y estoy programando algo 100% BASIC con la intención de presentarlo a concurso de Konamito (si es que lo acabo y el resultado es decente). El juego que estoy programando, por cierto, no tiene nada que ver con lo de los minijuegos del otro hilo...

El caso es que en mi infancia yo era de DRAW, GRP:, etc. Y ahora estoy utilizando SCREEN2 con las tablas de patrones y colores. He visto varios "trucos" en diversos hilos de este foro... pero no he conseguido que me funcione ninguno. Todo esto lo he probado con el blueMSX emulando MSX1 (lo digo por si afecta).

POKE &HFCAF,1
Pero cuando yo lo intento los PRINT no hacen nada, y cuando hago CTRL+STOP al pulsar letras se me ponen en la tabla de patrones (vamos, que voy escribiendo bloques de 8x1 píxeles). ¿Qué hago mal? (Y sé que funciona, que lo he visto funcionando en el Trail 2)

VDP(1)=VDP(1)XOR64
Esto he leído que se pone dos veces: una antes y otra después de redefinir los caracteres y lo hace más rápido. Pero no he notado diferencia de velocidad (midiéndolo con TIME); sólo he notado como si hiciera DISSCR y ENASCR. No me preocupa mucho, porque una vez generadas las tablas de patrones y colores las guardaré en binario...

Rutina de volcado de RAM a VRAM de las normas del concurso de MSX-BASIC de Konamito
Mis ficheros binarios están generados con VPOKEs y luego BSAVE,S. Actualmente hago BLOAD,S para cargarlos (patrones, colores y sprites). Estos binarios me debería valer tal cual cuando pase a BLOAD + volcar con la rutina, ¿correcto?

Y una última cosa: mis tres slots de patrones y colores van a ser iguales. ¿Hay alguna forma de definir únicamente uno y que los demás tiren del mismo? ¿O tengo que VPOKEar los tres con un FOR (como hago ahora mismo)?

Muchas gracias! Un saludo!
En línea

theNestruo."Old BASIC programmers never die; they GOSUB but never RETURN."
j4mk3
Karoshi Maniac
****
Mensajes: 376


MSx Powa!


WWW Email
« Respuesta #1 : 28 de Agosto de 2011, 07:27:41 pm »

Buenas, Soy JamQue de Thepetsmode. Participé en dos ocasiones en el concurso de Básic de Konamito. A ver si puedo ayudarte un poco.
POKE &HFCAF,1
Pero cuando yo lo intento los PRINT no hacen nada,
Los PRINT solo son validos en SCREEN 0 o 1. En SCREEN 2 si quieres poner algún tile en pantalla debes usar VPOKES.
No comprendo que hace ese POKE. Si has de cambiar algo de la memoria de video debes usar VPOKES.
Te digo tambien que al hacer los VPOKES de modificar tiles sea despues de la sentencia SCREEN 2.
Mirarte este documento http://nocash.emubase.de/portar.htm es muy util en cuanto a saber las direcciones de memoria donde pintar en función del SCREEN que esté y conocer bien el hardware de la maquina. Directamente es esta sección http://nocash.emubase.de/portar.htm#videomodesscreens están las direcciones de pantalla, formas y colores.
y cuando hago CTRL+STOP al pulsar letras se me ponen en la tabla de patrones (vamos, que voy escribiendo bloques de 8x1 píxeles). ¿Qué hago mal?
EIGH?! no entiendo que quieres decir.

VDP(1)=VDP(1)XOR64
Esto he leído que se pone dos veces: una antes y otra después de redefinir los caracteres y lo hace más rápido. Pero no he notado diferencia de velocidad (midiéndolo con TIME);
No lo he usado jamas Sad no se que q hace.

Y una última cosa: mis tres slots de patrones y colores van a ser iguales. ¿Hay alguna forma de definir únicamente uno y que los demás tiren del mismo? ¿O tengo que VPOKEar los tres con un FOR (como hago ahora mismo)?
Malas noticias. Smiley Hay que VPOKEar las 3 zonas. Exite un llamado modo mixto de screen 2 con 1 solo "banko" pero nunca he investigado. En las revistas de MSXCLUB lo llamaban el extrascreen Smiley

Pa lo que sea ya sabes...aquí "tamos" Wink
En línea

---  G Fan  ---  Galious & Gradius  & G Boys   ---
--- Play HANS' ADVENTURE, STAN, THE DREAMER & BITLOGIC ---
Jos'b
Karoshi Maniac
****
Mensajes: 262


« Respuesta #2 : 28 de Agosto de 2011, 08:23:20 pm »

Hola,

en relación al poke &hFCAF,1 lo que hace es engañar al interprete de BASIC haciendole creer que esta en SCREEN 1 cuando se ha ejecutado la instrucción SCREEN 2. Lo que pasa es que tienes que definir todos los caracteres para poder ver el resultado (o los que vayas a usar) despues de hacer el poke, en los tres bancos. Para usarlo creo que deberias hacer algo parecido a esto:

Código:
10 screen 1
20 width 32
30 screen 2
40 poke &HFCAF,1
40 BLOAD"SETGRAFICO",S

espero que te pueda servir

un saludo

En línea
theNestruo
Karoshi Lover
***
Mensajes: 236


Email
« Respuesta #3 : 28 de Agosto de 2011, 11:01:06 pm »

Hola j4mk3 y Jos'b.

Muy interesantes los enlaces, j4mk3. Pa' la saca Cheesy. Los VPOKEs ya los estoy usando; debía haber puesto algo de background al respecto del POKE &HFCAF, que ahora releo mi propio mensaje y me doy cuenta de que como no te suene el POKE no se sabe de qué estoy hablando :S
Dicho "truco" del &HFCAF creo que no me funcionó la vez que lo probé porque pasaba a SCREEN2 desde SCREEN0 en vez de ir desde SCREEN1. Ahora he probado exactamente el fragmento que ha puesto Jos'b y funciona perfectamente. ¡Qué curioso es hacer un list y ver todo el código con colorines... xD!
j4mk3: para que te hagas a la idea es como cuando cortas un juego en SCREEN1 y te quedas en BASIC con los caracteres y colores redefinidos... pero con colores al estilo de SCREEN2. Pruébalo, porque puede resultar MUY interesante en juegos que modifiquen bastante la tabla de nombres (por ejemplo, el Escape from Dwarves Goldmine ^_^)

Respecto a lo de tener un único banco de caracteres en SCREEN2... creía que se podía hacer sin utilizar el modo mixto (que me suena que no es 100% compatible). Nada, pasando; realmente me cuesta lo mismo cargar el binario de un banco que de los tres.

Y una duda que me asalta después de ver la documentación de Portar: ¿sabeis si las posiciones de memoria de VRAM siempre son las mismas? Actualmente utilizo BASE(), me las guardo en una variable y luego es a la que le voy sumando lo que busco. Pero si en todos los MSX los valores de BASE() son los mismos, creo que me puedo ahorrar una suma en muchos VPOKEs. En especial en los de los atributos de los sprites, por lo que la cosa se puede poner interesante ^_^

Muchas gracias a ambos!

Un saludo!
En línea

theNestruo."Old BASIC programmers never die; they GOSUB but never RETURN."
j4mk3
Karoshi Maniac
****
Mensajes: 376


MSx Powa!


WWW Email
« Respuesta #4 : 29 de Agosto de 2011, 10:01:17 am »

Curioso lo del poke...mmm tendré que probarlo pa la próxima creación en básic. Gracias.

¿sabeis si las posiciones de memoria de VRAM siempre son las mismas? Actualmente utilizo BASE(), me las guardo en una variable y luego es a la que le voy sumando lo que busco.
Puuuues en principio deberian ser las mismas...pero claro...puede que esté el tipico MSX "toca narices" que lo pone donde quiere pero sigue cumpliendo el standard MSX. Esto seguro que lo sabe mejor pitpan o "Armando".
Yo diria que te puedes fiar, pero en el Escape (que tu has citado, thankious Wink ) hice lo de BASE por si acaso.
En línea

---  G Fan  ---  Galious & Gradius  & G Boys   ---
--- Play HANS' ADVENTURE, STAN, THE DREAMER & BITLOGIC ---
theNestruo
Karoshi Lover
***
Mensajes: 236


Email
« Respuesta #5 : 06 de Septiembre de 2011, 07:14:32 am »

Detalle descubierto anoche:
Si utilizas el POKE&HFCAF,1, la instrucción COLOR se cepilla los colores que hayas definido para los caracteres &H00-&H03 en el banco superior.
Esto puede ser útil para hacer efectos especiales de cuatro caracteres en la parte superior de la pantalla (ejemplo chorra: si British Bob estuviera hecho en BASIC y SCREEN2, para ahorrar VPOKEs en el parpadeo de las nubes). O puede ser un fastidio si no lo sabías :S
En línea

theNestruo."Old BASIC programmers never die; they GOSUB but never RETURN."
aorante
Karoshi Maniac
****
Mensajes: 451


nuTella Power!


WWW Email
« Respuesta #6 : 08 de Septiembre de 2011, 07:17:52 pm »

Rutina de volcado de RAM a VRAM de las normas del concurso de MSX-BASIC de Konamito
Mis ficheros binarios están generados con VPOKEs y luego BSAVE,S. Actualmente hago BLOAD,S para cargarlos (patrones, colores y sprites). Estos binarios me debería valer tal cual cuando pase a BLOAD + volcar con la rutina, ¿correcto?

No sé si ya tienes claro este tema, pero por si las moscas te hago una nota:
Si guardas lo que hay en la memoria de vídeo con BSAVE,S no necesitas ninguna rutina de volcado, ya que al cargar con BLOAD,S (como en el ejemplo de @Jos'b), ya tendrás todos los gráficos en VRAM.

Saludos y animo con el proyecto!  Wink
En línea

--------------------------------- ------ ----- --- -- -
aorante/303bcn
http://aorante.blogspot.com
http://twitter.com/#!/aorante
http://303bcn.wordpress.com/
--------------------------------- ------ ----- --- -- -
theNestruo
Karoshi Lover
***
Mensajes: 236


Email
« Respuesta #7 : 08 de Septiembre de 2011, 10:46:53 pm »

Sí, ya lo tengo claro; ¡muchas gracias!
Al final sí que utilizo volcado porque para el concurso no se puede utilizar BLOAD,S.
Por otra parte, el BSAVE,S me resultaba inconveniente en algunos aspectos: enseguida pasé de SCREEN1 a SCREEN2 y ahí al utilizar un único .BIN me veía obligado a guardar bastante más cosas de las necesarias. Además si quería guardar varias pantallas diferentes no podía. Con el BSAVE normal + varios volcados puedo tener en el .BIN únicamente una vez la tabla de patrones/colores y meter las diferentes pantallas Cheesy

El proyecto está ya al 80%; la parte jugable está programada al 100%, faltan músicas, detalles de la intro, diseñar un par de pantallas más... esas cosas. Espero que en breve podais disfrutarlo... o sufrirlo (depende de con cuántos FPS considereis que es jugable algo en BASIC)

Un cordial saludo!
En línea

theNestruo."Old BASIC programmers never die; they GOSUB but never RETURN."
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!