Fortaleza Reznor
Como crear un Parche [Xkas] FLVP3jF¡Bienvenido a Fortaleza Reznor!
¿Que es Fortaleza Reznor?
Fortaleza Reznor es un foro de SMWH (Super Mario World Hacking) Aquí modificamos (hackeamos) el juego de Mario World a nuestro gusto y enseñamos a otros a saber a manejar el hacking de SMW usando la famosa herramienta "Lunar Magic".

¡Regístrate!
Únete a nuestra comunidad!, te ayudaremos en cada duda que tengas respecto al SMWH. Aparte podrás participar en eventos que hay en el foro y descargar los recursos que crean nuestros usuarios.

¡ANÍMATE! ¡Te divertirás en nuestro foro!

Atte:
La administracion.
Fortaleza Reznor
Como crear un Parche [Xkas] FLVP3jF¡Bienvenido a Fortaleza Reznor!
¿Que es Fortaleza Reznor?
Fortaleza Reznor es un foro de SMWH (Super Mario World Hacking) Aquí modificamos (hackeamos) el juego de Mario World a nuestro gusto y enseñamos a otros a saber a manejar el hacking de SMW usando la famosa herramienta "Lunar Magic".

¡Regístrate!
Únete a nuestra comunidad!, te ayudaremos en cada duda que tengas respecto al SMWH. Aparte podrás participar en eventos que hay en el foro y descargar los recursos que crean nuestros usuarios.

¡ANÍMATE! ¡Te divertirás en nuestro foro!

Atte:
La administracion.
Fortaleza Reznor
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.


¡Super Mario World Hacking en español! ¡Ayuda, tips, diversión y más!
 
ÍndiceMiembrosRegistrarseConectarseBuscar

Comparte
 

 Como crear un Parche [Xkas]

Ver el tema anterior Ver el tema siguiente Ir abajo 
AutorMensaje
New Hacker
Eerie
Eerie
New Hacker

Posts Posts : 397


Como crear un Parche [Xkas] Empty
MensajeTema: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptyDom Mar 27, 2011 12:57 am

Ahora como me aburrí, decidí a enseñarles como crear un Parche básico, solo Hex Edits (lo mismo que haces con Translhextion). Bueno, empecemos!

Hacer un parche es muy facil de hacer, si solo quieres hacer Hex edits. Aqui enseñaré como hacerlo.

Primero, hagan un archivo .ASM y obviamente, abranlo. Si no te has dado cuenta, todos los parches tienen un "HEADER" y un "LOROM" al principio. Explicaré las 2.

HEADER: Esto significa que el ROM tiene un header, esto es necesario.
LOROM: Esto significa que el ROM es en formato LOROM, no, no es ROM.LOROM, también es necesario. Si no pones alguno de estos, no funcionará el parche.

Al empezar a hacer un parche, siempre debes poner eso. Aquí hay un ejemplo:

Spoiler:

¡Siempre ponlo, o no funcionará!. Ahora que eso está listo, es hora de hacer los Hex edits. Ve al ROM Map de SMWCentral ([Tienes que estar registrado y conectado para ver este vínculo]) y busca una dirección cualquiera, como jemplo tomaré esta:

Código:
0241F   $00:A21F   1 byte   ASM   Change from F0 (BEQ) to 80 (BRA) to disable pausing


Si yo usara el Tranlhextion, debería ir a la dirección 0241F y cambiar ese numero por un 80 para desactival el pause. Pero como estamos haciendo un parche, esto se hace de otra forma.

Código:
ORG $XXXXXX

db $YY


Ese "ORG" nos hace ir a la dirección escrita a su derecha, o sea, ir a $XXXXXX.
El "db" nos sirve para cambiar el valor actual, por el que esa escrito a su derecha ($YY). O sea, que si yo quiero desactivar el pause, debería hacer esto:

ORG $00A21F

db $80

Lo que hice fue ir a la dirección ROM $00A21F y caambiar ese valor a $80. Es muy simple.

Cambiando más de un valor:

Continuará...
Volver arriba Ir abajo
https://www.youtube.com/user/Th3Flam3BoY
Michael
Administrador
Administrador
Michael

Posts Posts : 3580


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptyDom Mar 27, 2011 11:08 am

esta facil de hacer y no seria tan complicado, pero claro, si solo son hex edits simples como esas, esperare la segunda parte para aprender a hacer parches asi para los que les da pereza hacer hex edits o no saben como ej yoshi =P gracias por el tuto
Volver arriba Ir abajo
https://www.youtube.com/channel/UCQHCaGfFsJb3g9K3RXhjdbA
New Hacker
Eerie
Eerie
New Hacker

Posts Posts : 397


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptyDom Mar 27, 2011 1:34 pm

Bien, esta es la segunda parte, y gracias!

Cambiando más de un valor:

Bien, como ya sabemos como cambiar un solo valor, es hora de cambiar más de uno. Esto, es casi lo mismo que lo que hicimos anteriormente, solo que se agragan más valores al db. Ahora tomaré otro ejmplo del ROM Map:

Código:
05356   $00:D156   5 bytes   ASM   Change to EE E4 18 EA 64 to turn the Mushroom into a 1up, but it'll still play the animation

Aquí dice que si cambio esa dirección a [EE] [E4] [18] [EA] [64], el Mushroom (hongo rojo) te dará una vida en vez de hacer crecer a Mario. Si usara Translhextion, debería ir a esa dirección y cambiar esos 5 valores a [EE] [E4] [18] [EA] [64].
Para hacer esto en el parche, solo nos vamos a $00D156 (con un ORG) y cambiamos los valores con un "db". O sea, algo como esto:

Código:
ORG $00D156
db $EE,$E4,$18,$EA,$64

¿Notan como funciona? Solo agregué mas valores al db. Aquí otro ejemplo:

Código:
0A1A7   $01:9FA7   5 bytes   ASM   Change to [EA EA EA EA EA] to give the P-Balloon an infinite timer

Si cambio esa dirección a [EA] [EA] [EA] [EA] [EA], el P-Balloon (el globo) será infinito. Si quiero hacer eso en el parche, voy a $019FA7 y cambio los valores actuales por [EA] [EA] [EA] [EA] [EA]. Quedaría algo como esto:

Código:
ORG $019FA7
db $EA,$EA,$EA,$EA,$EA

Así se hacen multiples valores, es muy sencillo.

Haciendo un parche real:

Con "Hacer un parche real", me refiero a que pongas espacio libre, y que pongas nuevas cosas como walljumps, powerups, etc.. La verdad, para esto nesecitas saber más ASM. Como es más dificil hacerlo, solo explicaré como poner el Freespace y como agregar nuevas cosas.
Si descargas un parche de SMWCentral, te darás cuenta que casi siempre al principio dice !FreeSpace = $XXXXXX. Pero, ¿porqué hay que poner espacio libre?. Porque al crear nuevas rutinas o cosas nuevas, necesitas crearlo tu mismo en una parte del ROM en donde no haya nada, o sea, que esté vacío. No puedes reemplazar una rutina existente con una nueva, sólo puedes editarla, o agregarle cosas, es por eso que si no pones espacio libre el juego muere. Bueno, ahora pondremos el espacio libre.

Código:
!FreeSpace = $218000      ; <-- PON ESPACIO LIBRE AHÍ!!!

Esto se hace para que sea más fácil encontrar en donde poner el espacio libre. Al poner el espacio libre, luego debemos ir a esa dirección y agregar las rutinas, etc. con un ORG.

Código:
!FreeSpace = $218000      ; <-- PON ESPACIO LIBRE AHÍ!!!

ORG !FreeSpace

db "STAR"                        ;\
dw MainEnd-MainStart-$01         ; | Esto es el famoso "Tag RATS", que sirve para proteger el código
dw MainEnd-MainStart-$01^$FFFF   ;/

MainStart:

En "MainStart" empezamos a hacer el código. y en "MainEnd" no ponemos nada, porque ahí se termina el código.

Eso es lo básico de un parche, ahi creamos nuestro código como queramos, y al parchearlo al ROM, este funcionará.
Para poner un ejemplo, hice un parche simple que pone la pantalla un poco mas oscura al pausar el juego, si, ya se que existe uno, pero creí que era fácil de hacer, así que lo elegí.

Código:
!FreeSpace = $1FB000      ; <-- PON ESPACIO LIBRE!!!

HEADER
LOROM

ORG $00A233         ; Si el juego está pausado
JSL Pausado         ; Saltamos a Pausado
NOP #11            ; 11 veces NOP (No Operation) En realidad no se para que sirve el NOP...

ORG !FreeSpace         ; Nos vamos al espacio libre

db "STAR"                        ;\
dw MainEnd-MainStart-$01         ; | Y hacemos el Tag RATS
dw MainEnd-MainStart-$01^$FFFF   ;/

MainStart:
Pausado:
LDA $13D4         ; Ver si el juego está pausado
BNE NotPaused         ; Si no, ir a NotPaused
BEQ Paused         ; Y si lo está, ir a Paused

NotPaused:
STZ $13D4         ; No pausar el juego
LDA #$0F         ;\ Brillo de
STA $0DAE         ;/ la pantalla
LDA #$12         ;\ Hacer un
STA $1DF9         ;/ sonido
RTL               ; Y retorna

Paused:
LDA #$01            ;\ Pausar el
STA $13D4         ;/ juego
LDA #$05            ;\ Brillo de la pantalla
STA $0DAE         ;/ cuando está pausado
LDA #$11            ;\ Otro
STA $1DF9            ;/ sonido
RTL               ; Retorna

MainEnd:               ; Fin del código

Y así se hace un parche, hay unos muy complicados de entender, como el Levelasm, el ExGFXRevolution, etc.. Este es solo uno muy simple, si lo pruebas, puede que funcione, yo no lo probé, pero es casi el mismo que el original, así que debería... Bueno, si tienen preguntas, o me equivoqué en algo, solo postéen!

Una cosa para NoX (que he escuchado que el hace parches): Si crees que es muy poco entendible, editalo, ya que no se si lo entiendan... Gracias por leer el tuto!
Volver arriba Ir abajo
https://www.youtube.com/user/Th3Flam3BoY
Michael
Administrador
Administrador
Michael

Posts Posts : 3580


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptyDom Mar 27, 2011 1:45 pm

tengo una duda, de donde se sacan esos LDA, STA y STZ? de donde sacas esos valores?
Volver arriba Ir abajo
https://www.youtube.com/channel/UCQHCaGfFsJb3g9K3RXhjdbA
Metalstriker
Blue Para-Troopa
Blue Para-Troopa
Metalstriker

Posts Posts : 261


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptyDom Mar 27, 2011 1:57 pm

mmm grax por traducir el tuto :D , voy a darle OOOOTRA oportunidad a la creacion de parches Happy
Volver arriba Ir abajo
New Hacker
Eerie
Eerie
New Hacker

Posts Posts : 397


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptyDom Mar 27, 2011 3:10 pm

Traducción? Ah, bueno, lo leí hace mucho y solo expliqué lo que me quedó claro. Además no me gusta traducirlos =P.

Y Michael, puedes usar todos los comandos que quieras, siempre y cuando tengan sentido. Puedes cargar (LDA) cualquier valor desde #$00 hasta #$FF y guardar ese valor (STA) en una dirección RAM ($XXXXXX, $XXXX o $XX). La dirección tiene valores que se pueden usar solo es esa dirección, como la Dirección RAM de los Powerups de Mario (7E0019), solo sirven 4 valores (#$00, #$01, #$02, #$03), y si por ejemplo, guardas un #$05 ahí, no pasará nada, solo ocurrirán errores dependiendo de la dirección en que guardes el valor. Es por eso que en el RAM Map ponen los valores validos para cada dirección.

En un parche de Hex edits no necesitas otros comandos mas que ORG y una tabla de valores (db). Pero en un parche real, puedes usarlos todos.

Un parche real es donde editas una dirección, o creas una rutina nueva en espacio libre. Y si editas una, igual debes poner espacio libre.
Volver arriba Ir abajo
https://www.youtube.com/user/Th3Flam3BoY
Michael
Administrador
Administrador
Michael

Posts Posts : 3580


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptyVie Abr 15, 2011 2:07 pm

emm tengo otra duda... para crear parches "reales" que se usa? ROM Map o RAM Map? o los 2?
Volver arriba Ir abajo
https://www.youtube.com/channel/UCQHCaGfFsJb3g9K3RXhjdbA
New Hacker
Eerie
Eerie
New Hacker

Posts Posts : 397


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptySáb Abr 16, 2011 4:35 pm

Se usan los dos, pero el más importante es el ROM, porque ahí es donde vas a escribir el código. En el caso de un parche de Hex Edits, no necesitas RAM Libre. La RAM no es tan necesaria al hacer un parche, pero en algunos casos usas una RAM libre cuando no te sirve ninguna de las que ya hay, o mejor dicho, personalizas una haciendole lo que quieras, como por ejemplo incrementar una RAM libre en 1 cada frame:

Código:
INC !FreeRAM

O que mediante un bloque la incrementes en 1

Código:
JMP MarioBelow [...] JMP MarioFireball

MarioBelow:

INC !RAM
RTL

Puede que la última no te haya quedado claro, pero no con tal de que la primera la hayas entendido, está bien.
Volver arriba Ir abajo
https://www.youtube.com/user/Th3Flam3BoY
Michael
Administrador
Administrador
Michael

Posts Posts : 3580


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptySáb Oct 22, 2011 12:14 pm

mmm no se si estoy en lo correcto pero creo que el NOP es como poner EA, osea que si necesitas poner EA EA EA EA pones NOP #4, o estoy equivocado?
Volver arriba Ir abajo
https://www.youtube.com/channel/UCQHCaGfFsJb3g9K3RXhjdbA
New Hacker
Eerie
Eerie
New Hacker

Posts Posts : 397


Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] EmptySáb Oct 22, 2011 2:09 pm

Por lo que vi en un tutorial, NOP no hace absolutamente nada:

Ersanio's ASM Tutorial escribió:
This opcode will do absolutely NOTHING. It is often used to disable existing opcodes in a ROM, or used to give time for the math hardware registers to do their work.

O sea, que no hará nada, es a veces usado para desactivar comandos existentes en el ROM, o también para darle tiempo a los "math hardware registers" (no sabría como traducir eso) para hacer su trabajo.
Volver arriba Ir abajo
https://www.youtube.com/user/Th3Flam3BoY
Contenido patrocinado




Como crear un Parche [Xkas] Empty
MensajeTema: Re: Como crear un Parche [Xkas]   Como crear un Parche [Xkas] Empty

Volver arriba Ir abajo
 

Como crear un Parche [Xkas]

Ver el tema anterior Ver el tema siguiente Volver arriba 
Página 1 de 1.

 Temas similares

-
» [xkas] Parche de colision flexible de cualquier tamaño
» [xkas] Dynamic Z
» [xkas] JSL.asm (biblioteca de subrutinas)
» [Xkas/Asar] Reasignacion de la OAM 200
» Xkas Anti ¿Como se utiliza?

Permisos de este foro:No puedes responder a temas en este foro.
Fortaleza Reznor ::  Ayuda y Recursos de SMW Hacking :: Tutoriales y consejos-