KiddEd
Web del Proyecto: https://kidded.emulicious.net
Servidor de Discord: https://discord.gg/DTVx5Da

Este programa se distribuye con la licencia adjunta. Échale un ojo a License.txt.

=======================
Requerimientos
=======================
Java 6 o superior:
http://www.java.com

=======================
Notas de la versión
=======================
Esta versión es una Beta abierta. No está completa aún y es un desarrollo en activo.
Eso significa que puedes encontrar fallos. Para poder arreglar dichos fallos tan pronto
como sea posible, confío en los reportes de error. Así que cuando te encuentres un error, 
por favor, házmelo saber. 

Si se rompe algo, no te frustres. Guarda tus cambios como un fichero ips y mándamelo 
conjuntamente con una descripción del problema. Intentaré arreglar el problema y 
restaurar tus cambios en la medida de lo posible. 

=======================
ROMs soportadas
=======================
KiddEd soporta la rom Alex Kidd in Miracle World [v1] (también conocida como Alex Kidd in Miracle World (V1.1)).

No soporta editar la rom Alex Kidd in Miracle World [v0] (también conocida como Miracle World (V1.0)) y 
la versión BIOS de Alex Kidd in Miracle World.

=======================
Editores
=======================
1. Editor de Niveles
2. Editor de Paletas
3. Editor de Tiles
4. Editor de Tilesets
5. Editor de Tilesets de Sprites
6. Editor de MetaTileSets
7. Editor de Sprites
8. Editor de Contenido de Cajas
9. Ajustes de Juego
10. Ajustes de Nivel
11. Editor de Name Tables
12. Editor de la Pantalla de Título
13. Editor de Tiendas
14. Editor de Partidas de Janken
15. Editor de Acertijos
16. Editor de Textos
17. Editor de Físicas
18. Editor de Sonidos

-----------------------
1. Editor de Niveles
-----------------------
El Editor de Niveles te permite manipular la disposición y las entidades de un nivel
Puedes usar las barras de scroll, los cursores o la rueda del ratón para navegar a lo largo del nivel.

Pulsando la tecla Inicio/Pos1 en el teclado, navegarás hacia la pantalla donde empieza Alex.

El Editor de Niveles empieza en el modo de Edición de Entidades, indicado por el botón de Alex presionado en la 
barra de herramientas.
El otro modo proporcionado por el Editor de Niveles es el Modo de Edición de Disposición. Se puede acceder a él 
pulsando el botón con la estrella en la barra de herramientas.

1a) Modo de Edición de Entidades
En el modo de Edición de Entidades se puede seleccionar una entidad haciendo click sobre ella con el botón izquierdo
del ratón.
La entidad seleccionada puede moverse arrastrando el cursor
La entidad seleccionada puede borrarse clicando en el botón con la nube de polvo o presionando la tecla suprimir o la 
tecla de retroceso en tu teclado. 
Clicando en la entidad con el botón derecho del ratón abrirá un diálogo que permite cambiar las propiedades de la 
entidad seleccionada.
A la derecha de la ventana se encuentra una lista de las entidades. Puedes arrastrar una entidad desde la lista y 
soltarla en la pantalla para insertarla en la posición especificada.
El juego no admite entidades en la pantalla donde empieza Alex. 

1b) Modo de edición de disposición
En modo de edición de disposición puedes "dibujar" la disposición con el botón izquierdo del ratón. El metatile a usar 
puede seleccionarse del grupo de Metatiles a la derecha de la ventana. Manteniendo apretado la tecla ALT del teclado
mientras se clica en un metatile del nivel hará que la acción sea de "pipeta": El metatile clicado se seleccionará como
el metatile a ser dibujado.
Manteniendo apretado la tecla de CTRL puedes editar los tiles ocultos que serán creado por el desencadenante 4B. Por
defecto borra tiles ocultos. Si quieres añadir tiles ocultos tienes que apretar la tecla SHIFT adicionalmente. 

-----------------------
2. Editor de Paletas
-----------------------
El Editor de Paletas permite manipular las paletas usadas en el juego. 
Clicar en uno de los colores abrirá un Selector de Color. El Selector de Color contiene todos
disponibles en la Sega MasterSystem. Para reemplazar el color seleccionado por un nuevo color 
simplemente clica en el color deseado del Selector de Color.
El Editor de Paletas también permite extraer una paleta de una imagen. Esto puede hacerse copiando una imagen en el 
portapapeles y pegándola como una paleta.

-----------------------
3. Editor de Tiles
-----------------------
El Editor de Tiles permite editar todos los tiles que se encuentran en el juego.
En el juego, tiles y paletas están separadas. Eso significa que el mismo tile puede usarse con diferentes paletas. 
Por tanto deberías asegurarte que tus tiles se muestran correctamente en todas las paletas que el juego pueda usar 
para pintar tu tile. 

Puedes seleccionar múltiples tiles manteniendo pulsada la tecla CTRL del teclado mientras clicas en los tiles que 
quieres seleccionar. 

Puedes dibujar píxeles usando el botón izquierdo del ratón. Puedes seleccionar el color a dibujar desde la paleta en la 
parte baja de la ventana. 
Manteniendo la tecla ALT en tu teclado mientras clicas en un pixel, hará la función de "pipeta":
El color del píxel será seleccionado en la paleta. 
Para mover todos los píxeles en una dirección puedes presionar los cursores mientras mantienes la tecla CTRL.
Para los tiles del fondo puedes seleccionar entre la Paleta 0 o la Paleta 1. Esta selección solo afecta a la paleta usada
para mostrar el tile. La paleta concreta que ha de usar el tile debe seleccionarse en el metatile/nametable en el que es 
usado. 

-----------------------
4. Editor de Tilesets
-----------------------
El Editor de Tilesets permite editar los tilesets de los niveles. 
Debido a la cantidad limitada de memória de vídeo disponible en la Sega Master System, el juego organiza los tiles
en grupos (Tilesets).
Dichos grupos pueden ser editados en el Editor de Tilesets. Cada nivel tiene 2 tilesets. Un tileset de nivel para 
el fondo y un tileset de sprites para las entidades. El tileset de nivel consiste de un tileset principal y varios
adicionales; el tileset de sprites consiste de varios tilesets de sprite más pequeños. 

--------------------------------
5. Editor de Tilesets de Sprite
--------------------------------
El Editor de Tilesets de Sprite permite editar los pequeños tilesets de sprite que conforman el tileset de sprite de un 
nivel. 
Usando la caja de selección, puedes escoger el tileset de sprite a editar. 
El panel justo debajo de ella es usado para especificar si el tileset de sprite debe colocarse dentro el tileset de sprites
de un nivel. 
Un tileset de sprite consiste de hasta 3 secuencias de tiles. Una secuencia de tiles puede ser o bien una secuencia regular,
una secuencia de tiles espejados o una secuencia de tiles invisibles. Los tiles invisibles pueden usarse para crear sprites 
invisibles. 

-----------------------
6. Editor de Metatilesets
-----------------------
El Editor de Metatilesets permite editar los metatiles usados para conformar la disposición de un nivel. 
A la izquierda de la ventana puedes ver el metatileset. Cada metatile en el grupo está hecho de 4 tiles. 
A la derecha puedes ver los detalles del metatile seleccionado. Arriba puedes ver el metatile aumentado. 
En este metatile aumentado puedes seleccionar los tiles individuales que lo conforman clicando en ellos con el botón izquierdo
del ratón. 
Al principio los 4 tiles están seleccionados. En ese caso las propiedades mostradas reflejan las propiedades de los 4 tiles del 
metatile. En otro caso, muestra las propiedades del tile seleccionado del metatile. En la parte inferior está el tileset 
seleccionado. Si uno de los tiles del metatile está seleccionado, puedes reemplazarlo con uno de los tiles del tileset simplemente
clicando en el tile deseado. 

Clicando en un metatile con el botón derecho del ratón abrirá los tiles del metatile en el Editor de Tiles (Solo funciona para 
algunos metatiles de momento)


-----------------------
7. Editor de Sprites
-----------------------
El Editor de Sprites permite editar todos los sprites del juego. 
La mayoría de los sprites están formados por múltiples tiles. En este editor la disposición de los tiles dentro un sprite 
puede ser cambiada. Esto puede hacerse arrastrando un tile con el botón izquierdo del ratón. La cruz blanca en la mitad de
la pantalla marca el origen de coordenadas del sprite. 
A la derecha de la ventana hay una lista de fotogramas que forman la animación del sprite seleccionado. 
Clicar en uno de los fotogramas con el botón izquierdo del ratón selecciona el fotograma para permitir su edición.
Clicar en uno de los fotogramas con el botón derecho del ratón abre los tiles del sprite en el Editor de Tiles.
También puedes seleccionar una caja de impacto para el sprite seleccionado. La caja de impacto se usa para la detección de
colisiones. Una colisión es detectada cuando dos o más cajas de impacto de superponen. Puedes hacer visible la caja de 
impacto del sprite actual con el correspondiente botón de la barra de herramientas. Se muestra como una caja verde. Una 
caja de impacto se denota como una tupla de 4 elementos: [x, y, w, h]
Los valores tienen el siguiente significado:

x : La coordenada x relativa al origen del sprite (la cruz blanca)
y : La coordenada y relativa al origen del sprite (la cruz blanca)
w : La anchura de la caja de impacto
h : La altura de la caja de impacto

Las cajas de impacto pueden editarse en el Editor de Cajas De Impacto. Puedes acceder al editor desde el menú Editar del 
Editor de Sprites.
Ahí podrás seleccionar una caja de impacto y cambiar sus valores.
El Editor de Cajas de Impacto es un boceto y será rediseñado en alguna versión futura. 

-------------------------------
8. Editor de Contenido de Cajas
-------------------------------
El Editor de Contenido de Cajas permite cambiar el contenido de las cajas con un interrogante.
El juego utiliza un índice para decidir que objeto crear cuando se rompe una caja con un interrogante.
Cuando se rompe una de esas cajas se crea el elemento marcado por el índice, y este se incrementa en 1.

Cuando empieza un nivel, el índice coge el valor de "índice de caja" de ese nivel.
El Editor de Contenido de Cajas indica el "índice de caja" de nivel con un borde rojo alrededor del contenido
de caja correspondiente. 
Este índice puede definirse haciendo click en el contenido de caja deseado.


-----------------------
9. Ajustes del Juego
-----------------------
En los Ajustes del Juego puedes definir los valores iniciales de la partida, como el número de vidas, la cantidad de dinero
y la puntuación con la que empezar. 
También puedes definir en qué nivel empezar. 

-----------------------
10. Ajustes del Nivel
-----------------------
En los Ajustes de Nivel puedes ajustar si actualizar el color del agua (haciendo un ciclo entre blanco-cian-magenta), que tiles 
animar, que música reproducir, que tienda utilizar y que metatileset se ha de usar para la disposición del nivel.
También permite convertir la disposición del nivel a disposición vertical, disposición horizontal, disposición horizontal invertida, disposición con forma
de L, disposición de río o disposición en forma de jarra.
La disposición vertical se usa en el último nivel del juego. El juego hace scroll hacia abajo. 
La disposición horizontal se usa en varios niveles, por ejemplo el segundo. El juego hace scroll hacia la derecha. 
La disposición horizontal invertida se usa en el nivel 0D (el número 13). El juego hace scroll hacia la izquierda.
La disposición en forma de L se usa en el primer nivel. El juego hace scroll hacia abajo primero y luego hacia la derecha.
La disposición de río se usa en los niveles 05 y 09. La disposición tiene hasta 16 pantallas por encima del agua y 4 pantallas acuáticas. Cuando el vehículo de Alex
sea destruido caerá en el agua. 
La disposición de Jarra se usa en el tercer nivel. El juego hace scroll hacia la derecha, pero también puedes nadar a través de una jarra para llegar a una
nueva pantalla. 

--------------------------
11. Editor de Name Tables
--------------------------
El Editor de Name Tables permite cambiar las name tables y funciona de una manera parecida a como funciona el Editor de MetaTilesets (Mirar 5.Editor de Metatilesets)
Nametables son conjuntos de tiles que crean una imagen, como por ejemplo el mapa y la tienda. 
La pantalla de título está formada por diversas name tables que aparecen una por una. 

-----------------------------------
12. Editor de la Pantalla de Título
-----------------------------------
El Editor de Pantalla de Título permite cambiar la pantalla de título. 
El Editor de Pantalla de Título empieza en el modo de Edición de Entidades, indicado por el botón con Alex en él presionado en la barra de herramientas. 
El otro modo ofrecido por el Editor de Pantalla de Título es el modo de Edición de Disposición. Puede ser accedido pulsando el botón con la estrella en
la barra de herramientas.

1a) Modo de Edición de Entidades
En el Modo de Edición de Entidades puedes seleccionar una entidad clicando en ella con el botón izquierdo del ratón. 
La entidad seleccionada puede moverse arrastrando el cursor.
La entidad seleccionada puede borrarse o bien clicando en el botón con la cruz roja o bien presionando la tecla SUPR o
la tecla Retroceso de tu teclado.

1b) Modo de Edición de Disposición
En Modo de Edición de Disposición puedes seleccionar una nametable clicando en ella con el botón izquierdo del ratón.
La nametable seleccionada puede moverse arrastrando el cursor. 
Haciendo click en una nametable con el botón derecho del ratón abrirá la nametable en el Editor de Name Table.

-----------------------
13. Editor de Tiendas
-----------------------
El Editor de Tiendas permite cambiar los objetos que se venden en las tiendas y contiene un Editor de Objetos para cambiar 
el precio de cada uno. 
Haciendo click en cada objeto de la tienda con el botón izquierdo del ratón, lo seleccionas. También puedes seleccionar un objeto
usando las teclas de cursor izquierda y derecha. El objeto seleccionado puede ser cambiado con las teclas de cursor arriba y abajo.
Se puede acceder al Editor de Objetos desde el menú Editar. Ahí podrás cambiar el precio de los mismos. 

--------------------------------
14. Editor de partidas de Janken
--------------------------------
El Editor de partidas de Janken permite cambiar las decisiones tomadas por Janken y sus secuaces y sus mensajes de bienvenida.
Puedes seleccionar una decisión bien clicando en ella con el botón izquierdo del ratón o usando los cursores izquierda y derecha 
del teclado. 
La decisión seleccionada puede cambiarse usando los cursores arriba y abajo en tu teclado. 
El juego usa un índice global para escoger qué decisión coger de la tabla de decisiones del adversario actual.
Este índice empieza en 0 y se actualiza frecuentemente en la cuenta atrás de la partida de janken. El cambio de este índice puede
observarse cuando el jugador posee la bola telepática. Este índice no se resetea durante el juego - solo cuando se empieza una 
nueva partida.

-----------------------
15. Editor de Acertijos
-----------------------
El Editor de Acertijos permite cambiar la secuencia de símbolos a activar para hacer aparecer la corona en el último nivel del juego.
Puedes seleccionar uno de los símbolos tanto haciendo click en él con el botón izquierdo del ratón como usando los cursores izquierda 
y derecha del teclado.
El símbolo seleccionada puede cambiarse usando los cursores arriba y abajo del teclado. 

-----------------------
16. Editor de Texto
-----------------------
El Editor de Texto permite cambiar todo el texto del juego.
Puedes usar los cursores del teclado para mover el cursor y simplemente teclear el texto deseado con el teclado.
También puedes mover el cursor a una posición específica clicando en ella con el botón izquierdo del ratón. 
Para borrar el carácter en la posición del cursor puedes presionar la tecla SUPR de tu teclado. 
Para borrar el carácter anterior a la posición del cursor y mover posteriormente el cursor a la izquierda puedes presionar la tecla retroceso
en tu teclado.  
En la parte inferior puedes encontrar un pequeño editor que te permite editar las cajas de texto libremente. 
Se utilizan secuencias de control para definir el camino del cursor que va llenando la caja.  
Las secuencias de control empiezan con la contrabarra '\' seguida por la dirección a la que mover el cursor. 
La dirección puede ser una de las letras siguientes:
r - derecha
d - abajo
l - izquierda
u - arriba
Una secuencia de control se completa con un número a la derecha de la dirección. El número especifica la cantidad de caracteres a recorrer. 
Ejemplo: \r28 significa recorrer 28 caracteres hacia la derecha. 

-----------------------
17. Editor de Físicas
-----------------------
El Editor de Físicas permite cambiar las físicas de Alex, sus vehículos, enemigos y misiles. 
La aceleración se aplica mientras el botón se encuentra presionado. Cuando se suelta el botón, se aplica la desaceleración. 
La aceleración dejará de acelerar una vez se alcance la velocidad máxima. 
La aceleración opuesta es la aceleración en la dirección opuesta. Por ejemplo ocurre cuando presionas izquierda mientras Alex aún está andando hacia la derecha. 

En el menú Ver del Editor de Físicas puedes escoger qué unidades deben usarse para los valores de la física. 
La unidades pueden estar basadas en subpixels (spx) tal que 256 spx = 1 px o pueden usar píxeles completos.

-----------------------
18. Editor de Sonido
-----------------------
El Editor de Sonido permite reproducir, exportar y cambiar todos los sonidos del juego. 
Puedes exportar sonidos en formato PSGlib seleccionando un sonido desde el menú desplegable y presionando el botón "Exportar Sonido".
Para cambiar sonidos necesitas reemplazar primero el Engine de Sonido seleccionando "Engine de Sonido PSGlib" desde el menú desplegable y 
presionando el botón "Aplicar"
Después puedes seleccionar el sonido que quieres reemplazar y presionando el botón "Importar Sonido" para seleccionar el fichero a importar. 
KiddEd soporta los siguientes formatos:
.psg que pueden crearse usando PSGlib (https://github.com/sverx/PSGlib)
.vgm que pueden crearse usando emuladores o trackers (puedes encontrar una colección de ficheros VGM en http://www.smspower.org/Music/VGMs)
Presionando el botón "Restaurar Sonido" puedes reemplazar un sonido por el sonido original. 
También puedes eliminar sonidos presionando el botón "Eliminar Sonido". El hueco del sonido permanecerá pero este será silenciado.
Además, puedes fijar una prioridad para los efectos de sonido. Esta prioridad se tiene en cuenta cuando se intenta reproducir un efecto de sonido mientras
otro se está reproduciendo. 
En ese caso,el nuevo efecto de sonido solo se reproducirá si su prioridad es igual o mayor que la prioridad del sonido que está sonando en ese momento.
El nuevo efecto de sonido cancelará en ese caso el efecto de sonido actual y se reproducirá en su lugar.
Para la música, se puede definir si la misma debe reproducirse en bucle (Esto solo puede definir si se usa el Engine de Sonido PSGlib).
