MACHINE
Space Cowboy
Hola WaH!
Navegando por Pokécommunity encontré esta interesante Rutina ASM, su función es mostrar el Sprite del objeto al encontrarlo en el mapa (Ej: En una Poké Ball).
*Post Original: https://www.pokecommunity.com/showthread.php?t=393573
Bueno esta es la explicación (Mejorada y Traducida por mi):
Paso #1:
-Buscar un Offset libre donde colocar la siguiente rutina ASM:
*Nota: En .equ GAMECODE, # colocar 0 Para Fire Red y 1 para Emerald.
*El Offset debe terminar en: 0, 4, 8 o C.
-Compilar la Rutina.
Paso #2:
-Ir a los siguientes Offsets dependiendo de la ROM:
-Ir a Offset 0F6F08 y pegar (Ctr+B) 00 48 00 47 XX XX XX 08 (En XX XX XX poner el offset donde se insertó la rutina, convertido en pointer+1)
- Ir a Offset 1973E8 y pegar (Ctr+B) 00 48 00 47 XX XX XX 08 (En XX XX XX poner el offset donde se insertó la rutina, convertido en pointer+1).
-Ir a Offset 099738 y cambiar los bytes por 00 00.
Resultado:
IMPORTANTE: Solo funciona con el tipo MSG_FIND
-Si encuentran algún bug, notificarme-
Edito:*Créditos para: Andrea (Por publicar originalmente el tema: https://whackahack.com/foro/t-48585/fr-show-item-image-when-it-added-to-the-bag
Eso es todo... Espero les sea útil
Navegando por Pokécommunity encontré esta interesante Rutina ASM, su función es mostrar el Sprite del objeto al encontrarlo en el mapa (Ej: En una Poké Ball).
*Post Original: https://www.pokecommunity.com/showthread.php?t=393573
Bueno esta es la explicación (Mejorada y Traducida por mi):
Paso #1:
-Buscar un Offset libre donde colocar la siguiente rutina ASM:
Código:
.equ GAMECODE, 0
.THUMB
.ALIGN 2
CMP R4, #1
BNE END
MOV R0, R5
MOV R1, #3
BL BOX
PUSH {R0-R7}
LDR R0, .SCRIPT
LDR R0, [R0]
LDR R1, .SCRIPT1
LDR R2, .SCRIPT2
CMP R0, R1
BEQ LOAD
CMP R0, R2
BNE END_
LOAD:
LDR R0, .8007
LDRH R0, [R0]
LSL R0, R0, #3
LDR R5, .TABLE
ADD R5, R0
LDR R0, [R5]
LDR R1, .TILE
SWI 0x12
MOV R2, R1
LDR R0, [R5, #4]
LDR R1, .PAL
SWI 0x12
MOV R0, #0x7F
LSL R0, R0, #8
ADD R0, #0xFF
STRH R0, [R1, #0x1E]
MOV R0, R2
MOV R6, #0x12
LSL R6, R6, #5
MOV R5, #0
LOOP_:
LDRB R1, [R0, R5]
LDRB R2, [R0, R5]
MOV R3, #0x0F
MOV R4, #0xF0
AND R1, R3
AND R2, R4
CMP R1, #0
BNE LAST
MOV R1, #0x0F
LAST:
LSR R3, R2, #4
CMP R3, #0
BNE CONTROL
MOV R2, #0xF0
CONTROL:
ORR R2, R1
ADD R5, #1
CMP R5, #2
BNE BYTE
LSL R2, R2, #8
ORR R7, R2
STRH R7, [R0]
ADD R0, #2
MOV R5, #0
B COUNTER
BYTE:
MOV R7, R2
COUNTER:
SUB R6, #1
BPL LOOP_
MOV R1, #0xD
LSL R1, R1, #12
ADD R1, R1, #1
MOV R2, #2
MOV R3, #2
LDR R0, .RAW
LOOP:
STRH R1, [R0]
ADD R0, #2
ADD R1, #1
SUB R2, #1
BPL LOOP
MOV R2, #2
ADD R0, #0x3A
SUB R3, #1
BPL LOOP
END_:
POP {R0-R7}
END:
POP {R4, R5}
POP {R0}
BX R0
BOX:
PUSH {R0}
LDR R0, .BOX
MOV R10, R0
POP {R0}
BX R10
.ALIGN 2
.if GAMECODE==0
.BOX: .word 0x08003F20+1
.RAW: .word 0x02001C6E
.PAL: .word 0x02037798
.SCRIPT: .word 0x03000EC4
.SCRIPT1: .word 0x081A6816
.SCRIPT2: .word 0x081A6820
.8007: .word 0x020370C0
.TABLE: .word 0x083D4294
.TILE: .word 0x06008020
.elseif GAMECODE==1
.BOX: .word 0x08003658+1
.RAW: .word 0x02001C70
.PAL: .word 0x02037CB4
.SCRIPT: .word 0x03000E54
.SCRIPT1: .word 0x08271C62
.SCRIPT2: .word 0x08271C85
.8007: .word 0x020375E0
.TABLE: .word 0x08614410
.TILE: .word 0x06008020
.else
.fail 0
.endif
*El Offset debe terminar en: 0, 4, 8 o C.
-Compilar la Rutina.
Paso #2:
-Ir a los siguientes Offsets dependiendo de la ROM:
Fire Red
-Ir a Offset 0F6F08 y pegar (Ctr+B) 00 48 00 47 XX XX XX 08 (En XX XX XX poner el offset donde se insertó la rutina, convertido en pointer+1)
Emerald
- Ir a Offset 1973E8 y pegar (Ctr+B) 00 48 00 47 XX XX XX 08 (En XX XX XX poner el offset donde se insertó la rutina, convertido en pointer+1).
-Ir a Offset 099738 y cambiar los bytes por 00 00.
Resultado:
IMPORTANTE: Solo funciona con el tipo MSG_FIND
-Si encuentran algún bug, notificarme-
Edito:*Créditos para: Andrea (Por publicar originalmente el tema: https://whackahack.com/foro/t-48585/fr-show-item-image-when-it-added-to-the-bag
Eso es todo... Espero les sea útil
Última edición: