10725-GBA_|_Scripting_|_Evitando_el_refrescado
#5
JV Works 12391
Iniciado por Sonicarvalho

Es realmente una buena técnica, yo nunca me habría recordado de hacer 'loading' de la RAM.

Solo hay unas pequeñas cosas a apuntar.
Tu dijiste que la WRAM se guardaba con el Sav. Esto no es de todo verdad! Mira:
EWRAM->02000000-02040000 (256Kb)
SRAM(save ram)-> 0E000000-0E010000 (64kb) o en la mayoría de los casos 32Kb.

...Así que no se guarda todo en el SRAM! Tuviste la suerte encontrar un offset que es guardado en el SRAM. Y mas una cosa: el WRAM no guarda los offsets donde los datos estaban en SRAM, el juego es el que decide eso (en el principio, antes de el CopyRight screen, que ya he analizado las rutinas de Loading). Eso significa que estas sobrescribiendo algo que el juego necesita (pero si no hay bugs con ese offset, entonces debes usar ese)

Otra cosa menos importante, solo para que pienses sin errores acerca de esto : Las palletes no van para la VRAM, solo los tiles y tilemaps.
Las palletas tienen una área especifica de la RAM (05000000), 1kb, y en VRAM hay datos que definen cual paleta los tiles van a usar

Mas una cosa: Estar haciendo WTBO's muchas veces es desperdicia mucho espacio en la ROM.
Para te facilitar la tarea, acá esta una rutina que te copiará la palleta desde la ROM al offset en la RAM que quieras (no es para gold road, solo para DevKitArm y Mid2GBA):

[QUOTE]Iniciado por Sonicarvalho
.code 16
push {r0, r1, r2, lr}
ldr r1, .PaletteDestination
ldr r0, .PaletteSource
mov r2, #16
swi 11
pop {r0, r1, r2, pc}
.align 2
.PaletteDestination:
.word 0x0202EF88
.PaletteSource:
.word 0x087FFDC4


Solo tienes que cambiar los offsets de las palletas en la ROM y RAM.
Pienso que para goldroad sería así:

Iniciado por Sonicarvalho

@Define PaletteDestination = 0x0202EF88
@Define PaletteSource = 0x087FFDC4
@Thumb
push {r0, r1, r2, lr}
ldr r1, PaletteDestination
ldr r0, PaletteSource
mov r2, #16
swi 11
pop {r0, r1, r2, pc}

Warning: En las dos rutinas, el 16 y el 11 NO SON HEX. Si quieres hex, sustituis 16 por 0xF y 11 por 0xB.

Bien, esta es mi contribución.
Espero haber ayudado.

Saludos de Sonicarvalho[/quote]

Es buena critica amigo, pero recuerda que el tuto comienza siendo "General", es por eso que me refiero a la VRAM en el, porque la tecnica se puede aplicar a mas cosas.

Y con respecto a lo de la SRam, pues no se como sera, pero el punto es que las variables (Esas que se usan en XSE con setvar) se guardan en la WRAM, y curiosamente se guardan con el sav.

Yo precisamente use la direccion en WRAM de una Var en Xse, y se cual es, asi que, no pasara nada siempre que no la modifique :D

Por ultimo, esa rutina esta muy bien, es aprovechable, solo que yo use el WBTO para referirme mas al publico que no sabe asm, mientras que el que si sabe, puede aprovechar aun mas el potencial de esta tecnica :XD: