• 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

50
Posts
9
Years
    • Seen Jan 18, 2017
    [UNTESTED. MIGHT NOT WORK BECAUSE OF FUNCTION DIFFERENCES (SPECIFICALLY THE FIRST ADDRESS, THE OTHER TWO LOOK FINE), BUT AT LEAST ADDRESSES FOR THE MODIFICATIONS ARE RIGHT.]
    gen vi exp share system (em):

    4A4BE - 02 21
    4A594 - 01 22
    4A634 - 01 20

    Sorry for the ruby
     

    destinedjagold

    You can contact me in PC's discord server...
    8,593
    Posts
    16
    Years
    • Seen Dec 23, 2023
    Sorry for the ruby

    Here's one for Ruby.
    Code:
    [B]08020280[/B] 004A1047[COLOR="Red"]XXXXXX[/COLOR]08
    [B]080201E2[/B] 02 21
    [B]08020336[/B] 01 20

    XXXXXX should be the address +1 of this ASM routine...
    Spoiler:

    It checks your bag if you have the Exp. Share. If you do, then your team will each get 50% of the experience (I suggest you turn your Exp. Share into a Key Item if you want to apply this into your Ruby hack but I really suggest you either hack Emerald or FireRed instead...). The experience gain is reduced to 50%, regardless if you have the item and who's active during the battle. (It's why I decided to remove the feature in the next beta of my hack.)

    Credits go to Andrea.
     
    50
    Posts
    9
    Years
    • Seen Jan 18, 2017
    Here's one for Ruby.
    Code:
    [B]08020280[/B] 004A1047[COLOR="Red"]XXXXXX[/COLOR]08
    [B]080201E2[/B] 02 21
    [B]08020336[/B] 01 20

    XXXXXX should be the address +1 of this ASM routine...
    Spoiler:

    It checks your bag if you have the Exp. Share. If you do, then your team will each get 50% of the experience (I suggest you turn your Exp. Share into a Key Item if you want to apply this into your Ruby hack but I really suggest you either hack Emerald or FireRed instead...). The experience gain is reduced to 50%, regardless if you have the item and who's active during the battle. (It's why I decided to remove the feature in the next beta of my hack.)

    Credits go to Andrea.

    Muchas gracias :), perdonen las molestias.


    Thank you very much :), sorry for the inconvenience.
     
    352
    Posts
    7
    Years
    • Seen Mar 10, 2022
    Constant Base Power For Hidden Power [FR]

    Starting with XY, Hidden Power's base power was fixed at 60. Prior to this, it varied between 30 and 70, based on the Pokemon's IVs. To force the game to read the base power from the move data table, null out the strh at 0x0802B722.

    Basically, replace:
    Code:
    0x0802B722: 28 80
    with:
    Code:
    0x0802B722: C0 46

    After you've done that, HP will use the base power in the table as its base power. Unfortunately, in a vanilla FR it is listed as 0x01, so it will be very weak until you change it. Change the byte at 0x8251721 to 0x3C to give it a base power of 60 (as in XY).

    This effects both the actual damage calculation and when you view the Known Moves screen.

    (Not So) Hidden Power [FR]

    By default, Hidden Power will always display as a Normal-type move. By modifying the routines for displaying the types of moves, we can force it to display as the actual type.

    Unlike the earlier parts of this post, this requires some free space. Here's the code:

    Spoiler:

    And, this is what it looks like already assembled:
    Code:
    F8 B4 77 46 88 00 C9 00 40 18 27 49 09 18 88 78 0A 78 87 2A 0A D1 28 78 40 00 21 49 40 18 00 78 64 21 48 43 1F 49 40 18 00 F0 1B F8 BE 46 F8 BC 1A 49 08 47 F9 B4 77 46 90 00 D1 00 40 18 40 19 81 78 02 78 87 2A 08 D1 1A 48 00 68 32 21 09 02 90 31 40 18 00 F0 05 F8 01 1C BE 46 F9 BC 14 4A 10 47 F0 B5 06 1C 00 24 00 27 10 4D 09 E0 30 1C 27 21 C9 19 00 F0 10 F8 01 21 08 40 B8 40 04 43 01 37 06 2F F3 D1 0F 20 60 43 3F 21 06 DF 08 28 00 D3 01 30 01 30 F0 BD 28 47 C0 46 8F 09 03 08 CE 3B 02 02 84 42 02 02 04 0C 25 08 E9 FB 03 08 D7 68 13 08 40 B1 03 02

    As usual, insert it at an offset ending in 0x0, 0x4, 0x8, or 0xC. For simplicity, I'll refer to this offset as A.

    Now, we need to modify the routines to call this new code. There are two places to modify.

    Code:
    0x08030984: 00 48 00 47 xx xx xx xx
    Code:
    0x081368CC: 00 49 08 47 yy yy yy yy

    The x's are A + 0x01, in reverse hex, while the y's are A + 0x35, also in reverse hex.

    This affects the type icons on the party menu (as well as when learning a new move), and the type listed when selecting an attack.

    This does not affect the type displayed by the TM Case. As that's not associated with a particular Pokemon, it just reads the type from the move data table. I actually suggest changing Hidden Power's entry in the table to be ???-type (change the byte at 0x08251722 from 0x00 to 0x09), so it will show as that in the TM Case, and the actual type everywhere else.

    I didn't bother to force it to calculate and display the base power for Hidden Power, as I prefer the constant base power anyway, but if this was any indication, it would be pretty easy to do.

    I've found a problem, when I use this routine, the moves types in-battle shows 99999999... or nothing. For someone who found this problem, you probably have repointed the move data, simply change the offset of "move_data: .word 0x08250C04" to your move data offset.
     
    534
    Posts
    11
    Years
    • Age 26
    • Seen Jul 24, 2023
    Here's one for Ruby.
    Code:
    [B]08020280[/B] 004A1047[COLOR=Red]XXXXXX[/COLOR]08
    [B]080201E2[/B] 02 21
    [B]08020336[/B] 01 20
    XXXXXX should be the address +1 of this ASM routine...
    Spoiler:

    It checks your bag if you have the Exp. Share. If you do, then your team will each get 50% of the experience (I suggest you turn your Exp. Share into a Key Item if you want to apply this into your Ruby hack but I really suggest you either hack Emerald or FireRed instead...). The experience gain is reduced to 50%, regardless if you have the item and who's active during the battle. (It's why I decided to remove the feature in the next beta of my hack.)

    Credits go to Andrea.
    Any idea on how to do this for FR? Because the one posted earlier does not check for Exp. Share when distributing Exp. Points. ;-;
     
    22
    Posts
    8
    Years
  • The Shedinja's evolution was fixed but not registering on Pokédex.

    Ok, I think I found the issue. At CE858 change 54 44 to 00 00

    Spoiler:


    Do the same thing for Emerald at 13E4EC.
     
    352
    Posts
    7
    Years
    • Seen Mar 10, 2022
    Ok, I think I found the issue. At CE858 change 54 44 to 00 00

    Spoiler:


    Do the same thing for Emerald at 13E4EC.

    Thanks man, it worked fine. xD
     
    50
    Posts
    9
    Years
    • Seen Jan 18, 2017
    port addresses
    i can do it in like 7 hours when i get home

    Great, i imagine that you could also export a, still thanks for helping us with these routine :), and clearly I do not ask to be exported by an Em, so there is no confusion :)
     

    BluRose

    blu rass
    811
    Posts
    10
    Years
  • Great, i imagine that you could also export a, still thanks for helping us with these routine :), and clearly I do not ask to be exported by an Em, so there is no confusion :)
    check out this convo between blackwhiterobin and i to check progress. we just need two more addresses ported, and they are in the routine itself. if worst comes to worst, we can just port the ruby routines themselves, i'd imagine that that wouldn't be too difficult ahaha. vba's disassembly feature helps out a bit for getting a ruby version of things in fire red, this is not much to go off of

    oh and if there's an idb of ruby then why the would i be saying this ahaha
    someone might wanna check out the addresses in the routine that i already found because one of them was pretty sketchy i think

    en español (no porque no puedes leer el ingles, porque quiero practicar y mejorar mi español)
    Spoiler:
     
    50
    Posts
    9
    Years
    • Seen Jan 18, 2017
    check out this convo between blackwhiterobin and i to check progress. we just need two more addresses ported, and they are in the routine itself. if worst comes to worst, we can just port the ruby routines themselves, i'd imagine that that wouldn't be too difficult ahaha. vba's disassembly feature helps out a bit for getting a ruby version of things in fire red, this is not much to go off of

    oh and if there's an idb of ruby then why the would i be saying this ahaha
    someone might wanna check out the addresses in the routine that i already found because one of them was pretty sketchy i think

    en español (no porque no puedes leer el ingles, porque quiero practicar y mejorar mi español)
    Spoiler:

    Thank you very much, I really thought I would not answer haha ​​xD, I'm looking forward to finishing your work and sorry if I can not help too much. I'm very new in hexadecimal and I do not know anything about asm.
     
    1
    Posts
    7
    Years
    • Seen Nov 21, 2016
    Spoiler:
     

    LCCoolJ95

    Limited Capacity
    638
    Posts
    14
    Years
  • check out this convo between blackwhiterobin and i to check progress. we just need two more addresses ported, and they are in the routine itself. if worst comes to worst, we can just port the ruby routines themselves, i'd imagine that that wouldn't be too difficult ahaha. vba's disassembly feature helps out a bit for getting a ruby version of things in fire red, this is not much to go off of

    oh and if there's an idb of ruby then why the would i be saying this ahaha
    someone might wanna check out the addresses in the routine that i already found because one of them was pretty sketchy i think
    Hello, just wondering how this is going!
     

    BluRose

    blu rass
    811
    Posts
    10
    Years
  • Hello, just wondering how this is going!
    research/small tangent about how this was originally going
    Spoiler:


    - - - - - - - - -
    Andrea's Gen VI Exp. Share
    - - - - - - - - -

    Credits to Andrea~ and The_Learner

    bpre:
    Spoiler:
    bpee:
    Spoiler:
    have a nice day, this took way too long <3
     
    Last edited:
    534
    Posts
    11
    Years
    • Age 26
    • Seen Jul 24, 2023
    Spoiler:
    it's just a matter of finding the rough same in fire red at the moment, specifically 20274. haven't even started on the other routine because all of this was really done this morning (shhhhhhh)

    EDIT: accidentally disassembled the other routine referenced that we haven't found as well while disassembling what the first one references :P
    coolio. meanwhile, i'm actually going to check out one of the other routines because really it doesn't seem equal ahaha

    EDIT: ok i'm ****ing dumb
    Code:
    branch point AXVE:  
            20280
    return point AXVE:  
            2028C (notice how it's literally branch +0xC)
    
    branch point BPRE:  
            21CCE
    return point BPRE: (one of what we're looking for)
            21CDA
    
    return point 2 AXVE:
            202A0
    return point 2 BPRE: (other of what we're looking for)
            21CE8
    magically, when looking it up in IDB, almost everything matches! imagine that :):):):):):):):):):):):):)
    here's bpre's routine, credits to andrea~ and the_learner (for making it relatively easy to find two addresses; he already found them). i did practically nothing except be stupid and look for something that was literally right under my nose the whole time
    as usual, untested
    Spoiler:
    and because lccoolj95's going to ask for it, bpee (still untested):
    Spoiler:
    have a nice day, this took way too long <3
    Tested EM's. Game restarts right before receiving experience points with or without EXP. Share Item. I've yet to test FR's. (And this breaks my heart.)
     

    BluRose

    blu rass
    811
    Posts
    10
    Years
  • Tested EM's. Game restarts right before receiving experience points with or without EXP. Share Item. I've yet to test FR's. (And this breaks my heart.)
    lol ok i'll have to adjust it. likely because different registers are (probably) used for the check-item routine across all three versions, and i honestly only found it because the checkitem script command references it in each version
    report back with fr, please <3

    EDIT: i'll do fr, but how done i was yesterday shines through in that i didn't even tell to make the pointer aligned. :P

    EDIT2: works here after a few byte changes to my byte changes were made to made. updating post

    EDIT3: works in em after doing the same byte changes.

    happy hacking!
     
    Last edited:
    788
    Posts
    17
    Years
    • Seen yesterday
    Powder Jar [FR]

    The amount of berry powder is stored in a byte at [0x300500C] + 0xAF8. It's referred to as field_af8. It is encrypted via the Security Key.

    In finding this, I found a function at 0x0815EE3C which takes a pointer and decrypts what it points to with the Security Key.
     
    Last edited:
    3,830
    Posts
    14
    Years
    • Age 27
    • OH
    • Seen Feb 26, 2024
    Door Animation Format

    Door animations follow a very simple 12-byte format, which I'm sharing for anyone that needs a reference.

    Code:
    | Offset  | Type          | Notes                            |
    |------------------------------------------------------------|
    | 0-1     | Tile index    |                                  |
    | 2       | Sound flag    | 00 = door, other = sliding door  |
    | 3       | Tile flag     | 00 = one tile, other = two tiles |
    | 4-7     | Image         | pointer, uncompressed            |
    | 8-11    | Palette       | pointer                          |

    The data is stored in tables, and can be found at the following offsets:
    Code:
    AXVE: 30F9B4
    AXPE: 30F944
    BPRE: 35B5D8
    BPGE: 35B5B8
    BPEE: 497174
     
    Back
    Top