Registrarse

[ASM] FR, E | Exp.all

Ancer

Usuario de Oro
Hola se que @Lunos ya subió pero solo para esmerald es decir no para fire red,pero quería hacerlo para fire red y me tome el tiempo para adaptarlo(no es mucho,fue fácil) y darle un toque especial
bueno comencemos

Código:
.align 2
.thumb

no_crash:
ldr r0, [r5]
mov r1, r0
add r1, #0x53
ldrb r0, [r1]

flag_check:
push {r0-r2}
ldr r0, flag_number
ldr r2, flag_routine
push {r1-r3}
bl linker
pop {r1-r3}
cmp r0, #0x1
bne routine_off
pop {r0-r2}

main:
push {r3-r6}
ldr r6, slot_var
ldrb r3, [r6]
ldr r4, is_egg_party
mov r5, #0x64
mul r5, r5, r3
ldrb r4, [r4, r5]
cmp r4, #0x6
beq pokemonIsEgg
mov r2, #0x1
b update_slot

pokemonIsEgg:
mov r2, #0x0

update_slot:
add r3, #0x1
cmp r3, #0x6
bne end
mov r3, #0x0

end:
strh r3, [r6]
pop {r3-r6}

return:
push {r2}
ldr r2, return_dir
bx r2

routine_off:
pop {r0-r2}
mov r2, #0x1
and r2, r0
b return

linker:
bx r2

.align 2
flag_number:
.word 0x00000200
flag_routine:
.word 0x0806E708 +1
slot_var:
.word 0x0202703C + (0x800C * 2)
is_egg_party:
.word 0x020241F4 + 0x13
return_dir:
.word 0x08021C40 + 1
Código:
.thumb
.align 2

/****** NEW GEN EXP SHARE + EGG EXP FIX *******
Es necesario realizar las siguientes ediciones en el rom:
- Ve a 0x0804A4BE y escribe los bytes "02 21"
- Ve a 0x0804A634 y escribe los bytes "01 20"
- Ve a 0x0804A58A y escribe lo siguiente:
 "C0 46 00 4A 10 47 [XX+1 XX XX 08] 04 BC" 
 siendo  [XX+1 XX XX 08] el pointer permutado a esta rutina
************************************************
Es también importante recalcar que debéis escoger el flag que
vais a utilizar para activar/desactivar la rutina.
De la misma forma debéis escoger una variable que utilizará 
está rutina para almacenar un valor de control.
************************************************
************************************************
************************************************
Créditos a BluRose & Lunos *********************
************************************************
************************************************/

no_crash:
	ldr r0, [r5]
	mov r1, r0
	add r1, #0x53
	ldrb r0, [r1]
	
flag_check:				@Se encarga de comprobar si hemos activado el flag
	push {r0-r2}
	ldr r0, flag_number
	ldr r2, flag_routine
	push {r1-r3}
	bl linker
	pop {r1-r3}
	cmp r0, #0x1		@Compara el flag con 0x1 (activado)
	bne routine_off
	pop {r0-r2}	
	
main:
	@Comprobar el slot y guardarlo en una variable.
	push {r3-r6}
	ldr r6, slot_var		@Carga en r3 el slot del pokemon
	ldrb r3, [r6]
	ldr r4, is_egg_party	
	mov r5, #0x64			
	mul r5, r5, r3			@Calcula las posiciones a avanzar
	ldrb r4, [r4, r5]		@Carga en r4 el byte egg/not
	cmp r4, #0x6
	beq pokemonIsEgg
	mov r2, #0x1
	b update_slot
	
pokemonIsEgg:
	mov r2, #0x0			@Establece r2 en 0 (no ganará exp)
	
update_slot:				@Actualiza y resetea el valor del slot
	add r3, #0x1
	cmp r3, #0x6
	bne end
	mov r3, #0x0
	
end:
	strh r3, [r6]
	pop {r3-r6}
	
return:
	push {r2}
	ldr r2, return_dir
	bx r2
	
routine_off:				@Ejecuta las instrucciones "originales"
	pop {r0-r2}
	mov r2, #0x1
	and r2, r0
	b return

linker:
	bx r2
	
.align 2
flag_number:
	.word 0x00000[XXX] 					@Elige el numero del flag
flag_routine:
	.word 0x0809D790 +1				@Rutina que checkea el flag
slot_var: 								@Escoge una variable temporal (no uses la 0x8000,
	.word 0x020275D6 + (0x800[X] * 2)	@el juego la utiliza al inicializar combates dobles
is_egg_party:
	.word 0x020244EC + 0x13				@Byte que comprueba si es un huevo
return_dir:
	.word 0x0804A592 + 1				@Dirección de retorno a la rutina

Aqui cambiaremos la [xxx] por la flag que queramos yo como en el original usare 200
en la [x] usare 2 ustedes puedes usar el que quieran menos 0
la compilamos e insertamos en la ROM(no olviden donde la insertaron)
ahora vamos a hacer estos cambios

offset 04A4BE cd""mbiamos a 02 21
offset 04A634 cambiamos a 01 20
offset 04A58A cambiamos a C0 46 00 4A 10 47 XX XX XX 08 04 BC
Esto lo realismos con HxD
muy importante no pegar sino cambiar es decir no Ctrl+V sino ctrl+B
Y cambiamos xx xx xx por donde pusimos la rutina si es 876543 pon 43 65 87

Ahora viene el toque
abrimos la ROM con Gen3Tool y vamos a el item b6 que es el repartir exp,y le ponemos como si fuera un KEY ITEM y en TYPE lo cambiamos a USE OF SELECT le damos salvar y lo cerramos

lo siguiente sera con XSE y compilamos este script
Código:
#dynamic 0x800000

'---------------
#org @start
lock
faceplayer
msgbox @string1 MSG_YESNO '"Quieres darle experienciana todos..."
compare LASTRESULT 0x1
if 0x1 goto @snippet1
if 0x0 goto @snippet2
release
end

'---------------
#org @snippet1
setflag 0xaqui va la flash que usaron
msgbox @string2 MSG_NORMAL '"Iniciando."
end

'---------------
#org @snippet2
clearflag 0xaqui igual
msgbox @string3 MSG_NORMAL '"Apagando"
end


'---------
' Strings
'---------
#org @#string1
= Introducción

#org @#string2
= Mensaje tras prenderlo.

#org @#string3
= Mensaje tras apagarlo.
lo que queda es que usen este tutorial también de @Lunos para que un objeto use el script llamado Activar un Script usando un Objeto

recuerden cambiar el offset de objeto después de seguir ese tutorial

si todo salio bien tienen lo mas parecido al repartir experiencia de las ultimas generaciones

creditos para @Lunos y a @BluRose
 
Última edición:

Lunos

Enfrentando a La Organización
Re: [fr][em] exp.all

Ehh.. Samu posteó la rutina para Fire Red en el mismo tema que creé para Emerald, justo aqui.
No hice un tema para ella porque creo que las instrucciones de uso son practicamente iguales. Me da mucha paja revisarlo ahora.

Aun asi está bien el tema, supongo.
 
Respuesta: Re: [fr][em] exp.all

Porque me sale error en la linea 7 cuando voy a compilar con el XSE EDITOR? Que hay que cambiar o que hay que hacer. Y otra cosa la ''flash'' que tu nombras @Ancer (intuyo que te refieres a flag), ¿¿¿¿¿es la que he utilizado en la rutina ASM cuando la he sustituido por [xxx]???? Gracias por el tutorial solo esas dudas que espero me las aclareis. @Lunos

https://ibb.co/8YXbNcF aquí esta lo que me aparece :v
 
Última edición:

Lunos

Enfrentando a La Organización
Respuesta: Re: [fr][em] exp.all

Porque me sale error en la linea 7 cuando voy a compilar con el XSE EDITOR? Que hay que cambiar o que hay que hacer. Y otra cosa la ''flash'' que tu nombras @Ancer (intuyo que te refieres a flag), ¿¿¿¿¿es la que he utilizado en la rutina ASM cuando la he sustituido por [xxx]???? Gracias por el tutorial solo esas dudas que espero me las aclareis. @Lunos

https://ibb.co/8YXbNcF aquí esta lo que me aparece :v
A juzgar por el hecho de que no hay mucho mas script debajo, dentro de la imagen que insertaste, creo que olvidaste añadir la linea de texto perteneciente a ese msgbox en la Linea 7.
Para futuras referencias, si vas a pedir ayuda con un script intentá mostrarlo entero, asi la ayuda no se convierte en un juego de adivinanzas.
 
Respuesta: Re: [fr][em] exp.all

A juzgar por el hecho de que no hay mucho mas script debajo, dentro de la imagen que insertaste, creo que olvidaste añadir la linea de texto perteneciente a ese msgbox en la Linea 7.
Para futuras referencias, si vas a pedir ayuda con un script intentá mostrarlo entero, asi la ayuda no se convierte en un juego de adivinanzas.
Creo que no te he entendido ni tu a mi jajaja. He copiado tal cual el script que hay que poner en XSE pero me salta ese error. Nose que debo hacer soy bstante nuevo perdona mi retraso en estas cosas jajaja.
Por cierto aqui tienes el script completo, por si quieres hecharle un ojo
https://ibb.co/NSy7g3w
 

Lunos

Enfrentando a La Organización
Respuesta: Re: [fr][em] exp.all

Creo que no te he entendido ni tu a mi jajaja. He copiado tal cual el script que hay que poner en XSE pero me salta ese error. Nose que debo hacer soy bstante nuevo perdona mi retraso en estas cosas jajaja.
Por cierto aqui tienes el script completo, por si quieres hecharle un ojo
https://ibb.co/NSy7g3w
Pues es que es eso, claramente hay msgboxes en el script, pero lo que faltan son las lineas de texto que los msgbox van a cargar.
Código:
dynamic 0x800000

'---------------
#org @start
lock
faceplayer
msgbox @string1 MSG_YESNO '"Quieres darle experienciana todos..."
compare LASTRESULT 0x1
if 0x1 goto @snippet1
if 0x0 goto @snippet2
release
end

'---------------
#org @snippet1
setflag 0xaqui va la fla[B][COLOR="Red"]g[/COLOR][/B] que usaron
msgbox @string2 MSG_NORMAL '"Iniciando."
end

'---------------
#org @snippet2
clearflag 0xaqui igual
msgbox @string3 MSG_NORMAL '"Apagando"
end


'---------
' Strings
'---------
[B]#org @#string1
= Introducción

#org @#string2
= Mensaje tras prenderlo.

#org @#string3
= Mensaje tras apagarlo.[/B]
 
Respuesta: Re: [fr][em] exp.all

Pues es que es eso, claramente hay msgboxes en el script, pero lo que faltan son las lineas de texto que los msgbox van a cargar.
Código:
dynamic 0x800000

'---------------
#org @start
lock
faceplayer
msgbox @string1 MSG_YESNO '"Quieres darle experienciana todos..."
compare LASTRESULT 0x1
if 0x1 goto @snippet1
if 0x0 goto @snippet2
release
end

'---------------
#org @snippet1
setflag 0xaqui va la fla[B][COLOR="Red"]g[/COLOR][/B] que usaron
msgbox @string2 MSG_NORMAL '"Iniciando."
end

'---------------
#org @snippet2
clearflag 0xaqui igual
msgbox @string3 MSG_NORMAL '"Apagando"
end


'---------
' Strings
'---------
[B]#org @#string1
= Introducción

#org @#string2
= Mensaje tras prenderlo.

#org @#string3
= Mensaje tras apagarlo.[/B]
¡Eres un crack! Muchísima gracias hermano, voy a continuar con el tutorial, que justo toca hacer tu paso jajaja. Gracias una vez más.:lovelon:
 
Respuesta: [fr][em] exp.all

Hola de nuevo, @Ancer y @Lunos, tras acabar el tutorial y hacerlo todo tal y como dice este TEMA, me pongo a probarlo en mi hack, y para mi sorpresa hay un fallo. A la hora de luchar, cuando mi Pokémon vence a otro, cuando llega el momento de dar la experiencia se congela el juego. Si os ha pasado, ¿sabéis como solucionarlo? Me gustaría dejar un vídeo haciendo el tutorial entero para que me digaís si estoy haciendo algo mal. Es un añadido a los hacks muy bueno y me gustaría añadirlo. Perdonar ser tan pesado jajaja saludos.
PD: No teneis que contestar obligado vosotros, qualquiera que sepa el problema puede colaborar.

video: https://www.youtube.com/watch?v=AIUoWR0vDQs
 
Última edición:

Lunos

Enfrentando a La Organización
Respuesta: [fr][em] exp.all

Hola de nuevo, @Ancer y @Lunos, tras acabar el tutorial y hacerlo todo tal y como dice este TEMA, me pongo a probarlo en mi hack, y para mi sorpresa hay un fallo. A la hora de luchar, cuando mi Pokémon vence a otro, cuando llega el momento de dar la experiencia se congela el juego. Si os ha pasado, ¿sabéis como solucionarlo? Me gustaría dejar un vídeo haciendo el tutorial entero para que me digaís si estoy haciendo algo mal. Es un añadido a los hacks muy bueno y me gustaría añadirlo. Perdonar ser tan pesado jajaja saludos.
PD: No teneis que contestar obligado vosotros, qualquiera que sepa el problema puede colaborar.

video: https://www.youtube.com/watch?v=AIUoWR0vDQs
Revisa este post, quizá el problema descrito ahi es lo que te está pasando a ti.
 

Max_Multi

Scripter Novato
No he entendido nada, no sé si es que soy muy idiota o es que no se explicó bien
Gracias pero que hago con la rutina?
 
Arriba