Hola,
parece que, a su ritmo, esto va hacia adelante ...
Me he tropezado con un inconveniente no previsto, por exceso de confianza
El subsistema dibuja las pantallas empleando un mapa de bloques que le prepara la CPU principal, tabla Layout
Esta tabla es de 24 filas x 32 columnas, o sea 768 bytes que sería la pantalla completa, pero a menudo los juegos se reservan parte
para mostrar avance del juego, por ejemplo número de vidas, elementos recogidos y otras cosas importantes.
Esta área 'protegida' le llamamos panel (de datos) y *nunca* debe ser machacada por la función que dibuja la pantalla
Desafortunadamente, la versión anterior del motor, no tenía en cuenta las líneas no usadas por arriba donde se imprimen los valores
de varias variables. En cuanto se llama a la función del SUB de pintar pantalla, dichas variables son borradas
He tenido que añadir un parámetro a la llamada al SUB para pintar pantalla para indicarle el número de líneas a no tocar ...
Veréis que FM77LDA1 que contiene el código del Subsistema ha sido modificado para leer este nuevo parámetro y aplicarlo en
tres cálculos distintos
- el puntero a la tabla Layout debe 'saltarse' este número de líneas x 32 bytes en cada línea
- el puntero a VRAM debe 'saltarse' este número de líneas x 320 (8 filas de 40 bytes) mas el margen izquierdo
- al contador de bloques a imprimir se le debe restar este número de líneas x 32 bytes por línea
Espero que estos cambios sean universales y no requieran ajustes para otros juegos ...
En fin esta es la versión v22 con la corrección mencionada. DScore ya funciona correctamente también ...
saludos
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.