Registrarse

vars, wram y asm en ruby

Estado
Cerrado para nuevas respuestas.

Xuuki

holi
mi principal duda es saber si existe algun metodo "facil" de leer una variable en ruby (en rutina asm), tengo entendido que se usa algo similar a esto

Código:
...codigo

ldr r0, var

...mas codigo

var:
.word 0x2(offset) @segun yo esta es la wram de la variable... creo XD
si no existe entonces mi duda seria, como saber que valor le corresponde a cada variable en la wram, por ejemplo a la 0x4021 o a cualquier otra variable "libre"

espero y alguien se apiade de mi y conteste mi pregunta ;)
saludos
 

eing

Miembro de honor
Miembro de honor
mi principal duda es saber si existe algun metodo "facil" de leer una variable en ruby (en rutina asm), tengo entendido que se usa algo similar a esto

Código:
...codigo

ldr r0, var

...mas codigo

var:
.word 0x2(offset) @segun yo esta es la wram de la variable... creo XD
si no existe entonces mi duda seria, como saber que valor le corresponde a cada variable en la wram, por ejemplo a la 0x4021 o a cualquier otra variable "libre"

espero y alguien se apiade de mi y conteste mi pregunta ;)
saludos
Todo lo que quieras encontrar en la ram, y sea un dato "palpable" usa el search for cheats que viene por defecto en el emulador VBA.
Para encontrar ese dato primero pon setvar 0xvar 0x1234 y de ahí una vez tenga ese valor, busca 1234 en el search for cheats en modo 16 bits y ya esta!
 

Fran Agustín

Si el sol besa tus ojos, ni cuenta te das.
Miembro insignia
Mira, me parece que @eing te malinterpretó y te dijo cómo hallar la dirección (offset) de la variable, no cómo "leer" su valor.
Lo que yo hago es esto:

Código:
[PLAIN]
...codigo
ldr rx, var
ldr rx, [rx]
...resto

var:
.word 0x"offset-variable"
[/PLAIN]
Ahora vamos a explicar ese pedazo de código:

Con "rx" me refiero al registro (en tu ejemplo usaste r0, pero podría ser otro). Este paso carga el offset de la variable.

Ahora cargamos en el registro x el valor que haya en el offset que contenga. Es decir, si rx = 02304050; esta instrucción cargará en rx los 16 primeros bits (2 cifras hexadecimales) que se encuentren en la posición 0x02304050.
¿Por qué ldrh (o sea, 16 bits)? Simple, las variables pueden almacenar hasta 16 bits, es decir valores numéricos desde 0x0 hasta 0xFFFF.

var:
.word 0x"offset-variable"
Aquí debes reemplazar "offset-variable" precisamente por el offset de la variable cuyo valor quieras conocer.

Espero haber ayudado de algo. Si no he sido lo suficientemente claro, me avisas o me preguntas puntualmente y trato de expresarme mejor ;)

Edit: @javcdark Lo lamento, recién veo tu mensaje xD

Edit2: Con que eing te dijo cómo encontrar la dirección me refería a que no te dijo cómo leerla desde el in-game, claro que si quieres verla tú puedes hacerlo como te dijo, pero no sirve si lo que quieres es programar una rutina que lea la variable para usarla en un script xD
 
Última edición:

Xuuki

holi
@expresidente-pinedo supongo que @eing supuso que ya sabia como leer la variable y solamente buscaba una forma mas facil de como leerla

de todas maneras ambas respuestas me fueron de muuuucha ayuda

ahora si cierren esto
 
Estado
Cerrado para nuevas respuestas.
Arriba