Mystic Heroes (PS2) - Secret Characters Now Playable in Story Mode (mod and cheats)

  • Thread starter Thread starter Noxbur
  • Start date Start date
  • Views Views 34
  • Replies Replies 0

Noxbur

Active Member
Newcomer
Joined
Apr 13, 2023
Messages
29
Reaction score
36
Trophies
0
Age
33
XP
198
Country
Brazil

TL;DR — Captain Dax, Mirah, Raja and Kai can now be played in the normal Story Mode of Mystic Heroes.​

Hey everyone. I'm not really sure if this is the proper place to post this, but I haven't found a specific place on GBATemp to do so.

Also, I'm fully aware that there's a non-zero chance of this peaking no interest whatsoever. But I decided to share it anyway because I'm quite enjoying myself with this project ever since I came across the game around my old collection here. Maybe, in the future, someone might search for this and stumble upon this post.

I've been working on a reverse-engineering/modding project for the PS2 version of Mystic Heroes (USA, SLUS-20521) to remove one of the game's known restrictions.

Normally, Story Mode only allows:

  • Shiga
  • Lani
  • Tai
  • Naja
The other four characters — Captain Dax, Mirah, Raja and Kai — are fully playable in Survival Mode, Mission Mode and Multiplayer, but not selectable in Story Mode in any way.

The restriction has now been bypassed​

That restriction has now been bypassed (if it has before, I haven't been able to find it online). The current mod I've been working on swaps the four normal Story Mode slots:

Story Mode SlotBecomes
ShigaRaja
LaniCaptain Dax
TaiKai
NajaMirah
There are two working versions:

  • PCSX2 PNACH cheat — easy to test and revert; no game files are permanently modified.
  • Permanent ISO patch — modifies only the game's SLUS_205.21 executable and is the recommended version for a modified ISO (needless to say, I will not be providing the ISO file itself).
The most extensively tested configurations I made so far were Raja replacing Shiga, and Kai replacing Tai, including starting a new game and playing without crashes.

The other character swaps are implemented by the same underlying mechanism, but have not yet been tested end-to-end, so I don't want to pretend they have been fully verified. However, everything indicates the same success.

📦 Files and the full technical write-up​

Mega — Files / Release

🔬 Detailed reverse-engineering notes​

Rentry or Pastebin for more technical documentation.

A little bit more on the technical side of things​

This turned out to be more interesting but a little troublesome at some times. Mystic Heroes internally does have support for eight character identities within Story Mode, not just the four normally exposed.

Also, the game separates the concept of a character slot/index from the actual Character ID used by the character systems. The important runtime values are:

Character Index​

Index 0 = Shiga
Index 1 = Lani
Index 2 = Tai
Index 3 = Naja
Index 4 = Dax
Index 5 = Mirah
Index 6 = Raja
Index 7 = Kai

The corresponding Character IDs are:​

03 = Shiga
04 = Lani
05 = Tai
06 = Naja
07 = Dax
08 = Mirah
09 = Raja
0A = Kai
The patch to the ISO modifies the game's index → Character ID dispatch tables, effectively changing: Shiga ↔ Raja | Lani ↔ Dax | Tai ↔ Kai | Naja ↔ Mirah.

This means the game can continue treating the player as the normal Story Mode slot while loading the secret character's actual model, moveset, magic, textures and voice.

That distinction was the key to making the permanent solution work without a more complex alteration of the entire character container (at least that's how I see it).

🎮 PCSX2 PNACH / Cheats​

For people who only want to experiment with the game in PCSX2, there is also a working PNACH solution.

It uses two parts:

1. A character-index patch at 0x0031E283.

2. A consolidated group of engine patches that prevents the game from failing on several validations encountered when using the secret-character indexes/IDs.

That ends up being necessary because, in Story Mode (especially Shiga's/Lani's campaign), some stages prepare themselves for their expected character data in order to function and render things.

For instance, if you simply put 06 (Raja's index) at 0031E283 and boot up Stage 1-1 of Shiga's campaign, the game will crash (with a red screen) right after the "now loading".

The same will happen if you normally play along Tai's Stage 1-1 (which doesn't suffer from the "now loading" crash) and get to the part where Mamba is triggered.

The PNACH also contains an experimental [PERFECT+NET] version with an additional safety net for investigation/debugging. The documentation explains the difference between the normal and safety-net versions.

💿 Permanent ISO patch​

The recommended solution is the permanent executable patch.

It changes: 63 MIPS words / 252 bytes in SLUS_205.21.

It does not modify:

  • chr2.bin
  • character models
  • character textures
  • the game's resource containers
The patching script also verifies the original files before modifying them and preserves their original sizes. An already patched SLUS_205.21 is included in the folder.

The ISO itself remains the same size as the original; the patch simply replaces the sectors containing the modified executable rather than rebuilding the entire ISO.

✅ What is working?​

  • Secret character models
  • Movesets
  • Sword/Jump magic
  • Voices
  • Character textures
  • Story Mode gameplay
  • New Game character selection
  • Permanent executable patch
  • PCSX2 PNACH solution

⚠️ Known limitations (as of this "beta"/v0)​

HUD names​

Using the ISO patch, the HUD still displays the original character name associated with the Story Mode slot. For example, Raja replacing Shiga can still display "Shiga" in the HUD. This is cosmetic and does not affect gameplay, and it does not apply to the PNACH/Cheat alternative.

Some soldier/ally unit textures​

Depending on the stage and texture-memory configuration, some soldier/unit textures can appear incorrectly. The permanent patch includes a texture-memory workaround that prevents the original crash, but there is a trade-off between preserving certain scenery textures and character/unit textures.

📦 Release​

The release contains:

  • PCSX2 PNACH
  • Permanent patched SLUS_205.21
  • build_patch.py — reproducible patch builder
  • iso_extract.py
  • assert/error catalog
  • Technical documentation

🧪 Feedback / testing​

If you try this, please report:

  • Character used
  • Campaign
  • Stage
  • PNACH or permanent ISO patch
  • PCSX2 version, or real PS2 hardware
  • Any crash or graphical problem
This would be especially useful for testing the character swaps that I haven't yet been able to verify end-to-end.

🔎 Why this is interesting​

One of the biggest discoveries during the project was that the game itself appears to have much broader support for the eight characters than Story Mode exposes.

There are complete combat-data paths for all eight characters, and several parts of the executable already contain native handling for the full eight-character range.

The Story Mode restriction therefore appears to be largely the result of selection/initialization logic and hardcoded assumptions, rather than the engine being fundamentally incapable of using the secret characters.

The project also uncovered the game's internal panic/assert system, which was extremely useful for debugging. Instead of guessing why the game produced its famous red error screen, the error message could be read directly from memory and used to identify the exact validation that had failed. That process eventually led to the final working solution.

🚧 Project status: WORKING, but with major room for improvement​

It's important to note this as well: I have NO background in computer science/game development/engineering... I'm just curious and like to experiment with things of this kind, and with the help of AI now I can have an easier time investigating and trying out stuff.

This game is far from perfect but is a heavy nostalgia hitter for me... so many memories of playing it with my brother.

At this point, there's pretty much no recent content/buzz or something like that around it anymore. However, I always wanted to make more out of the secret characters.

Hope someone enjoys it the same as I do. :)
 

Attachments

  • 15fef450-1275-44a0-b3b5-035f5d5d6bb4.png
    15fef450-1275-44a0-b3b5-035f5d5d6bb4.png
    2.5 MB · Views: 1
  • CnP_14092026_102924.png
    CnP_14092026_102924.png
    2 MB · Views: 1
  • CnP_14092026_102939.png
    CnP_14092026_102939.png
    1.9 MB · Views: 1
  • CnP_14092026_102949.png
    CnP_14092026_102949.png
    1.5 MB · Views: 1
  • CnP_14092026_103000.png
    CnP_14092026_103000.png
    1.9 MB · Views: 1

Site & Scene News

Popular threads in this forum