|
#1
|
|||
|
|||
|
TUTORIAL DE MODIFICACION DEL ROM DE SUPER MARIO 64 HACIENDO UN ROM HACK
Guia básica para principiantes Mejorada Ahora con Capturas!!! Añadido cambio de condiciones climáticas en Escenarios ![]() Primero que nada debemos familiarizarnos con algunos Términos Decimal: Sistema de numeración de base 10, es decir que consta de 10 números básicos, (nuestros números convencionales) por ejemplo: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 luego estos números simplemente se repiten en un orden para formar cifras mayores como 11, 12, 13, 14 ... etc.. Hexadecimal: Sistema de numeración de base 16, es decir que consta de 16 caracteres alfanuméricos básicos (letras y números) por ejemplo: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F luego estos caracteres se repiten en un orden para formar cifras mayores como 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 1A, 1B, 1C, 1D, 1E, 1F, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 2A, 2B, 2C, 2E, 2F...etc etc... Equivalencias entre decimal y hexadecimal DEC ---------- HEX Decimal - Hexadecimal 0 ----------------- 0 1 ----------------- 1 2 ----------------- 2 3 ----------------- 3 4 ----------------- 4 5 ----------------- 5 6 ----------------- 6 7 ----------------- 7 8 ----------------- 8 9 ----------------- 9 10 ---------------- A 11 ---------------- B 12 ---------------- C 13 ---------------- D 14 ---------------- E 15 ---------------- F 16 ---------------- 10 17 ---------------- 11 18 ---------------- 12 19 ---------------- 13 20 ---------------- 14 30 ---------------- 1E 40 ---------------- 28 50 ---------------- 32 60 ---------------- 3C 70 ---------------- 46 80 ---------------- 50 90 ---------------- 5A 100 --------------- 64 ETC... ------------ ETC... Ya familiarizados con los términos, usaremos para mas comodidad un Convertidor de Hexadecimal/Decimal y de Decimal/Hexadecimal[/url] (si descargan el editor hexadecimal que les coloco mas adelante, incluye un Convertidor) Editando el Rom Para editar el Rom de Super Mario 64 necesitamos un Programa que nos convierta todo el código compilado del ROM en código hexadecimal, esto se hace con un Editor Hexadecimal Aqui tienen uno:
Spoiler
El editor trae también una Utilidad llamada Base Converter que permite cambiar de Decimal a Hexadecimal y viceversa Si queremos Hacer la conversión con esta utilidad, En Windows una vez instalado el Editor, nos vamos a Menú, y en Todos los Programas elegimos --> Hex Workshop 4.2 --> Base Converter, vemos que en Byte Order diga "Raw Hex", en Data Type colocamos "Unsigned Byte" y escribimos el valor que vallamos a convertir sea de hexadecimal a decimal o de decimal a hexadecimal. ![]() Entrando ahora en Materia, vamos a hacer nuestras modificaciones: Abrimos el Rom de Mario con el Editor Hexadecimal, simplemente buscamos donde tenemos el ROM de Super Mario 64 (U) (el ROM no debe estar en ningun .zip, solo el ROM) le damos click con el botón derecho del mouse y si tenemos instalado el Editor Hexadecimal, nos saldrá una nueva opción que dirá "Hex edit with Hex Workshop" (Nota: lo del menú es en el Windows no se vayan a volver locos buscando ese menú en el emulador) esto abrirá el editor con el código hexadecimal del ROM Modificando Objetos según el Nivel donde se encuentran: Veamos en la LISTA DE OFFSET DE INICIO Y FIN DE CADA AREA que está mas abajo, lo que dice inicio es la ruta del offset (Un Offset indica la ruta interna donde se encuentra algo dentro del archivo) desde donde comienza los datos del Area y donde dice Fin es la posición hasta donde llegan los datos para esa Area. Entonces vamos a hacer lo siguiente: Necesitamos saber el fin del Offset del Area que vamos a modificar por ejemplo el de Castle Grounds (que son las afueras del Castillo donde se comienza en el juego) el offset de inicio para Castle Ground es: 004545E0 y el offset final es 00454E00 (eso indica que los datos del Area están entre esos dos puntos) necesitamos saber el fin para marcarlo y no pasarnos de alli, ok, para marcar el fin haremos lo siguiente: una vez abierto el editor hexadecimal con el ROM, iremos al menu Options del editor hexadecimal --->File offset --> y elegimos Hexadecimal (esto hara que la ruta se muestre en numeración hexadecimal) ![]() Ahora presionamos "Ctrl + G" ó vamos al menu Edit ---> Goto , esto abrira una ventana donde vamos a colocar: Marcamos la opcion Hex (OJO vean que no esten escribiendo con la opcion Dec) ![]() Escribimos el Offset final, en este caso el 00454E00 y le damos en el boton Go --> ahora exactamente donde se detenga el cursor, seleccionamos esa linea del codigo y procedemos a marcarla asi presionamos Ctrl + M ó nos vamos al Menu Tools --> Color Mapping --> Add Mapping, esto nos abrera una ventana, en esa ventana desmarcamos, la casilla "Use default background color" y se va a habilitar la opcion de Background Color, ahora hacemos click sobre la opcion y elejimos un color que resalte pordria ser amarillo , verde ó rojo (esto marcara el fondo del codigo de ese color). ok ahora que tenemos marcado el final sabemos que no podemos pasarnos de ahi para modificar ![]() Ahora vamos al inicio del offset del Area que vamos a modificar (ojo cada Area tiene un inicio y un fin distinto, más abajo hay una lista donde estan los valores) en este caso 004545E0 ya sabemos, como ir a ese offset de inicio ("Ctrl + G" ó vamos al menú Edit ---> Goto, marcamos la casilla Hex) ya que estamos ubicados en el offset de inicio haremos lo siguiente para marcar los objetos de esa Area Presionamos "Ctrl + F" ó nos vamos al Menú Edit --> Find, luego alli en Type seleccionamos "Hex Values" y marcamos la casilla "Find All instances", en "Value" escribiremos 24181F y le damos Aceptar, esperamos un tiempito se marcaran de color Amarillo todas la entradas que comiencen con 24181F dentro del código, todas estas marcas amarillas son los objetos del Area, recordando no pasarnos de la marca del final que hicimos anteriormente. ![]() Ahora hay que identificar cual objeto es cual, para eso haremos lo siguiente: Después de cada selección amarilla que tiene 24181F en el editor veremos otros números que le siguen: algo como así: [ 2418 1F ] 66 000B 0323 F439 0000 0000 0000 0001 0000 1300 4954 ![]() los primeros dos dígitos después de [ 24181F ] indican el Numero de Objeto en Hexadecimal, en este caso [ 66 ] es el objeto (Nota: no modifiquemos cuando el numero que le siga sea 00) el 66 está en hexadecimal, entonces para saber que objeto es --> nos vamos a nuestro Base Converter y escribimos 66 en hexadecimal y en decimal aparecerá el valor equivalente ![]() En este caso el equivalente decimal de 66 en hexadecimal es 102, entonces buscamos en la lista de objetos de Cada Area (que pongo mas abajo) a quien corresponde el valor 102 para el Area que estamos editando (cada objeto en cada Area tiene Valores diferentes), en este caso el objeto 102 del Area Castle Ground (que estamos editando) corresponde a Lakitu (el personaje que tiene una cámara y sale volando en una nube, apenas uno entra al castillo por primera vez) , ahora bien lo que haremos sera cambiar el valor 102 de Lakitu por otro objeto que queramos reemplazar, en mi ejemplo usare un Goomba cuyo valor es 192 en decimal y que tendremos que pasar a hexadecimal para colocarlo en el Rom. Luego nuevamente vamos a nuestro Base Converter y escribimos 192 en Decimal y en Hexadecimal nos dará el valor C0 al que le corresponde en este caso, entonces una vez que sabemos que C0 es el valor hexadecimal de 192 en decimal, reemplazamos con el editor hexadecimal el anterior 66 de lakitu por C0 del goomba que vamos a intercambiar, ahora: si vemos los valores nuevamente debería quedar así: [ 2418 1F ] [ C0 ] 000B 0323 F439 0000 0000 0000 0001 0000 1300 4954 Ahora que ya sabemos que los dos dígitos que le siguen al [ 2418 1F] corresponden al objeto, Veremos ahora las coordenadas de ubicación: las coordenadas simplemente ubican en un punto especifico al objeto, (ademas se puede agrandar o reducir el objeto) se utilizan el sistema de coordenadas X, Y, Z y los valores están ubicados después del valor del objeto [ 2418 1F ] [ C0 ] [ 000B 0323 F439 ] 0000 0000 0000 0001 0000 1300 4954 (este es el valor que se modifica) [ 2418 1F ] [ C0 ] [ -X+X -Z+Z -Y+Y ] 0000 0000 0000 0001 0000 1300 4954 -X son dos dígitos ?? en hexadecimal que indican los valores negativos del eje de coordenadas, que haría que el objeto rotara hacia la izquierda +X son dos dígitos ?? en hexadecimal que indican los valores positivos del eje de coordenadas, que haría que el objeto rotara hacia la derecha -Z son dos dígitos ?? en hexadecimal que indican los valores negativos del eje de coordenadas, que haría que el objeto bajara +Z son dos dígitos ?? en hexadecimal que indican los valores positivos del eje de coordenadas, que haría que el objeto subiera -Y son dos dígitos ?? en hexadecimal que indican los valores negativos del eje de coordenadas, que haría que el objeto rotara hacia abajo +Y son dos dígitos ?? en hexadecimal que indican los valores positivos del eje de coordenadas, que haría que el objeto rotara hacia arriba en otras palabras: las coordenadas X mueven el objeto hacia la izquierda y derecha, según sean negativas o positivas (movimiento horizontal) las coordenadas Z mueven el objeto hacia la izquierda y derecha, según sean negativas o positivas (baja o sube el objeto con respecto al nivel del suelo) las coordenadas Y mueven el objeto hacia la abajo o arriba, segun sean negativas o positivas (movimiento vertical) Por ejemplo en este Caso [ 000B 0323 F439 ] 00 corresponde al valor -X 0B corresponde al valor +X 03 corresponde al valor -Z 23 corresponde al valor +Z F4 corresponde al valor -Y 39 corresponde al valor +Y No necesitan cambiar los valores X Y Z si van a dejar el objeto en la misma posición Ahora bien, ya que sabemos como mover los objetos de posición vamos a ver los comportamientos de cada objeto, los objetos tiene ciertos comandos que hacen que se comporten de una forma u otra según el objeto que sean, pero podemos cambiar el comportamiento de un objeto para que se comporte como otro: El comportamiento de un objeto se sitúa justo después de los valores de las coordenadas, abarcando entre parámetros y reglas todo lo restante del código [ 2418 1F ] [ C0 ] [ 000B 0323 F439 ] [ 0000 0000 0000 0001 0000 1300 4954 ] los primeros [ 0000 0000 0000 0001 0000 ] corresponden a los parámetros iniciales que tendrá el comportamiento (cada parametro en cada objeto es diferente, no he hecho una lista con todos los parámetros aún), en este caso son los valores por defecto, dejemos eso así, y los últimos valores [ 1300 4954 ] corresponden al numero del comportamiento del objeto (abajo también hay una lista de comportamientos, con sus números) Algunos comportamientos modifican por completo el objeto dándole la forma al objeto de quien pertenece el comportamiento y no del objeto que colocamos antes, como por ejemplo el comportamiento de un Opened cannon - Cañón abierto 1300 04A8 si se le coloca al Goomba de este ejemplo, no aparecerá el Goomba sino el Cañón como tal (algunos cambios hacen que se cuelge el juego) Si queremos cambiar el comportamiento del objeto simplemente reemplazamos el numero del comportamiento por otro de la lista (vean la lista de comportamientos abajo) en este caso el numero del comportamiento es 1300 4954 simplemente lo reemplazamos por cualquiera que queramos, busquen en la lista ahi estan todos, por ejemplo podemos ponerle el comportamiento de un Goomba (ya que el objeto por el que reemplazamos fue un goomba) entonces reemplazamos 1300 4954 por 1300 472C quedando como resultado todas las modificaciones anteriores asi: [ 2418 1F ] [ C0 ] [ 000B 0323 F439 ] [ 0000 0000 0000 0001 0000 1300 472C ] y listo ya hemos cambiado a lakitu por goomba ![]() Para que tengan una idea de como funcionan los parámetros de comportamiento les coloco aquí el de Koopa como ejemplo: (NOTA: Esta explicación de los parámetros no tiene nada que ver con el comportamiento de Goomba 1300 472C, estos parametros que explico a continuación son sólo para el comportamiento de Koopa 1300 4580) Como dije anteriormente los parámetros están compuestos así: [ 0000 0000 0000 0000 ] [ 0000 ] siendo los cuatro últimos dígitos los parámetros para los mensajes que se mostraran en pantalla: Un ejemplo en concreto es el parámetro del comportamiento de Koopa ( 1300 4580 ) [ 0000 %%## 0000 0000] [0000] Si cambiamos donde dice %% por un numero en hexadecimal, le indicamos el número de Estrellas que nos dará cuando le ganemos la carrera Si cambiamos ## por alguno de estos parámetros cumplirá la acción elegida: 00 Sale Normal Koopa con ó sin caparazón 01 Sale Normal Koopa 02 Koopa the Quick 03 Segunda Carrera con Koopa the Quick (Huge-Tiny Island) 04 Micro Koopa (koopa pequeñito) 05 Diferentes reacciones _________________________________________ OK ya que hallamos hecho nuestras modificaciones, guardamos y cuando el editor nos pregunte que si queremos hacer un backup (respaldo) del ROM le decimos que si, de modo que si ocurre algun error no dañemos el ROM (algunos comportamientos a los que no les corresponde el objeto, suelen hacer que se cuelguen el juego) en caso de que se te dañe el ROM solo renombra el archivo con extensión .BAK que crea el editor. Por ejemplo si tu archivo se llama romdemario.rom el editor creara un respaldo con el nombre romdemario.BAK, solo tienes que renombrar después el .BAK y colocarle .rom para recuperar el original Ya aprendimos algunas modificaciones ahora vamos a aprender como cambiar las músicas de las Áreas (Al final colocare una lista de los offset de las Áreas según la Música para hacer modificaciones) Vamos a la Lista de Áreas y Músicas y elegimos el Área a la que le queramos cambiar la música, anotamos el offset de la lista y con nuestro editor vamos al offset correspondiente (ya explique anteriormente como ir a un offset, si no te acuerdas lee atrás) haré un ejemplo con la Música de las Afueras del Castillo (Castle Grounds), supongamos que queremos cambiar la música de ese lugar, entonces el offset para música de Castle Grounds es 454C08 los demás números entre corchetes [ 31, 04, 00, 00 ] es lo que se verán cuando vallamos a ese offset con el editor hexadecimal NOTA: NO CAMBIEN NINGUN VALOR DE [ 31, 04, 00, 00 ] ESO SOLO LO COLOQUE PARA QUE VEAN LO QUE VA A APARECER CUANDO VAYAN AL OFFSET (Algunas Áreas tienen varios Offsets esto corresponde a distintos lugares dentro del Área en que cambia la música) OK entonces cuando vayamos al offset 454C08 veremos en el editor [ 31, 04, 00, 00 ] si vemos un poquito antes de [ 31, 04, 00, 00 ] veremos [ 3608 0000 0000 0000 ] aquí sera donde se cambiarán las músicas siendo lo que cambia asi [ 3608 00## 00?? 0000 ] donde ?? es un numero que cambiara solo con algunas músicas, en casos normales deje tal cual como aparece, y ## es el numero de la música de la siguiente lista: (siendo asi nuestro ejemplo quedaria Asi [ 3608 0000 0016 0000 ] y listo tenemos la música como cuando estamos en batalla ![]() 00 Sin música 01 End level 02 SMB music title 03 Bob-omb's Battlefield 04 Inside Castle walls 05 Dire Dire Docks 06 Lethal Laval land 07 Bowser battle 08 Snow 09 Slide 0A Big Boo's Haunt (Para esta música debe cambiar también ?? por 06 ) 0B Piranha plant lullaby 0C Hazy Maze 0D Star select 0E Wing cap 0F Metal cap 10 Bowser Message 11 Bowser course 12 Star catch 13 Ghost Merry-go-round 14 Start and End Race with Koopa the Quick 15 Star appears 16 Boss fight 17 Take a Key 18 Looping stairs 19 Final Bowser (Para esta musica debe cambiar también ?? por 02) 1A Credits song 1B Unknown 1C Toad 1D Peach message 1E Intro Castle sequence 1F End fanfare 20 End music 21 Menu 22 Lakitu Nota: La Lista de los Offsets de Todas la Áreas para cambiar Músicas está al Final CAMBIANDO CONDICIONES CLIMÁTICAS EN LOS ESCENARIOS Nuevo !!!! ![]() También podemos hacer algunos cambios en el clima, se notará en algunos escenarios, y se verá reflejado en lo que salpica mario al caminar sobre el agua, la nieve o la arena Explicare con un ejemplo, para hacer estos cambios utilizaremos la misma LISTA DE OFFSET DE LAS AREAS PARA CAMBIOS DE MÚSICA Verán que les coloque encerrado entre corchetes [ ] lo que iba a aparecer una vez se ubicaran en ese offset, bueno resulta que haremos modificaciones a eso que aparece en cada offset, la modificación se hará asi: Si vemos en la lista el Offset del Area Cool Cool Mountain es 395FD0 y lo va aparecer es [31, 04, 00, 02], bueno de este último valor lo que se va a modificar son los dos últimos digitos [31, 04, 00, 02] eso indica la condición del clima, y puede modificarse por esta lista: 00 Condición normal 01 Condición normal 04 Condición normal 02 Condición Nieve (Agua Fría, quita energía) 03 Condición Arena (Agua Normal) 05 Condición Agua (Mario Salpica agua en algunos terrenos) 06 Condición Agua Elevada ó Terrenos inclinados deslizantes Como verán en Cool Cool mountain la condición es Nieve y por eso tiene el 02 pero si modificamos y le colocamos 03 la condición cambiará a Arena Ahora el código quedaría así: [31, 04, 00, 03] y listo hemos cambiado la condición Nota: No he probado en todas la Areas, pero he notado que en algunas Áreas, solo cambia los restos que deja mario en los pies cuando va caminando, de todas formas hagan sus pruebas ![]() _________________________________________ LISTA DE OFFSET DE INICIO Y FIN DE CADA AREA
Spoiler
LISTA DE OBJETOS DE CADA AREA NOTA: Recuerden que los números de esta lista de objetos están en numeración decimal, tienen que convertir estos números en Hexadecimal para cambiarlos en el ROM
Spoiler
LISTA DE COMPORTAMIENTOS DE OBJETOS Los Comportamientos que dicen Unknow no se ha determinado que hace, los que dicen Unused ? no los he probado (por favor si van averiguando que hace cada uno, me notifican en privado para ir añadiendo los comportamientos a la lista)
Spoiler
LISTA DE OFFSET DE LAS AREAS PARA CAMBIOS DE MUSICA
Spoiler
Bueno hasta aquí termina este Tutorial por Ahora, y por favor NO PREGUNTEN TONTERIAS, LEAN BIEN PRIMERO, tarde mucho tiempo haciendo esta guía hagan sus modificaciones y publiquenlas, Suerte!!! ![]() Última edición por digitalspider fecha: 15-sep-2007 a las 23:37. |
|
|
|||
|
|||
|
Como Modificar Super Mario 64 (ROM HACKING)
|
|
#2
|
||||
|
||||
|
demasiad complicado para mi XD
|
|
#3
|
|||
|
|||
|
Por favor no posteen si no van a preguntar ó van a añadir algo relativo a este tema, reserven el espacio para cosas importantes
Gracias a Todos |
|
#4
|
||||
|
||||
|
buen aporte viejo.
|
|
#5
|
|||
|
|||
|
si buen aporte pero no entendi los de los comportamientos...
![]() Lo segui todo al pie de la letra pero nada ![]() |
|
#6
|
|||
|
|||
|
Disculpenme, no coloque esa parte bien clara de la explicación (me salte la explicación) , ya hice las correcciones, leela de nuevo ahora si explique mejor los comportamientos
|
|
#7
|
|||
|
|||
|
ok ya entendi...
Pero como bajas las rejillas...??? |
|
#8
|
||||
|
||||
|
Tengo una pregunta:
¿Este tutorial solo sirve para Mario 64, o con el puedo traducir otros juegos de N64? |
|
#9
|
|||
|
|||
|
Cita:
Cita:
son coordenadas para los polígonos, se puede mover a cualquier lugar dentro del juego. En el Caso de la Rejilla te lo explicaré con un ejemplo: En el Area Bomb-omb Battlefield, sabes que hay una rejilla donde está encerrada una Estrella, y normalmente esta rejilla se abre cuando liberas al Chomp que está atado en el tronco con la cadena, Bien entonces si queremos que esa rejilla baje o suba tenemos que modificar los valores en Z de las coordenadas (Z ubica a los objetos con respecto al nivel del suelo, eso ya lo expliqué) Bien, esa rejilla esta ubicada en el Offset decimal 04217440, si nos ubicamos alli veremos esto: 2418 1F36 05B0 0300 01BE 0000 0146 0000 0000 0000 1300 4868 2418 1F[36] [05B0 0300 01BE] [ 0000 0146 0000 0000 0000] [1300 4868] ok ya sabemos que el 36 es el codigo hexadecimal del objeto (la rejilla) [ 05B0 0300 01BE ] son los valores [ XXXX ZZZZ YYYY ] el valor que queremos modificar es el ZZZZ por lo tanto lo que vamos a modificar es el 0300 le colocamos un valor menor en los dos primeros digitos del eje negativo para que baje, podria ser 01 entonces reemplazamos 0300 por 0100 entonces el codigo completo se veria así: 2418 1F[36] [ 05B0 0100 01BE] [ 0000 0146 0000 0000 0000] [1300 4868 ] guardamos y con eso ya habremos bajado esa rejilla, si jugamos y vamos a esa Area veremos que la rejilla esta a una altura que Mario la puede saltar, está abierta... |
|
#10
|
||||
|
||||
|
Perdon, pero, se puede cambiar el texto con esto? es decir, como para traducir y cosas asi.
|
![]() |
| Herramientas | |
| Desplegado | |
|
|
Temas Similares para: Como Modificar Super Mario 64 (ROM HACKING)
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Preguntas sobra manga animé | 6_JAPO_9 | Zona Otaku | 12 | 08-nov-2008 06:55 |
| Recopilación de Guías de Juegos | Sky Angel | Guías | 303 | 19-may-2008 00:28 |
| guia entera de dragon quest | ~Link | Playstation 2 | 2 | 09-feb-2008 21:22 |
| Necesito la guia del Chrono Trigger de SNES | Aylalia | Guías | 6 | 23-ago-2007 05:37 |
| Ser Ateo | David-Link | Cafetería | 146 | 15-ago-2007 03:21 |