• 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
This is indeed interesting, but it would be even more interesting if you used AM1.95, due to the fact that 1.92 is again unable to cope with 32MB romspace :T

~SBird

Well although 1.95 does do that, it isn't stable. http://www.pokecommunity.com/showpost.php?p=7781039&postcount=304
The only 100% bug-free function in 1.95 is the block editor. Otherwise it'll corrupt your ROM slowly. This isn't good for Emerald hackers (you) who want extra space :P
Hence why most successful bug-free hacks use 1.92 instead.
 
10,078
Posts
15
Years
  • Age 32
  • UK
  • Seen Oct 17, 2023
Does anyone have any idea where the 'flash' animation/script/asm routine/special/whatever it is can be found, or how to mimic it? I've scoured around everywhere I can think of, the lack of actual messages when executing flash is preventing me hex-searching the normal way. Anyone know anything?
 
Last edited:

Le pug

Creator of Pokémon: Discovery / Fat Kid
870
Posts
10
Years
Does anyone have any idea where the 'flash' animation/script/asm routine/special/whatever it is can be found, or how to mimic it? I've scoured around everywhere I can think of, the lack of actual messages when executing flash is preventing me hex-searching the normal way. Anyone know anything?

For emerald, you can use the commands lighten and darken and then just set how much you want to be shown. Or if you want a quick flash effect, you can use special 0x13F.

---------------

For anyone who wants to change the preset names that pop up if you leave the naming spots blank and just press enter, I have all the names and their locations in the following spoiler. I also included the intro texts in order by using numbers. Just add it to your A-Text ini if you want to see them in that program but I recommend not using a-text for anything else besides finding texts!

Spoiler:
 
5,256
Posts
16
Years
d8osqZx.png


The Unknown value for Person events below the Pos (X/Y) field appears to control the altitude of the Person event.

Here's what happens in-game when the Unknown value is set to 0 or 3 on a bridge:

yHEiFeK.gif

(Excuse the speed of the .gifs, Photoshop refuses to import anything higher than 500 frames so I had to double the FPS)

This is unideal if you want this NPC to be on top of the bridge, and not below it. However, setting the Unknown byte to 4 results in this:

jBBxrxL.gif


You cannot interact with Person events which are on a different layer to that of the player; this includes stepping in the view radius of a Trainer on a different altitude (in that, the battle will not activate).

For clarification, this is how the bridge's movement permissions are laid out:

4MVFGfP.png


The following values for this Unknown byte lowers the Person event to the corresponding layer (where the layer # is the movement permission number).
Code:
0 - Appears to be Layer C.
1 - Layer 4 (Surfing)
2 - Layer 8 (???)
3 - Layer C (Regular ground)
4 - Layer 10 (appears to work for all layers above this, too (Layer 14, Layer 18, etc.))

If the ground is on layer C, for example, and the Person event has the Unknown value set to 1, for example, the Person event will not display. This could make hiding Person events far easier and flag-efficient, as you could just simply set their altitude to be lower than C, and then make them show with the spritelevelup command (I haven't actually tested that, but it should work, in theory).

It would be safe to assume that the other Unknown values for warps and script events are also this, as they are set to 3 in most cases in vanilla FireRed, too.
 
Last edited:

GoGoJJTech

(☞゚ヮ゚)☞ http://GoGoJJTech.com ☜(゚ヮ゚☜)
2,475
Posts
11
Years
First, I wanna start by saying this does work.

But, you need to use the Advanced Map provided by this link, which should be 1,231 KB.
Mine was 426 KB, and didn't work for this method.

Yes, that is the point of me linking the advanced map and saying to download this advanced map
:D
 
22
Posts
11
Years
  • Seen Jun 14, 2020
What part of the script do I need to remove/add to make Fire Red move tutors reusable? I've seen that Pokémon Glazed managed to do it but because of its expanded size I couldn't open it up and see how it was done.
 

DoesntKnowHowToPlay

Tiny Umbrella with Lots and Lots of Good
265
Posts
12
Years
  • Seen Feb 24, 2024
Ns7oosj.png
82vkSCw.png


XY added a feature that gives experience points when you catch pokemon. To duplicate this in FR, do the following:

Repoint the battle script at x1d9a42 to point to this:

2A 00 68 3D 02 02 05 00 50 9A 1D 08 60 0B 10 0B 01 F1 XX XX XX XX 2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 10 0F 01 3A 2E 82 3E 02 02 00 F2 10 0D 01 3A 2E 82 3E 02 02 00 F3 80 9A 1D 08 F0 13 54 E6 3F 08 12 40 00 28 81 9A 1D 08

where XX XX XX XX is a pointer to:

2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 10 0D 01 3A 2E 82 3E 02 02 00 F3 80 9A 1D 08 F0 13 54 E6 3F 08 12 40 00 28 81 9A 1D 08

To let the player's mons evolve from this experience, replace the bytes at x15A68 with A1 5A 01 08.

Edit: Changed the scripts, I assumed they cut off earlier than they actually did. Should work with full party+no nickname now.
 
Last edited:

Logan

[img]http://pldh.net/media/pokecons_action/403.gif
10,417
Posts
15
Years
Ns7oosj.png
82vkSCw.png


XY added a feature that gives experience points when you catch pokemon. To duplicate this in FR, do the following:

Repoint the battle script at x1d9a42 to point to this:

2A 00 68 3D 02 02 05 00 50 9A 1D 08 60 0B 10 0B 01 F1 XX XX XX XX 2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 10 0F 01 3A 2E 82 3E 02 02 00 F2 10 0D 01 3A 2E 82 3E 02 02 00 F3 80 9A 1D 08

where XX XX XX XX is a pointer to:

2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 10 0D 01 3A 2E 82 3E 02 02 00 F3 80 9A 1D 08

To let the player's mons evolve from this experience, replace the bytes at x15A68 with A1 5A 01 08.
Ahhhh I've been trying to pinpoint how to do this for a few weeks. I finally thought I was getting somewhere but I've been well and truly beaten here. Great find though and a wonderful advancement for ROM Hacking :).
 
1,323
Posts
16
Years
  • Seen Dec 9, 2023
hgIR3F3.png
SGbwSqm.png


XY added a feature that gives experience points when you catch pokemon. To duplicate this in Emerald, do the following:

Repoint the battle script at x2dbd84 to point to this:

2A 00 08 42 02 02 05 00 92 BD 2D 08 60 0B 10 0B 01 F1 XX XX XX XX 2E 90 44 02 02 00 2E AC 40 02 02 00 2E AD 40 02 02 00 23 00 10 0F 01 3A 2E 32 43 02 02 00 F2 10 0D 01 3A 2E 32 43 02 02 00 F3 C2 BD 2D 08 F0 13 7A C9 5C 08 12 40 00 28 C3 BD 2D 08

where XX XX XX XX is a pointer to:

2E 90 44 02 02 00 2E AC 40 02 02 00 2E AD 40 02 02 00 23 00 10 0D 01 3A 2E 32 43 02 02 00 F3 C2 BD 2D 08 F0 13 7A C9 5C 08 12 40 00 28 C3 BD 2D 08

To let the player's mons evolve from this experience, replace the bytes at x3DE7C with B5 DE 03 08.

credit obviously goes to DoesntKnowHowToPlay for doing this first on FireRed lol

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
 
Last edited:
27
Posts
10
Years
  • Age 43
  • Seen Jan 5, 2017
Ns7oosj.png
82vkSCw.png


XY added a feature that gives experience points when you catch pokemon. To duplicate this in FR, do the following:

Repoint the battle script at x1d9a42 to point to this:

2A 00 68 3D 02 02 05 00 50 9A 1D 08 60 0B 10 0B 01 F1 XX XX XX XX 2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 10 0F 01 3A 2E 82 3E 02 02 00 F2 10 0D 01 3A 2E 82 3E 02 02 00 F3 80 9A 1D 08 F0 13 54 E6 3F 08 12 40 00 28 81 9A 1D 08

where XX XX XX XX is a pointer to:

2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 10 0D 01 3A 2E 82 3E 02 02 00 F3 80 9A 1D 08 F0 13 54 E6 3F 08 12 40 00 28 81 9A 1D 08

To let the player's mons evolve from this experience, replace the bytes at x15A68 with A1 5A 01 08.

Edit: Changed the scripts, I assumed they cut off earlier than they actually did. Should work with full party+no nickname now.
Would you mind telling me how you fixed the music that plays after you captured a pokemon?
I made the same feature (though differently: I didn't need to replace the bytes at x15A68), which is almost flawless, if not for the music: it plays the captured pokemon jingle, then the receive exp jingle.
You can check it here: http://pokemonhackersonline.com/showthread.php?t=14839-FR-Pokemons-receive-EXP-after-capturing
 

DoesntKnowHowToPlay

Tiny Umbrella with Lots and Lots of Good
265
Posts
12
Years
  • Seen Feb 24, 2024
I did a sneaky little trick- the script zeroes out the HP of the active pokemon's battle struct. The game then assumes that you died from Explosion and doesn't give experience to the active pokemon, which is what starts the music- however, it nonetheless proceeds to hand it out to the rest of the party, which includes the active pokemon as it wasn't flagged as getting its share earlier.
 
27
Posts
10
Years
  • Age 43
  • Seen Jan 5, 2017
I combined my work with the one from Doesnt. As a result, there are less bytes to write into freespace.
So, here's what to do to give exp points when you catch a pokemon:
1-The bytes to put into freespace: 2E E0 3F 02 02 00 2E 0C 3C 02 02 00 2E 0D 3C 02 02 00 23 00 F1 63 9A 1D 08 28 58 9A 1D 08

2-The bytes to replace at 1D9A53: 41 XX XX XX 08 (XX = pointer to the code above).

3-Just like Doesnt wrote earlier, replace the bytes at 15A68 with A1 5A 01 08.

It should work without problems, as I tested it before posting.

Thanks to Doesnt for telling me how to fix a music issue.
 
Last edited:
275
Posts
9
Years
I want to create custom regional Pokedex in FireRed (not simplify expanding Kanto Dex, but creating a new one). But what with that Second Dex order? I mean, in PGE's ini, there is Second Dex Table offset for BPRE (and all others). In PGE's Pokedex Order Editor there are two orders: first is National, and second (named ????????? there) is Hoenn, because first Pokemon is Treecko and 202th is Deoxys. Are there any ways to replace Kanto Dex with this order?
 
Last edited:

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 30
  • USA
  • Seen Dec 1, 2023
What part of the script do I need to remove/add to make Fire Red move tutors reusable? I've seen that Pokémon Glazed managed to do it but because of its expanded size I couldn't open it up and see how it was done.
Each move tutor will check to see if a specific flag has been set or not before asking the player if he/she wants to teach a Pokémon a certain move. The script for the Mega Punch tutor on Route 4, for instance, will check to see if flag 0x2C4 has been set. That flag will only be set once the move has been taught. Removing those flag checks/sets will allow you to reuse them endlessly.

It's a bit more complicated for the elemental Hyper Beam move tutor, as that involves the use of a special to see if you have the right Pokémon with the right credentials and which of the moves have been already taught. It's a similar concept, though.
 

Shufflejoy

Tutturu!
23
Posts
10
Years
  • Age 29
  • Seen Jan 13, 2015
hgIR3F3.png
SGbwSqm.png


XY added a feature that gives experience points when you catch pokemon. To duplicate this in Emerald, do the following:

Repoint the battle script at x2dbd84 to point to this:

2A 00 08 42 02 02 05 00 92 BD 2D 08 60 0B 10 0B 01 F1 XX XX XX XX 2E 90 44 02 02 00 2E AC 40 02 02 00 2E AD 40 02 02 00 23 00 10 0F 01 3A 2E 32 43 02 02 00 F2 10 0D 01 3A 2E 32 43 02 02 00 F3 C2 BD 2D 08 F0 13 7A C9 5C 08 12 40 00 28 C3 BD 2D 08

where XX XX XX XX is a pointer to:

2E 90 44 02 02 00 2E AC 40 02 02 00 2E AD 40 02 02 00 23 00 10 0D 01 3A 2E 32 43 02 02 00 F3 C2 BD 2D 08 F0 13 7A C9 5C 08 12 40 00 28 C3 BD 2D 08

To let the player's mons evolve from this experience, replace the bytes at x3DE7C with B5 DE 03 08.

credit obviously goes to DoesntKnowHowToPlay for doing this first on FireRed lol

I'm having a problem with this and I'm unsure of how to fix it. Here's the relevant battle script, and the pointer I entered into it.

Capture.PNG


I've also tried formatting the pointer as 60C0EC08, 08ECC061, and 08ECC060. No changes, except for more oddities when I had formatted the pointers differently.

1. If the thrown Pokeball fails, my game freezes.
2. When the Pokemon is caught, Torchic does gain experience, but after the Pokedex information screen, I'm taken to a party select window, with the battle victory music still playing in the background. Torchic is the only Pokemon in the party, and I am unable to exit the window.

At xECC060, I've pasted the second string of bytes exactly as you've posted:

Capture2.PNG


I have also tried omitting the bytes at x3DE7C, with no change.

If anyone could help me figure out what I have done wrong, I'd really appreciate it.
 
Last edited:
116
Posts
16
Years
I'm having a problem with this and I'm unsure of how to fix it. Here's the relevant battle script, and the pointer I entered into it.

Capture.PNG


I've also tried formatting the pointer as 60C0EC08, 08ECC061, and 08ECC060. No changes, except for more oddities when I had formatted the pointers differently.

1. If the thrown Pokeball fails, my game freezes.
2. When the Pokemon is caught, Torchic does gain experience, but after the Pokedex information screen, I'm taken to a party select window, with the battle victory music still playing in the background. Torchic is the only Pokemon in the party, and I am unable to exit the window.

At xECC060, I've pasted the second string of bytes exactly as you've posted:

Capture2.PNG


I have also tried omitting the bytes at x3DE7C, with no change.

If anyone could help me figure out what I have done wrong, I'd really appreciate it.

I was facing the same problem a few days ago. Repoint the battle script at 0x2DBD84 is not means to replace the original one with the new one directly in the address.

Firstly, you can place all the machine code in 0xECC060 like this:
attachment.php


Then replace the two pointers here from 84 BD 2D 08 to 60 C0 EC 08:
attachment.php


attachment.php


Finally, replace the bytes at 0x3DE7C with B5 DE 03 08. It may working properly now.
 
Last edited:
Back
Top