All five of Legaia's minigames - the casino slot machine, Noa's dance, Baka
Fighter, fishing, and the Muscle Dome - are playable right here in
your browser, each one the game's own reverse-engineered logic playing against the real
tables on your disc.
No disc loaded. Provide a .bin Mode2/2352 image (or a raw PROT.DAT) to play.
Play them
Sol Fever Disco — Noa's dance
Hit the step on the beat — the notes are the game's own step chart, and every
closed step chain fills the groove gauge, promoting you to a denser, higher-scoring
lane. Triangle is the wildcard: three “groovy moves” a song, worth
the big multiplier only when spent on a 4-beat combo slot, and it spins Noa
for up to a second during which nothing you press is judged. The two dancers beside
you are running the same chart for real: beat them.
The judge scores the raw chart cell, not the held-sequence symbol the display
substitutes on every fourth beat — and each chart symbol is literally a
pad-button mask (1 = Square, 2 = Circle, 3 = Triangle).
Triangle matches no chart cell: it spends a stock of three, scores small anywhere but
big (plus a full groove-gauge step) on the 4-beat combo slot, and the spin it triggers
suspends judging entirely. Full trace, addresses and scoring constants:
docs/subsystems/minigame-dance.md.
Baka Fighter — the duel
Rock-paper-scissors with life meters, best of three: 2 beats 1, 3 beats 2,
1 beats 3, and the opponent throws from a scripted pattern on the disc, so it can
be read. Each hit you take feeds the combo counter behind the next one, and a
comeback critical can fire at a sliver of HP. The Special is unbeatable but slow: it
wins the exchange outright, or the whole round if it charges to full.
Start a run and pick a fighter on the cabinet's own PLAYER SELECT screen
(arrows or a click, Enter confirms). After every stage win the retail tally
menu asks NEXT GAME or PAY OUT — fight on and the pot rides
(lose and it's forfeit), pay out and it banks. Clear all fourteen rungs and the
whole pot pays, 460 coins from rung one; "Start at" lets you drop in at any rung.
You
—
vs
Opponent
—
Stage —Round 1Your combo taken 0Prize — GPot at risk 0 GBanked 0 G
The names, ladder and prizes are read off your image. Each roster record opens
with a 32-byte ASCII name, and the cabinet serves records 5–16 in order —
across which the prize gold is strictly increasing and sums to
— coins. Records 3 and 4 are the post-clear second-lap
opponents, which is why the raw roster's gold column looks jumbled.
The duel is drawn with the cabinet's own assets, decoded from your disc as it
runs: your fighter from the battle-form party pack (PROT 1204), the opponent from
its per-rung pack (PROT 1206…1219), both posed from their real animation
banks, plus the arena, the retail HUD/tally-menu widgets, the overlay's own sound cues
and its boss-overture music. Full trace:
docs/subsystems/minigame-baka-fighter.md.
Fitted rather than traced: the 3D camera, fighter spacing and menu layout (the
duel's GTE matrices aren't in a save state), the tiled floor (the stage set carries no
floor mesh), the HP-bar frame, and the animation slot order. Two rules are stated
readings rather than overlay-pinned constants: the mid-run pot forfeit and the
final rung's automatic payout. When the presentation assets don't decode, the duel
falls back to the stat panel above and says so — no stand-in art is drawn.
Vidna casino — slot machine
Three coins a spin, all five paylines always live — three straight, two
diagonal — and you stop each reel yourself. A hidden net-take counter
brackets the odds: the more the machine has taken off you, the more generous it rolls,
and a big bonus win knocks the counter back down. Three blue kicks earn
1 bonus round, three red punches earn 3: the reels rotate onto the
numeral strip (1–10) and stopping all three pays their product,
1 to 1000 coins — nothing steers those reels but your timing.
Space is the whole machine. Press it to spin, then press it once
more per reel to stop them left to right — three presses, three reels, which is
exactly what the cabinet's three stop buttons do. A win banks itself, so there is
nothing to collect; when the coins run out, a press racks a fresh machine.
Clicking the machine counts as a press too, and Z
(Cross) still lands for pad players.
Coins 0Spin costs 3Feature mode 0Net take 0
Fishing — Buma & Vidna ponds
The real pond loop. Cast, keep working the lure, and when the strike lands the
species is picked by the game's hidden band — reeling in one of the four
recognised rhythms flashes “Good!” and pins the band that rhythm
names, and a six-condition gate guards each pond's rarest catch. Once hooked it's the
tension tug-of-war: reel to bring the fish in, ease off before the line snaps,
and the landed catch scores into the same persistent point pool the prize counter
spends. Your reel record, lures, rod and lifetime cast counter can come straight from
a loaded save.
X casts and locks the power meter; hold Z (Cross) or
V (Square) to reel. While the lure is out, every fresh press feeds the
bite, and a strike can only land while a reel button is held — try the rhythm
Cross · pause · Cross, or the Square-tap cadence the
Spirit-fish write-up decodes. After a catch or
a snapped line, X casts again. Drag the pond to orbit, wheel to zoom,
double-click to re-frame.
Phase —Hooked —Points 0Best 0Casts 0
Point exchange
The pond's own prize counter: six rows, prices and one-time latches read off your
disc, spending the same point pool the catches feed — and, exactly as in the
game, a venue's top prize stays hidden until you can afford it. (Trades here are one
unit at a time; the persistent one-time latches ride along in a save export.)
The rules are the retail loop, read off your image: the ten-species table
(score value, pull factor, strike gate), the per-pond spawn tables the hook resolves
through (lure row × band column), the four reel-cadence gesture templates the
“Good!” recogniser matches, the band-roll odds, the strike credit, the
gate behind each pond's band-4 rarity, the tension divisors of all three rods, the
catch-score formula with its 999,999 cap, and the prize counter — all decoded
from the fishing overlay on your disc at load. Reference:
minigame-fishing.md.
The pond is the real place: the venue's own field-scene bundle assembled in
WebGL — and the angler on the shore is the lead's actual field model, standing
in his own idle animation.
Fitted rather than traced: the camera framing and the shore anchor (the retail
camera lives in runtime globals), the line / bobber / ripple overlay, the exact
strike-denominator ladder, the fight's reel-in rates, and the fish-behaviour branch
order (its pull / dart / sink formulas are per-species disc data). The HUD glyph
atlas is the one undecoded fishing asset, so its icons draw as labelled text. The
venue bundle carries two pond areas — the fenced fishing deck and the
rocky-shore pool — and which pond each venue plays at is a fitted assignment;
the line-snap loss is an engine-side reading. No stand-in mechanics beyond what is
listed here.
Retail presents the Muscle Dome as a standard battle — the normal Legaia
battle chrome with the Item command crossed out — and so does this panel:
the black “Welcome to the Muscle Dome!” intro card, the command
cluster (Attack / Ra-Seru / Spirit), the name/HP/MP plate and the AP gauge. Your
fighter is the character's assembled battle form (the normal fighter form retail
fields here) against one of the game's monsters, both drawn and animated from your
disc. Choose Attack and enter directions under an AP budget seeded from your
fighter's AGL; a sequence that performs a Tactical Art raises the retail
“HYPER ARTS!!” banner, and every command resolves through the game's
actual battle engine — the per-move power table, the arts damage roll,
the element-affinity matrix and the damage finisher, all read off your image.
Fight until someone drops. A dome round is an ordinary battle with no
turn limit — HP Left is how much of your opponent is still
standing, and emptying it is the whole win condition.
Z skips the intro card. In the
command menu ← is Attack, ↓
is Spirit (end selection and fight); Item is crossed out and the Ra-Seru chip
is disabled (see the note). Attack opens the retail Auto / Command
pick (←/→); Command is the real input screen —
the arrow keys (or 1–4) enter
directions onto the input bar as command pennants while the AP budget covers their
cost (entry ends by itself when nothing is affordable, exactly as retail does),
C is the Triangle button — the learned-arts list overlay,
paging on each press — and a sequence that spells a Tactical Art raises the
arts banner when it plays out. Z reviews the queue, then
Begin / Reselect confirms or redoes it (Esc backs out).
A settled turn goes straight back to the command menu — retail has no beat
between turns. Between fights the arena's INTERVAL screen counts the
cleared round up, and Z stages the next one. Drag the
arena to orbit, wheel to zoom.
Round 1/8Banked 0Coins 0Turn 0HP Left 100%Your AP 0Entered 0Caption —
The fight is your disc's. The four-direction deal, the AP gate and the
action queue are the arena's own rules; each command
resolves through the ported
battle engine — its power from the battle overlay's move-power table, the
damage roll and finisher from the shared battle formulas, the elemental nudge from
the 8×8 affinity matrix. Your fighter's body is the assembled battle
form — the player battle file's equipment-id sections spliced and posed
from its own action streams, with each direction playing that command's own
swing record (the direction ids 0xC..0xF are the swing slots, so the
pairing is the disc's, not a guess) — and your stats are the new-game template
leveled through the game's own growth curves (pick the level above). The command
costs are your character's own swing records, the opponent fights with its monster
record's boosted battle stats, and a committed sequence is resolved against the
SCUS arts-name table's own combo strings to raise the retail arts banner
— every number decoded from the image you loaded, in your browser.
The arena is the game's own too. The fenced dirt ring behind the fighters is
the Sol Muscle Dome's real battle backdrop — PROT 1225, the tail slot of
the dome's own other6.lzs file — drawn world-fixed with its own
texture pages and with its lamp-glow prims blended additively the PSX way (the
stream's separate dust-decal object is omitted — the retail match shows a
mist-free arena), and the ground underfoot is the retail battle ground grid (the flat
tiled plane the battle overlay emits, sampling the backdrop's own dirt tile at its
traced VRAM address). The sound is the dome's own cue set: the match SM's UI
blips (PROT 0868) and the shared battle impact cue (PROT 0869), decoded
from your image, with the battle theme the arena inherits as BGM.
The chrome is the game's art now, too. Every chip, plate, badge, numeral and
banner strip on the HUD is decoded from your disc: the blue/gold plate slices, the
D-pad glyph, the AP-plate pieces and the HP/MP badges from the boot-time widget
page in PROT.DAT's unindexed system-TIM gap; the chip labels in the
game's own small battle font; the digits from the menu-glyph atlas; the red
cross-out X, the SUPER / HYPER / MIRACLE ARTS!! strips, the DAMAGE / HIT /
TOTAL words and the big orange damage numerals from the battle-effect bank
(PROT 0870); and the “Welcome to the Muscle Dome!”
cursive, the INTERVAL heading and the ROUND word from the dome's own data file
(extraction 1220), placed by the PROT 0977 overlay's sprite table. Screen
positions come from the SCUS-static battle HUD element table plus a live PCSX-Redux
packet capture of a real dome match (command cluster, enemy art, player
HYPER ARTS!!). The arts command input is packet-pinned piece by
piece from a GP0 capture of a live retail input screen: the High/Left/Right/Low
hexagon chips with their baked label strips and gold diamond ends, the maroon
input bar and its committed-command pennants, the input-phase AP plate's gouraud
sheen, the green Triangle-button circle (its own tiny system TIM), and the
Hyper Arts list window — system-UI interior tiles under the retail
per-window gradient, with each art's name, arrow string and AP cost in the orange
sub-palette, straight from the SCUS arts-name table.
Fitted rather than traced: the base camera seat, fighter spacing and facing
(the slow spin between rounds is the traced idle-phase camera tick); the banner's
white speed-line rays (polygonal in retail, procedural here) and the SUPER/MIRACLE
banner word composition (atlas layout — only the HYPER strip's draw is
packet-pinned); the chips' glide-in motion (the page parks them at the element
table's arrived endpoints); the between-fights INTERVAL screen's hold time (its
heading and six count-up rows are the retail emitters' own; retail's fade/hold
counters are unported); the time-meter
placement (its ramp is the traced FUN_801d3444 shape); which of the
three traced UI blips fires on which page event; the KO clip pick (slot 4 of
the pinned party hit-reaction family — the flinch, slot 2, is traced); the
opponent's greedy command AI (retail has no dome-specific AI table); the
jitter-free level growth (retail adds a zero-mean random spread); the awarded
Seru; the pennant spawn anchor and non-30-cost pennant widths (the capture holds
the 30-cost pitch); the Auto picker (greedy here — retail's picker is
unpinned); the review / Begin-Reselect screens' geometry (screenshot-read); and
the arts list showing every table art — the page does not model arts
learning, which retail gates the list on. Two honest gaps: the rules engine resolves each command as a basic
strike — retail expands a recognized art through its art records for more
damage, so the arts banner here is presentation over the real recognition, not an
arts damage model — and the Ra-Seru (magic) chip renders crossed out because
the port has no cast path, though retail crosses it only on its magic-forbidden
courses. Without a disc image the chrome falls back to the old canvas
approximation; when the 3D bodies don't decode, the fight falls back to the text
HUD and says so; when the backdrop entry doesn't decode, the floor falls back to
plain tiles.
Vertical structure with a B2 basement reached by service elevator. Each floor hosts a mix of vendors, the major minigames, and a handful of side-quests that don't fit anywhere else in the gamedata schema. The asset viewer can be pre-filtered to this scene.
Side-quest chains
Sol Tower is the hub for several multi-step quests that thread back through other towns. Each row is the sequence of beats; rewards reference items in the curated tables.
Slot machines
Two coin-economy prize tables sit behind the slot-machine pulls: the
Vidna casino exchanges casino coins won at its slots
for items, while the Sol Tower F4 Muscle Dome counter
exchanges the same coin pool (also earned through Muscle Dome runs and
Baka Fighter rounds) for a higher-value prize ladder. Each ladder is
capped at the 100,000-coin Earth Egg.
The Sol rows below are technically the Muscle Dome
prize-exchange counter on F4, not the slot machine itself - the slot
machine only pays out coins. The same coin pool funds Muscle Dome entry
fees, Baka Fighter games, and counter purchases.
Muscle Dome courses
Three fixed-progression arenas. Entry fee is a flat 100 coins. Restrictions are enforced at course entry - Beginner and Expert disable equipment and items but allow magic; Master adds a magic ban. Accessories are always permitted.
Muscle Paradise secrets
Baka Fighter
A rock-paper-scissors variant with life meters, played across a 14-round ladder that pays out coins on a full clear.
The round table below is the curated walkthrough data, which
describes each round as a button sequence to reproduce. It is kept as a cross-check against the
binary rather than as the primary source: the playable duel higher up the page
is driven instead by the roster the cabinet's own overlay carries, read out of your disc. Where the
two disagree, the disc wins.
The fighters (3D meshes)
The minigame's fighters reuse the party's battle character models: playing as Vahn/Noa/Gala loads the same higher-detail meshes and texture atlases the turn-based battles use (the pre-assembled default-gear pack). The PLAYER SELECT roster is exactly these models.
View them in 3D. These models render textured + animated in the interactive viewer on the characters page - open your disc image, pick a slot, and toggle battle form or Baka Fighter to orbit and play each fighter's animation.
About this data — what runs where, saves & coins, the traced internals
You supply the disc image; it is read locally and nothing is uploaded. Load an emulator save
into the save bar and its casino coin bank funds the session across the coin
games (export writes the balance back). The rest of the page is reference: prize ladders,
Muscle Dome courses, and the Sol Tower side-quests (scene town0d).
Each playable game is the retail machinery - beat clock, duel resolver, reel RNGs - rewritten in
Rust, and the step chart, fighter roster and payout table are read out of the disc image you
load. The odds you're beating are the odds the cabinet shipped with.
Internals (reverse-engineered)
Each minigame's runtime - per-frame state machine, scoring math, data tables - is traced from
the captured overlay code and written up in the linked repo docs:
Fishing - a reel tug-of-war against a tension gauge, with per-species parameter tables and two per-venue prize counters decoded from the disc - including a hidden 50,000-point War God Icon at Vidna the walkthrough prize lists miss.
Slot machine - a reel state machine with two RNGs and a per-symbol payout table; the feature odds bracket on a hidden net-take counter, and the per-spin balance only commits to the shared coin bank at the cash-out counter.
Baka Fighter - rock-paper-scissors, best of 3, against 17 scripted opponents each with their own prize and attack pattern.
Dance - a beat clock with an accuracy-weighted timing judge, a baked step chart selected by difficulty, and per-tier score multipliers.
Muscle Dome - not a card battle at all, and not turn-limited either: a ladder of ordinary battles, three courses of 8 / 8 / 13 rounds, each staging one real monster into the ordinary battle formation cell. Each turn you enter a directional command string under an AP budget, it plays out through the game's regular battle engine, and the round ends when one side is knocked out.
All five are playable in the clean-room engine's native
play-window (dance K, fishing L, slot machine
O, Baka Fighter B, Muscle Dome M), and
all five also run right here in the browser, compiled to WebAssembly. The
browser fishing session reads its rod, lures, point record and lifetime cast counter from a
loaded save (with pickers as the fallback), and the Muscle Dome resolves each card through
the ported battle formulas against disc-record fighter stats — the deals, budgets,
tension and scoring are the game's own tables.
Related
Curated tables drive every prize and stat block on this page - game-data reference for schema + library access. Muscle Dome rosters cross-validate the on-disc encounter records; Master-course gating + the Sol Tower side-quest beats hit the field-VM flag banks.