Pyxal's Complete FireRed Upgrade Guidebook (2025)

CURRENTLY BEING REWRITTEN FOR MORE CLARITY AND UPDATED USE.

Pyxal's Complete FireRed Upgrade Guidebook (1)


Pyxal's Complete FireRed Upgrade Guidebook
This Guidebook has been made with the original documentation as it's source. Certain aspects are different from the official documents, but the results and outcomes are same. However, this is not a replacement for the official Complete FireRed Upgrade documentation. Bear in mind that this simplifies things and adds on to the actual documentation, but both will have to be read thoroughly to understand the Complete FireRed Upgrade. The Guidebook mainly focuses on stuff not yet included in the Complete FireRed Upgrade documentation, resources (including graphics and certain scripts), and ways to manipulate the Complete FireRed Upgrade to the users liking. The documentation, on the other hand, focuses on explaining every aspect of the Complete FireRed Upgrade, and how to utilize it at it's maximum potential. I would, however, recommend to read this BEFORE accessing the documentation. Be cautious reading this Guidebook since it may confuse you. If you are a beginner, you should indulge in simpler ROM hacking targets, and come back to the Complete FireRed Upgrade later. This guidebook has been named "Pyxal's Complete FireRed Upgrade Guidebook" since it is not an official guidebook (Skeli has no part in it's writing, except for all the knowledge [everything] he has shared, haha); this has simply been named with my initials since it is not OFFICIALLY related to the Complete FireRed Upgrade.

Introduction

This guidebook has been written in the hopes that more people look into the Complete FireRed Upgrade, one the best engines yet for any Gen III game. Though this guidebook DOES simplify things, you'll need to read this and the official Complete FireRed Upgrade documentation to fully understand how the Complete FireRed Upgrade works. However, I do urge to read this BEFORE reading the documentation. If the guidebook causes any confusion, don't hesitate to ask!

The Complete FireRed Upgrade, as the name says, is indeed a complete upgrade of Pokémon FireRed. To know what the Complete FireRed Upgrade actually does, I'll go ahead and quote ghoulslash (a co-creator of the Complete FireRed Upgrade) here: "This project is a massive engine upgrade for Pokémon FireRed. It includes an updated battle engine on par with the current generation's, including every single attack, ability, item, AI, and more. In fact, this is the only game engine in Gen III with every single move animation! In addition, it includes several game improvement features such as Expanded PC Boxes, a DexNav, dynamic overworld palettes, character customization, TM/HM expansion, a Battle Frontier, and many others. Most of the engine features are easily configurable to the user by simply commenting and uncommenting lines. An extensive documentation has been written to fully explain what this engine is capable of and how to use all of the features contained within. In addition, most table data is untouched or is loaded directly from the rom, allowing this engine to be smoothly implemented for (most) existing hacks!".

Preface

First and foremost, you should know that the first time you successfully get a ROM with the CFRU and DPE compiled in it, it will be referred to as a test drive. Why? Since the utilization of CFRU is a little more complex than that. The CFRU is only ever applied to a ROM once. This means that whenever you make an edit in your ROM, whether it be big or small, you'll always insert the CFRU after you've made that respective edit. The ROM in which you make all your edits, whether it be inserting new music, editing maps or adding scripts, is referred to as the base ROM or the BPRE0 ROM. Whenever you want to edit maps, scripts, items, trainer data, it should be done on the BPRE0 ROM. Whenever you want to test something reliant on CFRU, run the make script (explained below) and it takes about two seconds with minimal changes. Test whatever you need to on the test.gba ROM. After you've successfully inserted both the CFRU and DPE for the first time, you can move to the "Utilizing the DPE & CFRU" safely. That section will completely explain as to how the CFRU/DPE work, and how you use both of them correctly.

Setting up the DPE/CFRU

There are two methods for setting up the Dynamic Pokémon Expansion/Complete FireRed Upgrade. I personally recommend the second method, but it is entirely up to you. In the first method, you'll have to download the DPE/CFRU again and again whenever they are updated by the original creator, not to mention you'll have to match any files you've edited from the old one to the new one. The second method makes pulling any update from the original DPE/CFRU repositories much easier; all you'll need is one command. DO NOT switch in between methods! This will likely cause more confusion. Pick one method of setting up the DPE/CFRU and stick with it! Though if you have set up the DPE/CFRU in the past with the first method, you MAY switch over to the second method ONLY IF you've successfully done the first method PREVIOUSLY.

First Method:

Spoiler:

Second Method:

Spoiler:

Utilizing the DPE & CFRU
suggested addons | ;-; | that's all for now

With your "test drive", you can chuck the test.gba ROM in the bin. Or you don't have to; I don't know, depends on you. Now let's set up your BPRE0 ROM.

  • Add the Dynamic Pokémon Expansion (and other suggested add-ons) to your rom. This will be referred to as ROM 1.
  • Add the CFRU to a vanilla FireRed ROM at the same offset (I recommend CFRU at x160000; DPE at x180000) you plan on adding it to your hack. This will be referred to as ROM 2.
  • Open the generated file offsets.ini and search for gMoveNames.

    Pyxal's Complete FireRed Upgrade Guidebook (2)


    Record the offset that you find there. This will be referred to as Offset 1.
  • Assuming your moves list ends with the Z-Moves, search for Z_Move_1 in offsets.ini.

    Pyxal's Complete FireRed Upgrade Guidebook (3)


    Record the offset that you find there. This will be referred to as Offset 2.
  • Open ROM 2 in a hex editor and select all data from Offset 1 up to but not including Offset 2.

    Pyxal's Complete FireRed Upgrade Guidebook (4)

  • Copy this data and paste it at Offset 1 in ROM 1.

    Pyxal's Complete FireRed Upgrade Guidebook (5)

  • At 0x148 place a pointer to Offset 1.

    Pyxal's Complete FireRed Upgrade Guidebook (6)

  • ROM 2 has no more use so feel free to delete it.
  • [a id]adds1[/a id][a id]adds2[/a id]Treat ROM 1 as your base rom for the CFRU. It is recommended to do all scripting, mapping, and trainer editing in ROM 1. When you're ready to test, run the command python scripts//make.py and test on the generated test.gba (it'll take only a second to recompile if no changes have been made to the CFRU). This test.gba also makes a great location to test scripts to make sure they work properly before finalizing them.

Spoiler: Recommended Add-On's:

[a id]confuz[/a id]

Spoiler: ;-;

[a id]ilazy[/a id]

That's all for now! The ROM is your canvas. I wanted to expand and explain many aspects of both DPE and CFRU, and I might do so in the next tutorial update; stay tuned.

Usable Resources

Coming soon! I'll make an entire resource depot from resources I've found in these two years of hacking. If you want to contribute, please DM me on Discord (pyxal).

Additional Tutorials


Graphics manipulation (in CFRU):

Spoiler:

Scripting (in CFRU):

Spoiler:

Avoid 12-character attack names:

Spoiler:

Notes

  • As I've said above before and before, do not edit the "test" GBA ROM you get.
  • Read the documentation at least ONCE from start to finish.
  • If you've expanded the OverWorld table, in "src/character_customization.c" change "(NPCPtr*) 0x839FDB0" to the address your OW table takes.
  • If you've inserted new Battle BG's and have time enabled at the same time, the custom inserted backgrounds will not have anything wrong with them, since it is dynamic based for all battle backgrounds.

Links and Information

  • The official CFRU page on PokéCommunity: https://www.pokecommunity.com/showthread.php?t=425447
  • Older tutorial (CSS):

    Spoiler:

Closing notes / Credits

Hopefully this tutorial may have helped you understand a little bit more on how the CFRU works. This tutorial will be getting another update soon.

Special thanks to:
Skeli and ghoulslash - For CFRU
PokéMew - Snippets of DevKitPro tutorial
Lunos - Permission to copy text from his tutorials

This tutorial applies to Windows users only.
Any specific confusion? Reach out to me on Discord: pyxal.
Do not contact the authors of CFRU and DPE for the sake of this tutorial, since they have no part in this and may rightfully be confused.

Pyxal's Complete FireRed Upgrade Guidebook (7)

Pyxal's Complete FireRed Upgrade Guidebook (2025)

References

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Horacio Brakus JD

Last Updated:

Views: 5712

Rating: 4 / 5 (51 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Horacio Brakus JD

Birthday: 1999-08-21

Address: Apt. 524 43384 Minnie Prairie, South Edda, MA 62804

Phone: +5931039998219

Job: Sales Strategist

Hobby: Sculling, Kitesurfing, Orienteering, Painting, Computer programming, Creative writing, Scuba diving

Introduction: My name is Horacio Brakus JD, I am a lively, splendid, jolly, vivacious, vast, cheerful, agreeable person who loves writing and wants to share my knowledge and understanding with you.