03 Step Three
Tune the Suite
One config file. Every movement parameter the controller exposes.
Out of the box the suite already fixes ramps — you don’t have to touch a thing. But if you want to, every movement, slope, dash, roll, bounce, gravity and ground parameter the controller exposes is yours to tune, all from one config file. No GUI, no overlay, no console commands — by design.
Where it lives
One file, written for you
The plugin writes its config on first launch (see Step 02), then you edit it
in any text editor. You’ll find it beside BepInEx.cfg:
…\PAC-MAN WORLD Re-PAC\BepInEx\config\com.stixsworldhd.pacmanworldrepac.ungodlybugfix.cfg

Don’t hand-create it — let it generate
Launch the game once first. The plugin fills the file with every option, its default, and its allowed min .. max range already written in as comments. Then edit. Saving while the game is running re-applies your changes within about a second.
The mental model
How overrides and multipliers combine
Almost every raw tuning field works as a pair: an Override_* on/off switch and a matching
*_Value number. The rule for the final value the game actually uses is just:
final value = (Override ? your_value : game_original) × category_multiplier
- While an
Override_*switch is off, the plugin keeps the game’s own original value — so it stays vanilla until you opt in, field by field. - The four global multipliers in Section 17 (
DashSpeedMultiplier,RollSpeedMultiplier,RunWalkSpeedMultiplier,GravityScale) all default to1.0and apply on top of whichever value won — your override or the original. - A fully default config therefore writes the originals straight back: perfectly vanilla movement, plus the four ramp fixes.
Tune the right numbers
Capture the baseline first
The numeric default printed next to each *_Value is a sensible starting point — not
necessarily the game’s own value, because the real values live in the game data, not the code. So on the very
first frame Pac-Man’s controller loads, the plugin dumps the game’s true original value for every
field it can touch to the log. Read those before you override anything.
Launch once and open the log
Start the game, then open the BepInEx log and search for the baseline block:
CAPTURED GAME BASELINE
(This dump is controlled by LogCapturedBaseline in Section 00, on by default.)
Note the real value you want to change
The block lists each field name with the controller’s actual starting number — the ground truth to tune against instead of guessing.
Flip the override and set your number
In the .cfg, set that field’s Override_* to true and put your desired number in the matching *_Value line:
Override_DashSpeed = true
DashSpeed_Value = 28.0
Save — it re-applies on its own
Save the file. Changes are picked up automatically within about a second (the interval is WatchdogIntervalSeconds in Section 00), and again on every level load. No restart needed.
The whole surface
Every section at a glance
Eighteen numbered sections, 00–17. The colour of the number tells you what kind of
section it is:
Core — master, logging, baseline, timing
MasterEnable, log verbosity, the LogCapturedBaseline dump, and WatchdogIntervalSeconds (how often saved edits are re-applied). MasterEnable = false makes the plugin completely dormant.
Rev-roll-up-ramp fix master + ramp window fix
The on/off switch for the whole ramp fix, plus what counts as a ramp — the angle window (e.g. RampMaxAngle) the other fixes operate inside.
Up-ramp momentum fix
Kills the momentum bleed that slows you to a crawl going up: speed retention, a per-degree boost that grows with steepness, hard caps so steep faces never fling you, and CompensateHorizontalProgress to make ramps feel as fast as flat ground.
Uphill speed floor fix
A minimum along-the-surface speed while climbing, relative to your learned flat-ground speed. Set MinUphillSpeedFraction = 1.0 to never lose any speed uphill at all.
Anti wall-misdetection fix
Stops the roll dying dead on the ramp. When you’re genuinely climbing within the allowed angle (AntiWallMaxAngle), the false “wall” hit is cleared and your forward push restored.
Anti-bounce fix
Stops the ping backwards down the slope. The “Bound” reaction that fires on ramps as if you hit a wall has its energy re-aimed up the ramp instead (AntiBounceMaxAngle).
Slope stick / anti-launch fix
Stops you rocketing off the crest. A configurable “slope stick” gently keeps you hugging the surface as retained speed carries you over the top.
Expanded roll-slope window opt-in
Lets the Rev-Roll engage across a wider band of slope angles than vanilla allows — for stubborn, awkward geometry. Off by default.
Dynamic dash thresholds opt-in
While you’re on a ramp, the dash’s internal bounce / continue / brake angle thresholds are temporarily relaxed, then snapped back the instant you’re off it. Off by default.
Slope angle overrides
Raw control of the controller’s slope angles: scFootSlopeDeg, scSlopeDeg, scRollDeg, scRollDegPower, scCeilDeg.
Dash / Rev-Roll speed overrides
Dash and Rev-Roll speeds — normal and Metal Pac-Man, plus the fast and minimum speed values.
Dash timing & charge overrides
The charge, hold, continue and brake angles and times that shape how a dash builds and releases.
Roll overrides
Roll speeds (normal + Metal), the rolling angle, and the margin / brake times.
Bound (bounce) overrides
The raw bounce reaction: force, time, and angle threshold.
Gravity overrides
Vertical gravity for normal, Metal, and in-water states.
Ground-detection overrides
Ground ray distance and radius, slope-down and air-roll frame counts, and the ground-Y tolerance — the low-level “am I on the ground?” tuning.
Run & walk speed overrides
Ordinary run and walk speeds — normal and Metal Pac-Man.
Global multipliers
The four top-level scalars applied to everything: DashSpeedMultiplier, RollSpeedMultiplier, RunWalkSpeedMultiplier, GravityScale. All default to 1.0.
Every individual option also carries its own full description and min .. max range inside the
.cfg itself — open it in any text editor and read as you go.
Copy/paste intentions
A few tuning recipes
“Just make ramps feel right”
Do nothing. The defaults already fix it — this is the whole point of the suite.
“Never lose speed uphill”
Section 03: set MinUphillSpeedFraction = 1.0.
“Ramps as fast as flat ground”
Section 02: set CompensateHorizontalProgress = true.
“Conquer steeper ramps than vanilla”
Raise RampMaxAngle (Section 01) plus AntiWallMaxAngle / AntiBounceMaxAngle, and consider the Section 07 expanded roll window.
“Faster dashes everywhere”
Section 17: set DashSpeedMultiplier = 1.5.
“Heavier, snappier landings”
Section 17: set GravityScale = 1.3.
Always reversible
Flip any Override_* back to false (or set MasterEnable = false) and the game returns to its own values. Nothing you change here is permanent.