• 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?".
  • Forum moderator applications are now open! Click here for details.
  • Welcome to PokéCommunity! Register now and join one of the best places on the 'net to talk Pokémon and more! Community members will not see the bottom screen advertisements.
  • Want to share your adventures playing Pokémon?
    Check out our new Travel Journals forum for sharing playthroughs of ROM Hacks, Fan Games, and other Pokémon content!
  • IMPORTANT: Following a takedown request, the following hacks have been delisted from PokéCommunity:

    • Pokémon Glazed
    • Pokémon: Giratina Strikes Back
    • Pokémon Flora Sky
    • Pokémon Stranded
    The downloads and discussion threads for these hacks will no longer be accessible, and staff will be unable to return questions regarding accessing this content.

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
12
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
10
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