Music Fixes Extended
Restores the PSP rhythm helper fade and Fever theme loop for Patapon 1+2 Replay.
About this mod Machine translation
Music Fixes Extended
A BepInEx 6 (IL2CPP) plugin for Patapon 1+2 Replay that restores a near-original audio
experience. It is an extended continuation of JurasPatryk's original Music Fixes mod,
keeping the original theme‑loop fix and adding a faithful recreation of the rhythm
"helper" behavior from the PSP originals in both Patapon 1 and Patapon 2.
What it does
- Theme loop / play‑count fix (Patapon 1 & 2)
On the Replay release, the Mood_High (Fever) play counter could overrun and break the
intended theme loop. The plugin virtualizes the play count back into the original 16‑step
window so the Fever theme loops the way it did on PSP.
- Helper fade (Patapon 1 & 2) — the headline feature
On PSP, the rhythm helper (the light backing instrumental that keeps you on the beat)
ducks away during the chant / response phase and returns while you are drumming a
command. The Replay release plays it flat. This plugin restores that behavior:
- While you are entering a command, the helper plays at full volume.
- As the chant/response phase begins, the helper fades out.
- When the next input window opens, it fades back in.
The fade even leads slightly into the chant (starting a configurable ~250 ms early) and
is tempo-adaptive, so the timing stays consistent as Fever speeds the song up.
How it was achieved (technical breakdown)
The two games are built very differently under the hood, so each needed its own approach.
Patapon 1
- The helper is a distinct MIDI accompaniment layer (RhythmBgmPlayer) whose inner
sequencer voice (rhythm_) owns the real volume. The outer player's volume calls are
no‑ops because it carries no live CriWare resource (rid = -1), which is why the original
mod could only hard‑mute it.
- The plugin captures that helper player and drives the inner voice's setVolumeDirect
directly.
- Phase is read from Rhythm.isPlay_: it flips true when a command is issued (chant
begins → silence the helper) and false when the input window reopens (restore it).
Patapon 2
Patapon 2's audio engine is structured completely differently, which made this the hard
part:
- There is no separate helper player — the only battle MIDI is the main theme, and the
helper lives inside the BGM mixing category.
- Rhythm.update never fires, Rhythm.getState() is constant, and the per‑frame
Director methods are unsafe to call from injected hooks — so none of the P1 techniques
port over.
- The live battle engine runs in the P2.Sound namespace (the parallel P2S.* classes are
compiled in but dead at runtime).
The working solution:
- Hook P2.Sound.BeatCommander.update — the real per‑frame battle tick.
- Read the rhythm phase from BeatCommander.getState(): State_Nage (investment, command /
input) vs State_Kaesi (回し, response / chant).
- During Kaesi, fade the BGM mixing category volume down to a configurable floor and
back up afterward. Because the game re‑applies that category's volume every frame, the
fade value is recomputed and re‑applied each frame so it can't be reverted.
- The fade-out begins a configurable number of milliseconds before beat 4 (where the
chant starts), using a live measurement of the current beat duration so the lead stays
constant during Fever.
Configuration
Settings live in BepInEx/config/juras.patapon.audiofix.cfg.
[AudioFix]
| Key | Default | Description |
| --- | --- | --- |
| AudioFix_ThemeLoopFix | 1 | Enable the Fever theme play‑count loop fix. 0 to disable. |
| AudioFix_HelperMute | 1 | Enable the helper fade behavior. 0 to disable. |
[AudioFix_P2] (Patapon 2 helper‑fade tuning)
| Key | Default | Description |
| --- | --- | --- |
| AudioFix_P2HelperCategory | 3 | CriWare mixing category that carries the helper (3 = BGM). Only change if a game update moves it. |
| AudioFix_P2FadeMs | 400 | Fade duration in milliseconds. Higher = more gradual. |
| AudioFix_P2FadeLeadMs | 250 | How many milliseconds before the chant the fade begins. 0 = start exactly at the chant. Tempo‑adaptive. |
| AudioFix_P2FullVolumePercent | 70 | …
Install & use Install: follow the bundled instructions
- Unzip the archive from playbuff and read the bundled readme / instructions first.
- Most mods rely on the game's mod loader — the usual route is a community mod manager (such as r2modman): pick this game, install, and it handles the loader and dependencies.
- For a manual install, put the mod files into the matching Mod / plugins folder inside the game directory.
- Launch the game to confirm it loaded; mods with listed dependencies need those installed as well.
Install locations vary a lot between mods — the bundled readme is the most reliable guide.
Install these first, or the mod will not work: