• 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

Sefuree

Canada Goose
3,183
Posts
10
Years
  • After doing some research into the Emerald HP boxes, I've found a few useful offsets.
    I haven't seen them documented anywhere else on the internet so I thought I'd share them here.

    Player HP box - C1F1C8
    u7Ohadz.png


    Enemy HP box - C1F46C
    wIIa4yI.png


    The palette used for these two is located at C11B9C

    I've also seen this palette in one of Jaizu's post where I found the other palette, C11BBC
    It might be related to the other HP boxes I found below.
    These could possibly be related to double battles. I haven't tested them so I'm not too sure.

    C1F5E8
    OqN1sKo.png

    C1F76C
    2LFI4gk.png

    C1F8E8
    tQ2TKoG.png
     
    Last edited:
    232
    Posts
    12
    Years
    • Seen Sep 10, 2019
    FireRed:
    If you ever opened a script from FireRed in XSE, you will quite often see these lines:
    Code:
    special 0x187
    compare LASTRESULT 0x2
    if 0x1 goto 0x81A7AE0

    Most people think that that special is there as a safe switch or does nothing, but it's actually used for the flashbacks that occur when the player continues their save file. It's there to make sure the events play out properly in the flashback.
     
    232
    Posts
    12
    Years
    • Seen Sep 10, 2019
    Pokemon Center Doesn't Count Eggs [FR]

    When healing at a Pokemon Center, the healing machine will light up with the number of Pokemon in your party. Starting in DP, eggs don't count - if you have two Pokemon and an egg, in RSEFRLG, you get three lights, in DP, you get two.

    To get this behavior in FR, just change:

    Code:
    0x08083B8E : 0xbd 0xf7 0x55 0xf8
    to

    Code:
    0x08083B8E : 0x08 0xf0 0xd5 0xfa
    Spoiler:

    Pokemon Center Doesn't Count Eggs [EM]

    If you want this for Emerald, make the change at:

    Code:
    0x0B61A2 - B5 F7 CB F9
    to
    Code:
    0x0B61A2 - 10 F0 31 FF
     

    AkameTheBulbasaur

    Akame Marukawa of Iyotono
    409
    Posts
    10
    Years
  • Environmental Moves In FireRed (with some Emerald Offsets)

    Camoflouge

    There is a table at 0x250888 (0x31C483 in Emerald). This table is what Camoflouge uses to determine the Type the user turns into. It has ten entries for ten different types of terrain.

    This order is important, because all the environmental moves use this same order of terrain. The terrain bytes start at 0 and go through 9.

    1. 0C = Grass Type used for short grass
    2. 0C = Grass Type used for long grass
    3. 04 = Ground Type used for sand
    4. 0B = Water type used for Underwater
    5. 0B = Water Type used for ponds
    6. 0B = Water Type used for the sea
    7. 05 = Rock Type used for craggy terrain
    8. 05 = Rock Type used for caves
    9. 00 = Normal Type used for indoors
    10. 00 = Normal Type used for link battles

    I tried expanding it but it didn't work. I didn't really focus all that much on expanding it though so it may be possible.

    This table is useful for people who are using KarateKid's Battle Background hack to set specific backgrounds, as the terrain byte doesn't change just because the background does.

    For people who are using that patch, you can make the terrain change with the background by using/modifying this routine:

    Spoiler:


    You would replace the pointer at 0xf00020 with the pointer to this new routine.

    Secret Power

    Secret Power is known for having different secondary effects depending on the terrain byte. This leads to the same problem with the Battle Background hack as with camouflage, where you can have Secret Power animations or effects that don't match terrain.

    You can use the following Battle Script to edit the effects even if you don't have the Battle Background hack.

    Spoiler:


    I'd do a version for Emerald, but I don't know where the RAM for the terrain is in Emerald yet. If you know where it is, tell me! Porting that script to Emerald is as easy as replacing all the offsets with their Emerald equivalents.

    Secret Power's animation in FireRed (and also in Emerald) is basically just a compilation of pointers to other move's animations. The animation it uses once again depends on the terrain byte.

    FireRed (at 0x1D4CBA)
    Spoiler:


    Emerald (at 0x2D6FD0)
    Spoiler:


    Nature Power

    It was already posted somewhere here, but I'll just put the offset at the end so all the environmental moves are in the same place.

    FireRed: 0x25081C
    Emerald: 0x31C414

    Editing the table is as easy as putting the index number of the move you want in the correct location in the table depending on the terrain you want it to go with.
     
    Last edited:

    AkameTheBulbasaur

    Akame Marukawa of Iyotono
    409
    Posts
    10
    Years
  • RAM Offsets for Player's and Opponent's Pokemon

    These contain information such as current HP and level for all six of your Pokemon, and all six of your opponent's Pokemon.

    The RAM Offsets for FireRed are already documented (I'll put them here for convenience's sake).

    Yours:
    1st: 0x02024284
    2nd: 0x020242E8
    3rd: 0x0202434C
    4th: 0x020243B0
    5th: 0x02024414
    6th: 0x02024478

    Theirs:
    1st: 0x0202402C
    2nd: 0x02024090
    3rd: 0x020240F4
    4th: 0x02024158
    5th: 0x020241BC
    6th: 0x02024220

    But I'm not sure if the ones for Emerald are documented but I couldn't find them, so here they are:

    Yours:
    1st: 0x020244EC
    2nd: 0x02024550
    3rd: 0x020245B4
    4th: 0x02024618
    5th: 0x0202467C
    6th: 0x020246E0

    Theirs:
    1st: 0x02024744
    2nd: 0x020247A8
    3rd: 0x0202480C
    4th: 0x02024870
    5th: 0x020248D4
    6th: 0x02024938
     
    232
    Posts
    12
    Years
    • Seen Sep 10, 2019
    Does anybody know the var, flag, or special that activates swarming in Emerald?
     

    Bladecraft

    It's written "Bladecraft" on my forehead.
    83
    Posts
    7
    Years
    • Seen Jun 18, 2020
    How to change the spawn location of the player after beating the Pokemon League in Emerald:


    After some research I've found that the spawn location of the player after beating the Pokemon League is tied to the Flying position [04] tile (in map 1.1 or 1.3 in the coordinates 4/2).

    It is possible to change the location of that tile (including the map it's in) in HxD, in the offset 59F53C.

    Code:
    01 01 04 00 02 00
    are the bytes that will be there by default.

    01 - map bank
    01 - map number
    04 - X
    00 - X
    02 - Y
    00 - Y

    Note that the rom reads the X's and Y's backwards. For example, if for any reason you'd want it to be in the X 125, you'd put in 05 12 in the X's spots.

    If you can choose a gender in your game, you must also edit the female's Flying position [04] tile, which is in the offset 59F544.

    Code:
    01 03 04 00 02 00
    these are the bytes there by default, if you see this you're in the right place.​
     

    Wobb

    Wynaut
    331
    Posts
    11
    Years
  • Secret Base Decoration Sprites (Emerald)
    The sprites for the Secret Base decorations (The sprites you see when buying them at the Department Store) in Emerald start at 0x5A6C00. It ends at 0x5A6FAF with the Registeel Doll.
    It looks like the decorations are in groups (like all the dolls are together) and there are a lot of 00s between them.
    The first four bytes are the image pointer, and the next four are the palette. :)
     
    232
    Posts
    12
    Years
    • Seen Sep 10, 2019
    How to change the spawn location of the player after beating the Pokemon League in Emerald:
    Spoiler:

    Thanks, I've been looking for that! 0x3EEBF8 is the offset for FireRed.
    Default bytes:
    Code:
    03 00 06 00 08 00
     
    239
    Posts
    8
    Years
    • Seen Apr 15, 2024
    Add Thick Club boost for Alolan Marowak [FR]

    The simplest method would be to give Alolan Marowak species ID 0x6A, then change 0x3F02E (0x90BE22 in MrDS's rombase with updated light ball check) from 01 to 02

    Otherwise you'll have to hook a routine in this area to compare against another species ID.
     

    BluRose

    blu rass
    811
    Posts
    10
    Years
  • What if I expand pokeballs from DaniiS's method?
    from the readme
    "If you've added custom Poké Balls, you'll need to add definitions for them in src/balls.h. Note that these are not the same as their item numbers; vanilla Poké Balls have the same item and ball number, but custom Poké Balls won't unless you overwrite the item numbers after the vanilla Poké Balls."
     
    275
    Posts
    8
    Years
  • giphy.gif


    I'm using your routine but when I'm fishing when I catch the Pok?mon my rod disappears, but it only happens at the Safari Zone. Do you know how to fix it?

    EDIT: I think it's caused by your "deleteball" routine, because it removes the last item used from the Bag, but the Safari Balls isn't on the Bag and the reusable function isn't working on them.

    I made a fix for that routine, and will test it on Monday.
    I sent you the solution, if you don't mind testing it too.
    I'll post it as soon as I confirm it's fixed.

    EDIT:
    Link to the post with the routine:
    https://www.pokecommunity.com/showthread.php?p=8896448#post8896448
    If anyone could help confirm that Safari won't be screwed with this new hack, it would be highly appreciated. =D
     
    Last edited:

    Panda Face

    Pokemon Ultra Snowy White
    127
    Posts
    7
    Years
    • Seen Oct 22, 2022
    from the readme
    "If you've added custom Pok? Balls, you'll need to add definitions for them in src/balls.h. Note that these are not the same as their item numbers; vanilla Pok? Balls have the same item and ball number, but custom Pok? Balls won't unless you overwrite the item numbers after the vanilla Pok? Balls."
    How to change the weather abilities from infinity turns to 5 turns?
     
    352
    Posts
    7
    Years
    • Seen Mar 10, 2022
    I made a fix for that routine, and will test it on Monday.
    I sent you the solution, if you don't mind testing it too.
    I'll post it as soon as I confirm it's fixed.

    EDIT:
    Link to the post with the routine:
    https://www.pokecommunity.com/showthread.php?p=8896448#post8896448
    If anyone could help confirm that Safari won't be screwed with this new hack, it would be highly appreciated. =D

    Good. I ended my ROM hacking cause I lost my flash drive with all my work.
     
    89
    Posts
    10
    Years
  • So you know the animations for end-of-turn events or animations that aren't exactly move animations (e.g. poisoned, sleeping, burn, Leech Seed absorb, Future Sight attack etc)? In Emerald, they're stored in a table at the end of the regular move animations table (so it starts at 2C92F8), which I have gone through and summarised as follows:
    Spoiler:

    This could be helpful for anyone who wants to edit the status animations or include some of these animations as part of move animations; they can (mostly) be called with 0E XX XX XX 08.
     
    Last edited:
    Back
    Top