Hola de nuevo,
hoy subo una nueva versión (la v0.33). Contiene el fichero fuente y el disco virtual .D77 por si queréis probarlo.
Aquí ya he añadido los bloques básicos para el juego:
- El sistema de cambio de Localización
- Mostrar / borrar textos - conversaciones
- control de eventos para los dos casos anteriores
De momento solo se puede pasar de Casa a Coche, pero ya he podido 'comprobar' como van a ir las cosas al ir añadiendo localizaciones ...
El control de límites de movimiento y las posiciones de los personajes cambian horrores de Dragón a FM-7 así que me he hecho una utilidad
(en Dragón) que recibiendo una posición de la pantalla de Dragón, me devuelve la fila y columna en el FM-7 así como la posición VRAM
del plano 'verde' de la esquina superior izquierda de Brody ...
Una sorpresa ha sido ver como al cambiar de pantalla, se ven dos Brodys, el de la pantalla anterior no es borrado ya que en Dragón se
hace el equivalente de un PCLS (6.144 bytes a cero), pero aquí serían 16.384 en los planos Verde y Rojo (los usados por Brody), o sea
32.768 bytes. En lugar de ésto he creado una función para el Subsistema que pone a $ff el área ocupada por Brody antes del cambio de
pantalla en los planos que ocupa.
El tema de los textos tampoco ayuda mucho ... Para borrar lo primero que hice fue enviar cuatro comandos "escribir Bloque de texto"
con 42 espacios en blanco ya que no se sabe de antemano cuantas lineas hay que borrar ... funciona, pero me pareció 'lento' así que
intenté crear otra función para el Subsistema que borrara el texto de las cuatro filas con un solo comando ...
Pero, ¿Donde está el texto en el mapa de memoria de esta bendita máquina?
Con el debugger encontré que el texto escrito en la linea 16 aparece en ASCII a partir de $C500, la linea 17 a partir de $C550,
la 18 a partir de $C5a0 y la 19 a partir de $C5f0
Cuando fuerzas estas posiciones a valor $20 (espacio en blanco), NO afectan a la pantalla, #$%&#
Hurgando por toda la memoria gráfica (los tres planos), descubrí que, desgraciadamente, los bitmaps de cada letra
se guardan en los TRES planos, de forma que las lineas indicadas tienen información en
Linea 16 a partir de $B200 ocupando 10 filas hasta $B51F. Linea 17 a partir de $B520 ocupando 10 filas hasta $B83F
Linea 18 a partir de $B840 ocupando 10 filas hasta $BB5F. Linea 19 a partir de $BB60 ocupando 10 filas hasta $BE7F
Así que el comando pasa a $ff (fondo blanco) el rectángulo ocupado por 4 lineas de 42 caracteres en los tres planos.
Es suficientemente rápido, asi que ahí se queda.Veremos si sigue quedando espacio libre en $c000 para meter
funciones especiales
saludos
pere
Pd A mi el movimiento horizontal sigue sin gustarme ... ya lo revisaré en algún momento, pero si a alguien se le ocurren
ideas (mirando el fichero fuente en ensamblador) serán todas bien recibidas!