Cherils; 20160109

Con todas esas cosas aún por resolver, he caído en la cuenta de que es mejor que vaya pensando en una forma de presentar textos más allá de la maldita LINE_OF_TEXT. El problema es que hay que actualizar una parte relativamente grande de la pantalla y que lo suyo sería hacerlo sin tener que apagar la PPU. Escribir linea por linea es una solución, pero el problema en realidad radica en qué hacer con “el fondo”, porque habría que restaurarlo.

¿Puedo leer información de la posición actual del cursor en la PPU de alguna forma? Voy a investigar un poco.

~~

Pinta mal. Neslib me ofrece “vram_read”, pero sólo funcionaría con la PPU apagada.

Sólo me quedaría, por tanto, hacer un “redraw” desde “map_buff” escribiendo N tiles cada vez. La putada es que estoy usando la Neslib vieja y el tema del array de updates está aún en bragas. No puedo plantearme ahora cambiar de Neslib y de versión de cc65 para este proyecto porque entonces la iba a liar parda. Tengo que atarme los machos y terminar todas las ROM de Cheril con las mismas versiones para que esto medio funcione cuando montemos el cartucho con Mapper 113.

Ahora mismo puedo tener 32 patrones para actualizar (que, en realidad, son 96 escrituras… OPS!) Esto me da para 8 tiles.

Si tomase por ejemplo que los cuadros de texto fueran de 16 caracteres de ancho (lo que da 14 caracteres utiles) podría borrarlos de forma chula en plan persiana sin que hubiese demasiados heridos.

Hagamos, por ejemplo, cuadros de 8×8 tiles (128×128 pixels, 14 lineas de 14 caracteres), o, para ser menos heavy, 8×6 tiles (128 x 96). Habría que pintarlos a partir de la posición de juego X=4 Y=3 (X=4..11; Y=3..7). Voy a hacerme un par de funciones.

~~

Buiiino, he modificado msc3nes con una alternativa a “TEXT” y dos nuevos comandos: OPENTEXT y CLOSETEXT. Se usa así: se abre la caja de texto con OPENTEXT, se imprimen todas las lineas con llamadas a TEXT, y posteriormente se llama a CLOSETEXT, que espera a la pulsación de un botón y restaura la pantalla. Ahora voy a ver si funciona… Para ello tengo que programar un cuadro de texto en una de las pantallas donde quiero meter lo de la trampa para enemigos…

~~

Lo tengo funcionando guay. Queda un poco soseras así que voy a diseñar unos tiles para poner de borde y tal. Pero funciona guay 🙂

NOTA: Por alguna razón que no entiendo, si mando 8 tiles de un tirón la actualización se me queda a la mitad y el cuadrado no es completo. Tengo que investigar por qué puede ser. En teoría actualizar cada patrón en la nametable cuesta 3 bytes: 2 para la dirección y uno para el número de patrón. 8 tiles son 8×4 = 32 patrones, y en el array de actualización tengo reservado sitio para 32×3 = 96 bytes. Debería dar… pero no da. Ya veré por qué es. Por el momento lo que hago es mandar solo de 4 en 4 y va bien.

~~

Muchas cosas arregladas y hechas pero … o optimizo, o no pongo a tres fantys en la misma pantalla, porque matan el juego. Tardan demasiado en ejecutarse y me paso de frames. Le echaré un ojal mañana.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s