• 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

redriders180

Mastermind of Pokemon Glazed
314
Posts
13
Years
  • Just a little random thing, in Emerald, editing the byte at 0x08070978 and 0x08071414 will change the level an egg will hatch at. This works for stuff given by the giveegg command, as well as from the Day-Care.
     

    daniilS

    busy trying to do stuff not done yet
    409
    Posts
    10
    Years
    • Seen Jan 29, 2024
    The offsets 0x02023C5D and 0x02023C5E control the opponent Pokémon's primary and secondary type, respectively.
    Changing them will also change attack effectiveness, and probably also catch rates of balls like the net ball.
     

    Sliter

    Gaijin Trainer
    74
    Posts
    10
    Years
  • I'm with some problens to translate text from platinum, is there any way to export the text files from platinum in separated files for each .bin file in pl_msg.narc ?
    getting in .bin with crystal title I couldn't find a way to open/convert them to xml or editable text
    With thenewpoketext I can only get all the game text in one file(And it make my oldy pc frooze when I want to open), should be better if I could get them apart, like we can see in some editors like in SDSME or Ds text editor but I can't export/import them from there, there's any way?
     

    KosmoF

    Diehard Pokemon Fanatic
    19
    Posts
    15
    Years
  • So editing the Pokemon that is released by the Professor in the games is easy, and I think possible with some tools. However, the cry does not change. Here are some changes that need to be made to change the cry of this Pokemon.

    FireRed:
    Code:
    0812FB38: 02 48
    0812FB42: 30 BD XX XX 00 00

    Do I need to use a Hex Editor to locate the above code? I was trying to find it in Hex Workshop but it doesn't find it when I searched; I've never used Hex Editors so I'm not sure if I'm doing something wrong.
     

    GOLDstandard

    Eclectic
    51
    Posts
    10
    Years
  • Does anybody know how LinkandZelda put the snowy weather effect into Liquid Crystal? I've looked, and can't find anybody that knows how. I hope it's just a limiting byte located somewhere that requires just a simple change
     

    GOLDstandard

    Eclectic
    51
    Posts
    10
    Years
  • No, not the constant tiny snowflakes one, the one that has three snowflakes falling. I know how to apply the volcanic ash snow haha. They made it work for longer than three snowflakes which is something I've never seen done.
     

    Shiny Quagsire

    I'm Still Alive, Elsewhere
    697
    Posts
    14
    Years
  • No, not the constant tiny snowflakes one, the one that has three snowflakes falling. I know how to apply the volcanic ash snow haha. They made it work for longer than three snowflakes which is something I've never seen done.

    I'm pretty sure it's just a limiter, but it could be something a bit more complicated for all we know.
     

    Deokishisu

    Mr. Magius
    990
    Posts
    18
    Years
  • No, not the constant tiny snowflakes one, the one that has three snowflakes falling. I know how to apply the volcanic ash snow haha. They made it work for longer than three snowflakes which is something I've never seen done.

    I haven't used that weather in quite a while (like years) but, if I remember right, the weather is continuous if you walk onto the map from a connection. If I'm remembering, it's the warp that limits it to three snowflakes only.

    Actually, scratch that, it seems that walking onto the map makes the snowflakes last a few seconds longer than when warping, but that's it. Also, it looks like the darkening effect of it lasts longer-than-average (well, compared to the other weathers, I guess) when walking onto a map that has regular weather set. But what would make the visual snow effect last longer when walking onto a map than when warping onto it?
     

    Telinc1

    Weirdo Extraordinaire
    168
    Posts
    10
    Years
  • All right, I've got something here that most of you (a.k.a 90% of you) will find useless. This is actually useful if you are using the second floor of the Pokémon Centre in your hack. I personally am, however I have edited the map to remove the Union Room, as even VBA-Link can't simulate the Wireless Adapter properly. As a result, I have moved the Direct Corner, so when exiting from the Colosseum room/Trade room the little door thing appears in the wrong position. After a bit of searching, I found out that the script ran exactly after the big door closes behind you is at 0x081BB34F. Or, if you're just interested in the setmaptile command, it is at 0x081BC03E. I hope that this is helpful to at least one hacker who isn't me.

    Edit: Oh yeah, I forgot to clarify that these are actual scripts that can be edited with XSE.
     

    kearnseyboy6

    Aussie's Toughest Mudder
    300
    Posts
    15
    Years
    • Seen Jun 22, 2019
    Here is a little BW script that checks as you ride past the daycare man. Just place it on a script tile (var = 4001):

    Spoiler:
     
    Last edited:

    RichterSnipes

    Not even a nibble...
    513
    Posts
    12
    Years
  • The (Un)Used Item Obtained Fanfare
    For BPRE v1.0

    People who've played FR/LG know that the Level Up fanfare also plays any time you obtain an item (unless specified in a scripted event). The offsets that make that so are at 1A6765 and 1A6769. The former's value is that of the tune that plays whenever the XSE parameters MSG_FIND or MSG_OBTAIN functions are called (also, if one finds a hidden item). The latter value is the same, but only applies if the item is a TM or HM.

    Both locations have their bytes as 01 01 in the ROM, which corresponds to song 0x101, the Level Up fanfare. You can change these values to refer to whatever tune you'd like. For the sake of making things feel a bit more correct, let's have the former location use the Item Obtained fanfare (0x102) and the latter location use the TM/HM Obtained fanfare (0x105). For this, change the line of bytes from 1A6763 to 1A676A from

    Code:
    03 31 01 01 03 31 01 01
    to

    Code:
    03 31 [B]02 01[/B] 03 31 [B]05 01[/B]
    Note that this doesn't apply to events that play tunes that are defined in the scripts themselves, like with XSE's "fanfare" command.
     

    Shiny Quagsire

    I'm Still Alive, Elsewhere
    697
    Posts
    14
    Years
  • The (Un)Used Item Obtained Fanfare
    For BPRE v1.0

    People who've played FR/LG know that the Level Up fanfare also plays any time you obtain an item (unless specified in a scripted event). The offsets that make that so are at 1A6765 and 1A6769. The former's value is that of the tune that plays whenever the XSE parameters MSG_FIND or MSG_OBTAIN functions are called (also, if one finds a hidden item). The latter value is the same, but only applies if the item is a TM or HM.

    Both locations have their bytes as 01 01 in the ROM, which corresponds to song 0x101, the Level Up fanfare. You can change these values to refer to whatever tune you'd like. For the sake of making things feel a bit more correct, let's have the former location use the Item Obtained fanfare (0x102) and the latter location use the TM/HM Obtained fanfare (0x105). For this, change the line of bytes from 1A6763 to 1A676A from

    Code:
    03 31 01 01 03 31 01 01
    to

    Code:
    03 31 [B]02 01[/B] 03 31 [B]05 01[/B]
    Note that this doesn't apply to events that play tunes that are defined in the scripts themselves, like with XSE's "fanfare" command.

    Nice find, I remember seeing a post a while back that did this via script and I can't help but remember thinking how much better it would be if it were done via ASM.
     
    3,830
    Posts
    14
    Years
    • Age 27
    • OH
    • Seen Feb 26, 2024
    Reusable TMs in Emerald

    So I was taking a peek through good old reseach and development today when I saw a cute little post about resuable TMs. You know, making TMs act like HMs. After seeing that it had been found on Ruby and FireRed, I thought, why not find it one Emerald? So I did.

    To do this little bad boy, go to 0x1B6EE0 in your Emerald ROM and change the A9 there to 90.
    Simple as that!

    Here's a tiny little explanation for those wondering.

    First, 0x1B6EE0 is this little section of code called when a TM or HM is being used. For simplicity's sake, I'll show what is relevant:

    Code:
    081B6EE0: 20A9 mov r0, #0xA9
    081B6EE2: 0040 lsl r0, r0, #0x1
    081B6EE4: 4284 cmp r4, r0
    081B6EE6: bhi $081B6EF0

    What it does, is first take the number A9, and put it in r0. Then, it takes r0 and left shifts it 1. This is the same as multiplying by 2 (A9 << 1 = A9 * 2 = 152). If one was to look at any item editor, they would see that this is the index of TM50 in Emerald. Then, this new value is compared to r4, which has the index of the TM/HM being used. If this number higher, the game knows that an HM was used, so it goes to the relevant area to keep it.

    This is where we come in. What we want the game to think is that all TMs are the same as HMs. So, what we need to do is change the index it looks for into the index for the first TM, rather than the first HM. So looking at the items, TM01's index is 121. Dividing this by 2 gives 90, so that is why we put 90. The only downside to doing this really is that item 120 is included in this check, which doesn't matter because it's not a TM anyway (it's the Devon Goods). So there ya have it!
     
    1,323
    Posts
    16
    Years
    • Seen Dec 9, 2023
    I made a script that will allow you to choose how many Pokemon you need to have registered in order to receive a diploma.

    Code:
    #dynamic 0x800000
    //notes
    //[buffer1] = the requirement number
    //[buffer3] = how many kinds you currently have
    
    #org @main
    lock
    faceplayer
    call @check
    msgbox @msg1 MSG_YESNO
    compare LASTRESULT 0x0
    if 0x1 goto @noyoumaynot
    setvar 0x8004 0x0
    special2 LASTRESULT 0xD4 //places on var 0x8005 # of Pokemon that you've seen, and on var 0x8006 # of Pokemon that you've caught
    buffernumber 0x2 0x8006 //no idea
    call @check
    compare 0x8006 0xD2 //the second argument should be the amount of Pokemon you're checking for
    if 0x0 goto @notmetreq
    msgbox @msg4 MSG_KEEPOPEN
    waitmsg
    pause 0x3C
    special 0x187
    compare LASTRESULT 0x2
    if 0x1 goto @idk
    special 0x108
    waitstate
    release
    end
    
    #org @idk
    release
    end
    
    
    #org @check
    buffernumber 0x0 0xD2 //the second argument should be the amount of Pokemon you're checking for
    return
    
    #org @noyoumaynot
    msgbox @msg2 MSG_KEEPOPEN
    release
    end
    
    #org @notmetreq
    msgbox @msg3 MSG_KEEPOPEN
    release
    end
    
    #org @msg1
    = Is that right?\pI'm the game designer!\pFilling up your Pokédex is tough,\nbut don't quit!\pMay I check your Pokédex now?
    
    #org @msg2
    = No? Well alright then.\pBut if you fill it out completely,\nplease show me!
    
    #org @msg3
    = So you've recorded data on [buffer3]\ndifferent Pokémon species[.]\pBut there are more in the Kanto\nregion! I'm sure of it!\pCome show me again when you've\nfound more!
    
    #org @msg4
    = So you've recorded data on [buffer3]\ndifferent Pokémon species[.]\pWow! Excellent!\pYou completed your Pokédex!\nCongratulations!\l[.]

    You'll notice that for every time I made a comment saying:
    //the second argument should be the amount of Pokemon you're checking for
    ,
    my second argument is 0xD2.
    0xD2 is hex for 210, which is the amount of Pokemon in my hack's Pokedex.

    So say, if your hack had a Pokedex of 251 Pokemon, then you would put the number 0xFB instead. The game will then check if you have that many Pokemon registered in your Pokedex, and if the number matches, it will reward you with a diploma.

    For some reason it only shows the National Dex diploma which could be a problem if your hack as a regional dex AND a national dex, but it could be solved simply by altering the tilemap. There's also a hack to have it display any image+text combo you want so it's really not a problem.
     
    1,323
    Posts
    16
    Years
    • Seen Dec 9, 2023
    In FireRed, 0x0807F938 controls what level the ghost Marowak battle is. The script on the map doesn't actually determine the level even though it may look like it - if you modify the wildbattle command in the script to a different level, the Ghost/Marowak will still be Lv30 no matter what you do. To change the level, you have to change the byte at 0x0807F938, which is part of the routine that controls the ghost battle.

    1_zps6be2b382.png


    The offset for the whole routine is 0x0807F904.
     

    DoesntKnowHowToPlay

    Tiny Umbrella with Lots and Lots of Good
    265
    Posts
    12
    Years
    • Seen Feb 24, 2024
    The Pickup table in FR is at x250848. Each entry is four bytes- the first two are the index number of an item, the latter two are the odds of the item being obtained plus the value for the previous item.

    For example, to interpret the vanilla FR table:

    8B 00 0F 00 = 15% (xF = 15) chance of Oran Berry (item x8B)
    85 00 19 00 = 10% (x19 - x0F = xA, 10) chance of Cheri Berry (item x85)
    86 00 23 00 = 10% (x23 - x19 = xA, 10) chance of Chesto Berry (item x86)
    87 00 2D 00 = 10% (x2D - x23 = xA, 10) chance of Cheri Berry (item x87)
    88 00 37 00 = 10% (x37 - x2D = xA, 10) chance of Rawst Berry (item x88)
    89 00 41 00 = 10% (x41 - x37 = xA, 10) chance of Aspear Berry (item x89)
    8C 00 4B 00 = 10% (x4B - x41 = xA, 10) chance of Persim Berry (item x8C)
    2A 01 50 00 = 5% (x50 - x4B = x5) chance of TM10 (item x12A)
    45 00 55 00 = 5% (x55 - x50 = x5) chance of PP Up (item x45)

    ...etc. The code responsible for reading this table (and checking if you have pickup, and rolling to see if it even activates at all) starts at x2ce48 (which is also battle script command xE5).
     
    Last edited:
    Back
    Top