• 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

50
Posts
9
Years
  • Age 30
  • Seen Jan 18, 2017
[UNTESTED. MIGHT NOT WORK BECAUSE OF FUNCTION DIFFERENCES (SPECIFICALLY THE FIRST ADDRESS, THE OTHER TWO LOOK FINE), BUT AT LEAST ADDRESSES FOR THE MODIFICATIONS ARE RIGHT.]
gen vi exp share system (em):

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

Sorry for the ruby
 

destinedjagold

You can contact me in PC's discord server...
8,593
Posts
16
Years
  • Age 33
  • Seen Dec 23, 2023
Sorry for the ruby

Here's one for Ruby.
Code:
[B]08020280[/B] 004A1047[COLOR="Red"]XXXXXX[/COLOR]08
[B]080201E2[/B] 02 21
[B]08020336[/B] 01 20

XXXXXX should be the address +1 of this ASM routine...
Spoiler:

It checks your bag if you have the Exp. Share. If you do, then your team will each get 50% of the experience (I suggest you turn your Exp. Share into a Key Item if you want to apply this into your Ruby hack but I really suggest you either hack Emerald or FireRed instead...). The experience gain is reduced to 50%, regardless if you have the item and who's active during the battle. (It's why I decided to remove the feature in the next beta of my hack.)

Credits go to Andrea.
 
50
Posts
9
Years
  • Age 30
  • Seen Jan 18, 2017
Here's one for Ruby.
Code:
[B]08020280[/B] 004A1047[COLOR="Red"]XXXXXX[/COLOR]08
[B]080201E2[/B] 02 21
[B]08020336[/B] 01 20

XXXXXX should be the address +1 of this ASM routine...
Spoiler:

It checks your bag if you have the Exp. Share. If you do, then your team will each get 50% of the experience (I suggest you turn your Exp. Share into a Key Item if you want to apply this into your Ruby hack but I really suggest you either hack Emerald or FireRed instead...). The experience gain is reduced to 50%, regardless if you have the item and who's active during the battle. (It's why I decided to remove the feature in the next beta of my hack.)

Credits go to Andrea.

Muchas gracias :), perdonen las molestias.


Thank you very much :), sorry for the inconvenience.
 
352
Posts
7
Years
  • Age 30
  • Seen Mar 10, 2022
Constant Base Power For Hidden Power [FR]

Starting with XY, Hidden Power's base power was fixed at 60. Prior to this, it varied between 30 and 70, based on the Pokemon's IVs. To force the game to read the base power from the move data table, null out the strh at 0x0802B722.

Basically, replace:
Code:
0x0802B722: 28 80
with:
Code:
0x0802B722: C0 46

After you've done that, HP will use the base power in the table as its base power. Unfortunately, in a vanilla FR it is listed as 0x01, so it will be very weak until you change it. Change the byte at 0x8251721 to 0x3C to give it a base power of 60 (as in XY).

This effects both the actual damage calculation and when you view the Known Moves screen.

(Not So) Hidden Power [FR]

By default, Hidden Power will always display as a Normal-type move. By modifying the routines for displaying the types of moves, we can force it to display as the actual type.

Unlike the earlier parts of this post, this requires some free space. Here's the code:

Spoiler:

And, this is what it looks like already assembled:
Code:
F8 B4 77 46 88 00 C9 00 40 18 27 49 09 18 88 78 0A 78 87 2A 0A D1 28 78 40 00 21 49 40 18 00 78 64 21 48 43 1F 49 40 18 00 F0 1B F8 BE 46 F8 BC 1A 49 08 47 F9 B4 77 46 90 00 D1 00 40 18 40 19 81 78 02 78 87 2A 08 D1 1A 48 00 68 32 21 09 02 90 31 40 18 00 F0 05 F8 01 1C BE 46 F9 BC 14 4A 10 47 F0 B5 06 1C 00 24 00 27 10 4D 09 E0 30 1C 27 21 C9 19 00 F0 10 F8 01 21 08 40 B8 40 04 43 01 37 06 2F F3 D1 0F 20 60 43 3F 21 06 DF 08 28 00 D3 01 30 01 30 F0 BD 28 47 C0 46 8F 09 03 08 CE 3B 02 02 84 42 02 02 04 0C 25 08 E9 FB 03 08 D7 68 13 08 40 B1 03 02

As usual, insert it at an offset ending in 0x0, 0x4, 0x8, or 0xC. For simplicity, I'll refer to this offset as A.

Now, we need to modify the routines to call this new code. There are two places to modify.

Code:
0x08030984: 00 48 00 47 xx xx xx xx
Code:
0x081368CC: 00 49 08 47 yy yy yy yy

The x's are A + 0x01, in reverse hex, while the y's are A + 0x35, also in reverse hex.

This affects the type icons on the party menu (as well as when learning a new move), and the type listed when selecting an attack.

This does not affect the type displayed by the TM Case. As that's not associated with a particular Pokemon, it just reads the type from the move data table. I actually suggest changing Hidden Power's entry in the table to be ???-type (change the byte at 0x08251722 from 0x00 to 0x09), so it will show as that in the TM Case, and the actual type everywhere else.

I didn't bother to force it to calculate and display the base power for Hidden Power, as I prefer the constant base power anyway, but if this was any indication, it would be pretty easy to do.

I've found a problem, when I use this routine, the moves types in-battle shows 99999999... or nothing. For someone who found this problem, you probably have repointed the move data, simply change the offset of "move_data: .word 0x08250C04" to your move data offset.
 
534
Posts
11
Years
  • Age 26
  • Seen Jul 24, 2023
Here's one for Ruby.
Code:
[B]08020280[/B] 004A1047[COLOR=Red]XXXXXX[/COLOR]08
[B]080201E2[/B] 02 21
[B]08020336[/B] 01 20
XXXXXX should be the address +1 of this ASM routine...
Spoiler:

It checks your bag if you have the Exp. Share. If you do, then your team will each get 50% of the experience (I suggest you turn your Exp. Share into a Key Item if you want to apply this into your Ruby hack but I really suggest you either hack Emerald or FireRed instead...). The experience gain is reduced to 50%, regardless if you have the item and who's active during the battle. (It's why I decided to remove the feature in the next beta of my hack.)

Credits go to Andrea.
Any idea on how to do this for FR? Because the one posted earlier does not check for Exp. Share when distributing Exp. Points. ;-;
 
22
Posts
8
Years
The Shedinja's evolution was fixed but not registering on Pokédex.

Ok, I think I found the issue. At CE858 change 54 44 to 00 00

Spoiler:


Do the same thing for Emerald at 13E4EC.
 
352
Posts
7
Years
  • Age 30
  • Seen Mar 10, 2022
Ok, I think I found the issue. At CE858 change 54 44 to 00 00

Spoiler:


Do the same thing for Emerald at 13E4EC.

Thanks man, it worked fine. xD
 
50
Posts
9
Years
  • Age 30
  • Seen Jan 18, 2017
port addresses
i can do it in like 7 hours when i get home

Great, i imagine that you could also export a, still thanks for helping us with these routine :), and clearly I do not ask to be exported by an Em, so there is no confusion :)
 

BluRose

blu rass
811
Posts
10
Years
Great, i imagine that you could also export a, still thanks for helping us with these routine :), and clearly I do not ask to be exported by an Em, so there is no confusion :)
check out this convo between blackwhiterobin and i to check progress. we just need two more addresses ported, and they are in the routine itself. if worst comes to worst, we can just port the ruby routines themselves, i'd imagine that that wouldn't be too difficult ahaha. vba's disassembly feature helps out a bit for getting a ruby version of things in fire red, this is not much to go off of

oh and if there's an idb of ruby then why the would i be saying this ahaha
someone might wanna check out the addresses in the routine that i already found because one of them was pretty sketchy i think

en español (no porque no puedes leer el ingles, porque quiero practicar y mejorar mi español)
Spoiler:
 
50
Posts
9
Years
  • Age 30
  • Seen Jan 18, 2017
check out this convo between blackwhiterobin and i to check progress. we just need two more addresses ported, and they are in the routine itself. if worst comes to worst, we can just port the ruby routines themselves, i'd imagine that that wouldn't be too difficult ahaha. vba's disassembly feature helps out a bit for getting a ruby version of things in fire red, this is not much to go off of

oh and if there's an idb of ruby then why the would i be saying this ahaha
someone might wanna check out the addresses in the routine that i already found because one of them was pretty sketchy i think

en español (no porque no puedes leer el ingles, porque quiero practicar y mejorar mi español)
Spoiler:

Thank you very much, I really thought I would not answer haha ​​xD, I'm looking forward to finishing your work and sorry if I can not help too much. I'm very new in hexadecimal and I do not know anything about asm.
 
1
Posts
7
Years
  • Age 32
  • Seen Nov 21, 2016
Spoiler:
 

LCCoolJ95

Limited Capacity
638
Posts
14
Years
check out this convo between blackwhiterobin and i to check progress. we just need two more addresses ported, and they are in the routine itself. if worst comes to worst, we can just port the ruby routines themselves, i'd imagine that that wouldn't be too difficult ahaha. vba's disassembly feature helps out a bit for getting a ruby version of things in fire red, this is not much to go off of

oh and if there's an idb of ruby then why the would i be saying this ahaha
someone might wanna check out the addresses in the routine that i already found because one of them was pretty sketchy i think
Hello, just wondering how this is going!
 

BluRose

blu rass
811
Posts
10
Years
Hello, just wondering how this is going!
research/small tangent about how this was originally going
Spoiler:


- - - - - - - - -
Andrea's Gen VI Exp. Share
- - - - - - - - -

Credits to Andrea~ and The_Learner

bpre:
Spoiler:
bpee:
Spoiler:
have a nice day, this took way too long <3
 
Last edited:
534
Posts
11
Years
  • Age 26
  • Seen Jul 24, 2023
Spoiler:
it's just a matter of finding the rough same in fire red at the moment, specifically 20274. haven't even started on the other routine because all of this was really done this morning (shhhhhhh)

EDIT: accidentally disassembled the other routine referenced that we haven't found as well while disassembling what the first one references :P
coolio. meanwhile, i'm actually going to check out one of the other routines because really it doesn't seem equal ahaha

EDIT: ok i'm ****ing dumb
Code:
branch point AXVE:  
        20280
return point AXVE:  
        2028C (notice how it's literally branch +0xC)

branch point BPRE:  
        21CCE
return point BPRE: (one of what we're looking for)
        21CDA

return point 2 AXVE:
        202A0
return point 2 BPRE: (other of what we're looking for)
        21CE8
magically, when looking it up in IDB, almost everything matches! imagine that :):):):):):):):):):):):):)
here's bpre's routine, credits to andrea~ and the_learner (for making it relatively easy to find two addresses; he already found them). i did practically nothing except be stupid and look for something that was literally right under my nose the whole time
as usual, untested
Spoiler:
and because lccoolj95's going to ask for it, bpee (still untested):
Spoiler:
have a nice day, this took way too long <3
Tested EM's. Game restarts right before receiving experience points with or without EXP. Share Item. I've yet to test FR's. (And this breaks my heart.)
 

BluRose

blu rass
811
Posts
10
Years
Tested EM's. Game restarts right before receiving experience points with or without EXP. Share Item. I've yet to test FR's. (And this breaks my heart.)
lol ok i'll have to adjust it. likely because different registers are (probably) used for the check-item routine across all three versions, and i honestly only found it because the checkitem script command references it in each version
report back with fr, please <3

EDIT: i'll do fr, but how done i was yesterday shines through in that i didn't even tell to make the pointer aligned. :P

EDIT2: works here after a few byte changes to my byte changes were made to made. updating post

EDIT3: works in em after doing the same byte changes.

happy hacking!
 
Last edited:
788
Posts
17
Years
  • Age 29
  • Seen yesterday
Powder Jar [FR]

The amount of berry powder is stored in a byte at [0x300500C] + 0xAF8. It's referred to as field_af8. It is encrypted via the Security Key.

In finding this, I found a function at 0x0815EE3C which takes a pointer and decrypts what it points to with the Security Key.
 
Last edited:
3,830
Posts
14
Years
  • Age 27
  • OH
  • Seen Feb 26, 2024
Door Animation Format

Door animations follow a very simple 12-byte format, which I'm sharing for anyone that needs a reference.

Code:
| Offset  | Type          | Notes                            |
|------------------------------------------------------------|
| 0-1     | Tile index    |                                  |
| 2       | Sound flag    | 00 = door, other = sliding door  |
| 3       | Tile flag     | 00 = one tile, other = two tiles |
| 4-7     | Image         | pointer, uncompressed            |
| 8-11    | Palette       | pointer                          |

The data is stored in tables, and can be found at the following offsets:
Code:
AXVE: 30F9B4
AXPE: 30F944
BPRE: 35B5D8
BPGE: 35B5B8
BPEE: 497174
 
Back
Top