• 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

Aryan 10

Battle Legend
163
Posts
7
Years
  • 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:

    Wesley FG

    Pokémon Kalos Advance !! Gba Hack
    338
    Posts
    15
    Years
  • 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:
    352
    Posts
    7
    Years
    • Seen Mar 10, 2022
    <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:
    132
    Posts
    9
    Years
    • Age 23
    • Seen today
    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.
     
    144
    Posts
    12
    Years
  • 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.
     
    352
    Posts
    7
    Years
    • Seen Mar 10, 2022
    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.
     

    Shiny Quagsire

    I'm Still Alive, Elsewhere
    697
    Posts
    14
    Years
  • 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, http://problemkaputt.de/gbatek.htm#gbamemorymap
     
    352
    Posts
    7
    Years
    • Seen Mar 10, 2022
    <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:

    AtecainCorp.

    Rejishan awake...
    1,377
    Posts
    15
    Years
  • 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: http://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.
     

    Squeetz

    ROM Hacker
    191
    Posts
    10
    Years
  • 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.
     
    146
    Posts
    11
    Years
    • CO
    • Seen Mar 16, 2023
    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.
     
    218
    Posts
    10
    Years
    • Seen Nov 12, 2021
    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:
     
    90
    Posts
    7
    Years
  • 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?
     

    Squeetz

    ROM Hacker
    191
    Posts
    10
    Years
  • 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.
     

    Wesley FG

    Pokémon Kalos Advance !! Gba Hack
    338
    Posts
    15
    Years
  • 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
    untitled.png

    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
     

    Panda Face

    Pokemon Ultra Snowy White
    127
    Posts
    7
    Years
    • Seen Oct 22, 2022
    How to change the Latias and Latios event after chose red and blue?
     
    Back
    Top