Registrarse

[ASM] FR | VS Bar antes de una batalla

Foxz.

Foxz.
Hoy les traigo un tutorial que consiste en mostrar una animación con Vs bar y mugshots antes de una batalla pokemón. Para esto usaremos la rutina creada por Jambo51, y necesitaran algunos conocimientos básicos sobre edición hexadecimal y RH en general. Bueno, empecemos…

¿Que necesitamos?

  • Editor Hexadecimal – HxD
  • Compilador de rutinas ASM
  • VBA
  • NSE
  • NLZ
  • NTME

Para empezar, necesitamos las 3 rutinas, yo les dejare las rutinas compiladas, listas para insertar.

RUTINA N°1
Código:
E5 78 2D 06 2D 0E 00 2D 02 D0 5A 21 05 4D 28 47 57 29 03 D1 11 1C CD 20 01 4D 28 47 01 4D 28 47 A5 FF 07 08 09 00 08 08
RUTINA N°2
Código:
87 28 0A D0 88 28 08 D0 08 4C 24 88 A5 00 65 19 EC 00 05 4D 2D 68 60 19 C0 78 04 1C 0D 1C 16 1C 99 46 0D 9F 02 48 00 47 28 40 04 08 AE 86 03 02 6D 38 08 08
RUTINA N°3
Código:
0E 49 09 88 88 00 40 18 C1 00 0D 48 00 68 41 18 49 78 5A 29 09 D0 57 29 07 D0 08 49 C9 78 01 39 89 00 09 48 09 18 08 68 06 E0 06 49 42 46 26 23 D0 5A 80 00 40 18 00 68 04 49 08 47 AE 86 03 02 28 40 04 08 40 A7 3F 08 FF FF FF 08 D5 28 0D 08

Ahora, debemos insertar cada rutina en un espacio que termine en 0, 2, 4, etc…
En este caso, pondré las rutinas en los siguientes offsets:


•Luego, vamos al offset 07FF90, y reemplazamos lo que está ahí por: 00 4A 10 47 AA AA AA 08

Donde: AA AA AA: puntero de la rutina 1.

En mi caso sería: 00 4A 10 47 11 16 80 08


•Luego, vamos al offset 083862, y reemplazamos lo que está ahí por: 01 4C 20 47 00 00 BB BB BB 08

Donde: BB BB BB: puntero de la rutina 2.

En mi caso sería: 00 4A 10 47 51 16 80 08

•Luego, vamos al offset 0D28C6, y reemplazamos lo que está ahí por: 01 49 08 47 00 00 CC CC CC 08

Donde: CC CC CC: puntero de la rutina 3.

En mi caso sería: 00 4A 10 47 A1 16 80 08

•Luego, debemos ir al offset 0801F5 y cambiamos el byte 88 a 78.

Ahora, ¿recuerdan el “FF FF FF” de la rutina 3?
Ahí, se debe colocar el puntero de la tabla de paletas que usaras para los VS bars.

Bueno, esos son todos los pasos a seguir para usar los mugshots, sin embargo, estos aun se pueden personalizar.
Esto funciona si es que, en vez de mostrar los sprites de los entrenadores, se quiere mostrar otra imagen, un mugshot por ejemplo.

Primero, debemos cambiar estos bytes:
•En el offset 0D2F82, colocar “00”

•Luego, insertar los sprites que se va a utilizar, estos sprites deben insertarse comprimidos en Lz77, tanto la imagen como la paleta, de lo contrario la rutina no funcionará.

Para las imágenes, usaremos el NLZ, es más preciso y más fácil de usar que el Unlz.
Y las paletas, bueno, después de varios errores, me di cuenta que tienen esta forma

Código:
10 20 00 00 00 AA AA BB BB CC CC DD DD 00 AA AA BB BB CC CC DD DD 00 AA AA BB BB CC CC DD DD 00 AA AA BB BB CC CC DD DD
En donde las letras, AA BB CC DD, son los 16 colores de la paleta, separados por un 00 cada 4 colores. Pueden insertar en un rom cualquiera una paleta como normalmente se hace, abrir su offset con HxD, y darle esta forma si es que no saben comprimirlas, o comprimirlas en NSE 2.0 e insertarlas.

A continuación, debemos crear dos tablas; una para nuestros Mugshots y otra para sus paletas. Para esto, simplemente debemos copiar las tablas de los trainers y de sus paletas.

Trainers: 23957C
Paletas: 239A1C


Por si no quieren buscar ambas tablas, aquí se las dejo:

TABLA DE SPRITES
Código:
58 8D E4 08 00 08 00 00 BC 90 E4 08 00 08 01 00 44 94 E4 08 00 08 02 00 A8 97 E4 08 00 08 03 00 94 9A E4 08 00 08 04 00 58 9E E4 08 00 08 05 00 24 A3 E4 08 00 08 06 00 F0 A5 E4 08 00 08 07 00 A4 A8 E4 08 00 08 08 00 B4 AB E4 08 00 08 09 00 F0 AE E4 08 00 08 0A 00 84 B2 E4 08 00 08 0B 00 60 B6 E4 08 00 08 0C 00 70 B9 E4 08 00 08 0D 00 4C BC E4 08 00 08 0E 00 E4 BF E4 08 00 08 0F 00 CC C2 E4 08 00 08 10 00 58 C6 E4 08 00 08 11 00 04 CA E4 08 00 08 12 00 98 CD E4 08 00 08 13 00 A8 D0 E4 08 00 08 14 00 20 D5 E4 08 00 08 15 00 74 D8 E4 08 00 08 16 00 C4 DB E4 08 00 08 17 00 EC DE E4 08 00 08 18 00 48 E2 E4 08 00 08 19 00 70 E5 E4 08 00 08 1A 00 84 E8 E4 08 00 08 1B 00 40 EC E4 08 00 08 1C 00 AC F0 E4 08 00 08 1D 00 94 F3 E4 08 00 08 1E 00 58 F6 E4 08 00 10 1F 00 F0 FA E4 08 00 10 20 00 D4 FE E4 08 00 08 21 00 C8 02 E5 08 00 08 22 00 30 06 E5 08 00 08 23 00 74 09 E5 08 00 08 24 00 44 0C E5 08 00 08 25 00 A4 0F E5 08 00 08 26 00 B0 13 E5 08 00 10 27 00 E8 17 E5 08 00 08 28 00 1C 1C E5 08 00 08 29 00 FC 1E E5 08 00 08 2A 00 C8 21 E5 08 00 08 2B 00 1C 25 E5 08 00 08 2C 00 20 28 E5 08 00 08 2D 00 9C 2B E5 08 00 08 2E 00 FC 2E E5 08 00 08 2F 00 00 32 E5 08 00 10 30 00 48 35 E5 08 00 08 31 00 A8 38 E5 08 00 08 32 00 A0 3B E5 08 00 08 33 00 A8 3E E5 08 00 08 34 00 94 42 E5 08 00 08 35 00 6C 46 E5 08 00 08 36 00 98 4A E5 08 00 08 37 00 90 4D E5 08 00 08 38 00 CC 50 E5 08 00 08 39 00 F4 53 E5 08 00 08 3A 00 4C 57 E5 08 00 08 3B 00 A8 5A E5 08 00 08 3C 00 18 5E E5 08 00 08 3D 00 74 61 E5 08 00 08 3E 00 90 64 E5 08 00 08 3F 00 38 68 E5 08 00 08 40 00 EC 6B E5 08 00 08 41 00 EC 6E E5 08 00 08 42 00 40 72 E5 08 00 08 43 00 E8 76 E5 08 00 08 44 00 D0 7A E5 08 00 08 45 00 08 80 E5 08 00 08 46 00 7C 84 E5 08 00 08 47 00 58 88 E5 08 00 08 48 00 44 8C E5 08 00 08 49 00 44 90 E5 08 00 08 4A 00 1C 94 E5 08 00 08 4B 00 8C 97 E5 08 00 08 4C 00 34 9B E5 08 00 08 4D 00 98 9E E5 08 00 08 4E 00 40 A2 E5 08 00 08 4F 00 E0 A5 E5 08 00 08 50 00 8C A9 E5 08 00 08 51 00 5C AD E5 08 00 08 52 00 24 B0 E5 08 00 08 53 00 94 B3 E5 08 00 08 54 00 A8 B6 E5 08 00 08 55 00 F0 B9 E5 08 00 08 56 00 F8 BC E5 08 00 08 57 00 08 C0 E5 08 00 08 58 00 EC C3 E5 08 00 08 59 00 2C C7 E5 08 00 08 5A 00 C4 CB E5 08 00 08 5B 00 54 D1 E5 08 00 08 5C 00 C8 D4 E5 08 00 08 5D 00 FC D8 E5 08 00 08 5E 00 D0 DC E5 08 00 08 5F 00 D0 DF E5 08 00 08 60 00 C0 E5 E5 08 00 08 61 00 7C E9 E5 08 00 08 62 00 00 ED E5 08 00 08 63 00 14 F0 E5 08 00 08 64 00 9C F3 E5 08 00 08 65 00 20 F8 E5 08 00 08 66 00 84 FC E5 08 00 08 67 00 60 00 E6 08 00 08 68 00 4C 04 E6 08 00 08 69 00 94 08 E6 08 00 08 6A 00 74 0B E6 08 00 08 6B 00 78 0F E6 08 00 08 6C 00 B0 12 E6 08 00 08 6D 00 0C 16 E6 08 00 08 6E 00 04 19 E6 08 00 08 6F 00 44 1C E6 08 00 08 70 00 98 1F E6 08 00 08 71 00 0C 24 E6 08 00 08 72 00 50 27 E6 08 00 08 73 00 40 2B E6 08 00 08 74 00 B4 2E E6 08 00 08 75 00 DC 31 E6 08 00 08 76 00 94 35 E6 08 00 08 77 00 B0 38 E6 08 00 08 78 00 40 3C E6 08 00 08 79 00 74 40 E6 08 00 08 7A 00 A4 43 E6 08 00 08 7B 00 04 47 E6 08 00 08 7C 00 20 4A E6 08 00 08 7D 00 44 4D E6 08 00 08 7E 00 44 51 E6 08 00 08 7F 00 BC 54 E6 08 00 08 80 00 C4 59 E6 08 00 08 81 00 38 5E E6 08 00 08 82 00 00 64 E6 08 00 08 83 00 88 68 E6 08 00 08 84 00 1C 6C E6 08 00 08 85 00 58 6F E6 08 00 08 86 00 80 72 E6 08 00 08 87 00 B4 75 E6 08 00 08 88 00 18 79 E6 08 00 08 89 00 58 7C E6 08 00 08 8A 00 20 80 E6 08 00 08 8B 00 54 83 E6 08 00 08 8C 00 80 86 E6 08 00 08 8D 00 E8 89 E6 08 00 08 8E 00 70 8D E6 08 00 08 8F 00 CC 90 E6 08 00 08 90 00 44 94 E6 08 00 08 91 00 78 98 E6 08 00 08 92 00 C8 9B E6 08 00 08 93 00
TABLA DE PALETAS
Código:
94 90 E4 08 00 00 00 00 1C 94 E4 08 01 00 00 00 80 97 E4 08 02 00 00 00 6C 9A E4 08 03 00 00 00 30 9E E4 08 04 00 00 00 FC A2 E4 08 05 00 00 00 C8 A5 E4 08 06 00 00 00 7C A8 E4 08 07 00 00 00 8C AB E4 08 08 00 00 00 C8 AE E4 08 09 00 00 00 5C B2 E4 08 0A 00 00 00 38 B6 E4 08 0B 00 00 00 48 B9 E4 08 0C 00 00 00 24 BC E4 08 0D 00 00 00 BC BF E4 08 0E 00 00 00 A4 C2 E4 08 0F 00 00 00 30 C6 E4 08 10 00 00 00 DC C9 E4 08 11 00 00 00 70 CD E4 08 12 00 00 00 80 D0 E4 08 13 00 00 00 F8 D4 E4 08 14 00 00 00 4C D8 E4 08 15 00 00 00 9C DB E4 08 16 00 00 00 C4 DE E4 08 17 00 00 00 20 E2 E4 08 18 00 00 00 48 E5 E4 08 19 00 00 00 5C E8 E4 08 1A 00 00 00 18 EC E4 08 1B 00 00 00 84 F0 E4 08 1C 00 00 00 6C F3 E4 08 1D 00 00 00 30 F6 E4 08 1E 00 00 00 C8 FA E4 08 1F 00 00 00 AC FE E4 08 20 00 00 00 A0 02 E5 08 21 00 00 00 08 06 E5 08 22 00 00 00 4C 09 E5 08 23 00 00 00 1C 0C E5 08 24 00 00 00 7C 0F E5 08 25 00 00 00 88 13 E5 08 26 00 00 00 C0 17 E5 08 27 00 00 00 F4 1B E5 08 28 00 00 00 D4 1E E5 08 29 00 00 00 A0 21 E5 08 2A 00 00 00 F4 24 E5 08 2B 00 00 00 F8 27 E5 08 2C 00 00 00 74 2B E5 08 2D 00 00 00 D4 2E E5 08 2E 00 00 00 D8 31 E5 08 2F 00 00 00 20 35 E5 08 30 00 00 00 80 38 E5 08 31 00 00 00 78 3B E5 08 32 00 00 00 80 3E E5 08 33 00 00 00 6C 42 E5 08 34 00 00 00 44 46 E5 08 35 00 00 00 70 4A E5 08 36 00 00 00 68 4D E5 08 37 00 00 00 A4 50 E5 08 38 00 00 00 CC 53 E5 08 39 00 00 00 24 57 E5 08 3A 00 00 00 80 5A E5 08 3B 00 00 00 F0 5D E5 08 3C 00 00 00 4C 61 E5 08 3D 00 00 00 68 64 E5 08 3E 00 00 00 10 68 E5 08 3F 00 00 00 C4 6B E5 08 40 00 00 00 C4 6E E5 08 41 00 00 00 18 72 E5 08 42 00 00 00 C0 76 E5 08 43 00 00 00 A8 7A E5 08 44 00 00 00 E0 7F E5 08 45 00 00 00 54 84 E5 08 46 00 00 00 30 88 E5 08 47 00 00 00 1C 8C E5 08 48 00 00 00 1C 90 E5 08 49 00 00 00 F4 93 E5 08 4A 00 00 00 64 97 E5 08 4B 00 00 00 0C 9B E5 08 4C 00 00 00 70 9E E5 08 4D 00 00 00 18 A2 E5 08 4E 00 00 00 B8 A5 E5 08 4F 00 00 00 64 A9 E5 08 50 00 00 00 34 AD E5 08 51 00 00 00 FC AF E5 08 52 00 00 00 6C B3 E5 08 53 00 00 00 80 B6 E5 08 54 00 00 00 C8 B9 E5 08 55 00 00 00 D0 BC E5 08 56 00 00 00 E0 BF E5 08 57 00 00 00 C4 C3 E5 08 58 00 00 00 04 C7 E5 08 59 00 00 00 9C CB E5 08 5A 00 00 00 2C D1 E5 08 5B 00 00 00 A0 D4 E5 08 5C 00 00 00 D4 D8 E5 08 5D 00 00 00 A8 DC E5 08 5E 00 00 00 A8 DF E5 08 5F 00 00 00 98 E5 E5 08 60 00 00 00 54 E9 E5 08 61 00 00 00 D8 EC E5 08 62 00 00 00 EC EF E5 08 63 00 00 00 74 F3 E5 08 64 00 00 00 F8 F7 E5 08 65 00 00 00 5C FC E5 08 66 00 00 00 38 00 E6 08 67 00 00 00 24 04 E6 08 68 00 00 00 6C 08 E6 08 69 00 00 00 4C 0B E6 08 6A 00 00 00 50 0F E6 08 6B 00 00 00 88 12 E6 08 6C 00 00 00 E4 15 E6 08 6D 00 00 00 DC 18 E6 08 6E 00 00 00 1C 1C E6 08 6F 00 00 00 70 1F E6 08 70 00 00 00 E4 23 E6 08 71 00 00 00 28 27 E6 08 72 00 00 00 18 2B E6 08 73 00 00 00 8C 2E E6 08 74 00 00 00 B4 31 E6 08 75 00 00 00 6C 35 E6 08 76 00 00 00 88 38 E6 08 77 00 00 00 18 3C E6 08 78 00 00 00 4C 40 E6 08 79 00 00 00 7C 43 E6 08 7A 00 00 00 DC 46 E6 08 7B 00 00 00 F8 49 E6 08 7C 00 00 00 1C 4D E6 08 7D 00 00 00 1C 51 E6 08 7E 00 00 00 94 54 E6 08 7F 00 00 00 9C 59 E6 08 80 00 00 00 10 5E E6 08 81 00 00 00 D8 63 E6 08 82 00 00 00 60 68 E6 08 83 00 00 00 F4 6B E6 08 84 00 00 00 30 6F E6 08 85 00 00 00 58 72 E6 08 86 00 00 00 8C 75 E6 08 87 00 00 00 F0 78 E6 08 88 00 00 00 30 7C E6 08 89 00 00 00 F8 7F E6 08 8A 00 00 00 2C 83 E6 08 8B 00 00 00 58 86 E6 08 8C 00 00 00 C0 89 E6 08 8D 00 00 00 48 8D E6 08 8E 00 00 00 A4 90 E6 08 8F 00 00 00 1C 94 E6 08 90 00 00 00 50 98 E6 08 91 00 00 00 A0 9B E6 08 92 00 00 00 94 9E E6 08 93 00 00 00
Ahora, para cambiar adecuadamente algún sprite en la tabla, deben buscar el offset del entrenador al que quieren cambiar, el NSE es una buena opcion.
Una vez encontrado los offset de la paleta y del sprite del entrenador, lo permutamos y lo buscamos en HxD, y simplemente reemplazamos por el puntero del nuevo sprite.


Solo nos faltaría cambiar los siguientes bytes:


Como dato adicional, les dejare un par de offsets que pueden cambiar las características de sus sprites.


A mi me quedo de esta forma.


Ya logramos insertar la rutina correctamente y modificar los sprites, pero aún podemos personalizar la apariencia del vs bar. En otras palabras, podemos modificar tanto el tileset como el raw.
Necesitaran estas direncciones:

Tileset 3F8F60
Paleta 3FA660
Raw (30X20) 3FAC34
Tileset Pointer 0D2954
Raw Pointer 0D2950



Para esto, solo tienen que crear una nueva raw e insertarla con Nlz, abrir la rom con HxD y dirigirse al offset de “Raw Pointer”, ahí podrán ver el puntero de la raw, pues solo deben reemplazar este puntero por el de su raw nueva; para el tileset, debemos hacer el mismo procedimiento y listo.

Tengan en cuenta, que en la animación, la parte superior se desplaza hacia la derecha, mientras que la inferior lo hace hacia la izquierda, y que, gracias a la rutina de Jambo, está carga 2 paletas, una para la barra del prota y otra para el adversario, esto puede resultar incómodo si es que van a solo una barra central, como en mi caso, para corregir esto, debemos ir al offset 0D28EC, y cambiar el “0C” por “00”, de este modo, solo cargara la paleta que designemos independientemente del genero del jugador.

Por último, para utilizar esta rutina esta rutina, debemos hacer un script con un trainerbattle, esta es la estructura básica de un trainerbattle:


La única variación será en la parte de “reserved”, esto designa la paleta que se va a utilizar, por ejemplo: para utilizar la primera paleta pondremos 0x100; para la segunda, 0X200; para la tercera, 0x300, etc.
A mi que quedo de así:


Bueno, es todo, cualquier duda o inconveniente que tengan, pueden hacerla aquí. Además, os dejaré una version descargable: LINK

CRÉDITOS:
• Jambo51  Por su rutina ASM.
• Derlo  Por los datos adicionales que recopilo.
 
Última edición:

Corbitto

espantaviejas
Respuesta: FR|VS Bar antes de una batalla (ASM)

no pos guau.

que buen metodo, en serio el efecto queda muy bien, muchas gracias por compartirlo, aunque no creo que lo use, estoy seguro que a muchos le servira.
 

Bugrhak

A long time ago I used to call myself "Subzero".
Respuesta: FR|VS Bar antes de una batalla (ASM)

Puto amo!!! Me gusta lo bien que lo has explicado, es bueno que haya otro metodo para hacer esto XD, muy bueno!!!
Buen aporte!!!

Salu2 :blush:
 

Gold

Porrero a tiempo parcial
Miembro insignia
Respuesta: FR|VS Bar antes de una batalla (ASM)

Llevo mucho tratando de cambiar la barra, pero no lo consigo. Veo que tanto el tileset como el tilemap de la barra no esta en formato comprimido Lz77, por lo que ignoro como hacer e insertar un tilemap descomprimido, asi que me encantaría que aclarases mejor el proceso de cambio de la vs bar.
 

Neon Skylar

Rojo Fuego User
Respuesta: FR|VS Bar antes de una batalla (ASM)

la primera parte la entiendo, pero a la hora de colocar los sprite me confundo un poco... como hago para insertar las paletas y las imagenes comprimidas y como seria el script completo para que salga el mugshot del respecrtivo lider/elite4/rival?
 
Arriba