Registrarse

[ASM] Chequeando los movimientos mediante un Script

Gold

Porrero a tiempo parcial
Miembro insignia
NOTA: Esta rutina es propiedad de Mateo, ni el ni yo nos responsabilizamos si se jode tu ROM :3

PREFACIO:
========
Muchos aca conocen el comando de XSE que comprueba si x pokemon conoce x movimiento, en GBC esto no era posible, pero gracias a mi sensei MATEO, se ha podido desarrollar una rutina que nos hara esa funcion, usando el special sin usar.

COMO FUNCIONA?
==============
Este script llama una rutina ASM que esta basada en el script de surf, el cual permite mediante un loadvar cargar un movimiento y hacer una comparacion(if true, if false. etc) para hacer X accion que querramos.

APLICANDO LA RUTINA
================
Empezamos repunteando el special sin usar (solo sirve para decir "Now on Debug") a un espacio en blanco, para poder ser insertado, lo mejor es que se ponga en el banco 0x3, ya que ahi se encuentran todos los special. igual, el puntero se ubica en 0xC383 en Pokémon Gold. es un puntero de 3-bytes comun, por lo cual puede estar en donde sea. por ejemplo, yo repuntee el special a 0xFD12. por lo cual escribi 03 12 7D donde esta el puntero y guarde.

Ahora nos vamos a 0xFD12 3 insertamos la rutina nueva:
Código:
FA 73 D1 57 CD 87 47 38 06 3E 01 EA 73 D1 C9 3E 00 EA 73 D1 C9
y guardamos.

Esa es la rutina ya compilada, directo en hex, para no complicarte, pero si te interesa he aqui las insrtucciones ASM
Código:
[FONT=Courier New]ld a,(d173) // Gets the value of the skill from the VAR
ld d,a      // The original routine needs the skill in register D, so we put it there
call 4787   // Calls the existing "Does a Pokemon have this skill?" routine
JR C, $06   // If the Pokémon does not have the skill, the C flag is set, so jump ahead to that case
ld a,01     // Load A with $01, the value for "true"
ld (d173),a // Put this value back in the VAR so we can check it with the "if" commands like normal
ret         // Return to the script, because we are done
ld a,00     // If the Pokémon didn't have the skill, we jump here to load A with "false"
ld (d173),a // Write A to the VAR so we can check it in the script
ret         // Return to the script, because we are done[/FONT]
USANDOLO EN UN SCRIPT
===================

Para que esto funcione en un script debemos de hacer una estructuracion como esta:

Código:
loadvar 0x?? ' Skill number to check for
special 0x6E
Es simple, el codigo lo que hara es chequear un movimiento tecnicamente en el menu pokemon, tu puedes tener solo escrita la rutina ASM y cargar el movimiento deseado y cargarlo eb D, llamado para chequear la rutina, y puede fijarse siempre que quieras antes de regresar al script, y llama la rutina con el codigo para llamar la rutina ASM. pero si planeas poner muchos lugares para chequear muchos movimientos de un Pokémon, twrminaras desperdiciando mucho teniendo todo eso virtualmete identico a cada rutina..

EJEMPLO DE APLICACION
=================
Este es un ejemplo de como debe de usarse el nuevo comando en un script

Código:
#org 0x15CBEE
'-----------------------------------
faceplayer
loadfont
loadvar 0x21
special 0x6E
if true 0x4C29 ' 0x15CC29
2writetext 0x4C7E ' 0x15CC7E
closetext
loadmovesprites
end

#org 0x15CC29
'-----------------------------------
2writetext 0x4E49 ' 0x15CE49
closetext
loadmovesprites
end


#org 0x15CC7E
= BILL: Tu no tienes\nel mov. PLACAJE.\e


#org 0x15CE49
= BILL: PLACAJEAME (?)\e
Este es un sencillo ejemplo de como usarlo. chequea si el jugador tiene o no un pokemon en su equipo que sepa PLACAJE, y Bill nos dira algo diferente si lo tenemos.

Bien, es todo y no hay mucho misterio al respecto, la mejor manera de usarlo seria creando una MO, por ejemplo ahora ocupo la MO06 Treparrocas, quedando mas profesional que crear un item para escalar rocas.

Es Todo, recuerden, si la usan den creditos a mi maestro del GBC hacking Mateo
 

Xuuki

holi
Respuesta: [GBC][ASM] Chequeo de Movimientos Mediante Script

acabo de verla en pho y sabia que no tardarias en traela XD

una gran rutina para hacer scripts mas complejos, aunque lo que me intereso realmente fue lo de los "special", eso me da una idea para aplicar el tutor de movimientos que tanto ansia @Chamber y otras cosas que tengo en mente :demonio:
 

Chamber

Miembro insignia
Miembro insignia
Respuesta: [GBC][ASM] Chequeo de Movimientos Mediante Script

Mateo es todo un capo, pero no seria nada sin Miksy XD

Es un muy buen aporte, en especial para crear las MO. Ahora solo haria falta saber como funcionan las propiedades de los bloques para ahi insertar la rutina sin necesidad de usar un script, aunque esto es vanidad y siempre podremos usar un "letrero".

Felicidades, por fin tendras treparocas :D

Ya suelta la sopa @javcdark y dime que tramas.
 
Arriba