HispaMSX

Re: [hispamsx] Varias dudas de programación

2002-04-21 11:51:19
Hola a todos.

Hola!

Bueno, me he animado a retomar un poco la programación
para MSX 1, y hasta que no me vuelva a leer aquellos
libros sobre CM para Z80, aquí van algunas
preguntillas pues tengo en mente hacer algo en basic.

Me parece bien que te animes a programar de nuevo. De todos modos, empieza con el Basic, si quieres, pero ve preparándote para dar el salto al ensamblador. Los MSX de la primera generación son máquinas sorprendentes si se programan a bajo nivel.

- ¿dónde comienza la tabla de caracteres en screen 1
(para redefinirlos)?

Tal cual, tras ejecutar la orden SCREEN 1 y sin jugar con las órdenes BASE o VDP, los patrones de caracteres están a partir de la dirección &h0000, o lo que es lo mismo en decimal: 0. Acaba en &h07FF.
Así, para redefinir la "a" (ASCII 97) tendrías que hacer algo como

10 DEFINT A-Z
20 FOR I=0 TO 7
30 READ D
40 VPOKE 97*8+I,D
50 NEXT
60 DATA ....

Si te animas a hacerlo en C/M, emplea las rutinas de la BIOS, por ejemplo, LDIRVM para hacer transferencias en bloque a una velocidad más que aceptable (instantánea si lo comparas con el BASIC).

- ¿cómo haríais para hacer sonar una música durante el
bucle principal de un juego? Preferentemente en basic,
nada de interrupciones, ya digo que ahora estoy pegao
:)

El comando PLAY, como habrás notado, detiene el flujo del programa en BASIC. No hay otro remedio que emplear la instrucción SOUND. Aunque no quieras emplear interrupciones en ensamblador, puedes emplearlas en BASIC. Consumen mucho tiempo pero solucionan bastantes pegas. Mi BASIC está bastante oxidado, aunque creo recordar que había una interrupción en la que se definía el intervalo de interrupción, y luego se ponía un ON INTERVAL GOSUB xxx. De todos modos, no aspires a sonidos complejos simultaneados con la acción si estás programando en BASIC.

- creo que había un registro del vdp para desconectar
y conectar la pantalla, ¿me podríais decir cuál?

Sí, hay un registro para eso en la VDP. En el registro de modo 1 del VDP, el bit 6. Pero mejor no lo toques directamente porque podrías afectar a otras banderas, emplea las rutinas de la BIOS para no complicarte la vida:

Desactivar pantalla: rutina DISSCR, dirección &h0041
En BASIC: DEFUSR=&h41:A=USR(0)

Activar pantalla: rutina ENASCR, dirección &h0044
En BASIC: DEFUSR=&h44:A=USR(0)

Aun así, si empiezas a hacer PAINTs enormes el usuario se aburrirá de ver la pantalla apagada.

En fin, esto es lo que se me ocurre por ahora. También
me gustaría incluir alguna subrutina en CM, hasta que
no esté más puesto... ¿me aconsejáis que las use para
algo en particular, quiero decir, mover sprites, leer
el teclado o algo así, o no vale la pena si el
programa está en basic?

PARA TODO! PROGRAMA EN ASM! No, en serio, plantéate pasarte al ensamblador. En cualquier caso, si te empeñas en trabajar en BASIC, emplea rutinas en CM para todo lo que puedas, pero especialmente para las rutinas de sonido y para el movimiento de los sprites: la instrucción PUTSPRITE es increíblemente lenta, no conseguirás mover más de 4 sprites simultáneamente a una buena velocidad. También para la detección de colisiones, que no se te ocurra emplear el ON SPRITE GOSUB, porque es leeeeeeentooooooo...

Ufff... siento tanto follón... a ver si así me animo a
hacer algo :)

Espero que así sea. Siempre hacen falta programadores, y sobre todo para MSX de la primera generación, que escasean. Yo también soy MSXiano de la primera generación, el MSX2 me gusta pero no tiene -para mí- el mismo carisma que el MSX, con sus cintas, con las dos columnas que se pierden a la izquierda de la pantalla, etc.

¡Gracias!

A tí, por animarte a programar.

Un saludo,

Eduardo Robsy


_________________________________________________________________
Únase con MSN Hotmail al servicio de correo electrónico más grande del mundo. http://www.hotmail.com


<Anterior en la conversación] Conversación actual [Siguiente en la conversación>