• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • 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.

Quick Research & Development Thread

Expanded Pokemon In Advance Map


Take the total number of pokemon.

Change it to hex and reverse it.
For example, 123 to 23 01


For Advance Map 1.92
Go to D027C

For Advance Map 1.95
Go to 77DD5

and change
Code:
9C 01
to your reverse hex number of Pokemon.

And it's done.
 
Last edited:
Expanded Pokemon In Advance Map


Take the total number of pokemon.

Change it to hex and reverse it.



Go to D027C and change
Code:
9C 01
to your reverse hex number of Pokemon.

And it's done.

you need specific what version of Advance Map (1.92, 1.95)
are you tutorial
 
Last edited:
<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

I found some problems with skipping the game credits in mobile emulators (like MyBoy), it freezes instead of reset, then I fixed it with a new hex edit:

<Remove Ending Credits (Reset the Game) [FR]>

In some free space place 00 DF 00 00 and save it's offset

At 0x16730B: 23 XX XX XX 08 FF (XX XX XX is the reverse of the offset you saved +1)
 
Last edited:
the table for the berry tag images begins at 0x57FC94, at the cheri berry. four bytes are the image pointer, next four are the palette, repeat.
 
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.

First, it's the wrong place to ask for help.
Second, the 0x8 (0x9 too, for expanded Roms) is only to tell the system "It's a ROM offset!", if it begins with 0x2 it's a RAM offset.
 
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.

This is a GBA memory mapping thing, https://problemkaputt.de/gbatek.htm#gbamemorymap
 
<Skip Player and Rival Naming [FR]>

Change the pointer at 0x13009C to D1 08 13 08

After choosing the player gender the gameplay will start without naming the player and the rival, then you will be able to use static names in-game.

Note: If you don't have used some ASM to set the player/rival names the game will freeze.
 
Last edited:
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

Is any chance for repoin this for Ruby? I have troubles with my own researches.
 
It's often been asked how the Hidden Items work, and what flags they use.
I was curious myself, so I did some digging. (FR)

The routine responsible for handling the flag check/set and item give is at 0x6D17A.
The subroutine that converts the Hidden ID to the flag to check/set here is located at 0xCC45E.
It adds 0x3E8 to the Hidden ID, which is then the flag to be checked/set.
This means that hidden ID 0x0 equates to flag 0x3E8, 0x1 equates to 0x3E9, and so on, until you reach ID 0xFF, which is flag 0x4E7.
 
Dynamic Wild Battles(with Green script tiles)

Hello all,
I made a way to have random wild battles which also randomize not only the Pokemon but the level as well.
I got the idea and the know how from a thread called " PokeMart as debug input ".

Anyway here is the XSE script.
Code:
Code:
//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

At the moment it still uses the default vars from the debug input thread.
But I will make a different version that uses the safe vars hack.
Just in case.

To use this,
Simply compile and place on green script tile then set the tiles var to 0x5006 and the value to 0.
The default script is made so you have an 8% chance of a wildbattle to happen.

What this does:
It takes a script command and writes it in hex into vars 0x4100 - 0x4104.
Then it changes the certain values to the random number (PokemonID and Level),
after that it sets up vars 0x800D - 0x8012 and then calls the 0x800D to execute the code at 0x4100-0x4105.
Then returns.

Hope it can help someone out there.
 
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.

In addition to that, you can also change the total of EV each pokémon can get:
Spoiler:
 
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
Code:
9C 01
to your reverse hex number of Pokemon.

And it's done.

So how do you hack advance map?
 
In Firered at 0x15FD0C there's a table of pointers for the vars 0x8000-0x8014.
You can easily repoint this and add your own entries. I added 12 new ones (0x8015-0x8020) and using them all in a script worked perfectly.
So instead of writing to your static addresses with 'writebytetooffset', you could just set a var.
 
This is one Information About Catch areas in Pokédex FR

Probably you have problem making you hack with it

Existe one table that control it
Table Located at 463580 have this format

[TT][XX][YY][00]

TT = Shape of the catch area (varies from 00 - 06) the img explain better
[PokeCommunity.com] Quick Research & Development Thread

XX = X-coordinate of the area on the worldmap in the pokedex
YY = Y-coordinate of the area on the worldmap in the pokedex
00 = Padding

00463580 = FILLER
00463584 = PALLET TOWN
00463588 = VIRIDIAN CITY
0046358c = PEWTER CITY
00463590 = CERULEAN CITY
00463594 = LAVENDER TOWN
00463598 = VERMILION CITY
0046359c = CELADON CITY
004635a0 = FUCHSIA CITY
004635a4 = CINNABAR ISLAND
004635a8 = INDIGO PLATEAU
004635ac = SAFFRON CITY
004635bc = ROUTE 4
004635d4 = ROUTE 10
004635b0 = ROUTE 1
004635b4 = ROUTE 2
004635b8 = ROUTE 3
004635bc = ROUTE 4
004635c0 = ROUTE 5
004635c4 = ROUTE 6
004635c8 = ROUTE 7
004635cc = ROUTE 8
004635d0 = ROUTE 9
004635d4 = ROUTE 10
004635d8 = ROUTE 11
004635dc = ROUTE 12
004635e0 = ROUTE 13
004635e4 = ROUTE 14
004635e8 = ROUTE 15
004635ec = ROUTE 16
004635f0 = ROUTE 17
004635f4 = ROUTE 18
004635f8 = ROUTE 19
004635fc = ROUTE 20
00463600 = ROUTE 21
00463604 = ROUTE 22
00463608 = ROUTE 23
0046360c = ROUTE 24
00463610 = ROUTE 25
00463614 = VIRIDIAN FOREST
0046361c = MT. MOON
00463598 = S.S. ANNE (SAME OFFSET OF VERMILLION)
004635ac = UNDERGROUND PATH (SAME OFFSET OF SAFRON)
004635ac = UNDERGROUND PATH ( SAME OFFSET OF SAFRON)
00463618 = DIGLETT'S CAVE
0046363c = VICTORY ROAD
0046359c = ROCKET HIDEOUT (SAME OFFSET OF CELADON)
004635ac = SILPH CO. (SAME OFFSET OF SAFRON)
00463638 = POKéMON MANSION
00463630 = SAFARI ZONE
0046363c = POKéMON LEAGUE (SAME OFFSET VICTORY ROAD)
00463624 = ROCK TUNNEL
00463634 = SEAFOAM ISLANDS
0046362c = POKéMON TOWER
00463620 = CERULEAN CAVE
00463628 = POWER PLANT

Need search for the rest of Island Maps
Credit : sfc.pokefans.net/lesson.php?id=20
for the base of my search
 
How to change the Latias and Latios event after chose red and blue?
 
Back
Top