• 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

GoGoJJTech

(☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
2,475
Posts
11
Years
  • I know a few of you were looking for this, but track 83 (53 in hex) plays the low HP sound. Hacking this could mean that we could have BW's low HP song playing as a fanfare.
     
    Last edited:

    Akiba

    [img]http://i.imgur.com/o3RYT4v.png[/img]
    4,262
    Posts
    13
    Years
  • Ah thank you :)

    I didn't realize you could do that with A-Text.

    You can modify any string with A-Text. Just not things that are graphics-based, as the text in those are not alphabet based, but are basically sprites.
     
    3
    Posts
    11
    Years
    • Seen Nov 11, 2015
    Hello,
    I try to reproduce the mew glitch of red/blue/yellow on the gba version by using scripts and ASM:

    So I have one small question: Is it possible to force open the start menu? If it's possible, how?

    Sorry for my bad English, I'm french.
     
    788
    Posts
    17
    Years
    • Age 29
    • Seen yesterday
    Decryption [FR]

    Just for fun, I found the routine that generates the next "Security Key" in FR (U).

    The Security Key (as named by Bulbapedia) is the 32-bit integer that is used to encrypt the quantity of items in the bag and money, and possibly other things, in the RAM, using a simple xor. The security key can be found by getting the pointer at0x0300500C, and adding 0x0F20 to it. It will be at the resultant pointer.

    The final step in its generation is calculated at 0x0804C13C, where it is placed on r4. It will be recalculated every time the map changes, or you exit the bag (and possibly other times too). However, what I was actually interested in was a sort of auto-decryption.

    By making the following change:
    Code:
    0x0804C13C: 00 24

    The Security Key will always be zero. Since xoring with zero is a no-op, the game's attempt to encrypt those values will do nothing. They'll just sit in memory, unencrypted.

    Now, I realize this isn't a particularly useful find, but it might help people identify values when debugging.

    Edit: Oh, and credit to DavidJCobb (or whoever he got it from), as I found the location of the pointer to the Security Key from his Fire Red RAM Map.

    DMA Negation [FR]

    I'm calling this "negation", rather than "disabling" because the game still continues to load and store the DMA-protected data, it's just that the next pointer will always be the same, so it stays in the same place.

    Existing routines will continue to work, as the pointers to the DMA-protected data are still being written correctly, it's just that, since nothing moves, following them is unnecessary - you can just read from the DMA-protected data's new static locations.

    The following table of offsets is copied from DavidJCobb's Fire Red RAM Map, only with their new static locations:

    Spoiler:

    To use this, all you need to do is:
    Code:
    0x0804C064: 00 21

    Any old saves will have their data moved to its new static location as soon as the DMA routine is loaded, which happens quite often - at least each time a map loads. Any new saves will default to these locations and never deviate. After verifying that the given static locations are possible on a clean ROM, this essentially guarantees that disabling the DMA in this way will not cause problems.

    Again, this is for Fire Red (U).

    Misc
    The amount of money the player has is stored at [0x3005008] + 0x290. It's encrypted by the security key.

    A copy is stored at 0x02000490, but changing it doesn't affect anything. I'm not certain if it's always at 0x02000490, or if that was a consequence of my DMA Negation, as I didn't bother to check.
     
    Last edited:
    16
    Posts
    11
    Years
    • Seen Nov 1, 2014
    Is there any way to expand the amount of pokemon in a hack? I would like to have more ?????-like Pokemon (the ones that appear between Celebi and Treecko) without Pokedex entries. Really, I only need these pokemon to have a sprite, type data, and an ability each.
     

    MrDollSteak

    Formerly known as 11bayerf1
    858
    Posts
    15
    Years
  • I'm here to pose a few questions.

    In the Pokedex Screen in the second page of information, there is a map of Kanto
    where wild Pokemon Locations pop up.

    I've found how to change the picture itself.
    Navigate to roughly 309 in unLZ and replace the image there with your own image.

    However I am having trouble seeing how the map loads the red ovals to fit on routes
    in terms of both size of the oval and the location.

    There must be a routine somewhere that searches for the Pokemon amongst Wild Pokemon
    data and then puts red dots onto the relevant X Y positions for each map. I will in the
    mean time try and find the X Y positions of the routes based upon the dimensions of the
    map, and knowledge of the way in which the world map is structured.

    However I would also like to know if anyone has discovered this information earlier,
    which would make my research redundant, and as such would be very welcome.

    Another question would be, if someone has found the way in which the wild pokemon data
    is checked to see if it is present on map banks, would it be possible to repoint this in someway
    to include extra maps? or Day/Night related views, eg. If it were night, it would only show
    Pokemon that are present in the Night Wild Pokemon Data.
     

    Alice

    (>^.(>0.0)>
    3,077
    Posts
    15
    Years
  • I'm just now getting into hex editing, and the more in depth ROM hacking stuff, and I've been looking at how maps are stored in the ROM. I've learned quite a lot, but I wasn't able to do one thing I was really hoping I could. Is it not possible to write bytes of maps to change tiles in game? It seemed like it would be easier than having a level script to change the tiles every time you enter the map. (Which might not actually be necessary, I've been scripting for all of 2 days, so I very well may be over complicating it, not sure.)
    I also tried rewriting the sound ID of a sound command to see if the next time that script was called the sound would be different, and it didn't change, so I'm guessing this isn't possible, but I thought I'd ask and see if anyone knew anything about it, and if there was a way to do it.
     

    redriders180

    Mastermind of Pokemon Glazed
    314
    Posts
    13
    Years
  • So, I'll post my just-now finding, but I don't know if it's been posted yet. For Emerald, it's very easy to script a wild battle where the foe tries to flee. Simply use setwildbattle to set the Pokemon's species, level, and held item, then callasm 0xB072D, followed by waitstate. Simple as that ^_^
     
    91
    Posts
    14
    Years
    • Seen Feb 22, 2023
    Has anyone ever researched the ability of using moves outside of battle? Like is that just a thumb routine to be executed and how does one find it? I wondered if I was able to extend this, i mean it is easy to use attacks in scripts etc. but i'm looking for the attacks you can choose from the pokemon menu. (Like the HMs, dig, etc.)
    I am thinking of it just being a basic thumb routine.
    I don't care for the game version btw. at the moment, I would be happy if someone would have any data I would research myself for german rom versions anyways and I don't think there is any big difference between FR/LG and RSS.

    ~SBird
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • Has anyone ever researched the ability of using moves outside of battle? Like is that just a thumb routine to be executed and how does one find it? I wondered if I was able to extend this, i mean it is easy to use attacks in scripts etc. but i'm looking for the attacks you can choose from the pokemon menu. (Like the HMs, dig, etc.)
    I am thinking of it just being a basic thumb routine.
    I don't care for the game version btw. at the moment, I would be happy if someone would have any data I would research myself for german rom versions anyways and I don't think there is any big difference between FR/LG and RSS.

    ~SBird

    This will be a feature of Jambo51's 649 patch once it is released. Until then, who knows.:p
     

    GoGoJJTech

    (☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
    2,475
    Posts
    11
    Years
  • Used flags:
    Fire Red
    Spoiler:


    Emerald
    Spoiler:
     
    106
    Posts
    15
    Years
    • Seen May 29, 2019
    Now this has probably posted before but I couldn't find it and it seems like a fun feature: Riding pokémon like in the upcoming games.

    I'm not too well versed with programming but my idea is as follows:

    My idea would be to have a bit for each pokémon that determines whether it is "ridable" or not. On the menu where you can view the pokémon's stats, held item etc there would be a check for this bit and if it is the value that means its ridable a ride option would appear, if not it wouldn't. Once selected the appropriate overworld would be loaded determined by something unique to each pokemon (id number?) and all would be great. Obviously going through this step everytime you want to ride a pokémon would be tedious so this feature could replace the bike. The last pokemon you rode could be stored somehow so when you press select the game would look to see if that pokémon was in your party and if not it would just load the regular bike sprite.

    There would need to be a lot of custom overworlds made but the HGSS pokemon overworlds could be used for now.

    As I said previously I'm not familiar with coding so various details could be wrong/far more complicated than I made out.

    Something similar could be done with surf I guess.

    Has anyone considered/attempted this before? I do think it would make a very interesting feature.
     

    karatekid552

    What happens if I push it?....
    1,771
    Posts
    11
    Years
  • Now this has probably posted before but I couldn't find it and it seems like a fun feature: Riding pokémon like in the upcoming games.

    I'm not too well versed with programming but my idea is as follows:

    My idea would be to have a bit for each pokémon that determines whether it is "ridable" or not. On the menu where you can view the pokémon's stats, held item etc there would be a check for this bit and if it is the value that means its ridable a ride option would appear, if not it wouldn't. Once selected the appropriate overworld would be loaded determined by something unique to each pokemon (id number?) and all would be great. Obviously going through this step everytime you want to ride a pokémon would be tedious so this feature could replace the bike. The last pokemon you rode could be stored somehow so when you press select the game would look to see if that pokémon was in your party and if not it would just load the regular bike sprite.

    There would need to be a lot of custom overworlds made but the HGSS pokemon overworlds could be used for now.

    As I said previously I'm not familiar with coding so various details could be wrong/far more complicated than I made out.

    Something similar could be done with surf I guess.

    Has anyone considered/attempted this before? I do think it would make a very interesting feature.

    This would be interesting. I'm imagining more of a hack of the surf routine for this.... Just run that whole routine the same, but make the image change.
     
    Back
    Top