- 352
- Posts
- 8
- Years
- Seen Mar 10, 2022
EM or FR?
Oh sorry, it's for Fire Red.
EM or FR?
For example, 123 to 23 01
9C 01
Expanded Pokemon In Advance Map
Take the total number of pokemon.
Change it to hex and reverse it.
Go to D027C and change
to your reverse hex number of Pokemon.Code:9C 01
And it's done.
Expanded Pokemon In Advance Map
Take the total number of pokemon.
Change it to hex and reverse it.
Go to D027C and change
to your reverse hex number of Pokemon.Code:9C 01
And it's done.
you need specific what version of Advance Map (1.92, 1.95)
are you tutorial
It's for 1.92
The offset for 1.95 is 0x77DD5
<Remove Field Moves options from Pokémon menu [FR]>
0x122A8C: 00
0x45A76E: 00 00
<Remove Ending Credits (Reset the Game) [FR]>
0x16730B: 9C 50 00 6B 02 FF
Okay, so I'm still a noob at this, but I think I understand better now how memory works. So for some things, I've decided to brute force my way through the hack with a hex editor.
Just to play around and reverse engineer things a bit, I tried the old fashioned method of opening up scripts with PKSV, then opening the ROM in the hex editor and going to the offsets it mentioned. Except...PKSV uses seven digits for "offsets", when there are only six digits for offsets in the ROM.
I don't really know what in particular to ask about this. Is there some way to translate between the two numbers? Does PKSV lie?
So just as I typed that entire paragraph, I realized that PKSV starts everything with 0x8 and then the offset number.
Posting this anyway in case anyone else was wondering.
Okay, so I'm still a noob at this, but I think I understand better now how memory works. So for some things, I've decided to brute force my way through the hack with a hex editor.
Just to play around and reverse engineer things a bit, I tried the old fashioned method of opening up scripts with PKSV, then opening the ROM in the hex editor and going to the offsets it mentioned. Except...PKSV uses seven digits for "offsets", when there are only six digits for offsets in the ROM.
I don't really know what in particular to ask about this. Is there some way to translate between the two numbers? Does PKSV lie?
So just as I typed that entire paragraph, I realized that PKSV starts everything with 0x8 and then the offset number.
Posting this anyway in case anyone else was wondering.
Would you mind telling me how you fixed the music that plays after you captured a pokemon?
I made the same feature (though differently: I didn't need to replace the bytes at x15A68), which is almost flawless, if not for the music: it plays the captured pokemon jingle, then the receive exp jingle.
You can check it here: https://pokemonhackersonline.com/showthread.php?t=14839-FR-Pokemons-receive-EXP-after-capturing
//wildbattle2hex
00 B6 | ?? ?? | ?? 00 | ?? ?? | B7 03 |
cmd | pkid | lvl | item |
4100 | 4101 | 4102 | 4103 | 4104 |
Hand to put B7 03 place of(25 39 01 27) wich means dowildbattle followed by '03' return.
Also to get the address of vars 0x4000+ you need to take the pointer stored at 0x3005008 and add 0x1000 to it.
To get var 0x4100 you would add 0x1200 to the pointer at 0x3005008.
//
#dynamic 0xD00000
#org @start
random 0x64
compare 0x800D 0x8
if 0x2 goto @snippet1
random 0x64
copyvar 0x4000 0x800D
setvar 0x4100 0xB600
copyvar 0x4101 0x4000
random 0xFF
copyvar 0x4102 0x800D
setvar 0x4103 0x0000
setvar 0x4104 0x03B7
setvar 0x5006 0x1
setvar 0x800D 0x0
call @snippet2
setvar 0x5006 0x0
release
end
#org @snippet1
release
end
#org @snippet2
writebytetooffset 0x4 0x20370D0
copybyte 0x20370D1 0x3005008
copybyte 0x20370D2 0x3005009
copybyte 0x20370D3 0x300500A
copybyte 0x20370D8 0x20370D2
copybyte 0x20370D9 0x20370D3
addvar 0x8011 0x12
copybyte 0x20370D2 0x20370D8
copybyte 0x20370D3 0x20370D9
copybyte 0x20370D4 0x300500B
writebytetooffset 0x3 0x20370D5
writebytetooffset 0xFF 0x20370D6
writebytetooffset 0x0 0x20370D7
call 0x20370D0
return
To do the same in Emerald, place 0xFC at 0x6DC48 and 0x6DC4E.
To elaborate for the people who don't understand what this is about, it is setting the limiters for the maximum number of EVs a Pokémon can have per stat. Because only four EVs translate into a single stat point, having 255 EVs per stat is pointless, as the last three EVs do not make any difference.
.equ New_Limit_Ev_Cap, Max_ev_per_stat @ can't go beyond 255*6 obviously
.equ EV_by_stats_cap, Max_ev_per_poke @ can't go beyond 255 without rewriting a ton of routine, it's the original value
@@ moving the EV cap per poke
.org 0x6DC2A, 0xFF
ldr r0, New_Limit_Ev_Cap
add r0, #1
@@ EV by stats cap
.org 0x6DC48, 0xFF
cmp r0, #EV_by_stats_cap
ble 0x6DC58
mov r0, r1
add r0, #EV_by_stats_cap
@@ moving the EV cap per poke
.org 0x6DC88, 0xFF
New_Limit_Ev_Cap:
.word Max_EV_per_poke-1
Expanded Pokemon In Advance Map
Take the total number of pokemon.
Change it to hex and reverse it.
For Advance Map 1.92
Go to D027C
For Advance Map 1.95
Go to 77DD5
and change
to your reverse hex number of Pokemon.Code:9C 01
And it's done.
you open it in a hex editorSo how do you hack advance map?