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