• 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

Le pug

Creator of Pokémon: Discovery / Fat Kid
870
Posts
10
Years
  • The equivalent "Infinite Safari Steps" for Emerald appears to be at 0xFC15E. Again, just replace 01 38 with 00 38.
    Emerald doesn't have a visible step counter in the menu to hide either, which is nice I guess.



    If you'd like to "stone Pokemon to death" in Emerald, change the byte at 0x3EF94 from 0x06 to 0x00 as well.

    To go along with this, does anyone have any research on anything else for the Safari Zone for EM? As in the location to change the amount of balls you are rewarded and how to change the locations you end up when your time is up or when you decide to retire?
     
    242
    Posts
    6
    Years
    • Age 30
    • Seen Apr 3, 2023
    This has probably been documented already, but if it's useful for anyone then hey I'm helping...
    For FireRed:

    Messed around with the 'view memory' function in my emulator.

    0x020242D4 is the ram offset for Pokemon in first slot status condition.

    It's one byte (00).
    Changing this gives these effects:
    01 gives you 1 turn of sleep, 02 gives you 2 turns of sleep, etc, the sleep counter persists after battle
    (I guess this is how sleep works in this gen, or side effect of 'unnaturally' inflicting sleep?)
    08 = regular psn (What is badly poison then?)
    09 = psn, but when you go in battle the pkmn will be asleep, but instantly
    wake up
    0A = like 09, except you sleep for one turn. you take psn dmg during that turn.
    0B - 0F same as above, sleep turn increases by one the higher up you go...
    10 = regular burn
    11-17 = same effects as 09-0A but burn instead of psn...
    18 = psn and burned at same time (psn in status screen), no animation/sound
    for taking dmg in-game
    20 = regular freeze, not sure how to alter the chance of defrozt (standard should be 20 % each turn)
    2F = sleep, freeze, psn. Yes, you are frozen when you wake up have fun.
    30 = frozen and burned
    40 = regular paralyz
    99 = double psn, burn
    FF = sleep animation uses psn, you take 2x psn, 1x burn, perhaps you
    are also frozen and prz once you wake up sorry didn't test yet...

    Here's an interesting thing, the next byte after 020242D4, so, D5, you can change this and it will
    affect the 2nd psn damage you take... Idk if it does anything else, maybe it has something to do with badly poison? Ez way to test is to face a wild Pokemon that knows only toxic, Idc enough atm.

    For example: FF FF = 2nd psn tick essentially one shots you
    You can tune the 2nd part down to like 99 and it only does like 50 %...
    I'll make a guide on how to use these things in actual XSE scripts when I feel confident enough,, it's really cool the things you can do just by altering the RAM.
     
    Last edited:
    1,403
    Posts
    10
    Years
    • Seen Apr 29, 2024
    It's one byte (00).
    Changing this gives these effects:
    01 gives you 1 turn of sleep, 02 gives you 2 turns of sleep, etc, the sleep counter persists after battle
    (I guess this is how sleep works in this gen, or side effect of 'unnaturally' inflicting sleep?)
    08 = regular psn (What is badly poison then?)
    09 = psn, but when you go in battle the pkmn will be asleep, but instantly
    wake up
    0A = like 09, except you sleep for one turn. you take psn dmg during that turn.
    0B - 0F same as above, sleep turn increases by one the higher up you go...
    10 = regular burn
    11-17 = same effects as 09-0A but burn instead of psn...
    18 = psn and burned at same time (psn in status screen), no animation/sound
    for taking dmg in-game
    20 = regular freeze, not sure how to alter the chance of defrozt (standard should be 20 % each turn)
    2F = sleep, freeze, psn. Yes, you are frozen when you wake up have fun.
    30 = frozen and burned
    40 = regular paralyz
    99 = double psn, burn
    FF = sleep animation uses psn, you take 2x psn, 1x burn, perhaps you
    are also frozen and prz once you wake up sorry didn't test yet...

    Maybe you've already worked this out, but it seems like this is a bit set.

    Code:
    7 6 5 4 3 2 1 0
    T Z F B P S S S
    
    S: Sleep = 0x01–0x07 = 2^0 + 1–7
    P: Poison = 0x08 = 8 = 2^3
    B: Burn = 0x10 = 16 = 2^4
    F: Freeze = 0x20 = 32 = 2^5
    Z: Paralyze = 0x40 = 64 = 2^6
    T: Toxic = 0x80 = 128 = 2^7

    Thus 0x99 = 0x80 + 0x10 + 0x8 + 0x1, and so 0x99 should be 1 round of poison, 1 round of burn, 1 round of toxic (which I'd expect to be 1/16th, not 1/8th like regular poison?), and 1 turn of sleep.

    IMO it's a weird choice of data structure, because you "can't" have multiple statuses at the same time. The weird effects you see when setting multiple bits must be a result of the game code checking for each one individually (which is interesting, I'd expect it to only do one).
    I also think it's interesting that the second byte contains the toxic counter, but the sleep turns are in the first byte. I assume this is because they behave differently, i.e. sleep doesn't reset on switch but toxic does.
     
    Last edited:
    242
    Posts
    6
    Years
    • Age 30
    • Seen Apr 3, 2023
    Tested some sounds in FireRed, I want to test more but I don't know how to find more sounds, if anyone can help me that's great. After 15A there seems to be no more sounds they all generate silence, so Idk where to go :(

    Spoiler:
     
    Last edited:
    476
    Posts
    6
    Years
    • Age 23
    • Seen Feb 26, 2020
    Disable "The Pokemon Stopped Evolving." [FR]

    FR has a feature that if you attempt to evolve a Pokemon into something not in the Kanto Dex (and you don't have the National Dex), it will mysteriously stop evolving. You could just give the player the National Dex at the beginning of the game, but if you don't want to do that, you can easily disable this.

    Basically, this will turn some conditional jumps into unconditional jumps, and remove some checks. No free space required.

    Code:
    0x08043156: 02 E0
    0x080CE90C: 1C E0
    0x080CF566: 17 E0
    0x08126C26: C0 46 C0 46 C0 46 C0 46
    0x08126C4C: 08 E0

    The code explaining the above byte changes is:

    Spoiler:

    Those offsets do not exist. What am I doing wrong? Are they backwards or smth?! You should show the E X A C T series of numbers I need to type into my hex editor to jump t the right offset, and also show what's there by default so I know I'm at the right place. 0x08043156 is an offset which is 16 times the size of my ROM if I put it in as you've typed it.
     
    Last edited:

    BLAx501!

    Pokemon Flux
    80
    Posts
    10
    Years
  • Those offsets do not exist. What am I doing wrong? Are they backwards or smth?! You should show the E X A C T series of numbers I need to type into my hex editor to jump t the right offset, and also show what's there by default so I know I'm at the right place. 0x08043156 is an offset which is 16 times the size of my ROM if I put it in as you've typed it.

    0x means the number is hexadecimal. 08 is the memory type you are referring to (ROM in this case) and 043156 is the offset on the memory. So if you are using HxD or any other hexadecimal editor, you have to look for 43156 ;)
     
    476
    Posts
    6
    Years
    • Age 23
    • Seen Feb 26, 2020
    0x means the number is hexadecimal. 08 is the memory type you are referring to (ROM in this case) and 043156 is the offset on the memory. So if you are using HxD or any other hexadecimal editor, you have to look for 43156 ;)

    lol I know what 0x means, but that 08 bit made it unclear. "0x08043156" logically means "08043156, but it's hex" nothing about it indicates that it's supposed to be just "43156", so I don't see why he couldn't just put the literal offset - I think it would have been understood that it was hex and whatnot. that "memory type" seems like it was unneeded :P
     

    BluRose

    blu rass
    811
    Posts
    10
    Years
  • lol I know what 0x means, but that 08 bit made it unclear. "0x08043156" logically means "08043156, but it's hex" nothing about it indicates that it's supposed to be just "43156", so I don't see why he couldn't just put the literal offset - I think it would have been understood that it was hex and whatnot. that "memory type" seems like it was unneeded :P
    we include it for consistency with the game itself :)
    various tutorials replace pointers, which must refer to the memory type at the end--reverse pointers, in other terms
    so the game would refer to 0x43156 as 0x08043156, so we decide to represent it as such when referencing any address
     
    476
    Posts
    6
    Years
    • Age 23
    • Seen Feb 26, 2020
    we include it for consistency with the game itself :)
    various tutorials replace pointers, which must refer to the memory type at the end--reverse pointers, in other terms
    so the game would refer to 0x43156 as 0x08043156, so we decide to represent it as such when referencing any address

    That's still really confusing, I don't see why you couldn't just at least include the *actual* offset for people who are just looking for what edit to make and where
     
    41
    Posts
    7
    Years
    • Age 27
    • Seen Dec 16, 2018
    That's still really confusing, I don't see why you couldn't just at least include the *actual* offset for people who are just looking for what edit to make and where

    08 needs to be identified to determine what memory can the offset be found. If you expanded the rom, you would probably need to take a look at 08 part because you need to change it into 09, because again the code is read as that and it refers to the memory. You would not just write 0x43156 because "generally' speaking, it is read as 0x00043156 which is very different from 0x08043156.

    0x00 refers to BIOS
    0x02 refers to WRAM
    0x03 refers to IRAM
    0x04 refers to I/O
    0x05 refers to PALETTE
    0x06 VRAM
    0x07 OAM
    0x08 ROM

    Look at the Visual Boy's Memory as your reference.

    The codes that are provided here are not meant for Hex Editor only.
    In general knowledge, 0x00043156 refers to BIOS.

    Hope this helps you understand why 08 is included.
     
    476
    Posts
    6
    Years
    • Age 23
    • Seen Feb 26, 2020
    08 needs to be identified to determine what memory can the offset be found. If you expanded the rom, you would probably need to take a look at 08 part because you need to change it into 09, because again the code is read as that and it refers to the memory. You would not just write 0x43156 because "generally' speaking, it is read as 0x00043156 which is very different from 0x08043156.

    0x00 refers to BIOS
    0x02 refers to WRAM
    0x03 refers to IRAM
    0x04 refers to I/O
    0x05 refers to PALETTE
    0x06 VRAM
    0x07 OAM
    0x08 ROM

    Look at the Visual Boy's Memory as your reference.

    The codes that are provided here are not meant for Hex Editor only.
    In general knowledge, 0x00043156 refers to BIOS.

    Hope this helps you understand why 08 is included.

    So why not just include a note about it? Like, "here's the technical offset and the offset you should put into a hex editor"
     
    760
    Posts
    15
    Years
    • Seen yesterday
    Because it's more convenient that the person who wants to learn romhacking takes time and effort to learn from tutorials, than for an experienced romhacker to explain himself in a simplified manner.
     
    41
    Posts
    7
    Years
    • Age 27
    • Seen Dec 16, 2018
    So why not just include a note about it? Like, "here's the technical offset and the offset you should put into a hex editor"

    It's so inconvenient to put "here's the technical offset and the offset you should put into a hex editor" note to every research that will be posted here. This is Quick Research Thread actually so if you still have questions, because it has been explained already, you may want to make a thread on Rom Hacking Section.
     
    476
    Posts
    6
    Years
    • Age 23
    • Seen Feb 26, 2020
    It's so inconvenient to put "here's the technical offset and the offset you should put into a hex editor" note to every research that will be posted here. This is Quick Research Thread actually so if you still have questions, because it has been explained already, you may want to make a thread on Rom Hacking Section.

    I was just saying - the post with the offsets made it clear it was meant to help people edit certain locations, so it should have been written in a way convenient for that. That's all I'm saying.
    What I was talking about was more listing the two sets of offsets, *not* literally including your explanation of memory types in each post that has offsets in it
     
    Last edited:
    476
    Posts
    6
    Years
    • Age 23
    • Seen Feb 26, 2020
    Because it's more convenient that the person who wants to learn romhacking takes time and effort to learn from tutorials, than for an experienced romhacker to explain himself in a simplified manner.

    Yes but I learn nothing if I can't understand the offsets. I literally don't care about "memory types", I'm just on this thread to find out what needs to be modified ;)
     
    Last edited:

    destinedjagold

    You can contact me in PC's discord server...
    8,593
    Posts
    16
    Years
    • Age 33
    • Seen Dec 23, 2023
    Yes but I learn nothing if I can't understand the offsets. I literally don't care about "memory types", I'm just on this thread to find out what needs to be modified ;)

    If you can't be bothered to learn about these "memory types" then don't expect others to spoon-feed you either.
     

    DrFuji

    [I]Heiki Hecchara‌‌[/I]
    1,691
    Posts
    14
    Years
  • The first post has been updated (after nearly two years!) with links to almost one hundred informative posts! I love every discovery in this thread and everybody who's helped contribute to the community.

    asm resource thread update coming soon
     

    Lunos

    Random Uruguayan User
    3,114
    Posts
    15
    Years
  • This information seems to be important enough and it's not mentioned in the main post, so I just took the liberty of bringing it here.

    Forcing the Set Battle Style in Fire Red
    haven1433 said:
    For anyone else who's interested - I was able to get in touch with DoesntKnowHowToPlay, who was able to help me.

    In FireRed, starting at 0x1D8727, change 5 bytes to 28 92 87 1D 08. This modifies the battle script to bypass whatever the user set in the Options menu and always act like "Set" mode.
    Source.
     
    82
    Posts
    6
    Years
  • Yes but I learn nothing if I can't understand the offsets. I literally don't care about "memory types", I'm just on this thread to find out what needs to be modified ;)

    08 is required for telling someone what area of the rom it is. If be just put the offset without the memory, what bank would you change? You just use hxd so you don't get access to other Banks but what if he meant 02 which is ram. We hack banks 02, 03 sometimes 04 but mostly 08. So it's pretty much required. If he meant 02 and you changed it in 08, you'd break your game.
     
    476
    Posts
    6
    Years
    • Age 23
    • Seen Feb 26, 2020
    08 is required for telling someone what area of the rom it is. If be just put the offset without the memory, what bank would you change? You just use hxd so you don't get access to other Banks but what if he meant 02 which is ram. We hack banks 02, 03 sometimes 04 but mostly 08. So it's pretty much required. If he meant 02 and you changed it in 08, you'd break your game.

    I think it'd be a safe assumption if he hadn't had the bank listed, but if it's the absolute offset, then you already know that by definition it's by the ROM/bank 08
     
    Back
    Top