anuncio
 
Calificación:
  • 1 Votos - 5 Media
  • 1
  • 2
  • 3
  • 4
  • 5

Evitando el refrescado

Autor Mensaje
Mariofan Desconectado
Programador de Tools
*

Mensajes: 153
Ingreso: May 2010
Reputación: 18
Agradeció: 81
Le agradecieron 250 veces. en 90 post
Mensaje: #1
Evitando el refrescado
Antes que nada debo aclarar algunas cosas:

-Esto es Universal, osea para cualquier ROM.

-Para entender esto, debes saber por lo menos usar el comando WBTO(Writebytetooffset)

-Debes saber manipular la ram con WBTO (Para este caso se recomienda saber cambiar las paletas)

-Debes saber usar el HxD (Buscar datos, editar, ect)

-Este metodo debe ser usado con precaucion, la RAM es limitada asi que no es bueno abusar de ella con este metodo.

Comenzemos...

Vosotros debereis saber que al utilizar el WBTO, podemos manipular lo que sea que este en la RAM, cualquier cosa. Inclusive, podemos manipular aspectos graficos de pantalla con esto (Entiendase VRAM o Video Ram).

El problema viene cuando queremos por ejemplo, cambiar las paletas o el mini del prota, que al abrir la mochila, o con un warp, o un fadescreen, estos vuelven a ser normales...

Eso se debe al refrescado de pantalla, que no es mas que la accion de resetear toda la VRAM.

En pocas palabras, olvidaos de cambios de paletas o de minis duraderos, porque apenas abris la mochila y ¡puf! se quitan.

Pero aqui traigo un truco para que el cambio dure para siempre...

Al resetear la VRAM, el juego Carga nuevamente todos los graficos y paletas desde la ROM hasta la VRAM. Lo que vamos a hacer aqui es cambiar esto:

Cargar desde Rom hasta VRAM

por esto:

Cargar desde RAM hasta VRAM

¿Que hacemos con eso?, sencillo, hacemos que el juego cargue los graficos y paletas X desde la RAM y no desde la rom.

Para este ejemplo voy a hacer un cambio de paletas permanente

Spoiler
Con esa tecnica, podreis hacer maravillas, como rutas primaverales que de pronto se ponen blancas por la nieve XD

Y si no me equivoco, también podéis aplicarla para otros datos como los minis y esas cosas, pero lamentablemente eso aun no lo termino de investigar xD

[Imagen: sinttulo1rj.png]

Una prueba del potencial que poseemos los positron:

http://www.youtube.com/watch?v=Sron2tvRmJ4

Ya no mas esperas, mi Tool mas importante finalmente a sido liberada:

Positron Worldmap Master Version 1.0

Ah llegado la hora de revolucionar Wah con la investigacion!!

[Imagen: 16gifyc.gif]

Spoiler
19-08-2011 01:47
Buscar Cita
 Dio las gracias: ~Spirit , Kaliser , Javi4315♪ , Sonicarvalho , ~Chevs , -Fabian9819- , Hackun , WesleyFG , Zaux , Jaizu , cosarara97 , alguien
~Javs Ausente
WAH será un lugar mejor :)
*

Mensajes: 272
Ingreso: Apr 2010
Reputación: 51
Agradeció: 89
Le agradecieron 359 veces. en 145 post
Mensaje: #2
RE: Evitando el refrescado
En vista de que nuestros users tienen tanta flojera que se limitan
a poner un +Gracias (lo cual, sí, me desepciona..), yo te comento;

Me gustan muchos tus investigaciones, MarioFan. Sin duda, eres
una persona muy curiosa por naturaleza y tus proyectos siempre
tienen un avance muy grande.

Esperemos que sigas poniendo el RomHacking hispano en alto,
junto con otros users de WAH ^^

Ahora, en lo que decimos del tutorial, puede ser muy útil combinado
con la más grande arma, la imaginación.. Ya cada quién puede
saber cómo hacer algo que talvez siempre ha querrido hacer xD

Y bueno, bien explicado, como siempre, bien estructurado, paso a
paso, etc..

Felicidades. ¡Saludos!
19-08-2011 04:48
Buscar Cita
Hackun Ausente
Doctor HEX
*

Mensajes: 283
Ingreso: Jun 2010
Reputación: 20
Agradeció: 128
Le agradecieron 324 veces. en 136 post
Mensaje: #3
RE: Evitando el refrescado
Muy bien, ya decía yo que este tío andaba en otras andanzas...
Felicidades por esta, por las de antes y por las que vendrán! sigue así!
Saludos.

19-08-2011 08:44
Buscar Cita
Sonicarvalho Ausente
ASM Hacker-Rom Researcher
*

Mensajes: 65
Ingreso: Jun 2011
Reputación: 14
Agradeció: 69
Le agradecieron 217 veces. en 57 post
Mensaje: #4
RE: Evitando el refrescado
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):

Sonicarvalho Escribió:.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í:

Sonicarvalho Escribió:@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

[Imagen: 11336468.png][Imagen: sinttulo1rj.png]


Búsquedas actuales (EMERALD):
Búsquedas actuales (RUBY) UPDATE:
Búsquedas actuales (FIRERED):
(Este mensaje fue modificado por última vez: 19-08-2011 por 13:46 Sonicarvalho.)
19-08-2011 12:47
Web Buscar Cita
 Dio las gracias: Mariofan , Jaizu
~Chevs Desconectado
Wahero 4Ever!
*

Mensajes: 828
Ingreso: Dec 2010
Reputación: 52
Agradeció: 1360
Le agradecieron 763 veces. en 458 post
Mensaje: #5
RE: Evitando el refrescado
¡Vaya!¡Muchas Gracias! Sirve mucho... (Ahora podré cambiar un mapa desde el Rom, usando ésto y setmaptile Awesome )

Muchas Gracias Big Grin

@Javs: Tienes razón, lo siento Shy

19-08-2011 16:08
Web Buscar Cita
 Dio las gracias: Mariofan
Mariofan Desconectado
Programador de Tools
*

Mensajes: 153
Ingreso: May 2010
Reputación: 18
Agradeció: 81
Le agradecieron 250 veces. en 90 post
Mensaje: #6
RE: Evitando el refrescado
(19-08-2011 12:47)Sonicarvalho Escribió:  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):

Sonicarvalho Escribió:.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í:

Sonicarvalho Escribió:@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

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 Big Grin

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

[Imagen: sinttulo1rj.png]

Una prueba del potencial que poseemos los positron:

http://www.youtube.com/watch?v=Sron2tvRmJ4

Ya no mas esperas, mi Tool mas importante finalmente a sido liberada:

Positron Worldmap Master Version 1.0

Ah llegado la hora de revolucionar Wah con la investigacion!!

[Imagen: 16gifyc.gif]

Spoiler
19-08-2011 17:58
Buscar Cita
 Dio las gracias: Sonicarvalho
WesleyFG Desconectado
Conocido
*

Mensajes: 146
Ingreso: May 2010
Reputación: 26
Agradeció: 45
Le agradecieron 221 veces. en 62 post
Mensaje: #7
RE: Evitando el refrescado
Ainda no tenya visto esto, pero gran tuto amigo,
realmyente puede ser utilizado en muchas cosas,
cuando se piensa en algo nuevo para hacer en una hack,
esta todo muy byen explicado, mereces una +Gracias!!
Muy byen!!

[Imagen: fanbarl.png]
FOREVER
[Imagen: krokovineavatar.gif][Imagen: pyropupavatar.gif][Imagen: sharfinavatar.gif]
Krokovine [Grass] - Pyropup [Fire] - Sharfin [Water]
My Devianart: (tiles y otras cosas)
http://wesleyfg.deviantart.com/
My Web Vuelve mejor:
http://wesleyfg.weebly.com/
19-08-2011 18:10
Buscar Cita
Scarex Desconectado
Usuario de oro
*

Mensajes: 800
Ingreso: Apr 2010
Reputación: 75
Agradeció: 249
Le agradecieron 376 veces. en 180 post
Mensaje: #8
RE: Evitando el refrescado
Bueno, ya me comentaste esto hace tiempo, de verdad de lo que se puede hacer con la RAM es increible, y de verdad, es que se me ocurren 100 ideas a partir de esto, una locura.

Espero que sigas aportando cosas tan interesantes como estas, el hacking se tiene que volver una lucha de ideas xD

Salu2!

Click al punto.
19-08-2011 18:58
Buscar Cita


Salto de foro: