• 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

112
Posts
8
Years
    • Seen Mar 15, 2024
    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.
    Hi there nice find, I was wondering if you stumbled upon more of those animations?

    There's the return/frustration animation changes, ice Ball, solar beam and some others...
     
    Last edited:

    Konekodemon

    The Master of Pokemon Breeding
    2,074
    Posts
    17
    Years
    • Age 39
    • NC
    • Seen Nov 20, 2023
    I have been wondering something. The 3DS has been out for awhile now. Has anyone figured out how to hack 3DS games yet?
     
    25
    Posts
    8
    Years
  • There is a table for box wallpapers in 0x3D2A10
    12 bytes for entry, in this format:
    (TILESET POINTER) (TILEMAP POINTER) (HEADER PALLETE POINTER)
    The box pallete is immediately after the header one, so don't have an entry on the table.

    The offsets for each tileset, tilemap and pallete related to box wallpapers:
    Spoiler:
     

    Delta231

    A noob
    681
    Posts
    7
    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

    C1F5E8 and C1F76C are for double wild battles and C1F8E8 is for safari zone.
     

    Wobb

    Wynaut
    331
    Posts
    11
    Years
  • Pickup (Diamond/Pearl/Platinum)
    And I found offsets for the Pickup thing. I don't think someone found it already..
    Anyway, here's a picture. (Why do I keep making pictures? :( Everyone else writes lots of words..)
    Spoiler:
     
    Last edited:

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • EDIT: So apparently, as discovered by Tlachtli, if you level up from experience while catching a Pok?mon that hasn't yet been recorded to the Pok?dex, then the Pok?dex screen will have the text displayed in the wrong X-position offset. I'll look into it eventually

    Did anyone ever fixed that, aside from the Battle Engine Upgrade?
     
    14
    Posts
    11
    Years
  • Ever dreamed about disabling the stat boosts provided by badges? Here is how you can disable them in FireRed:

    Write 00 20 at the following offsets: 0x14E1A, 0x14F02 (both for Speed), 0x3EE24 (Attack), 0x3EE56 (Defense), 0x3EE8C (Sp. Attack) and 0x3EEC4 (Sp. Defense).

    I've also found a similar method for Emerald, but only currently for Speed: you write 00 20 at the offsets 0x3D052 and 0x3D13E.

    Explanation:
    Spoiler:
     
    Last edited:

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • The following offsets are for Pokémon Emerald (U).
    In the offset 080308AC you can replace "B1 08" with "91 10" to skip the whole intro except for the name selection.
    Naturally, you're gonna be forced to use the male main character.
    2017-12-11_10-31-58.gif


    Otherwise, if you also want to skip the name selection, you can replace "B1 08" with "31 16" instead.
    The ASM Routine that allows you to give the playable character a name is located at 08031090.
    So using callasm 0x8031091 in a script will allow you to name him.
    The problem with this is that setting the name plays the whole scene inside the truck.
    p7Iw8UX.gif


    The offsets of the different ASM Routines that as a whole composes the Professor's Intro are:
    08031104: This one is executed after setting the character's name.
    08031144: The game runs this one a lot of times after the previous one.
    08031188: This one runs until you answer the Yes/No question about your character's name.
    08031220: The game runs this one a lot of times after answering "Yes".
    08031258: This one runs after the game stops executing the previous routine.
    0803133C: This one runs while Birch talks to you after setting your name.
    080313E4: This one makes the Professor dissappear.
    080314C4: This one draws the main character's sprite.
    08031580: This one handles the sprite while it fades and slowly becomes an Overworld sprite.
    080316BC: This one runs after the previous one.
    08031630: The last routine, it makes the game begin and sets the playable character in the beginning map, Inside the Truck.

    These offsets were found by Samu from Wahackforo right here.

    EDIT: Samu completed his research and here's the result.
    To skip the introduction entirely, including that one small glimpse of it (the 3 green bars from the background), you can write the bytes "31 16" in 08030440.
    If you want to give a name to your playable character, there's a better ASM Routine than the one previously mentioned which is the callasm 0x80E5075. This is the result.
    2017-12-12_09-43-27.gif


    Alternatively, if you want to skip the whole intro but don't want to skip the name selection, then you just have to write the bytes "91 10" in 08030440 and "31 16" in 08031100.
    2017-12-12_09-49-05.gif


    Also, Samu added a lot more of information on the Routines that composes the Intro.
    In this post I only mentioned 11 routines, but he added 21 more!
    So yeah, Professor Birch's introduction apparently uses 32 ASM Routines in total.
    The details are in his post at Wahack which I linked up, if anyone's curious enough.
     
    Last edited:
    113
    Posts
    9
    Years
    • Seen Aug 3, 2023
    The table for pokeball capture chance rate is located at 0x0831C48D in Pokemon Emerald. That being said, does anybody know how the data is arranged?
     

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • gen 6 exp share system (FR)

    Just make the byte changes
    21C3A - 02 21
    21CD0 - 01 22
    21D70 - 01 20
    gen vi exp share system (em):

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

    ok this should be finalized
    no more crap from me ahaha
    Is there a way to block the Pokémon Eggs from getting exp. points though?
     
    146
    Posts
    11
    Years
    • CO
    • Seen Mar 16, 2023
    Hello all,
    Trying to make a max low friendship evolution (happiness between 0-10).
    But as I am just not used to the decrypt and encrypt functions.
    Not to mention having to brush up on all I had forgot.

    At the moment it just resets the game and nothing more.
    I have been at this for 5+ hours and decided it was time to ask for some help...

    Code:
    .text
    .align 2
    .thumb
    .thumb_func
    .global loathFriendship
    
    main:
    push {r0-r7, lr}
    add r0, r6, r7
    lsl r0, r0, #0x3
    add r0, r2, r0
    add r3, r0, r3
    ldrb r2, [r3, #0x2]
    mov r0, r8
    bl decrypt
    ldr r6, [r2]
    ldr r6 , [r6]
    ldrb r6, [r6, #0x9]
    cmp r6, #0x10
    bls max_lowhappy
    b exit
    
    max_lowhappy:
    mov r10, r3
    pop {r0-r7}
    mov r1, r10
    add r1, #0x2
    ldr r0, evolution_loc
    bx r0
    
    exit:
    pop {r0-r7}
    ldr r0, no_evo
    bx r0
    
    decrypt: 
    push {r0-r7}
    mov r1, #0x20
    ldr r2, decryptpoke
    bx r2
    
    .align 2
    no_evo: .word 0x08043111
    evolution_loc: .word 0x0804310D
    decryptpoke: .word 0x0803FBE9

    Any advice would be much appreciated...
    I was up for 5 hours last night working on this...
    Too much time wasted an nothing to show for it hahahaha which is why I broke and game for help.



    Update:

    So after more testing and rewriting I came to this:
    Code:
    .text
    .align 2
    .thumb
    .thumb_func
    .global loathFriendship
    
    main:
    push {r0-r7}
    add r0, r6, r7
    lsl r0, r0, #0x3
    add r0, r2, r0
    add r3, r0, r3
    ldrb r2, [r3, #0x2]
    mov r0, r8
    bl decrypt
    mov r11, r0
    pop {r0-r7}
    mov r1, r11
    cmp r1, #0x10
    blo max_lowhappy
    b exit
    
    max_lowhappy:
    mov r10, r3
    pop {r0-r7}
    mov r1, r10
    ldr r0, evolution_loc
    bx r0
    
    exit:
    pop {r0-r7}
    ldr r0, no_evo
    bx r0
    
    decrypt: 
    push {r0-r7}
    mov r1, #0x20
    ldr r2, decryptpoke
    bx r2
    
    .align 2
    no_evo: .word 0x08043111
    evolution_loc: .word 0x0804310D
    decryptpoke: .word 0x0803FBE9

    I call it the LoathFriendship evolution.
    Requires Pokemon Happiness to be between 0-10.
    To add it use this thread
     
    Last edited:

    MrDollSteak

    Formerly known as 11bayerf1
    858
    Posts
    15
    Years
  • A quick edit to the IV System that will basically automatically set all wild Pokemon IVs to 30 or 31. I originally found it based on some original findings by azurile13 to set all IVs to 31 only.

    EDIT: Wait it isn't quite that simple unfortunately, will need branching to handle probably.

    Fire Red
    Spoiler:


    Emerald
    Spoiler:
     
    Last edited:
    239
    Posts
    8
    Years
    • Seen Apr 15, 2024
    [FR] Ride your bike anywhere (even indoors)

    write 01 20 C0 46 at 0x55ca0

    Note: I don't think this changes cycling road, but I haven't extensively tested. This also means potential bugs.
     
    Back
    Top