Game: Pokémon Infinite Fusion
Source: Pokemon Infinite Fusion
Language: Ruby
Engine: RPG Maker XP
Project: Pokémon Essentials
PSA 07/05/2026: Take the game's official Discord's tech support with a grain of salt. Many users, and those designated with associated roles, regurgitate baseless misinformation with confidence. If someone suggests reinstalling the game completely, this might not be necessary (in some cases it could help, like very old versions of the game). If they tell you your 64-bit Windows OS is incompatible, that's blatantly untrue. A reinstall of your OS or game could theoretically solve a problem, but it'll be overkill, especially in the case of your OS. There are more instances of misinformation, so be cautious, even through the official channels.
Table Info
Tested and made with Cheat Engine 7.7
Supports game version 6+
This Cheat Table parses Ruby's global Classes and Constants as well as the instances to get the dynamic pointers and parses the symbol names and IDs for convenient drop-down lists.
Table is pretty stable now, but has inaccuracies with the Ruby language/engine. It's stable enough.
Features
Symbol Tools: Contains script to quickly search up local, short symbols. Not every symbol is included in the search.
Debug Pointer:
Debug Status: Allows you to set your debug mode status without using in-game means.
Global Instances: Contains the dynamically allocated pointers to the global instanced classes. This contains most of the pointers in the game.
Pre-laid out Pointers:
Player: This contains your basic trainer info, party Pokemon, Pokedex, and other flags.
Pokemon Bag: This has the items from your bag as well as some settings such as registered items.
Pokemon Storage: This is your Pokemon PC storage containing your stored Pokemon and box settings.
Pokemon Global: This has many different value and pointers for character states, certain active effects, and item storage.
Pokemon Encounters: Contains the currently active encounters for different environments.
Game Player: This contains the values for your controllable overworld character and it's flags.
Game Weather (PIF2): Contains the active weather for applicable maps. Also contains an address item obtaining the weather of your current map.
Game Variables: This contains the RPG Maker variables designed and used for this game.
Game Switches: This contains the RPG Maker switches designed and used for this game.
Data System: This contains the RPG Maker's system, which includes associated names.
Global Constants: Contains pointers to the constant variables and modules. (modules are not laid out in the table at the moment, but are used in a few scripts.)
Version Info
Game Version: 6.8.0
Essentials Version: 19.1.dev
System Version: 2.4
Ruby Engine Version: 3.0.0 & 3.1.0
Save Data Parser (Experimental)
If you want to get more wacky and edit your save data, so you can either add uninitialized variables or add new Pokemon, you can try this:
(Drag & Drop .rxdata, or the parsed arbitrary .rxtext, file onto the executable to parse or rebuild, respectively.)
"What's the .rxtext from?" I made it the fuck up.
"What's the "#xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" gibberish next to certain values?" Arbitrarily created C#/.NET Guid so the rebuilding process can identify which objects are linked. First instance of it will determine the values. Removing it from an object will make it a new, unique object/value. (If you have linked instances of Pokemon, due to a bug in the game, you can remove the generated Guid so they can be treated as separate Pokemon, when rebuilding.)
"But isn't there already a tool to edit .rxdata files?" Maybe. I'm not fluent in the Ruby language or experienced with existing tools. I just researched and reversed the Ruby marshal data and made my own tool to work for this specific purpose.
Showcase
PIF1
Hacking in a new item via Pokemon held item:

PIF2
Hacking the current encounter table:

Potential Game Bug Fixes
These potential solutions may, or may not, be needed depending on your game version, so read the instructions carefully to determine if they're applicable to your game files:
If you perform actions in-game that intend to clone a Pokemon (Ex. Ninjask/Shedninja duping), the game's code may be duplicating the same instance, creating all sorts of problems. You can solve this problem entirely by going to the
clonemethod in.\Data\Scripts\014_Pokemon\001_Pokemon.rband changing the= superto= Marshal.load(Marshal.dump(super)). This will actually re-instantiate a new object, as it should.
Edits
07/05/2026: Made the initialization of table a bit more flexible with the timing of when you do it (Ex. The title screen). Fixed up the way my ruby library reads Hash objects and cleaned up areas that use them. I've also laid out the Pokemon Encounters so you can edit them in real-time. That said, many more things can be laid out, but I simply chose not to or I'm too lazy. Also I've included a marshal parser that can parse the save data into an arbitrary text format I made. Planned for it to be JSON, but I didn't like the restrictions.
06/25/2026: Oh boy. 3 years huh. Updated my table with my updated libraries and fixed class instantiation to not rapidly fill up Cheat Engine's memory. Tweaked a few more things, refactored a lot, and made sure this works on Pokemon Infinite Fusion 2 as well. Major refactoring has been made to the game over the years, so certain things have been limited, such as using my table to change the species to a fusion. The Fusions are more dynamically created and I don't have the area where they're instantiated, so I don't have the pointers/symbols. It's still rough around the edges on how it works with the engine, and there are some inaccuracies, but it's pretty good.
04/29/2023: Added functional Float Ruby type, modified generated game variables to guess the value type, added a couple more cheats, fixed up some code, reorganized a couple scripts/headers, and disabled table file deletion at startup to allow saving of table for purposes such as adding hotkeys.
04/07/2023: Improved framework code, modularized more code, cleaned up table, fixed issues, added more cheats, and added negative number support for 4 Byte Ruby type.
03/28/2023: Slightly refactored table design internally as well as deconstructed more of how the Ruby language is handled in memory, allowing for accessing constants and modules. Not many new features for the user, but, it's been opened up for more features in the future.
03/18/2023: Modularized array watcher functions, fixed some other bugs, and added more pointers for PC item storage and PC boxes.
03/16/2023: Cleaned up more on the code side of things, reduced table file size, and created array watchers to adjust based on how object is allocated. (Fixes party and pokemon bag pointers)


