Para los amantes de los juegos de segunda generacion, hoy les traigo un parche que cambia la clasificacion de los movimientos en Fisico y Especial igual que los juegos de 4ta. Generacion en adelante.
Con esto por fin podremos tener a un Machamp sacandole provecho a Ice Punch, o a un Gengar que por fin le saca jugo a Shadow Ball/Sludge Bomb.
Que contiene el parche?
Despues de aplicado el parche, hay un tabla en $99400 en el orden de los movimientos, que define con 0x01 si es ataque especial, o 0x00 si es ataque fisico. Los movimientos del tipo "otro" tienen valor 0x00.
La rutina original fue creada por Koolboyman, pero fue corregida y ampliada por [MENTION=28012]Crystal_[/MENTION]. Un cambio importante respecto a la rutina original fue la reubicacion de la tabla que lee el tipo de movimiento, ya que era incompatible con el parche "descompresor de portada" muy famoso entre los hacks de GBC. Dicho problema esta arreglado y ambos parches son compatibles.
Creditos:
GOLD! - Por facilitar la informacion de la rutina.
Koolboyman - Rutina Original.
//Stats the new routine
0D:543F - jp $7FA0
//Main routine
0D:7FA0 - ld hl, $5000
0D:7FA3 - ld a, $26
0D:7FA5 - rst $8 //Moves to a new bank
0D:7FA6 - ld a,[$DEFF] // Load result into a
0D:7FA9 - dec a // Decreases the value you got so it can easily check if it's special or not.
0D:7FAa - jp z, $5467 // If it's zero, it's a special attack.
0D:7FAd - jp $5443 // Else is a physical.
//Getting the type
26:5000 - ld a,[$CE60] // Get the move ID
26:5003 - ld hl,$5100 // Pointer to type array
26:5006 - ld l,a // Increase the pointer by the move being used
26:5007 - ld a, [hl] // Load the result into a
26:5008 - ld [$DEFF],a //Save result into RAM 26:500C - ret
26:5100 - Array of attack type
0 - Physical
1 - Special
Crytal & Chamber - Rutina corregida y ampliada.
//Stats the new routine
0D:543F - jp $7FA0 ; C3 A0 7F
//Main routine
0D:7FA0 - ld hl, $5300 ; 21 00 53
0D:7FA3 - ld a, $26 ; 3E 26
0D:7FA5 - rst $8 ; CF
0D:7FA6 - ld a,[$DEFF] ; FA FF DE
0D:7FA9 - dec a ; 3D
0D:7FAa - jp z, $5467 ; CA 67 54
[37FAD] 0D:7FAd - jp $5443 ; C3 43 54
//Getting the type
26:5300 - ld a,[$CE60] ; FA 60 CE
26:5303 - ld hl,$5400 ; 21 00 54
26:5306 - ld l,a ; 6F
26:5307 - ld a, [hl] ; 7E
26:5308 - ld [$DEFF] ; EA FF DE
26:530B - ret ; C9
//Rival moves
0D:5548 - jp $7FB0 ; C3 B0 7F
//Main routine
0D:7FB0 - ld hl, $5300 ; 21 00 53
0D:7FB3 - ld a, $26 ; 3E 26
0D:7FB5 - rst $8 ; CF
0D:7FB6 - ld a,[$DEFF] ; FA FF DE
0D:7FB9 - dec a ; 3D
[37FBA] 0D:7FBa - jp z,$5570 ; CA 70 55
[37FBD] 0D:7FBd - jp $554C ; C3 4C 55
Siempre estuve pensando en ti para los creditos, no se por que al final lo olvide... Disculpa XD
Para hacer funcionar la rutina se usa la tabla que esta en $99400 que sigue el orden que tiene los ataques. Si sustituyes Pound por Focus Blast, vas a $99401 (0x99400 + 0x01 [Pound]) y cambias el 0x00 por 0x01. Si en lugar de eso quieres cambiar Hyper Beam por Giga impact, buscas el valor hex de Hyper Beam que es 0x3F, le sumas 0x99400 dando como resultado $9943F, vas a ese offset y cambias 0x01 por 0x00.
He leído los comentarios de arriba y aunque reporten errores, se pueden solucionar.
Creo que el aporte es muy bueno, te felicito, se agradece.
Ojalas los aportes sigan ya que como veo, wah ya ni se trata de rom hacking.
//Stats the new routine
0D:543F - jp $7FA0 ; C3 A0 7F
//Main routine
0D:7FA0 - ld hl, $5300 ; 21 00 53
0D:7FA3 - ld a, $26 ; 3E 26
0D:7FA5 - rst $8 ; CF
0D:7FA6 - ld a,[$DEFF] ; FA FF DE
0D:7FA9 - dec a ; 3D
0D:7FAa - jp z, $5467 ; CA 67 54
[37FAD] 0D:7FAd - jp $5443 ; C3 43 54
//Getting the type
26:5300 - ld a,[$CE60] ; FA 60 CE
26:5303 - ld hl,$5400 ; 21 00 54
26:5306 - ld l,a ; 6F
26:5307 - ld a, [hl] ; 7E
26:5308 - ld [$DEFF] ; EA FF DE
26:530B - ret ; C9
//Rival moves
0D:5548 - jp $7FB0 ; C3 B0 7F
//Main routine
0D:7FB0 - ld hl, $5300 ; 21 00 53
0D:7FB3 - ld a, $26 ; 3E 26
0D:7FB5 - rst $8 ; CF
0D:7FB6 - ld a,[$DEFF] ; FA FF DE
0D:7FB9 - dec a ; 3D
[37FBA] 0D:7FBa - jp z,$5570 ; CA 70 55
[37FBD] 0D:7FBd - jp $554C ; C3 4C 55
26:5400
0 - Physical
1 - Special
[MENTION=26330]Chamber[/MENTION], cambiaste el puntero pero se te olvido cambiar los offsets!
[MENTION=28012]Crystal_[/MENTION] Olvide cambiarlos solo en el tema, pero en el parche si estan aplicados, mira el log:
Lunar IPS (LIPS) Version 1.00
Apply IPS Patch Log
Offset Size RLE IPS_File_Range IPS_File_Size
------ ---- ID 00000000-00000004 5
03543F 3 No 00000005-0000000C 8
035548 3 No 0000000D-00000014 8
037FA0 20 No 00000015-00000039 25
099300 C No 0000003A-0000004A 11
09940D 4 No 0000004B-00000053 9
099431 F No 00000054-00000067 14
099447 17 No 00000068-00000083 1C
099465 1 No 00000084-00000089 6
09947B 7 No 0000008A-00000095 C
099491 5 No 00000096-0000009F A
0994A1 1 No 000000A0-000000A5 6
0994AD 9 No 000000A6-000000B3 E
0994BD E No 000000B4-000000C6 13
0994E1 1 No 000000C7-000000CC 6
0994ED E No 000000CD-000000DF 13
------ ---- EOF 000000E0-000000E2 3
Total Patches: F (15)
Edit: Parece que eso puedo haber sido el fallo si la aplicaste "a mano", ya se corrigio el tema principal indicando los offsets correctos, aun asi el parche siempre tuvo las hubicaciones correctas :D
ah vale ok ok, se me olvido que habias subido un parche. Pense que la gente estaba tomando el código directamente y que al ver eso lo estaba copiando en la dirección incorrecta. Pero el parche está bien, ya veo, entonces solo te lo digo entonces para que la gente que prefiera copiarlo ella misma en hex no tenga problemas :)
por cierto cuando se me crasheaba solo se reiniciaba el rom con graficos alterados, no me daba ningun opcode
MUY BUEN APORTE AUNQUE NO LOGRO ENTENDER DE QUE TRATA :p ESPERO PONGAS UN EJEMPLO EN QUE CONSISTE O ALGUNAS IMÁGENES PARA ENTENDERLO , SORRY POR LA IGNORANCIA PERO ME GUSTARÍA MAS DETALLES
Mi estimado [MENTION=25635]WiZaRD[/MENTION], segun recuerdo tu no has jugado las ultimas generaciones de pokemon, en donde a diferencia de los juegos de 1ra. a 3ra. generacion los ataques se clasificaban en fisicio y especial segun su tipo. Teniendo asi, por ejemplo, que todos los ataques de hielo eran especiales sin importar nadamas.
De la 4ta gen. en adelante esto cambio y ahora siguen una logica de "contacto" por llamarlo de alguna manera. Es asi, que movimientos como Ice Punch ahora es FISICO dada su naturaleza de dar un puñetazo y Shadow Ball pasa a ser ESPECIAL al ser una bola de energia donde no hay "contacto".
Bajo esta primicia, muchos pokemon se ven beneficiados con movimentos como Bite o Crunch que ahora son fisicos y que en su mayoria lo aprendian pokemon con buen ATK, pero tambien muchos otros perdieron "versatilidad", como Alakazam que ya no hace buen uso de los Elemental Punchs.
Lo que el parche pretende es traer ese toque de modernidad a los juegos de segunda generacion y junto a otros tutoriales de la web, tener ataques como Zen Headbutt en un Tauros o Snorlax, para asi tener mas variedad de pokemons y mas diversion C: .Yo creo que uno de los pokemon que saca mas provecho de estó es Gyarados, ya que antes no tenia movimientos con STAB que aprovecharan su gran fuerza fisica, pero ahora veras como su Waterfall pone a temblar a los rivales.
Te explico como funciona el parche. Cuando lo aplicas en tu rom, ademas de modificar las rutinas correspondientes para separar los movimientos en FISICO y ESPECIAL, crea una tabla en $99400 donde cada byte representa un movimiento y que depende de si ese byte esta en 0x00 el juego lo toma como ataque fisico o si esta en 0x01 lo toma como ataque especial.
Puedes comprobar esto con el primer ataque especial que es Razor Wind y su valor hex es 0x0D, haces la operacion correspondiente 0x99400 + 0x0D = 0x9949D, vas a ese offset con tu editor HEX favorito y compruebas que esta en 0x01. Despues haces pruebas en el emulador, atacando a una Blissey quien tiene una gran diferencia entre su Defense y Sp.Defense.
Espero todo haya quedado mas claro con esto y si aun sigues con dudas puedes seguir preguntando.
Ohhh , ahora entiendo , esto entonces ayuda a mejorar la vesatilidad del juego , ya que trata de asemejarse a los juegos actuales , probare para ver que hay xD ojala la dirección que mencionas no este ocupada como la del tutor y de ser asi espero con tu ayuda compa como para poder poner en una nueva dirección .
Nuevamente gracias por el aporte y felicito la tremenda dedicación de tu parte hacia el room hack GBC :D
Saludos [MENTION=26330]Chamber[/MENTION]