Chamber
Puntuación de reacción
1.337

Mensajes de perfil Última actividad Publicaciones Acerca

  • Pues que me ayudes a encontrar como se esctuctura esta rutina
    Pues te pido que examines ese rom porque mateo es un noob en asm, por lo cual solo eso le movio al rom, a diferencia del prism que esta todo movido
    no conozco ningun hack de adv y no he jugado a ningun hack. Simplemente no tengo ningun criterio para votar a uno u a otro...
    Listo ya vote!
    Pd: Perdón si no trabaje en los gráficos que pediste, estuve un poco viciado experimentando con el gba hacking.
    Por cierto, necesito ayuda, mira tengo el xmas hack de mateo, le insertare el worldmap, pero le pedi permiso para sacar la seleccion de genero, pero como el perdio en que offsets quedo, necesito ayyda para ver como dejo estructurada la rutina.

    PD solo YO poseo el rom (aparte de el) asi que No le digas a nadie que tengo el rom
    Creo que se cual es el error
    Al hacer un 3jump todo el script debe de organizarse en el banco donde di el salto, en mi caso en el banco 0x68, por eso falla :p

    El script sera top secret hasta que salga la demo lel c:
    9.3

    @Incremento:
    (...)
    ld a,$00
    ld ($c62d),a ; item actualizado en el combate actual

    ld a,[d109]
    inc a
    ld bc,30
    ld hl,dcb0
    loop:
    add hl,bc
    dec a
    jr nz, loop ; rutina del 2do post. hl ya apunta al objeto a actualizar

    ld a,00
    ld [hl],a ; item actualizado en el equipo

    Nota: () y [] se usan indistintamente para indicar contenido, por ejemplo creo recordar que en bgb se utilizan parentesis
    9.2

    @LevelAttack:
    ld a,[PlayerAtkLevel] ; el contenido, no la direccion!
    cp a,0D
    jr z, @end ; saltar a end si a=0D (nunca puede ser mayor)

    @HalfHP:
    ld a,[c63c] ; a = curhp/256
    and a ; forma mas corta de mirar si a = 00; se hace un and entre a y a
    jr nz, @end
    call GetQuarterMaxHP ; c = maxhp/4
    ld a,[c63d] ; a = curhp
    cp c ; lo mismo que cp a,c, se escribe asi ya que se sobreentiende que el primer parametro es siempre a
    jr nc, @end
    Al igual que ocurria con las instr. de cargar (ld), es imposible hacer cp a,bc por la misma razon: a es un registro=1 byte ; bc son 2 registros=2 bytes

    9.1.

    A cada call le corresponde un ret. Si haces un call @comprobaritem, la rutina comprobaritem debe acabar con un ret, y no con jp ACABAR. Si quieres estructurarlo asi, debes poner jp comprobar item, pero lo que yo te decia era meter todo el tocho entre el push hl y ACABAR, ahorrandote dos saltos. Pero si tu lo ves mejor de la otra manera no importa.

    @miturno debe ser asi:

    ld a,$LiechiBerryID
    cp a,[hl] ; compara a con el contenido de hl, es decir, el contenido de battlemonitem
    jr nz, @end ; una forma de hacer lo mismo empleando un solo salto! (siempre y cuando @LevelAttack venga inmediatamente despues)

    Nota como cp a,hl es una instruccion imposible porque estas comparando un byte (a) con dos bytes (hl=CB0D). Pero al hacer cp a,[hl] estas tomando el contenido de la direccion CB0D, que sera un numero de 1 byte.
    Ya hice mi voto respecto a los item hoy recién los are no he tenido tiempo en la semana ya que estoy trabajando en el turno nocturno y no paro en mi pc , recién hoy es mi descanso así que tratare de avanzar vale :d
    6.
    Antes de nada te dije mal una cosa. No son 0x20 la distancia entre un atributo (p.ej item) del pokemon N y el mismo atributo del pokemon N+1, son 0x30.
    dce0 , dd10 , dd40 , dd70 , dda0 , ddd0 ; (items mons 0-5)

    Usando dir. ram de crystal:

    ld a,[d109] ; cargar posicion del pokemon (0-5) en a
    inc a; a toma ahora valores entre 1 y 6
    ld bc,30 ; cargar distancia entre dos items (30 en hex)
    ld hl,dcb0 ; apuntar a item equivalente del mon -1 en hl
    loop: ; añadir bc un total de a (1-6) veces
    add hl,bc ; hl <- hl+bc
    dec a ; a <- a-1
    jr nz, loop ; ejecutar un total de a veces (hasta que a sea 0)

    ; por ejemplo para [d109]=2 el loop se ejecutara un total de 3 veces de forma que apuntaras a dcb0 + 30*3 = dd40. Si [d109]=0 (primer pokemon) el loop tan solo se ejecutara una vez llevandote a dcb0 + 30*1 = dce0
    4.
    Si [c63c] es mayor que 0, el hp sera al menos 0x100 o 256. Por tanto, es imposible que un hp mayor que 255 sea menor de un cuarto del max hp. Debes cargar el contenido de c63c en el registro a (ld a,[c63c]), y comparalo con 0x00 (cp a,00). Si no se activa la flag z significara que [c63c] sera distinto de 0, por lo que sin hacer mas comprobaciones puedes estar ya seguro que la berry no se tiene que activar.

    En caso de ser 0, tendrias que comprobar si [c63d] es mayor o menor que el valor que getquartermaxhp te devolvio en c (ld a,[c63d] + cp a,c); En caso de ser menor se activara la flag c (carry), el hp del pokemon sera menor de 1/4 de su max hp, por lo que sera en ese caso cuando se activara la berry.

    5.
    Existen funciones especificas para modificar o tomar atributos de un pokemon, pero sabiendo la direccion ram que se va a modificar, es mas sencillo que simplemente escribas 00 en el lugar del item una vez que la berry se ha usado.
    Ey Chamber, no te preocupes que esta tarde (España) hago mi voto. No he podido antes porque no he tenido mi ordenador esta semana, y ahora mismo tengo una conexión bastante regular. Esta tarde recupero el ordenador y ya podré dejar mi coment :)

    Por cierto, tu hack me parece que lo tengo puesto con el tercer voto ;)

    Tengo ya escrito el mensaje, así que cuando pueda usar el ordenador lo envío
    No se porque al hacer 3jump el juego se congela, no lo entiendo
    No lo se, es un script de unas 70 lineas, aunque todos los textos los mande a 1A0000
  • Cargando…
  • Cargando…
  • Cargando…
Arriba