• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

[Other✓] Removing the step limit of Safari Zone in Fire Red/Emerald

Hello! Is there a way to remove the step limit of Safari Zone? The step limit is gone starting at Gen. 4 and I can't find any tutorials how to remove them... I just want to know if that's possible... Thanks!

Here, taken from wah:


Cambiar el numero de pasos que podemos dar!


Pues esta parte exige ASM o no, dependiendo del caso!
Offsets-
Ruby:0C81D0
Firered:0A0ED8
Emerald:0FC0EC

Atencion: Esta parte es ASM!
En esos offsets deberéis ver el siguiente (en un Disassembler) en las versiones:
Ruby:
Mov r2, #0xFA
lsl r2, r2, #0x1

Firered:
Mov r2, #0x96
Lsl r2, r2, 0x2

Emerald:
Mov r2, #0xFA
lsl r2, r2, #0x1

El comando LSL es, simplificando, una multiplicación! Pero una multiplicación especial, usando una formula, y= X * 2^n. Dado eso, y=1,2,4,8,...

En los casos de Ruby Y Emerald, la rutina esta multiplicando ese 0xFA por 2^1 (= 2), que da 1F4 (500 pasos en decimal)
Entonces si quiero 300 pasos, convierto a HEX, 0x12C, y divido por 2, que da 150 pasos en decimal y 0x96 en HEX entonces iría al offset donde esta el 0xFA y sustituiría por 0x96. Así solo nos daban 300 pasos para el Safari.

Para el Firered es cuasi el mismo, solo que esa instrucción es Lsl r2, r2, #0x2.
Entonces, aplicando la formula, queda y= X * 2^2.
2^2=4

Entonces la rutina esta multiplicando los pasos por 4. Así que si fueran 300 pasos, entonces se dividía 300 por 4, convertía en HEX y sustituía en ese offset.

(Sorry it's in spanish, try google translating, if that doesn't work then I'll translate it for you)
 
I tried doing what Danny said and honestly, it was all spanish to me (see what I did there?)

But it did bring me to a solution [for emerald]:
Open your rom in a hex editor (I use HxD)
Goto (using the find tab) offset: 0FC0EC
Where it says "FA 22 52 00". Replace "FA" with "00"

I did a quick test, it works, there were no immediate bugs (warping works fine) but as with anything, I can't guarantee.

Using what Danny/Wah posted, the offsets for Ruby is 0C81D0 and FireRed is 0A0ED8. I can only guess they follow the same structure but I'm not sure about FireRed. And this way, no need for ASM.
 
Back
Top