Invert
why so serious?
Vs bar persolnalizable
¡Qué pasa gente!Jugando varias ediciones de pokémon en DS me gustó la manera en cómo se cargan las vs bar, por eso decidí hacer una rutina que decido al final compartirla.
PASO 1
Lo primero de todo es insertar esta rutina:
Código:
.thumb
.align 2
push {r4-r6, lr}
Image:
ldr r0, =0x000040F2 @var_40F2
ldr r4, =0x0806E455 @Decrypt
bl call_r4
ldrb r0, [r0]
ldr r1, =0x08900000 @Table_images
lsl r2, r0, #0x3
lsl r0, r0, #0x2
add r0, r0, r2
add r1, r1, r0
mov r6, r1
ldr r1, [r1]
mov r0, #0
mov r2, #0
mov r3, #0
ldr r4, =0x080F6879 @decompress_with_fallback_maybe
bl call_r4
PAL:
add r6,#4
mov r0, r6 @Pal
ldr r0, [r0]
mov r1, #0XD0
mov r2, #0X20
ldr r4, =0x080703Ed @gpu_pal_apply
bl call_r4
mov r0, r6
ldr r0, [r0]
ldr r4, =0x08008929 @gpu_pal_obj_alloc_tag_and_apply
bl call_r4
RAW:
add r6,#4
mov r1, r6 @Raw
ldr r1, [r1]
mov r0, #0
mov r2, #0
mov r3, #0
ldr r4, =0x08002041 @gpu_tilemap_config_and_commit
bl call_r4
mov r0, #0x0
ldr r4, =0x080020BD @bgid_send_tilemap
bl call_r4
mov r0, r6 @Raw
ldr r0, [r0]
ldr r4, =0X080086DD @gpu_tile_obj_alloc_tag_and_upload
bl call_r4
showBG:
mov r0, #0x0
ldr r4, =0x80019BD
bl call_r4
pop {r4-r6, pc}
call_r4: bx r4
Cambiar la direccion de la tabla.
0x08900000 @Table_images
PASO 2
Lo segundo será insertar la imagen,raw y paleta.
Para eso necesitaremos estas herramientas:
- NTME
- NLZ-GBA Advance
- APE
Primero, necesitas una imagen 256x160 de tamaño indexada, yo usaré esta:
La imagen debe estar en formato BMP
Ahora abrimos el NTME y creamos nuestra raw (será más fácil si se usan las flecas + del width y height.
Otra cosa que deben marcar es abajo donde pone "preset size" marcan la opción FR/LG TS.
Al final cuando tengamos la raw completa abajo, le damos a la opción "Palette Map" y rellenamos toda la imagen con la paleta D.
Cuando tengamos eso guardamos la raw: file-Save tilemap.
PASO 3
Ahora necesitaremos insertar todo, y usaremos la herramienta "NLZ-GBA Advance".
Abrimos la Rom, nos parecerá un cuadro en el que ponen accept.
Ahora, clickeas donde pone "import a bitmap" y abres tu imagen (archivo BMP). Les aparecerá un cuadro donde pondrás el offset donde será guardada tu imagen y más abajo solo señalarás la opción "Abort if new daa is bigger" le das ok y luego "Write to rom", si salió todo bien tuvo que haber salido un mensaje que ponía "Finished".
Para insertar la Raw le das en load Raw, y eliges tu raw (para que salga debes elegir el tipo all files). Nuevamente eliges tu offset y por último "Write to ROM"
Y luego insertas tu paleta con APE, no creo que sea necesario explicarlo xD.
PASO 4
Cuando tengas todo tus datos, debes armar la tabla de la siguiente forma:
(Imagen-paleta-raw)
xx xx xx 08 xx xx xx 08 xx xx xx 08
Cada entrada tiene un tamaño de 0xC.
Ahora pasamos a la parte de como usar la rutina.
La rutina sola lo único que hace es cargar la imagen usando este fragmento:
Código:
setvar 0x40F2 0x (Entrada de tu tabla)
callasm 0x (Offset de tu rutina +1)
Código:
#org @loop
compare 0x8003 0x70
if 0x1 goto @Batalla
copybyte 0x4000010 0x20370C2
pause 0x1
addvar 0x8005 0x10
addvar 0x8003 0x1
goto @loop
Código:
#org @inicio
setvar 0x40F2 0x (Entrada de tu tabla)
callasm 0x (Offset de tu rutina +1)
goto @loop
#org @loop
compare 0x8003 0x70
if 0x1 goto @Batalla @Cuando termine el loop va a la batalla)
copybyte 0x4000010 0x20370C2
pause 0x1
addvar 0x8005 0x10
addvar 0x8003 0x1
goto @loop
#org @Batalla
trainerbattle 0x3 0x5 0x0 @texto
.....
Para insertar los sprites puedes usar varios showpokepics y ponerlos antes de el @loop.
Código:
#org @inicio
setvar 0x40F2 0x (Entrada de tu tabla)
callasm 0x (Offset de tu rutina +1)
showpokepic 0x1 0x1 0x1
showpokepic 0x2 0xF 0x1
goto @loop
#org @loop
compare 0x8003 0x70
if 0x1 goto @Batalla @Cuando termine el loop va a la batalla)
copybyte 0x4000010 0x20370C2
pause 0x1
addvar 0x8005 0x10
addvar 0x8003 0x1
goto @loop
#org @Batalla
trainerbattle 0x3 0x5 0x0 @texto
.....
Y bien, ese es básicamente el proceso a seguir, si tienen dudas o errores me los dejan saber.
Última edición: