|
原帖:http://wahackforo.com/t-23844/gbc-agregar-overworld-sprites
以下均为转载内容,看起来还蛮有意思的,有谁看得懂可以翻译一下。
============================================================================================
Hola, les traigo un tutorial que espero les sea util!
Si se quiere agregar mas personajes al juego se puede hacer sin necesidad de editar o borrar un personaje existente, de forma un poco extensa la primera vez, pero una vez hecho el repunteo será mas fácil cada vez.
Herramientas necesarias:
Gold Finger (o cualquier editor Hex)
Apoint (o cualquier calculadora de pointers GBC)
Tile Layer Pro
Paint
Y mucha imaginación!
Primero saber cual es el numero de overwolrd que maneja cada juego.
Gold & Silver 0x5F (95 en decimal)
Crystal 0x66 (102 en decimal)
Podemos apoyarnos de las siguientes graficas:
POKEMON GOLD
POKEMON CRYSTAL
Yo me enfocare en Pokemon Gold, por lo que el siguiente minisprite/overworld que agreguemos tendrá el valor 0x60 o 96 en decimal.
Tutorial:
Paso 1 Copiar Informacion
Paso 1. Copiar la tabla de datos de de los Overworld. Con GF (gold finger) copiamos del offset $147DE al $14A17 y lo pegamos en algún espacio en blanco dentro del mismo banco, en mi caso elegí $ 17bd0. Ahora sacamos el pointer de la nueva ubicación.
17bd0 = [05D07B]
Paso 2 Repuntear
Paso 2. Repuntear. El pointer de la tabla esta en el offset $142B5. Como se trata de un pointer de 2-byte, escribimos los dos últimos bytes de nuestro pointer, osea D0 7B. Con esto ya tenemos la tabla con espacio en blanco para agregar mas NPC.
Paso 3 Dibujar Sprite
Paso 3. Dibujar nuestro Sprite. Con ayuda de paint dibujamos nuestro personaje en un tamaño no mayor a 16 x16 pixeles y con dos colores + balnco + negro. Nuestro personaje se compone de 6 sprites:
1.-Frente
2.-Espaldas
3.-Lado (hacia la izquierda)
4.-Frente caminando
5.-Espaldas caminando
6.-Lado caminando (hacia la izquierda)
Paso 4 Insertar Sprite
Paso 4. Insertar Sprite. Hay dos formas de insertar el Sprite, dibujándolo en Tile Layer Pro (método tardado) o Importando la imagen en Tile Layer Pro (método “fácil”). Optaremos por el método de importar por que me parece mas practico.
4.1
4.1-Con el Sprite dibujado, trazamos unas cuadros de 16x16 de un color diferente al del sprite que nos servirán como guias e insertamos cada Sprite en el cuadro, asi:
4.2
4.2-Recortamos cada Sprite en rectángulos de 16 x 8 pixeles ayunándonos de las guias y los colocamos en filas de 128 pixeles, uno detrás del otro y lo guardan como un documento nuevo que debe medir 128x16 pixeles. Al final debemos tener un resulado asi:
4.3
4.3- Borramos las guias usando el borrador de paint. Con el gotero seleccionamos el color que queremos borrar del lado izquierdo y del lado derecho el color con el que lo queremos reemplazar, en este caso el blanco.
4.4
4.4 Abrimos el TLP, vamos al offset $C0000 y vemos los gráficos de los sprites en un formato como el que acabamos de hacer. Como elección personal, cambie las paletas del TLP por unas mas “amigables” de color rosa y azul. Recomiendo que también lo hagan, solo tienen que pulsar la flecha hacia abajo en el “pallet editor” hasta llegar al final. En caso de que no encuentre la paleta, ustedes pueden personalizar la suya.
4.5
4.5 Copien esas mismas paletas a paint y recolorien su Sprite. Normalmente el color rosa es para el color claro y el color azul para el color oscuro, pero en este caso, debemos invertir los colores a manera de negativo, de manera que el color oscuro sea el rosa, el color claro sea el azul, el blanco sea el negro y el color negro sea el blanco. Ejemplo:
Como se vería normalmente:
Como debe ser para importar:
4.6
4.6 Con el TLP abierto, buscamos espacio en blanco en la parte de arriba o donde mejor les paresca. Vamos a Edit > import bitmap y seleccionamos nuestra imagen. La posicionamos donde queramos y damos clic en un espacio en blanco. Con esto vemos como nuestro Sprite se colorea de manera normal (no en negativo) y ya tenemos nuestro Sprite en el ROM.
Espacio en Blanco
Importamos
Clic en un espacio en balnco y listo!
4.7
4.7 Apuntamos el pointer donde comienzan los graficos de nuestro Sprite. Esto lo sabemos posicionando el primer Sprite en la esquina superior izquierda de la pantalla del TLP. En mi caso es $BFE00 = [2F007E]
Paso 5 Agregar Datos
Paso 5. De vuelta en GF, nos posicionamos al final de la tabla y escribimos los datos de nuestro nuevo Sprite con la siguiente estructura de 6-bytes.
[2-byte pointer to Graphics] [length of the data] [Rombank graphics] [Image type] [standard-pallette]
2-byte pointer to Graphics = El pointer de los graficos, en nuestro caso 00 7E.
Length of the data = 0C para Sprite que caminan, 40 para estaticos, en nuestro caso 0C.
Rombank graphics = Banco donde estan los graficos, eso no lo dice el Apoint, es el primer byte del pointer, en nuestro caso 2F.
Image type = 01 para Sprite que caminan, 03 para estáticos, en nuestro caso 01.
Standard-pallette = La paleta con que aparecen por default, los valores van del 0-7, en nuestro caso usare 02 para color verde.
Al final, el Sprite de link se define con la siguiente información:
00 7E 0C 2F 01 02
Esta información se escribe en el final de la tabla y listo, ya tenemos nuestro Sprite configurado.
Paso 6 Editar Spritesheets
Paso 6. Como paso adicional, debemos editar cambiar los Spritesheets del juego, ya que los mapas abiertos solo pueden leer 11 sprites, de los cuales dos son la pokeball y la planta de berrys, eso nos deja con solo 9 sprites diferentes para cada mapa.
La información de cada mapa es la siguiente:
Código:
1468C-146BF - Pointer table to Spritesets
146C0-146CA - Spriteset (Pallet Town)
146CB-146D5 - Spriteset (Viridian City)
146D6-146E0 - Spriteset (Pewter City)
146E1-146EB - Spriteset (Cinnabar Island)
146EC-146F7 - Spriteset (Cerulean)
146F8-14701 - Spriteset (Saffron)
14702-1470C - Spriteset (Celadon)
1470D-14717 - Spriteset (Lavender)
14718-14722 - Spriteset (Vermilion)
14723-1472D - Spriteset (Fuchsia)
1472E-14738 - Spriteset (League)
14739-14745 - Spriteset (New Bark Town)
14746-1474E - Spriteset (Cherrygrove City)
1474F-14759 - Spriteset (Mt. Silver)
1475A-14764 - Spriteset (Violet)
14765-1476F - Spriteset (Ecruteak)
14770-1477A - Spriteset (Azalea)
1477B-14785 - Spriteset (Goldenrod)
14786-14790 - Spriteset (Cianwood City)
14791-1499B - Spriteset (Olivine)
1479C-147A6 - Spriteset (Lake of Rage)
147A7-147B1 - Spriteset (Mahogany)
147B2-147BC - Spriteset (Blackthorn)
147BD-147C7 - Spriteset (Caves)
147C8-147D2 - Spriteset (S.S. Aqua + Etc.)
147D3-147DD - Spriteset (Special)
Si nos vamos al offset $14739 que corresponde a New Bark, podemos ver que el tercer byte es 0x3A, que corresponde al gordito. Cambiamos ese valor por 0x60, el cual corresponde a nuestro nuevo Sprite y listo, ahora podemos ir a nuestro editor de mapas, seleccionar cualquier Sprite de New Bark y cambiarlo por el valor 0x60 o 96 en decimal.
Resultado final:
Ya con la tabla repunteada, lo único que queda es agregar mas sprites junto con sus datos.
OJO: Si quieres comprobar algún Sprite sin modificar los Spritesheets lo puedes hacer en un mapa cerrado, como una casa, ya que no se tiene la limitación de los 11 sprites y pudes checar ahí todos los sprites así nadamas.
Espero les guste y les haya servido este tutorial!
Cualquier duda pueden preguntar
Saludos!
PD: Reporten faltas de ortografia y redaccion que hice el tutorial a las carreras XD
|
|