Author Id: 12479 Author Name: eing Post Content: Bueno, hoy os traigo una simple rutina, que he decidido compartir. Que es la siguiente: ¿A que todos sabeis hacer este efecto? [IMG]http://i.imgur.com/GUDpjAs.png[/IMG] Bien, pues como soy generoso, y me cansa que siempre hagais esto con Writebytetoffset, gastando un chorrón de bytes y "ensuciando" el código del script, os traigo mi rutina, para que quede mas simple, comodo y limpio. Es la siguiente: RUTINA POKEMON RUBY Rutina pensamientos: .align 2 .thumb main: push {r0-r2,lr} ldr r0,.dispcnt ldrh r1, .dispcntv strh r1,[r0] ldr r0, .textbox_pos mov r1, #0x5f strb r1,[r0] ldr r0, .textbox_data ldrh r1, .ff strh r1, [r0] mov r2, #0x0 b bucle bucle: add r2, #0x2 mov r1, #0x00 strh r1, [r0, r2] cmp r2, #0x1C beq end b bucle end: pop {r0-r2,pc} .align 2 .textbox_data: .word 0x0202f0aa .ff: .word 0x0000ffff .dispcnt: .word 0x04000000 .dispcntv: .word 0x00006161 .textbox_pos: .word 0x04000012 Para los perezosos, aquí la tienen compilada. 07 B5 0B 48 0B 49 01 80 0B 48 5F 21 01 70 06 48 06 49 01 80 00 22 FF E7 02 32 00 21 81 52 1C 2A 00 D0 F9 E7 07 BD C0 46 AA F0 02 02 FF FF 00 00 00 00 00 04 61 61 00 00 12 00 00 04Ponerla que empiece en 0,2,4,6,8,a, c o e (Si no no os funcionará) Y como no, también la rutina para hacer que el msgbox vuelva a la normalidad. .align 2 .thumb main: push {r0-r3,lr} ldr r0, .dispcnt ldr r1, .dispcntv strh r1,[r0] ldr r0, .textbox_pos mov r1, #0x0 strb r1,[r0] mov r2, #0x0 ldr r0, .textbox ldr r1, .textboxv b change change: ldr r3,[r1] @valor xxxx xxxx r1 str r3,[r0,r2] add r2,#0x2 add r1,#0x2 cmp r2, #0x1c beq fin b change fin: pop {r0-r3,pc} .align 2 .textbox: .word 0x0202f0aa .dispcnt: .word 0x04000000 .dispcntv: .word 0x00001F70 .textboxv: .word 0x0202ECA8 .textbox_pos: .word 0x04000012 Para los perezosos: 0F B5 09 48 09 49 01 80 06 4A 05 48 08 49 FF E7 0B 68 83 50 02 32 02 31 1C 2A 00 D0 F8 E7 0F BD AA F0 02 02 00 00 00 00 00 00 00 04 70 1F 00 00 A8 EC 02 02Ponerla que empiece en 0,2,4,6,8,a, c o e (Si no no os funcionará) Como podeis ver, el espacio que ahorramos usando esta rutina es BASTANTE. Así que os animo a usarla ^^ Ahora solo queda el scirpt de muestra: #org 0xoffset callasm 0xoffset_rutina_msgbox_pensamientos+1 msgbox 0x8offset_msgbox callastd 0x2 callasm 0xoffset_rutina_msgbox_default+1 end #org 0xoffset_msgbox = mensaje RUTINA FR .align 2 .thumb main: push {r0,r3} ldr r0, .var ldrh r0, [r0,#0x0] cmp r0, #0x0 beq normal ldr r0,.dispcnt ldrh r3, .dispcntv strh r3,[r0] ldr r0, .textbox_pos mov r3, #0x5f strb r3,[r0] pop {r0,r3} ldr r1, .black_box add r0,r0,r1 pop {r1} bx r1 normal: ldr r0,.dispcnt ldrh r3, .dispcntvn strh r3,[r0] ldr r0, .textbox_pos mov r3, #0x0 strb r3,[r0] pop {r0,r3} ldr r1, .normal_msgbox add r0,r0,r1 pop {r1} bx r1 .align 2 .var: .word 0x020370c0 @var 0x8004 .dispcnt: .word 0x04000000 .dispcntv: .word 0x00006161 .dispcntvn: .word 0x00007f60 .textbox_pos: .word 0x04000012 .normal_msgbox: .word 0x08471dec .black_box: .word 0x089F3A10 La dejo compilada: 09 B4 0D 48 00 88 00 28 0A D0 0C 48 0C 4B 03 80 0D 48 5F 23 03 70 09 BC 0D 49 40 18 02 BC 08 47 06 48 08 4B 03 80 08 48 00 23 03 70 09 BC 07 49 40 18 02 BC 08 47 C0 46 C0 70 03 02 00 00 00 04 61 61 00 00 60 7F 00 00 12 00 00 04 EC 1D 47 08 10 3A 9F 08Si solo copian y pegan, en el offset: 9F 3A 10, habrán de copiar los nuevos colores del textbox. (Los que se usarán para el efecto pensamiento), que son los siguientes: 2E 53 00 00 FF 7F 00 00 FF 7F FF 7F FF 7F FF 7F FF 7F FF 00 00 00 00 00 00 00 00 00 00 00 00 00*Nota: Si el espacio, donde van los nuevos colores está ocupada por algo vuestro, simplemente copien los colores en otro lado, y en la rutina cambien el offset de "black_box", por vuestro nuevo offset. (Y si usan ya la compilada cambiar 10 3a 9f 08 por el offset donde se hayen vuestros colores) Luego, despues de tener los colores del textbox acabados, y la rutina compilada, hemos de ir al offset siguiente: 08150448 Ahí, habremos de colocar los siguientes valores: 00 4F 38 47 XX XX XX 08 (Donde XX XX XX será el offset donde colocasteis la rutina+1) Por último, el script sería así: #org 0xoffset setvar 0x8004 0x1 msgbox 0x8offset callstd 0x6 setvar 0x8004 0x0 callasm 0xoffset_rutina+1 CUando la variable esté a 1, se verá efecto pensamientos, si no pues normal. Dar creditos si se usa a Eing.