Eaas
Profesional de WaH
Hoy vengo a dejar algo que la verdad tenía hace mucho y no había aportado a la comunidad.
Primero les dejo los pasos para realizar el sistema y más abajo les dejo lo que se podría realizar con el.
Primero deben modificar en la rutina el offset donde dice "@Table" por el offset de la vuestra.
La rutina debe insertarse en el desplazamiento 0x0807C716.
La tabla de animación sigue el siguiente formato:
[FRAME_POINTER - 4 BYTE LITTLE ENDIAN] [PAUSA - 1 BYTE] [00 00 00]
Ejemplo:
Si su frame lo inserto en el offset 0x0800000 y desea que el tiempo de pausado de ese frame al próximo sea de 3, entonces quedaría así:
00 00 80 08 03 00 00 00
Y así con todos las entradas de la tabla.
Algunos cambios:
En este caso se usó un solo juego de paletas y un solo Raw para aligerar la rutina.
Ejemplo:
Agradecimientos:
@Andrea
Este usuario rehizo la rutina y no fuera posible este post sin el.
Aquí les dejo una ROM modificada con este sistema, por si quieren revisar algo.
Primero les dejo los pasos para realizar el sistema y más abajo les dejo lo que se podría realizar con el.
.THUMB
.ALIGN 2
@ 0807C716 000000480047xxxxxx08
@TABLE [puntero - 32 bits] [pausa - 8 bits] [00 00 00]
PUSH {R0-R3}
LDR R0, = 0x02024F50
LDRB R1, [R0]
CMP R1, # 0
BEQ LOAD_FRAME
SUB R1, R1, # 1
STRB R1, [R0]
B POPPING
LOAD_FRAME:
LDRB R1, [R0, # 1] @frame_index
AÑADIR R1, R1, # 1
CMP R1, # 4 @FRAME_COUNT
BNE WRITE
MOV R1, # 0
WRITE:
STRB R1, [R0, # 1]
LSL R1, R1, # 3
LDR R2, = 0x08C04900 @TABLE
ADD R2, R2, R1
LDRB R3, [R2, # 4]
STRB R3, [R0] @new_pause
LDR R0, [ R2] @pointer_frame
LDR R1, = 0x0600E000
SWI 0x12
POPPING:
POP {R0-R3}
LDR R0, = 0x0807C724 + 1
BX R0
.ALIGN 2
@ 0807C716 000000480047xxxxxx08
@TABLE [puntero - 32 bits] [pausa - 8 bits] [00 00 00]
PUSH {R0-R3}
LDR R0, = 0x02024F50
LDRB R1, [R0]
CMP R1, # 0
BEQ LOAD_FRAME
SUB R1, R1, # 1
STRB R1, [R0]
B POPPING
LOAD_FRAME:
LDRB R1, [R0, # 1] @frame_index
AÑADIR R1, R1, # 1
CMP R1, # 4 @FRAME_COUNT
BNE WRITE
MOV R1, # 0
WRITE:
STRB R1, [R0, # 1]
LSL R1, R1, # 3
LDR R2, = 0x08C04900 @TABLE
ADD R2, R2, R1
LDRB R3, [R2, # 4]
STRB R3, [R0] @new_pause
LDR R0, [ R2] @pointer_frame
LDR R1, = 0x0600E000
SWI 0x12
POPPING:
POP {R0-R3}
LDR R0, = 0x0807C724 + 1
BX R0
Primero deben modificar en la rutina el offset donde dice "@Table" por el offset de la vuestra.
La rutina debe insertarse en el desplazamiento 0x0807C716.
La tabla de animación sigue el siguiente formato:
[FRAME_POINTER - 4 BYTE LITTLE ENDIAN] [PAUSA - 1 BYTE] [00 00 00]
Ejemplo:
Si su frame lo inserto en el offset 0x0800000 y desea que el tiempo de pausado de ese frame al próximo sea de 3, entonces quedaría así:
00 00 80 08 03 00 00 00
Y así con todos las entradas de la tabla.
Algunos cambios:
Finalmente, los repoints que se han realizado son los siguientes:0807C21A 00 00 00 00 (eliminar la carga de burbujas antiguas sin procesar)
0807C72A 00 00 00 00 (eliminar el desvanecimiento de la paleta azul única)
0807C28C 00 D0 00 06 (nueva ubicación de las raws)
0807C294 00 D8 00 06
0807C3F0 0B 1A (nuevo atributo)
0807C3F4 0A 1B
0807C722 00 00 (detener el desplazamiento de las burbujas)
0807C43C 00 00 00 00 (detener el efecto de las ondas)
0807C6A0 41 (desactivar el efecto semitransparente)
Código:
0807c280 Tileset Backgroud
0807c288 Raw Backgroud
08393210 Paleta Backgroud (sin comprimir)
08393220 Paleta Pokémon Frames (sin comprimir)
0807c290 Raw Pokémon Frame
Ejemplo:
Agradecimientos:
@Andrea
Este usuario rehizo la rutina y no fuera posible este post sin el.
Aquí les dejo una ROM modificada con este sistema, por si quieren revisar algo.
Última edición: