qna_rh
Thread Id: 27978
Thread Name: Writebytetooffset?
#0
Dark Sneasel 28274
Hola :)
Tengo una pregunta de writebytetooffset y como usarlo.
Cuando yo veo scripts con eso, paracen que tienen 0x7letras enmes de 0x6letras. Alguien me puede explicar porque? Writebytetooffset me interesa :)
Gracias.
#1
cosarara97 12296
Writebytetooffset hace lo que dice su nombre, escribe el byte que le das a la dirección que le das. Ves direcciones de 7 dígitos porque hay que especificar de que parte de la memoria son exactamente.
Corrientemente escribimos direcciones del tipo "0x800000", refiriéndonos al byte nº 0x800000 del ROM. Cuando se ejecuta el código, ese 0x800000 deberá ser 0x8800000, ya que el ROM está mapeado a partir de 0x8000000. GBATEK - GBA/NDS Technical Info
La mayoría de herramientas añadirán ese 0x8000000 por ti implícitamente, pero cómo en el wbto podemos escribir fuera del ROM (y tenemos que hacerlo, en el ROM no se puede escribir) tenemos que ser explícitos.

Respecto al uso práctico, en general se usa para escribir a registros y variables del juego, modificando cosas en el aire.
#2
eing 12479
Con writebytetooffset escribes un byte en un offset.
Solo puedes escribir bytes en:
General Internal Memory
02000000-0203FFFF WRAM - On-board Work RAM (256 KBytes) 2 Wait 03000000-03007FFF WRAM - On-chip Work RAM (32 KBytes) 04000000-040003FE I/O Registers Internal Display Memory
05000000-050003FF BG/OBJ Palette RAM (1 Kbyte) 06000000-06017FFF VRAM - Video RAM (96 KBytes) 07000000-070003FF OAM - OBJ Attributes (1 Kbyte)
(Sacado de GBATEK)

Y eso sí, asegurandote de que el dato a modificar se puede alterar.
Es decir, no puedes modificar un dato que está siendo procesado continuamente mediante una rutina de ejecución continua. (Por ejemplo no puedes hacer un wbto a un offset donde haya una animación o un timer, es una tonteria puesto que se procesa cada X tiempo, y lo que tu colocas ahí no va a durar nada).

Como que tampoco puedes editar un byte, en el que va a ser procesado mediante una rutina a las primeras de cambio. Por ejemplo, no puedes modificar el pokémon que te salga en la hierba alta, puesto que este se genera con una rutina. (Ya puedes llenar el pasto de wbto, que no te va a funcionar)

Solo puedes editar aquellos datos ya procesados o que se leen continuamente pero no se modifican.