Registrarse

[Otros] FR, R, E |Cambiar el dinero inicial

Sonicarvalho

Tutorial Maker
Bueno, mas un tutorial 'ready for action'!

Mientras estudiando las rutinas ASM que tratan el NEW GAME de una rom, me depare con el dinero y pienso que es un pormenor interesante, aún que un poco innecesario, a no ser que pienses hacer un juego serio como ShinyGold, que tiene desafíos por ali y por allá y que necesitas algun dinero para pociones y así.

Hoy vamos a cambiar el dinero con que el player empieza en el inicio del juego!

[align=center]Cambiar el Dinero de inicio del Juego[/align]

Esto es basicamente un Hex Editing, pero os voy a explicar como encontrar el offset para las versiones españolas de las roms.

Juegos: Ruby, FireRed, Emerald

Bien, todos sabemos que empezamos con 3000$ de dinero, cierto? Entonces, pasando a HEX tenemos 0xBB8. Pero no os olvideis que el dinero es tratado como una DWORD (4 bytes), y está permutado en la ROM, así que vamos a hacer algunas cosas antes de buscar en la ROM su offset.

Hacer 0xBB8 una DWORD => 0x00000BB8
Permutar => b8 0b 00 00

Ahora busquen en la ROM con un HEX Editor el valor permutado. Es el primer valor, si lo buscan bién.

Offsets:
Ruby(U): 052F4C
FireRed(U): 054B60
Emerald(U): 0845BC

Para las ROMs españolas es algo de ese genero.
Ruby: 05XXXX
Firered: 05XXXX
Emerald: 08XXXX

Ahora solo queda cambiar al vuestros gustos, chicos! :D

Es todo!
Made By Sonicarvalho
 
RE: Cambiar el Dinero de inicio del Juego

Buen aporte pero existe un programa llamado Advance intro ed que te permite modificar el dinero con el que comienzas sin tener que saber de hexadecimales
 

Cheve

MoonLover~
Miembro de honor
RE: Cambiar el Dinero de inicio del Juego

^ Si, pero está genial aprender a hacerlo manualmente, así puedes aprendes un poco de Hex, que nunca viene mal ^^

[hr]

Gracias Sonicarvalho por otro mini tutorial ^^
No sabía que a eso se le llama Dword :awesome:
¿Supongo que los Demás datos del Inicio deben de estar cerca No? (Pos x, Pos y, Etc)
Salu2! ñ_ñ
 

Sonicarvalho

Tutorial Maker
RE: Cambiar el Dinero de inicio del Juego

Giratina dijo:
Buen aporte pero existe un programa llamado Advance intro ed que te permite modificar el dinero con el que comienzas sin tener que saber de hexadecimales
Si, lo sé, pero encara esto como un entrenamiento para el ASM, pues ASM tambien es saber buscar las cosas y cambiarlas.

Cheve_X dijo:
^ Si, pero está genial aprender a hacerlo manualmente, así puedes aprendes un poco de Hex, que nunca viene mal ^^

[hr]

Gracias Sonicarvalho por otro mini tutorial ^^
No sabía que a eso se le llama Dword :awesome:
¿Supongo que los Demás datos del Inicio deben de estar cerca No? (Pos x, Pos y, Etc)
Salu2! ñ_ñ
Eh, en GBA eso es una word, pero solo en GBA, porque DWord = Double Word, en programacion una Word son 2 bytes 0000.

Si los datos estan relativamiente pierto.
Mira esto (FIRERED U):
Código:
080549F8 @ =============== S U B R O U T I N E =======================================
080549F8
080549F8
080549F8 sub_080549F8:                           @ CODE XREF: new_game+CAp
080549F8
080549F8 var_8           = -8
080549F8
080549F8                 PUSH    {LR}
080549FA                 SUB     SP, SP, #4
080549FC                 MOVS    R2, #1
080549FE                 NEGS    R2, R2
08054A00                 MOVS    R0, #6
08054A02                 STR     R0, [SP,#8+var_8]
08054A04                 MOVS    R0, #4
08054A06                 MOVS    R1, #1
08054A08                 MOVS    R3, #6
08054A0A                 BL      sub_0805538C
08054A0E                 BL      load_warp_map
08054A12                 ADD     SP, SP, #4
08054A14                 POP     {R0}
08054A16                 BX      R0
08054A16 @ End of function sub_080549F8
08054A16
Esa rutina es llamada por la rutina del new game, como puedes ver luego al inicio (sub_080549F8: @ CODE XREF: new_game+CA). Code XREF es "Code Reference (referencia de llamada). Si te interesa, la rutina del newgame esta en 0x054A60
Mira esos MOVS (es el mismo que MOV, sin "s", mi disassembler hace eso, no te preocupes")

MOV R0, #4 = Banco del mapa (banco 0x4)
MOV R1, #1 = Mapa 0x1 (tu habitacion en pallet town)
MOV R3, #6 = Coordenada X donde vas a aparecer en el mapa.

Saludos!
 

cosarara97

Dejad de cambiar de nick
Miembro de honor
RE: Cambiar el Dinero de inicio del Juego

Eh, en GBA eso es una word, pero solo en GBA, porque DWord = Double Word, en programación una Word son 2 bytes 0000.
??? (no he acabado de entender eso xD)

Bueno, por lo que yo se, si un procesador es de 32 bits, una word va a ser de 32 bits, si es de 16 bits, una word van a ser 16 bits, etc.
La GBA tiene un procesador ARM7TDMI, que dispone de 2 modos básicos (ARM y THUMB) + los de gameboy y gameboy color. El modo ARM es de 32 bits, mientras que el THUMB es de 16, así que una word en una rutina THUMB equivale a 16 bits, (2 bytes de 8 bits cada uno), como tu has dicho, pero en una rutina ARM equivale a 32 bits (4 bytes de 8 bits cada uno).
Y bueno, decir que es solo en GBA tampoco es correcto, porque en los viejos ordenadores de 16 bits y otros procesadores de 16 bits una word también ocupa 2 bytes.


EDIT: Normalmente una word es el espacio que ocupa un int.
 

Sonicarvalho

Tutorial Maker
RE: Cambiar el Dinero de inicio del Juego

cosarara97 dijo:
Bueno, por lo que yo se, si un procesador es de 32 bits, una word va a ser de 32 bits, si es de 16 bits, una word van a ser 16 bits, etc.
Si, tienes razón aquí, era eso que yo queria decir, incluso me has aclarado una duda xD.
cosarara97 dijo:
La GBA tiene un procesador ARM7TDMI, que dispone de 2 modos básicos (ARM y THUMB) + los de gameboy y gameboy color.
Si, lo sé, ARM, THUMB y Z80 (GBC).

cosarara97 dijo:
El modo ARM es de 32 bits, mientras que el THUMB es de 16, así que una word en una rutina THUMB equivale a 16 bits, (2 bytes de 8 bits cada uno), como tu has dicho, pero en una rutina ARM equivale a 32 bits (4 bytes de 8 bits cada uno).
Pues aquí estas equivocado, pues el tamaño de una Word depiende del procesador como tu dejiste, no del 'instruction set'. Una son 4 bytes tanto en ARM como en Thumb (si no fuera, como el procesador iba a ler un offset? Con 2 'reads'? Que pierda de tiempo y performance.

cosarara97 dijo:
Y bueno, decir que es solo en GBA tampoco es correcto, porque en los viejos ordenadores de 16 bits y otros procesadores de 16 bits una word también ocupa 2 bytes.
Si, aquí tienes razón, tambien estaba un poco confuso cuando estaba a escrebir.
cosarara97 dijo:
EDIT: Normalmente una word es el espacio que ocupa un int.
Si, te refireres a un Int32, cierto?

~Sonicarvalho
 

~Zane~

Let's Roll Arceus
Respuesta: GBA | Otros | Cambiar el Dinero de inicio del Juego

Buen Aporte justo lo que buscaba ya que mi rom expandida no servia co advance intro ed
+gracias :)
 

Versekr Dark

Usuario mítico
Buen Aporte justo lo que buscaba ya que mi rom expandida no servia co advance intro ed
+gracias :)
Permiteme disuadir, si pones los punteros de tu juego u offsets en intro manager funciona perfectamente todo, esto es mas para saber modificar a mano esto, y obviamente es mejor por que sabes que modificas y como lo modificas.

Muy buen tutorial para cambiar los precios, muy sencillo y se sabes donde se modifica.

Perfecto para ir aprendiendo algunas direcciones curiosas.
 

L!no

GBA Developer
Respuesta: GBA | Otros | Cambiar el Dinero de inicio del Juego

gran tuto!
me permite entrenarme para el ASM!
+repu
 
Arriba