¡Comienzan las votaciones del MPC o Mejor Proyecto Cuatrimestral de enero a abril de 2026!
¡Vota por tu proyecto favorito y recompensa el trabajo duro de los participantes!
Vas bien por ahora. Ahí debes escribir call 7E9B (para escribir, simplemente pulsa una letra y se te abrira una ventanita en la que puedes escribir eso, despues dale a OK, o con el boton Enter del teclado)
Despues desplazate hasta la línea que empieza por ROMF:7E9B. Si no me equivoco ahí empieza...
lo primero de todo abre to rom con bgb y haz click con el boton derecho en la pantalla: other -> debugger.
Se te abrira el debugger de bgb. Haz click en Debug -> Breakpoints. Se te abrira otra ventana. Donde pone "PC=" escribe 0f:7479 y dale al boton "Add".
Haz click con el izquierdo en la...
Tienes el link en la primera linea de mi ultimo mensaje!
Para implementarlo en tu hack, vete pensando en descargar bgb: BGB GameBoy Emulator (current version: BGB 1.5)
[Z80 Assembler] 7479: ; 3f479 call 7E9B 7E9B: ; 3fe9b ld hl, DA2A ld bc, 002F ld d, 6 - Pastebin.com
Un par de cosas. Esta rutina será llamada en el momento en que acabe un combate, como ocurre en las nuevas generaciones. De esta forma, el item se recogera justo tras acabar un combate (justo...
casi casi... es al reves!
Lo que hace es cargar el contendio de la direccion de memoria apuntada por hl, en el registro a. En este caso, como hl apunta a la direccion del pokemon, podemos cargar el numero del pokemon en a, y despues hacer la famosa comparacion mediante el cp que ya utilizamos...
bien, de todas formas siguen siendo mas o menos pocos, es mas sencillo y hasta requiere menos codigo hacerlo sin tabla.
De todas formas, aunque cambie la rutina, seguimos un poco con lo de antes:
Serias capaz de explicar que occure aqui sabiendo que DA2A es la direccion de memoria del numero...
Pues bien ya sabemos mas o menos como va la cosa, ahora tenemos que organizarlo en una rutina que funcione:
ld hl, DA2A ; hl = DA2A
ld bc, 002F
ld d, 6
.siguientePokemon
; comprobar si es Zigzagoon
ldi a, (hl) ; incrementar y cargar en a: hl = DA2B, a = (DA2B)
cp 13
push hl
call z, Pickup
pop...
Correcto (mas o menos). La instruccion cp nos permite comparar dos registros o un registro con un numero que nosotros queramos. Como ya conocemos el numero que queremos comparar (13 para zigzagoon, 14 para linoone), podemos emplear las instrucciones cp a, 13 y cp a, 14.
Estas instrucciones...
Bueno vamos a avanzar un poquito mas. Como me has dicho que solo quieres pickup con zigzagoon y linoone tendremos que hacer algo para que la habilidad no se active con ningun otro pokemon!
Esto significa que debemos de comprobar si el numero del pokemon coincide con el de zigzagoon (13 hex) o...
bien, descubriste lo que hace jr nz, pero te falto interpretar cual es la funcion que desempeña en nuestro caso :P
En nuestro caso, jr nz va a comprobar si el registro c llegó a 0. Como inicialmente tenía el valor 6 y lo decrementamos de 1 en 1 con dec c, conseguimos que nuestra rutina en forma...
por cierto algo que todavia no te he llegado a preguntar... a que pokemon(s) quieres darle la habilidad pickup? (ya que supongo que no se la daras a todos los 251 pokemon!)
no, estamos hablando de cosas aparte.
Lo primero que hicimos fue crear esa tabla con los items. Mas adelante la utilizaremos.
Ahora lo que estamos haciendo es empezar con el codigo asm propiamente dicho; lo primero de todo es hacer una rutina que sea capaz de apuntar a las direcciones ram de...
0x30 es la distancia entre la direccion de memoria del item del pokemon n y la direccion de memoria del item del pokemon n+1. Por ejemplo, el item del pokemon en la position 1 del equipo se encuentra en la direccion DA2B, mientras que el item del pokemon en la posicion 2 del equipo se encuentra...
Ya hablaremos de herramientas mas tarde, lo ultimo de todo, cuando ya tengamos nuestro codigo finalizado y listo para escribirlo en la rom.
Intenta averiguar de donde sale n * 0x30 tu solo, dale un par de vueltas (mira los seis numeros justo arriba de esa linea)...