• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Our weekly protagonist poll is now up! Vote for your favorite Conquest protagonist in the poll by clicking here.
  • 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

I don't understand your question, sorry. D:
Can you elaborate a little more?

Thanks Spacewalker for responding!
What i mean is, Asm that calls a script

Example: the script is in offset 0x8850001 and i wanna call it via asm.

My attempt on this is:
Spoiler:
 
Likely there's a more elegant solution for this, but I don't know what you're talking about:
Because i can't figure out what to do in cfru (void*), it's asking an asm not the script itself, but i want to run some script on it, thanks if you know!

To answer your question, try:
.text
.align 2
.thumb

main:
ldr r1, =(0x8069AE4|1)
ldr r0, =(0x8850001)
bl linkr1

linkr1:
bx r1

.align 2

Good luck.
 
Likely there's a more elegant solution for this, but I don't know what you're talking about:


To answer your question, try:


Good luck.
OHHH, FBI!
Thanks for this and all your amazing work! You can say im your biggest fan!
Thanks i will try this!

Update:
Spoiler:
 
Last edited:
I tried your code and try to expand it, but i didn't have any idea what's gone wrong in my writing.

The code:
Spoiler:

My Script:
Spoiler:

The thing is, it's not working, if you somehow just somehow have time to help i will appreciate it, but if you don't that's ok.
 
Last edited:
To update Synchronise so that the opponent becomes Badly Poisoned when they Badly Poison you, put 06 instead of 02 at 0x1B404 and at 0x1B48B.

This changes MOV r0, #0x2 to MOV r0, #0x6. Therefore instead of changing the Bad Poison effect to the regular Poison effect, it replaces the Bad Poison effect with the Bad Poison effect (essentially leaving it the way it was before).

There's a little issue with the offsets there, 0x1B48A should be used instead of 0x1B48B since 0x1B48A is the one that has a 02 on it.
In case you guys like Emerald, here's the equivalents as well: 0x43CF4, 0x43D78
 
.align 2
.thumb

main:
push {lr}
ldr r0, =(0x92A)
ldr r1, =(0x806E6D0 +1) @checkflag
bl linker1
cmp r0, #0x1 @check if set
bne end
ldr r0, =(0x8850001) @my script
ldr r1, =(0x8069AE4 +1)
bl linker1

end:
pop {pc}

linker1:
bx r1

.align 2

Above is fixed. You're making some fundamental mistakes.
1. Don't need to push low registers
2. Parameters for functions start from r0

It sounds like you're using CFRU, I'd encourage you to write this function in C instead and cast your function as an argument to whatever the callback you're trying to use is.
 
Is there any info anywhere on porting the Gen 5 EXP system to firered? Liquid Crystal had it like 10 years ago so I assume it must be somewhere out there.
 
Is there a way to find the offsets of all the 'pre-arranged' pokemon encounters in Emerald? I believe the total list is;

- Starters
- Zigzagoon (fighting Birch)
- Zigzagoon (Wally fighting Ralts)
- Ralts (Wally catching)
- Kecleon
- Wynaut (egg)
- Castform
- Regis
- Fossils
- Rayquaza
- Groudon
- Kyogre
- Lati@s
- Beldum
- Gen 2 starter
- Sudowoodo
- Voltorbs
- All the event pokemon

So far from searching, I have managed to find the offset for the Zigzagoon fighting Birch as x32706. And that's all I've found.

Is there a way to search scripts to find these offsets? Search hex? Is there a list somewhere? All help appreciated.

Thanks.
 
I've never seen anything about changing the Prof. Oaks Pokedex Ratings for FireRed.
After doing some digging and with the help of Decomps here is what I've found.

Prof. Oak and the Oak's PC scripts call for specials 0xD4 and 0xD5, which then figure out the Dex Seen and Caught values. The game then checks to see if the amount caught is under a certain value, up to 151 in vanilla. You can actually expand this to 255 but no further, so if you're making a hack with an expanded Regional Dex do mind this limitation and plan your text accordingly.

Here are some offsets to help you customize your Pokedex Ratings:
REMEMBER! Changing these amounts can't go higher than 0xFF (255)

0xCA430 = 0x09, in vanilla it leads to text if you own less than 10 Pokemon
0xCA436 = 0x13, in vanilla it leads to text if you own 10-19 Pokemon
0xCA448 = 0x1D, in vanilla it leads to text if you own 20-29 Pokemon
0xCA454 = 0x27, in vanilla it leads to text if you own 30-39 Pokemon
0xCA460 = 0x31, in vanilla it leads to text if you own 40-49 Pokemon
0xCA46C = 0x3B, in vanilla it leads to text if you own 50-59 Pokemon
0xCA478 = 0x45, in vanilla it leads to text if you own 60-69 Pokemon
0xCA484 = 0x4F, in vanilla it leads to text if you own 70-79 Pokemon
0xCA490 = 0x59, in vanilla it leads to text if you own 80-89 Pokemon
0xCA49C = 0x63, in vanilla it leads to text if you own 90-99 Pokemon
0xCA4A8 = 0x6D, in vanilla it leads to text if you own 100-109 Pokemon
0xCA4B4 = 0x77, in vanilla it leads to text if you own 110-119 Pokemon
0xCA4C0 = 0x81, in vanilla it leads to text if you own 120-129 Pokemon
0xCA4CC = 0x8B, in vanilla it leads to text if you own 130-139 Pokemon
0xCA4D8 = 0x95, in vanilla it leads to text if you own 140-149 Pokemon
0xCA4DC = 0x96, it leads to text if you've completed the Kanto Pokedex (150, Mew is not required)

Change those accordingly. Additionally, here are the Text Locations:

Under 10 = 0x1A6D17
10-19 = 0x1A6D6D
20-29 = 0x1A6DDF
30-39 = 0x1A6E36
40-49 = 0x1A6EA4
50-59 = 0x1A6F0B
60-69 = 0x1A6F71
70-79 = 0x1A6FAB
80-89 = 0x1A6FF1
90-99 = 0x1A7031
100-109 = 0x1A7063
110-119 = 0x1A70A5
120-129 = 0x1A70D8
130-139 = 0x1A7108
140-149 = 0x1A7137
150/151 = 0x1A7175

I recommend using Hex Maniac to edit and repoint that text and stay away from A-Text at all costs! These should be useful if you've made a custom pokedex or a region where Professor Oak isn't your regions professor. (Or if you got rid of the Aides who give out items at a certain dex completion rate).
 
Cleanse Tag Modifiers

This is the result of my decomp research trying to buff Cleanse Tag to be a little less useless. In vanilla it reduces wild encounters by 2/3.

FireRed

At 0831E6, change 20 68 40 00 03 21 (2/3) to 20 68 00 00 03 21 (1/3) or 20 68 00 00 02 21 (1/2).

Emerald

At 0B5B00, change 20 68 40 00 03 21 (2/3) to 20 68 00 00 03 21 (1/3) or 20 68 00 00 02 21 (1/2).
 
Battle "X Item" increase by 2:

FireRed:
0x25282E: 02
0x25283F: 02
0x252850: 02
0x252837: 20
0x252848: 20

Emerald:
0x31E4C2: 02
0x31E4D3: 02
0x31E4E4: 02
0x31E4CB: 20
0x31E4DC: 20

However that string still keeping vanilla one (not "sharply rose" but simply "rose").
 
FireRed Skip item using animation:
Put 41 46 00 F0 0E F8 at 0x12538E
Put 00 F0 0B F8 at 0x12587E
Put 41 46 00 F0 0C F8 at 0x126332
Put 00 F0 03 F8 at 0x126BCA
FireRed Skip TM learning animation:
Put 00 F0 0E FA at 0x11CA2C
Put 00 00 at 0x11CE6E
Put 00 F0 40 at 0x125BC4
 
Last edited:
Faster battle intro (like Unbound):

FireRed:
Put 03 at 0x11DA6, 0x3253E, 0x37DBA, 0xEA0A4, 0x158468, 0x1585C2
Put FD at 0x32418, 0x38058, 0xD632C, 0xDDA94, 0xE9FA0, 0x1583EC
Put DB D0 at 0xBC5E5, 0xBC8DD, 0xBCB57, 0xBCE2D

Emerald:
Put 03 at 0x3981E, 0x5B9A6, 0x669C4, 0x1889A4
Put FD at 0x5B78C, 0x5B854, 0x61ADC, 0x66B80
Put DB D0 at 0x118455, 0x11874D, 0x1189CB, 0x118CA1
 
Last edited:
Faster battle intro (like Unbound):

So there's a few missing offsets for Emerald, more importantly for trainers and Wally/Steven/Safari Zone backsprites. I managed to find these missing offsets however, with the help of pokeemerald. The ones I found will be bolded.

Emerald:
Put 03 at 0x3981E, 0x5B9A6, 0x669C4, 0x1889A4, 0x61844
Put FD at 0x5B78C, 0x5B854, 0x61ADC, 0x66B80, 0x1598D0, 0x169F84, 0x18BED4, 0x18BF9C, 1BD48C, 1BD5AC
Put DB D0 at 0x118455, 0x11874D, 0x1189CB, 0x118CA1
 
Fire Red PC Boxes Use More Wallpaper's Fix

Offset=0x08C836
Original=03
Modified=FF

Credits For Spherical Ice & Stay hydrated 緯俺な.

Note: Spherical Ice had found the address of the PC Boxes but the Offset to modify was wrong, it didn't do anything and I started to investigate a bit and managed to have the 14 Different Wallpaper's on the PC.
 
Last edited:
For Emerald: How to make the several kinds of state combine at the same time? Such as if a pokemon poisoned, the foe pokemon used thunder wave, that pokemon change into paralyze state or both poisoned and paralyze combine together?
 
Last edited:
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.

How can I accomplish this using HexAdvanceManiac?
 
For anyone interested, in FR US 1.0 (aka BPRE 1.0), to change your Pokédex "mode" to the style which DPPt used (That is, to have the seen amount displayed in the continue screen and the save screen instead of the caught numbers), change:

0800CF56: 00 20
0800CF64: 00 20
080F803C: 00 20
080F8044: 00 20

It really is that simple. :)

[FR] Pokédex total accounts for "Seen" not "Captured" in Trainer Card
Sets the Pokédex as "Seen" in the Trainer Card. The link provided in the main post is actually for Emerald.

0808A0EA: 00 20
0808A0F2: 00 20

Hope this helps. Combine this with Jambo's original code for the full effect (of course).

[FR]Start with more Wallpapers used by PC BOXES

0808C836: FF

Similar to Spherical Ice's but arranged in the order used by Gen IV and onwards.
 
Last edited:
Back
Top