Corrected and updated 2026-09-30. Several rules on this page were wrong: the whip grades, the "stamina drain ladder", the pace normalizer, the bonding advice for "Too soft" and "Strict" horses, the Almighty CPU profile, the jackpot/dud foals, the food labels and the dirt inheritance. They have been corrected or retired below, each marked
corrected, and newly verified rules (food, race day, post-race replies, over-breeding, coats) have been added, to match the
DOC FAQ. Where this page and the FAQ ever disagree, the FAQ is right.
These are mechanics recovered by reverse-engineering the ROM: rules a player could never see, with what to actually do about each. Honesty tags: exact decoded byte-for-byte · strong decoded but approximate · inferred pattern-derived, not yet byte-proven · not settled still open.
Breeding: the game rewards matched bloodlines and taxes high averages
These breeding rules are World Edition's foal code (DOC 2000 runs essentially the same code, apart from how it weakens a retired card parent, below). DOC '99's foal routine is different: it builds a foal only from its sire and dam, an average over 45 does not lose 5 (and one under 10 does not gain 5), it has no rare band, and its pedigree bonus is +3 to all three internals at 4 or 5 matches and +6 at 6.
Foal stats are the parents' average: then docked exact
Internals =
floor((sire+dam)/2) of the parents'
current internals, then a soft clamp: anything
over 45 loses 5, under 10 gains 5, then the bloodline bonus, and internals are
hard-capped at 45 at birth (not 60/65; the rare band below can lift them to 50). A 46 average comes out 41, so parents averaging 46 to 49 give only 41 to 44. (From a parent's 11th breeding at a World Edition cabinet, that parent counts lower: see below.)
race parents up before breeding, but aim for an average of exactly 45, or 50 and above; 46 to 49 is worse than 45. Once both parents are at 50+ on all three, more racing adds nothing. DOC 2000 is different: a retired card parent counts with its birth stats plus only a fifth of what racing changed, so racing a DOC 2000 parent helps its foals much less.
The bloodline bonus: favorable & unfavorable pairs exact
For each of the six externals, the game counts a match when
both parents are ◎ (13 to 16 on the 1 to 16 scale) or
both are ✕ (1 to 4). Only the sire and dam count.
4 or 5 matches: +1 stamina, +2 speed, +2 sharp. 6 matches: +3 stamina, +2 speed, +3 sharp. The 45 cap still applies afterwards, and the bonus never touches externals.
breed like-to-like. Two parents strong in the same externals get rewarded; a mismatched pair earns nothing.
1 foal in 32 is a hidden jackpot, and it prints lower exact corrected
One random roll at birth, exactly 8 values of 256 (1 in 32): all three true internals gain 5 (up to 50) while the card
prints lower, so a card printing 45/45/33 or 40/40/40 can be a true 50/50/50. A second 1-in-32 window only raises the
printed numbers (on stats under 40); the true internals don't change. Nothing after conception, and no choice of parents, changes the odds.
This rule used to say about 3% of foals take −12 and 3% get +12. That misread which numbers the roll changes.
judge a foal by its true internals, not the print; re-breed if you want another shot at the roll.
Sex is a coin flip; dirt is averaged half by half exact corrected
Foal sex is a 50/50 random bit: you can't steer it. The dirt rating is stored as two halves (0 to 15 each, like the two digits of a hex number), and the foal gets the rounded-down average of
each half separately, not the average of the whole number: parents rated 136 and 119 give a foal of 119, not 127. A parent with a dirt rating of 0 is given a random one for that breeding. 446 of 447 cabinet foals with two known parents match this.
This rule used to say dirt aptitude might be inherited bit by bit from a hidden mask, so it could jump. The game's foal code averages the dirt number itself, half by half.
pick parents with the dirt numbers you want on both sides; each half of the foal's rating lands between the parents' halves, so the whole number can even come out below both (160 and 159 give 151).
Breeding a horse many times weakens its foals, not the horse exact
At a World Edition cabinet the card counts every breeding a retired horse does as a sire or dam. From its
11th breeding on, the game builds the foal from a weakened copy of that parent: speed, stamina and sharp each count 2 lower and every breeding band 1 lower for breedings 11 to 15, then 3 and 1 lower (16 to 20), 4 and 2 lower (21 to 25), and 5 and 2 lower from the 26th. A stat is never counted below 20. Because a foal gets the average, it ends up about half that much lower. The parent's own card never changes: its symbols and stats stay as they were, and only the breed count goes up. There is
no breeding cap: the often quoted 20 is not in the game code, and the count just stops rising after 30 breedings (the breeding screen's comment changes at the 25th, 26th and 28th). Catalog horses are never affected, and DOC '99 has no such penalty. DOC 2000 weakens a card parent its own way, from its first breeding: the foal is made from a copy whose three hidden stats sit four fifths of the way back to the parent's birth values, so a parent passes on only a fifth of what racing changed, and once its breed count passes 50 each point above 50 can cut them by a further 10 percent (DOC 2000 sets that count to 37 for a stallion or 39 for a mare when the card is saved as retired, 3 less if it ran more than 30 races, and adds 1 per breeding). Either way the parent's own card keeps its stats; at a World Edition cabinet only the card's third magnetic track, where the count is kept, is rewritten.
for full-strength foals, retire a parent from stud duty after its 10th breeding. Online, the count only builds up when the parent's updated card is saved back to your stable.
Special coats follow a hidden gene exact
A special-coated horse always carries two special copies; a normal-coated horse can carry one without showing it. A foal that inherits two copies comes out special 10 times in 16, so two special parents give a special foal 5 times in 8. A special parent never passes on its own coat: the foal's special coat is drawn fresh each time, about White 7 in 40, Okapi and Panda 6, Platinum, Orange Panda and Cow II 4, and Cow, Zebra and Tiger 3. Two parents with no copy at all can still produce one about 1 time in 85, and then only Platinum, Orange Panda or Cow II. 166 cabinet foals from two special parents fit these odds. The "timer" the game uses is a counter that starts at 0 when the cabinet is switched on and adds 1 on every pass of its main loop (once per screen update); it can't change while a foal's coat is being worked out, and a player can't aim for a particular value. DOC '99 works differently: a foal with two special copies does not roll, every second such foal since the cabinet last started up comes out special, and its special coats are White 4 times in 16 and never Zebra.
breed special to special for the best odds, and don't expect a particular special coat to breed true.
Racing: what is decoded, and what isn't yet
What each stat does in a race exact corrected
Read twice independently from World Edition's race code; how much each piece changes results has not been measured at a cabinet.
Internals: stamina sets how fast the gauge fills while you whip, so higher stamina lets you urge longer before the horse has to ease off; speed adds a little to the top speed the horse aims for while you whip (noticeably more from 50 up, less at 3000 and 3200 metres); sharp was meant to set how quickly a horse picks up speed, but a programming slip gives every horse the same value, so in World Edition and DOC 2000 sharp has no effect of its own in a race (DOC '99 uses it). All three still count toward the three-stat total, which adds a little speed.
Externals don't take turns one per phase: each works in its own situation, and several can be active at once. Start at the gate and in the opening seconds; Corner in the turns (less at 3000 and 3200 metres); Out of the Box any time you whip with three or more horses close; Competing (two or more horses close, never while leading) and Tenacious (while the gauge is nearly full) in the last 500 to 1300 metres, depending on distance and running style; Spurt only in the final stretch (the last 280 metres, or 430 from 2000 metres up), and only while you whip. The running style picks a pace plan across the race's 8 sections, which moves the speed the horse aims for by more than most single externals add.
This rule used to say what each internal does was not decoded and that the externals' roles were a provisional reading. The earlier "externals dominate" result came from one tuning constant in our race simulator.
don't neglect either family. Spurt and Tenacious only count late (Spurt only while you whip), and Out of the Box only while you whip in a pack. Externals also decide running style (Start's rank among Start, Out of the Box, Competing, Tenacious and Spurt).
Hearts pay on race day, late in the race exact
For your own horse (not the computer's), hearts add a small bonus to speed in the last part of each race, from 500 to 1300 metres out depending on the distance and the running style, lasting to the finish. Full hearts against empty hearts is worth about 0.4 percent of speed there: at most about a length over a mile, and up to about two lengths at 3000 or 3200 metres. DOC 2000 has the same bonus, and DOC '99 has it too, from 1000 metres out (1200 in races over 2200 metres). In a horse's first 34 races the result also moves hearts: finishing at or better than its pre-race favourite ranking adds 8 points; finishing worse costs nothing in 1R and 2R, 2 points per place short in 3R to 5R and 1 per place in 6R, the day's named Grade 1.
keep hearts high before a race: they help growth after it and speed late in it.
A winning streak costs a little speed exact
Each 1st or 2nd place in a row (counted up to 7) costs your horse a little speed in the last part of its next races; seven in a row costs slightly more than full hearts give. A 3rd place leaves the count where it is, and 4th or worse resets it to zero. Only player horses are affected (World Edition and DOC 2000; DOC '99 has a similar late-race cost that is not fully decoded).
don't read a slightly slower finish after a long streak as a decline: the count resets the first time the horse finishes 4th or worse.
PERFECT is a start-of-race bonus exact
PERFECT is a whip in the first split second after the gates open (the first 14 ticks of the race clock), and it only counts if you have not pressed the whip in the moments just before the start. With PERFECT your horse picks up speed twice as fast during the opening seconds, and if the whip comes before it has left the gate it also breaks faster. It doesn't raise top speed, and only player horses get it.
keep off the whip until the gates open, then whip straight away.
Rev D quietly slows strong young horses exact
On Rev D (Cab C), early in a career (roughly the first 32 races), a player horse whose six externals add up to more than a limit that rises with its race count (120 for a new horse, about 272 by race 10, 344 by race 20 and 364 by race 30) runs about 2 percent slower (0.7 percent in the first race of the day's card). A slip in the game's table also skips that cut for two races near the end of this period and then applies it in the last one (around the horse's 35th race), whatever its externals. At any point in its career, a horse whose speed, stamina and sharp total more than 160 loses another small amount. Rev C and DOC 2000 don't do this, and computer horses are never affected.
on Cab C, a young horse built up fast pays for it in its races until its race count catches up.
"Best distance": no verified rule yet not settled corrected
This rule used to say the distance table is a pace normalizer (distance × multiplier ≈ a constant). A byte dump of the table refutes that: the product rises with distance, so it is not a constant. There is no verified answer yet to which distance suits a horse or a running style.
treat distance advice (such as "front-runners fade past 2000m") as unverified. The Race Lab's Best trip is a model, not the game.
There is no stamina-drain ladder: it is the training damper exact corrected
The ladder is real (thresholds 220/240/250/260/270/280/300 on the sum of the six current externals, independently re-derived), but it belongs to the routine that
shrinks training gains, not to a drain in the race. The game shrinks each training gain as your six current externals add up, while a failed session still takes its full loss: in our tests, horses totalling about 227 to 245 still gained, while horses at 263 to 281 gained nothing visible and still lost 3 points on a failure (see
DOC Myths). The training table itself: full gain while the six current externals total under 220, then 0.9, 0.8, 0.7, 0.5, 0.3 and 0.2 of it in steps, and a tenth from 300 on (read twice independently). Feeding goes through a separate, gentler routine: full value while the six externals total under 240, then 90, 80, 70 and 60 percent in steps of ten, and half from 280 up. Each training gain is also scaled by that external's breeding band: about the full gain at the top of ◎, about 60 percent at the bottom of ✕ (training only; feeding is not scaled this way).
don't pour points into externals you don't need: every point raises the total and shrinks the training gains that follow.
The 92 / 95.5 / 96 / 99 / 99.5 breakpoints are in-race, not your horse's condition exact corrected
The five breakpoints are byte-exact, but they are windows on a
0 to 100 gauge that the game updates tick by tick during the race, not on a condition rating you can raise beforehand. The gauge fills while you whip (more slowly with higher stamina), and a full gauge makes the horse ease off for a while. Tenacious works late in the race while this gauge is nearly full (World Edition's race code, read twice independently).
nothing to time before a race; the old "push condition past 96" advice came from reading these windows as a pre-race stat.
Whipping is grade-blind: there are no hold / light / hard grades exact corrected
The game reads one whip input; there is no high or low whip and no ×1 / ×2 / ×3 grade. The three "grades" this rule used to list came from a misread of the code: an address mix-up pointed at the wrong routine (independently re-checked). In a horse's first 35 races every 9th whip that counts costs 1 hearts point (the Relationship meter), and hearts also feed a small late-race speed bonus for your own horse. Whipping is also how you urge: while you whip, your horse aims for a higher speed but its gauge fills, and a full gauge makes it ease off for a while. From a horse's 5th race on, whipping a lot (roughly 52 or more presses at 1200 metres, about 76 at 3200) also makes its next race start with the gauge part-filled, so it has to ease off sooner (World Edition and DOC 2000).
don't ride to a grade system. Measured on the arcade's cabinets, how closely a ride follows the handbook whip chart does not steadily predict where the horse finishes: on Rev D (3,894 races) it makes no difference, and on Rev C (21,261 races) only the lowest grade does slightly worse (it wins about 3 percentage points less), with no gradient above that.
Personality and post-race replies
Five personalities; the reply that pays depends on the message exact corrected card 0x3F
There are five personalities:
Imposing, Honest, Rough, Coward and Sloppy. "Too soft" and "Strict" are not personalities: they are the two answers to the race 45 question "How'd you train your horse?" (both +4 hearts points). After each race, what your reply does to hearts depends on the
message the game shows, your horse's personality and the button's position on screen, counted from the left: each message has its own buttons and its own values. After an ordinary loss there is always at least one reply that gains hearts, and the replies there move hearts by between -12 and +20 points; a few answers halve them (for example a wrong name at the race 25 question, "No" to "Are you willing to bet the farm?" at race 35, and some replies after a win when the horse has won more than 49% of its races). The surest personality tell is that race 25 question, "What type of thoroughbred is your horse?": the three names on offer, read from the left, differ for each personality, and the right name gains 8 points. Training has its own rules: each session carries a 0 to 5% refusal chance set by personality, course and run type (1 point lower per race won, never below 1%, and a 0% course stays 0%), never before the first race, and a refused session gives no gain and no hearts change; a Turf, Slope, Dirt or Wood run with no whip and no hold press counts as the worst result (-16 hearts points in a Single run, -20 in a Cooperate run).
This rule used to call the reply table unverified. The 6 by 5 table once published as "reply values" is really the hearts slope of a mood chance that picks which loss message appears, not the replies.
read the message first, then look up your horse's personality in the
Personality Reader's per-message reply table. If the timer runs out, the highlighted reply is used (the leftmost if you never moved the cursor). From race 20, when the cabinet is set to a normal race mode (not a Grade 1 mode), the rightmost button is replaced by Retire: pressing it changes no hearts and really retires the horse. After the 63rd race there are no buttons and the horse is retired whatever you press (normal race modes only).
Feeding, roster & version
Food raises the six externals, and pays less on a strong horse exact corrected
A food's six numbers go, in order, to
Start, Corner, Out of the Box, Competing, Tenacious and Spurt: Carrot raises Start, Fodder raises Corner, Cabbage raises Tenacious. No food raises speed, stamina or sharp directly. The gain shrinks as your horse's six externals add up: full value while they total under 240, then 90, 80, 70 and 60 percent in steps of ten, and half from 280 up; any food number of 1 or more still gives at least +1, and each external stops at 63. A food your horse dislikes gives no gain at all (and costs hearts). The Growth/Feed flag and the food table's seventh number only change how the food looks on screen. Rev C, Rev D and DOC 2000 use identical values; DOC '99 has 41 foods, three tuned differently. Same code in all four versions (read twice independently, matched by 1999 and 2000 Japanese food tables and by the arcade's own feeding logs).
This rule used to say what the six numbers raise was not settled.
use food to fine-tune externals (and so running style). For speed, stamina and sharp, feed what your horse likes: from race 15 on, hearts decide whether those grow. The
Feeding Advisor projects a plan onto your horse's externals.
Almighty needs all six externals equal, for CPU horses too exact corrected
The game shows Almighty only when all six current externals are equal,
Corner included; if the other five are equal but Corner differs, it is a Front-runner. Computer horses follow the same rule, because the game works out their style from their externals when it sets up each race. In World Edition the Almighty computer horses are the five whose six externals are all 31: Smile Smile Smile, Las Vegas Dream, Love Machine, My Lover and Mushroom (DOC 2000 has a sixth, the horse World Edition calls High-Rise, which World Edition re-rated). With a total of 186 they are the weakest style group, not the strongest. This rule used to say the computer racers carry a stored style and named Golden Gloves, Singapore Tonic and Diamond Jack as Almighty; that list came from a misread of the game's data.
work out a CPU horse's style from its externals the same way as your own; for any horse, Almighty means all six level, Corner too.
The meta differs by version exact
Rev C = Rev D for all 244 CPU racers' stats (only 16 names changed). World Edition kept 228 of DOC 2000's 244 racers byte-identical (seven were re-rated, and nine more differ only in their computer-racer class or appearance data). DOC '99 is a largely different field (DOC 2000 replaced 63 of its racers, moved one to another slot with new stats, and changed the stamina, speed, sharp, externals or dirt of 58 more) and a different track and food set (41 foods: no banana, no beer; 19 G1s where DOC 2000 has 21).
know your version before importing "best horse" lists from another.
Full byte-level provenance & confidence per claim: see the knowledge base (
HIDDEN_RULES.md,
CARD_BYTE_MAP.md,
ROM_ARCHITECTURE.md). These rules are decoded from the ROM, not folklore, and tagged so you know which is byte-exact vs still inferred. The
DOC FAQ is the up-to-date reference.