Legaia has five minigames - the Vidna casino slot machine, Noa's dance in Sol Tower,
Baka Fighter, fishing at the Buma and Vidna ponds, and the Muscle Dome arena. All
five are playable right here in your browser: the game's own rules,
rewritten from-scratch, playing against the real tables read out of your disc. Below the
player is a fan's guide to Sol Tower, its prize counters and its side-quests.
No disc loaded. Provide a .bin Mode2/2352 image (or a raw PROT.DAT) to play.
Play them
Pick a disc image above, then a tab. Nothing is uploaded - the image is read in this tab
and the games run as WebAssembly. If you have an emulator save, drop it on the save bar:
its casino coin bank funds the session across the three coin games, and
export writes your balance back so the save still loads in an emulator.
How to read the panels. Each game opens with what it is in Legaia and how
to play it here, then the widget, then a short key list. A collapsed
“What is real and what is fitted” note at the bottom of each panel says
which parts are traced from the disc and which were fitted by eye - the rules and tables
are always the disc's; some camera seats and layouts are not.
Sol Fever Disco — Noa's dance
In Sol Tower's disco, Noa dances against two rivals to a step chart the Disco King
calls out. Hit each step on the beat: every closed step chain fills the groove gauge,
and a full gauge promotes you to a denser, higher-scoring lane (the gauge never falls -
only rises). 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 run the same chart for real: beat them.
Keys:Z Square, C Circle, X Triangle. Score
caps at 999; the song ends the round.
What is real and what is fitted
The step chart, beat clock, timing windows, groove gauge and score tiers are the
game's own, read from the dance overlay on your disc. 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. The dancers, floor and HUD come from the
dance art pack on the disc. Full trace with addresses and scoring constants:
docs/subsystems/minigame-dance.md.
Baka Fighter — the duel
The arcade cabinet in Sol Tower. It is rock-paper-scissors with life meters, best of
three rounds: 2 beats 1, 3 beats 2, 1 beats 3. The opponent throws from a
scripted pattern stored on the disc, so it can be read and predicted. 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 tally menu
asks NEXT GAME or PAY OUT: fight on and the pot rides (lose and it is
forfeit), pay out and it banks. Clear the whole ladder and the pot pays - 460 coins
from rung one. “Start at” drops you in at any rung.
You
—
vs
Opponent
—
Stage —Round 1Your combo taken 0Prize — GPot at risk 0 GBanked 0 G
Keys:V / X /
Z are throws 1 / 2 / 3 - Square, Circle and Cross, the
buttons the cabinet reads - and C is the Special. Pot at risk is everything won this run that a loss would wipe;
Banked is what PAY OUT has already kept.
What is real and what is fitted
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 two secret
opponents: the cabinet inserts them mid-run after stages 5 and 13 when your
running high score is big enough, and serves them again on a second lap after an
all-clear. That is why the raw roster's gold column looks jumbled - it is sorted
so the secrets sit outside the first lap.
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 HUD and tally-menu widgets, the
overlay's own sound cues and its boss-overture music. The mid-run pot forfeit is
pinned to the disassembly: the GAME OVER state zeroes the prize accumulator on
its first frame. 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 are not in a save state), the tiled floor (the stage set
carries no floor mesh), the HP-bar frame, and the animation slot order. When the
presentation assets do not decode, the duel falls back to the stat panel above
and says so - no stand-in art is drawn.
Vidna casino — slot machine
The one-armed bandit in Vidna's casino. 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 once more per
reel to stop them left to right. The cabinet itself has a stop button per reel -
V (Square), Z (Cross)
and X (Circle) stop the left, middle and right reel
in any order. A win banks itself; when the coins run out, a press racks a fresh
machine. Clicking the machine counts as a press.
Coins 0Spin costs 3Feature mode 0Net take 0
How to read the paytable: each row is a symbol and what three of it on a live
payline pays. The reel strips, the payout table, the two RNGs and the net-take
brackets are all read from the slot overlay on your disc; the symbol art is the
casino's own art pack.
Fishing — Buma & Vidna ponds
Two ponds, one in Buma and one in Vidna, each with its own species and prize counter.
Cast, keep working the lure, and when the strike lands the species is picked
by a hidden band: reeling in one of 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 is a tension tug-of-war - reel
to bring the fish in, ease off before the line snaps - and the landed catch scores
into the same 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 prize counter: six rows, prices and one-time latches read off your disc,
spending the point pool the catches feed. Exactly as in the game, a venue's top prize
stays hidden until you can afford it - which is how Vidna's 50,000-point War God Icon
escaped every walkthrough. Trades here are one unit at a time; the one-time latches
ride along in a save export.
How to read the species table: one row per fish, with its point value, how
hard it pulls, and the strike gate it needs. Which fish bites is
lure row × band column in the pond's spawn table - the rod only changes
how the tension fight goes.
What is real and what is fitted
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 at load. Reference:
docs/subsystems/minigame-fishing.md.
The pond is the real place: the venue's own field-scene bundle assembled
in WebGL, with the lead's actual field model standing on the shore 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.
Sol Tower's arena. Retail presents it as a standard Legaia battle - the usual
battle screen, its command chips gated by the battle's own restriction word - and
so does this panel: the
black “Welcome to the Muscle Dome!” intro card, the command
cluster (Item / Attack / Ra-Seru / Spirit), the name/HP/MP plate and the AP gauge. You field
one character in their assembled battle form 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 spells a
Tactical Art raises the “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.
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. 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.
Z skips the intro card, reviews the queue, and
confirms Begin / Reselect (Esc backs out).
In the command menu ← is Attack, → is
Ra-Seru (the magic list - pick with ↑/↓,
cast with Z), ↓ is
Spirit (end selection and fight). A cast spends MP, not AP, and
replaces the whole direction string - which is what retail's arm does.
Attack opens the Auto / Command pick (←/→).
Command is the real input screen: the arrow keys (or 1–4)
enter directions onto the input bar 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.
A settled turn goes straight back to the command menu - retail has no beat
between turns.
Round 1/8Banked 0Coins 0Turn 0HP Left 100%Your AP 0Entered 0Caption —
What is real and what is fitted
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 sections spliced and posed from its own action
streams), each direction plays that command's own swing record, and your
stats are the new-game template levelled through the game's growth curves. The
opponent fights with its monster record's boosted battle stats, and a committed
sequence is matched against the arts-name table's own combo strings to raise the
arts banner.
The arena is the game's own too. The fenced dirt ring is the Sol Muscle
Dome's real battle backdrop (PROT 1225, the tail slot of the dome's
other6.lzs file), drawn with its own texture pages and its lamp-glow
prims blended additively the PSX way; the ground is the retail battle ground
grid sampling the backdrop's own dirt tile. That stream's second object - a ring
of dust decals - is omitted here, and retail omits it too: its battle scene
loader drops object 1 from the backdrop's bound part list unless the
encounter record's own option bit asks for it. A live capture of a dome
contest reads that option byte as clear at the loader's own test and sees it
written not once all match, so the trim really is what retail does here -
and the retail match capture shows no dust. The sound is the dome's own cue set
(PROT 0868 UI blips, the shared PROT 0869 impact cue) with the battle
theme as BGM.
The chrome is the game's art. Every chip, plate, badge, numeral and
banner strip on the HUD is decoded from your disc - the widget page in
PROT.DAT's system-TIM gap, the small battle font, the menu-glyph
digits, the battle-effect bank's SUPER / HYPER / MIRACLE ARTS!! strips and
damage numerals (PROT 0870), and the dome's own cursive welcome, INTERVAL
heading and ROUND word (extraction 1220). Screen positions come from the
battle HUD element table plus packet captures of a real dome match and a real
arts input screen, down to the hexagon chips, the maroon input bar, the pennants
and the Hyper Arts list window.
Fitted rather than traced: the base camera seat, fighter spacing and
facing; the banner's speed-line rays and the SUPER/MIRACLE word composition
(only the HYPER strip is packet-pinned); the chips' glide-in motion; the INTERVAL
screen's hold time; the
KO clip pick; 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; pennant widths for non-30-cost commands;
the review / Begin-Reselect screen geometry; and the arts list showing
every table art - the page does not model arts learning.
Two of those are now traced instead: the three UI blips are
accept (0x21), highlight-moved (0x22) and
refused-or-back (0x23); and retail's Auto has no picker
at all - it commits the command string saved into the character's own record
on the previous round's review confirm, which is also why a reopened input
screen starts with the last round's pennants.
The Ra-Seru chip is live now, on this page and in the native
window: the shared session carries retail's three gates (the member's
Ra-Seru, the sealed-magic status bit, the restriction word's magic bit),
prices the list by the accessory MP-saver discount and resolves the cast
through the same rule the ordinary battle folds with. Which chip wears the
red X is the restriction word's, not a course table. The word is seeded at
arena entry from three story flags, and the highest seed carries the magic
bit, so retail's dome does cross the Ra-Seru chip out once the
Master course is unlocked; every seed also carries the Item bit.
The sibling gap is closed - the queue the turn resolves
is now the retail tokenizer's wherever the fighter's art records are loaded - the
arena door and the native window - so a recognised art contributes its own power
row instead of the swings it consumed. This page's standalone dome panel still
reads its arts from the name table, which has no action constants, so its banner
is real recognition while its damage is still swings.
Its hub screens also run retail's own fade/hold envelopes rather than a frame
count the page picked. Without a disc the chrome
falls back to a canvas approximation; when the 3D bodies or backdrop do not
decode, the fight falls back to the text HUD or plain tiles and says so.
Where each game lives, what you are really playing against, and where the coins go. One
casino coin bank is shared by the slot machine, Baka Fighter and the Muscle Dome; fishing
keeps its own point pool.
Sol is a city built as a tower: a basement reached by service elevator, then floor after
floor of vendors, the arena, the disco, the Baka Fighter cabinet and a handful of
side-quests that belong nowhere else. The map below is floor by floor, B2 to Roof; 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.
Prize counters
Casino coins are only worth what you trade them for. The Vidna casino
exchanges coins won at its slots for items; the Sol Tower counter on the
Muscle Dome floor spends the same coin pool (also earned in Muscle Dome runs and Baka
Fighter) on a higher-value ladder. Both ladders top out at the 100,000-coin Earth Egg.
The Sol rows are the Muscle Dome prize-exchange counter, not a slot
machine - the slot machine only pays out coins. The same pool funds Muscle Dome entry
fees, Baka Fighter games and counter purchases.
Muscle Dome courses
Three fixed arenas, each a ladder of ordinary battles against one monster at a time -
8 rounds on Beginner and Expert, 13 on Master. The walkthrough data below records
Beginner and Expert disabling equipment and items but allowing magic, with Master adding
a magic ban; accessories are always permitted. The disc backs both bans, from the arena's
own entry: it seeds the special-battle word from the three course-unlock story flags, and
every one of those seeds carries the Item-forbidden bit while the Master one also
carries the magic-forbidden bit. (The executable's battle init raises the magic bit too,
but keyed on the first enemy's monster id - ids the dome ladder never fields.) The line-ups
are cross-checked against the roster table on the disc, which agrees in every slot.
Muscle Paradise secrets
How the disc decides a course
The highest course your story flags have unlocked is the one offered. The Master course
can also stop early: three story flags each cap it (at round 8, 11 or 12) if they are
missing when the run reaches that round, and retail lets a later cap overwrite an
earlier one, so a run missing all three stops at 12 rather than 8. A cleared round's
tally screen shows six count-up rows - three of them are healing back into your
fighter's HP, not score, so a dome contest costs no permanent HP.
Baka Fighter
Rock-paper-scissors with life meters, played up a ladder that pays out coins on a full
clear. Round 5 is Xain, Round 14 is Songi.
The round table below is the curated walkthrough data,
which describes each round as a button sequence to reproduce. It is a cross-check, not the
primary source: the playable duel above is driven 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 cabinet's fighters reuse the party's battle character models: playing
as Vahn, Noa or Gala loads the pre-assembled default-gear sibling pack of the models the
turn-based battles use. The PLAYER SELECT roster is exactly these models.
View them in 3D. These models render textured and animated 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.
Each minigame's runtime - per-frame state machine, scoring math, data tables - is traced
from the game's overlay code and rewritten from-scratch in Rust. The same engine runs
natively in play-window (dance K, fishing L, slot
machine O, Baka Fighter B, Muscle Dome M) and here
in the browser as WebAssembly. What each one is, in one line:
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. The cabinet is a real 3D scene: the reels are textured cylinders and the paylines projected 3D lines.
Baka Fighter - rock-paper-scissors, best of three, against a roster of 17 scripted opponents, each with its own prize and throw pattern; two of them are secret rungs gated on your high score.
Dance - a beat clock with an accuracy-weighted timing judge, a baked step chart selected by lane, and per-tier score multipliers. The rivals score for real.
Muscle Dome - not a card battle and not turn-limited: a ladder of ordinary battles, three courses of 8 / 8 / 13 rounds, each staging one real monster into the normal battle formation. You enter a directional command string under an AP budget, it plays out through the regular battle engine, and the round ends when one side is knocked out.