Invert
why so serious?
Show Oam
Explicación
Esta rutina muestra sprites de 64x64 en su tamaño total y con el atributo de que puedes mostrar más de una a la vez además de manipular las coordenadas de la imagen.
¿Recibe Parámetros?: Sí.
- var 8001: ID de la imagen
- var 8002: Coordenada x
- var 8003: Coordenada Y
¿Devuelve Parámetros?: No.
Instalación
Instalar el siguiente codigo:
Show Oam
Nota:Código:.thumb .global mugs .thumb_func PUSH {R4-R6,LR} ldr r0, =0x020370ba @var 8001 ldrb r0,[r0] mov r2,#0x10 mul r2,r0 ldr r1, =0x8800000 @table add r6,r1,r2 mov r0, r6 ldr r3, =0x80086DD @gpu_tile_obj_alloc_tag_and_upload bl bx_r3 add r6,#8 mov r0, r6 ldr r3, =0x8008929 @gpu_pal_obj_alloc_tag_and_apply bl bx_r3 ldr r5, Data @Template @X POS ldr r1, =0x20370BC @var 8002 ldrh r1, [r1] lsl r1, r1, #0x10 mov r2, #0x00 lsl r2, r2, #0x0e add r1, r1, r2 asr r1, r1, #0x10 @Y POS ldr r7, =0x20370BE @var 8003 ldrh r2, [r7, #0x0] lsl r2, r2, #0x10 mov r3, #0x00 lsl r3, r3, #0x0e add r2,r2,r3 asr r2, r2, #0x10 mov r3, #0x0 mov r0, r5 @right ldr r4, =0x8006F8D bl bx_r4 POP {r4-r6,PC} .ltorg bx_r3: bx r3 bx_r4: bx r4 .align 2 Data: .word BUFFErDATA + 0x08FB0300 BUFFErDATA: .hword 0x1b58 .hword 0x1b58 .word 0x08453184 .word ANIMATION + 0x08FB0300 .word 0x0 .word 0x08231CFC .word 0x0810BB89 .byte 0xFF .align 2 ANIMATION: .word OAMANIM + 0x08FB0300 OAMANIM: .hword 0x0 .hword 0xf .hword 0xFFFE .hword 0x0
Cambiar los siguientes paramentros:
Table: 0x8800000 @Es el offset de tu tabla.
Rutina: 0x08FB0300 @Es el offset de la rutina.
Ejemplo de la tabla
Código:
Este es la entrada de una imagen en la tabla.
78 97 0C 09 00 08 58 1B DC FF 00 09 58 1B 00 00
[LIST]
[*]78 97 0C 09: Es el offset de la imagen.
[*]00 08: Es el tamaño de la imagen.
[*]58 1B: Tag de la imagen.
[*]DC FF 00 09: Es el offset de la paleta.
[*]58 1B: Tag de la paleta.
[*]00 00: Relleno.
[/LIST]
Instruciones de uso
EJEMPLO DE USO
Nota:Código:#dynamic 0x800000 //--------------- #org @inicio setvar 0x8001 0x0 @Imagen #1 setvar 0x8002 0x0 @Coordenada X setvar 0x8002 0x0 @Coordenada Y callasm 0x900000 @Aqui va el offset de la rutina llamada "Show Oam" end
Se puede mostrar varias imágenes con esa rutina sin necesidad de escribir el slot de la paleta, yo intenté con 3 y funcionó sin ningún problema.
Nota 2:
La rutina está en proceso porque aún debo hacer un método para desaparecer las imágenes una por una, haber que aparezcan los que saben sobre OAM y hagan su magia porque no tengo idea de como hacerlo xD.
PD: Gracias a Kaiser por explicarme la estructura de la tabla .