eing
Puntuación de reacción
1.504

Mensajes de perfil Última actividad Publicaciones Acerca

  • Acabo de probarlo y crashea, ahora lo miraré con el debugger, pero tiene toda la pinta de que falla por lo de hacerlo como s fuera la tabla de punteros.
    Vale, vale, ahora si tengo todo claro. Entonces, por eso me falla ahora tu versión jajaja, porque FBI da la tabla de nombres, ok.
    Ahora la cosa sería buscar la tabla de punteros entonces.

    Acabo de hacer la versión para el nombre del último trainer al que te has enfrentado, partiendo de estos datos que da FBI:
    "1) Trainer's name is located at: 0x823EACC + ( 0x28 * Flag ID)
    2) Last battled trainer's ID is located at: 0x20386AE"

    La rutina me ha quedado así:
    .text
    .align 2
    .thumb
    .thumb_func

    main:
    push {r0-r3,lr}
    ldr r0, .Tabla
    ldr r1, .LastID
    ldr r1, [r1]
    mov r2, #0x28
    mul r1, r1, r2
    add r0, r0, r1
    ldr r0, [r0]
    mov r1, #0x0
    ldr r3, .Guardar
    b bucle

    bucle:
    ldrb r2,[r0,r1]
    cmp r2,#0xFF
    bne copy
    strb r2,[r3,r1]
    pop {r0-r3,pc}

    copy:
    strb r2, [r3,r1]
    add r1, r1, #0x1
    b bucle

    .align 2
    .Guardar:
    .word 0x2021D18
    .Tabla:
    .word 0x823EACC
    .LastID:
    .word 0x20386AE

    Voy a probarla a ver que tal va.
    Jajaja quizá sí, pero xiros y eing ya quedaron para la historia! (Me siento un niño de nuevo, quiero Hasta volver a ganar un mhm jaja)
    De mientras yo seguiré tratando de ponerme al día, aun me falta mucho!
    Veamos, tengo un par de dudas (el resto creo que lo entiendo).

    1º- Entonces, ¿la tabla es de punteros a los nombres o de los nombres en sí? Que me había parecido interpretar que la tabla era de los nombres.

    2º- ¿Por qué usas ldr r0,[r0,#0x0]? ¿No sería igual ldr r0,[r0]?

    Ya en principio eso es todo, realmente me da igual el ejercicio en sí, me interesa entender esto bien mas que nada para otras cosas, como por ejemplo tener el nombre del último trainer al que te enfrentas.
    Esto lo comenta en el 4º tutorial, aunque en la 1º parte no explica como hacer la rutina, si deja la idea y las direcciones. Voy a intentar hacerlo yo solo, aunque acabo de darme cuenta de que al final del post si deja la rutina (explicada y todo).
    Bueno, entiendo la teoría, pero no sé ver qué tabla es de qué, por ejemplo la tabla de datos de los minis, no las podría diferenciar xDDD.
    SI, lo quw hice fue comparar los cambios en la ram de la info del equipo pokemon antes y después de usar protein (extrai esa info del memory viewer y la compare con el hxd, así fue más fácil identificar diferencias. Y conseguí la rutina que llama justo antes de subirle los ev creo, pero el tema es quw a esa rutina la llama en millones de momentos entonces no se si sea esa o todo lo quw tenga quw ver fon los pokemon del equipo pasa por ahí o que..

    Igual aprendí bastante más, así que aunque aún no me haya salido nada de eso aún así fue una victoria jaja
    Acabo de hacer la rutina con lo que me has dicho,

    .text
    .align 2
    .thumb
    .thumb_func

    main:
    push {r0-r3,lr}
    ldr r0, .Tabla
    ldr r0, [r0]
    ldr r1, .Var
    ldr r1, [r1]
    mov r2, #0xE
    mul r1, r1, r2
    add r0, r0, r1
    mov r1, #0x0
    ldr r3, .Guardar
    b bucle

    bucle:
    ldrb r2,[r0,r1]
    cmp r2,#0xFF
    bne copy
    strb r2,[r3,r1]
    pop {r0-r3,pc}

    copy:
    strb r2, [r3,r1]
    add r1, r1, #0x1
    b bucle

    .align 2
    .Guardar:
    .word 0x2021D18
    .Tabla:
    .word 0x8247094
    .Var:
    .word 0x020270B6 + (0x800D * 2)

    Te mando un privado con mis anotaciones de la rutina, en plan, de lo que entiendo que es cada cosa y tal, junto con un par de dudas.
    Y ya me dices lo que sea.
    Vale, ahora veo el como funciona, para llamarlo por ejemplo lo escribo así:
    Hint 0x2021D18

    Mi mente matemática entra en conflicto con esa cosas que no están del todo claritas....
    He mirado en el post de FBI, y veo esto, yo he probado a poner esto:
    .text
    .align 2
    .thumb
    .thumb_func

    main:
    push {r0-r2,lr}
    mov r0, #0xE
    ldr r1, .Var
    ldr r1, [r1]
    mul r0, r0, r1
    ldr r1, .Tabla
    add r1, r0, r1
    ldr r0, .Guardar
    ldr r2, =(0x08008D84 +1)
    bl linker
    pop {r0-r2,pc}

    linker:
    bx r2

    .align 2
    .Guardar:
    .word 0x2021D18
    .Tabla:
    .word 0x8247094
    .Var:
    .word 0x020270B6 + (0x800D * 2)
    Que más o menos es lo que tenía de antes, pero no me rula.
    Lo del hint no termina de quedarme claro, a ver te pongo un par de ejemplos y me dices.

    Si por ejemplo en 0x8800000 tengo 00 A1 1F 34 DF FF AD DB FF
    ¿Que haría exactamente la función? Guardaría "00 A1 1F 34 DF" ó "AD DB", además, no termino de pillar lo de como llamar a la función ni como funcionaría exactamente la verdad.
    Luego me pondré a revisarlo y a ver si lo saco.
    A ver si me miro el tutorial 4, que ya parece que empieza a explicar como encontrar direcciones, porque es mi gran incógnita, como cojones encuentro la rutina de los salvajes para el ratio jajaja.
    Ya empecé ayer por ahí. Pero la rutina solo la logro debuggear hasta antes de que elijas el pokemon al cual incrementarle, y creo quw es bastante larga la parte esa jaja
  • Cargando…
  • Cargando…
  • Cargando…
Arriba