[FR][E] | ASM | Mostrar Sprite al encontrar un Objeto en el Mapa

Avisos


Like Tree15Gracias
  • 7 Post By Machine
  • 1 Post By Brin
  • 2 Post By CompuMax
  • 1 Post By Machine
  • 1 Post By Naren Jr.
  • 2 Post By Rubire4
  • 1 Post By KERBEROS
Respuesta
 
Herramientas Desplegado
  #1  
04/12/2018
Predeterminado [FR][E] | ASM | Mostrar Sprite al encontrar un Objeto en el Mapa
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:

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
*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:

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/...ded-to-the-bag

Eso es todo... Espero les sea útil

Última edición por Machine; 05/12/2018 a las 02:00
  #2  
04/12/2018
Predeterminado Respuesta: [FR] y [E] (ASM) Mostrar Sprite al encontrar un Objeto en el Mapa
Eso esta correcto? ¿Debería mostrar el icono de la Pokéball, o es algún error en el asm?
  #3  
04/12/2018
Predeterminado Respuesta: [FR] y [E] (ASM) Mostrar Sprite al encontrar un Objeto en el Mapa
Wooooow! Nunca pensé que existiría un método para hacer esto yo optaba por hacer uso del comando showpokepic con los sprites de los objetos pero esto ocupa muchísimo menos espacio y es fácil de implementar.
Solo una pregunta, ¿porque no hay ningún comentario? xD

Edito: Recién lo comprobé y funciona perfectamente, revisé algunas cosas en mi rom hackeada y no daña ningún código del juego así que se puede usar tranquilamente.
Gracias: Machine

Última edición por Brin; 04/12/2018 a las 22:21
  #4  
05/12/2018
Predeterminado Respuesta: [FR] y [E] (ASM) Mostrar Sprite al encontrar un Objeto en el Mapa
El tutorial es bastante básico y útil en realidad. Ahora pasaré a comentar un par de cosas:

1.- El Offset debe terminar preferiblemente en: 0, 4, 8 o C
Preferiblemente no! debe ser así ya que el procesador lee las instrucciones en múltiplos de words y como el procesador de la GBA, el ARM7TDMI, es un procesador de 32 bits, cada word es de 4 bytes, de allí a que se deba insertar en offsets múltiplos de 4 o como se conocen offsets alineados.

2.- Una de las razones que supongo por las que no hay comentarios aquí (a parte de que esto está cada día más muerto), es que este sistema ya había sido publicado por su propio autor: Andrea en el siguiente post:

[FR]Show item image when it added to the bag

Igualmente muchas gracias por haberlo traído de vuelta, traducirlo y explicarlo un poco mejor.


Última edición por CompuMax; 05/12/2018 a las 01:46
  #5  
05/12/2018
Predeterminado Respuesta: [FR] y [E] (ASM) Mostrar Sprite al encontrar un Objeto en el Mapa
Dicho por CompuMax Ver mensaje
El tutorial es bastante básico y útil en realidad. Ahora pasaré a comentar un par de cosas:

1.- El Offset debe terminar preferiblemente en: 0, 4, 8 o C
Preferiblemente no! debe ser así ya que el procesador lee las instrucciones en múltiplos de words y como el procesador de la GBA, el ARM7TDMI, es un procesador de 32 bits, cada word es de 4 bytes, de allí a que se deba insertar en offsets múltiplos de 4 o como se conocen offsets alineados.

2.- Una de las razones que supongo por las que no hay comentarios aquí (a parte de que esto está cada día más muerto), es que este sistema ya había sido publicado por su propio autor: Andrea en el siguiente post:

[FR]Show item image when it added to the bag

Igualmente muchas gracias por haberlo traído de vuelta, traducirlo y explicarlo un poco mejor.
Gracias CompuMax, ya edite y mejoré el tema y di los créditos a su Autor.
Gracias: CompuMax
  #6  
08/12/2018
Predeterminado Respuesta: [FR] y [E] (ASM) Mostrar Sprite al encontrar un Objeto en el Mapa
Wow excelente tutorial!!!!!!

Me encanto, probablemente lo aplique, creo que en mis recursos tengo uno para mostrar las imagenes de los obejtos tipo BW.

Muchas gracias por compartirlo!
Gracias: Machine


ORGULLOSO DE NACHO, UN EXCELENTE TRABAJO Y AFORTUNADAMENTE PUEDO DECIR QUE TIENE MI GRANO DE ARENA!


¡GRACIAS A TODOS!


  #7  
14/12/2018
Predeterminado Respuesta: [FR] y [E] (ASM) Mostrar Sprite al encontrar un Objeto en el Mapa
Dejo por aquí las rutinas compiladas:

Fire Red:
Código:
01 2C 4A D1 28 1C 03 21 00 F0 4A F8 FF B4 2A 48 00 68 2A 49 2A 4A 88 42 01 D0 90 42 3C D1 29 48 00 88 C0 00 28 4D 2D 18 28 68 28 49 12 DF 0A 1C 68 68 20 49 12 DF 7F 20 00 02 FF 30 C8 83 10 1C 12 26 76 01 00 25 41 5D 42 5D 0F 23 F0 24 19 40 22 40 00 29 00 D1 0F 21 13 09 00 2B 00 D1 F0 22 0A 43 01 35 02 2D 05 D1 12 02 17 43 07 80 02 30 00 25 00 E0 17 1C 01 3E E5 D5 0D 21 09 03 01 31 02 22 02 23 0A 48 01 80 02 30 01 31 01 3A FA D5 02 22 3A 30 01 3B F6 D5 FF BC 30 BC 01 BC 00 47 01 B4 02 48 82 46 01 BC 50 47 C0 46 21 3F 00 08 6E 1C 00 02 98 77 03 02 C4 0E 00 03 16 68 1A 08 20 68 1A 08 C0 70 03 02 94 42 3D 08 20 80 00 06
Emerald:
Código:
01 2C 4A D1 28 1C 03 21 00 F0 4A F8 FF B4 2A 48 00 68 2A 49 2A 4A 88 42 01 D0 90 42 3C D1 29 48 00 88 C0 00 28 4D 2D 18 28 68 28 49 12 DF 0A 1C 68 68 20 49 12 DF 7F 20 00 02 FF 30 C8 83 10 1C 12 26 76 01 00 25 41 5D 42 5D 0F 23 F0 24 19 40 22 40 00 29 00 D1 0F 21 13 09 00 2B 00 D1 F0 22 0A 43 01 35 02 2D 05 D1 12 02 17 43 07 80 02 30 00 25 00 E0 17 1C 01 3E E5 D5 0D 21 09 03 01 31 02 22 02 23 0A 48 01 80 02 30 01 31 01 3A FA D5 02 22 3A 30 01 3B F6 D5 FF BC 30 BC 01 BC 00 47 01 B4 02 48 82 46 01 BC 50 47 C0 46 59 36 00 08 70 1C 00 02 B4 7C 03 02 54 0E 00 03 62 1C 27 08 85 1C 27 08 E0 75 03 02 10 44 61 08 20 80 00 06
Gracias: Jon. y Leyinork
  #8  
15/12/2018
Predeterminado Respuesta: [FR] y [E] (ASM) Mostrar Sprite al encontrar un Objeto en el Mapa
hola cuando compile la rutina me aparecio asi
https://i.ibb.co/2ksH8q6/Pok-mon-Special-Edici-n-05.png
  #9  
18/12/2018
Predeterminado Respuesta: [FR][E] | ASM | Mostrar Sprite al encontrar un Objeto en el Mapa
Muy buena rutina, no es algo fundamental para un hack, pero es un muy buen detalle que alegra la vida y queda de diez... Aparte solo se aplica en un tipo msgbox por lo tanto se podra activar cuando se quiere
Sinfirma}
  #10  
23/01/2019
Predeterminado Respuesta: [FR][E] | ASM | Mostrar Sprite al encontrar un Objeto en el Mapa
vaya!
ultimamente andas metido en el ASM, eso me gusta ! sigue trayendo estos aportes!
Gracias: Machine
POKEMON VERSIÓN MEW
BETA 0.1
Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 09:09.

© Whack a Hack! 2019