Hace cosa de un mes empecé un editor de tiles para N64 y PC en general, para no olvidarme de todas las cosillas que he ido añadiendo las iré anotando por aquí.
El editor de tiles ya es funcional, se pueden crear y guardar mapas.
Maneja un plano de scroll y 9 capas para el mismo en 3 resoluciones distintas (256x240, 320x240, 640x480), los tiles son PNG de 16bits cada uno, no uso FPG ya que lo que busco es un sistema lo más neutral posible para portarlo.
Los tiles se cargan por orden de la función glob, si se les añade la coletilla 001_1.png, 001_2.png, etc pasan a ser tiles animados apuntando al tile 001 y no forman parte del tile set editable, sino que el engine interpretará que son una animación.
El tamaño de los tiles se analiza y debe ser inferior a 4KB (N64), tampoco pueden ser impares, el plano principal puede ser por ejemplo de 32x32, mientras que los layers de 64x32 o cualquier otro tamaño, no hay problema en tiles de diferente tamaño en diferentes capas.
La interfaz del programa se basa en ventanas, una ventana para el tamaño del mapa, otra para herramientas, otra para las propiedades de la capa y la última el grupo de tiles para seleccionarlos, se pueden mover, abrir o cerrar, en el caso de la del tile set se puede redimensionar a un tamaño personalizado.
Un gif (si nos ponemos encima de un tile podemos hacer CTRL+C para seleccionarlo como tile para pintar):

La ventana herramientas contiene:
- Un panel para saltar a cada punta del mapa o centro.
- Un modo continuo para pintar tiles, se mantiene el ratón.
- Un modo cámara libre, el ratón actúa como lo hace un navegador de internet, desplazando el scroll más rápido o lento desde el punto de origen de pulsación, las flechas del teclado permiten un desplazamiento continuo de 8 pixels.
- Modos lupa 2x y 3x, en realidad no quería añadirlos pero el grafista dio el visto bueno, un zoom en caso de usar tiles pequeños.
- Modo pote de pintura, para rellenar zonas completas de un mismo tile, es una función recursiva y analiza según las condiciones del mapa si se usa en todo el mapa o solo la pantalla visible.
- Modo selección, permite cortar, copiar o borrar grupos de tiles seleccionados, fuera o dentro del mapa, además copia las propiedades individuales de cada tile y cualquier otra propiedad independiente.
- Modos para añadir/eliminar filas/columnas.
- Se puede pulsar suprimir encima de cualquier tile o mantener para ir borrandolos.
La selección de estos modos también puede hacerse con F1 a F9, por orden de función en la lista de herramientas, usando la rueda del ratón se pueden rotar funciones de un mismo grupo, por ejemplo en añadir o eliminar filas o columnas, también con el ratón derecho se puede cancelar para volver al estado solo pintar en todas las funciones salvo las que abran menús emergentes.
La ventana dimensiones permite modificar cuantas filas o columnas tiene un mapa al vuelo durante la edición, las partes que quedan fuera de la región del mapa quedan como oscuras, pero no se borran por si son necesarias después.
De momento existen limites:
El scroll principal puede ser de 512x256 como máximo, esto está por revisar.
Los layers de 32x32, esto creo que es más que suficiente.
No estoy usando punteros de momento y viendo con la alegría que hago las cosas en el editor seguramente no los añada en su gestión, si en otras cosas.
Un gif con más cosillas, los números tienen un cuadro de "introducción libre", ponemos el ratón encima del recuadro y ya se pueden introducir los números reseteando el anterior automáticamente, sin tener que hacer doble clicks ni otras pulsaciones, cuando el ratón deja de estar en el recuadro se reinicia la introducción libre del número, si pulsamos cuando una ventana ya está creada la devolvemos a su posición de origen.
Tile to map permite volcar todo el mapa de tiles en un único PNG o FPG, si el mapa es de 512x256 llega a tomar la absurda cifra de 1GB de RAM en el proceso y bastante tiempo con el programa en (no responde), así que he incluido FPG que es un proceso más rápido.
Este es el aborto que acabo de hacer extraído en mapa.

Además permite volcar en PNG el tile set activo que tengamos cargado en esa capa en particular también, esto es para si hay que cambiar los colores en un puñado de imágenes a la vez por ejemplo, para no andar manejando los archivos 1 a 1, el proceso es reversible, si un tile ocupa más de 4KB el programa entiende que se trata de un conjunto de tiles y usa un algoritmo para detectar, separar, optimizar y organizar los tiles en la carpeta.

La función
tile to N64 prepara y limpia el proyecto, organiza los nombres de los tiles para poder usar un bucle simple en N64, optimiza los ficheros guardados y los mueve en una carpeta especial, además convierte los PNG en texturas de N64 para no tener que andar convirtiéndolos con el dev kit (por añadir).
El icono de basura borra la capa activa que tengamos seleccionada.
Undo se puede hacer también con el atajo CTRL+Z, recuerda los últimos 128 cambios por capa, solo los cambios que afecten directamente al mapa, decidí que sería mala idea que guardara los cambios en propiedades de layer, ya que podemos pulsar más por error y no ver esos cambios.
El botón de
test llama a otro exe que es el engine del scroll para probar como quedaría el resultado final con la resolución indicada (por añadir).
--
En cuanto a las propiedades de un tile, en el scroll principal cada tile tiene su propia colisión, espejado y prioridad Z, se puede modificar pulsando botón derecho sobre un tile o grupo de tiles si están varios seleccionados.
En las capas adicionales todas estas propiedades van conjuntas, además se incluye la posibilidad de usar "efectos de raster", no encontré una palabra que resuma mejor, permite mover las filas o columnas de una capa a distinta velocidad relativa para crear falsos fondos de profundidad, tal y como hacen las consolas antiguas de 16bits, sin tener que recurrir a más capas para ello.
También incluye efectos y desplazamientos programables, como un movimiento fijo de nubes, deformación para agua o fuego, etc.
- El programa lee desde la carpeta data, "stage1" es una carpeta, dentro de ella se sueltan los tiles del scroll principal, si se crean dentro de esta carpetas con el nombre "layer1" "layer2", entonces se crean layers en el programa y se busca otro set de tiles dentro de ellas.
Cuando cerramos el programa y lo volvemos a cargar el entorno queda en el mismo sitio donde lo dejamos, con load podemos cargar otra carpeta "fase".
Aún tengo cosas por finalizar, iré actualizando.