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):
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