KAZIK/docs/native-clover.md
Игорь Федосеев eaac8b861e feat: rework artifacts and tower relics
Extend profiles from 280 to 312 bytes with legacy compatibility.
Keep tower relics run-local and share the profile bankroll.
2026-10-30 23:22:19 +03:00

68 lines
3.6 KiB
Markdown

# Native Clover 5x3
The runtime is MASM x86 only. `native_clover.inc` owns input, five timed reel
strips, clipping, final-board evaluation, settlement, paid-combo selection and
rendering. The original assembly `EvaluateSlotCombos` is reused directly; the
console `GameSlot`, its sleeps, console output and payout functions are never
called by this mode.
## Rules
Fifteen final symbols are sampled once when the stake is debited. Symbol values:
clover 3, lemon 2, cherries 2, bell 3, diamond 5, chest 5, seven 7.
Each paid pattern contributes its factor times its symbol value. Contributions
are added; a pattern entirely covered by earlier paid patterns is not paid
again. Original order: jackpot, eye, sky/earth, up/down arrows, rows 5, rows 4,
verticals, diagonals, rows 3. The jackpot is additive, matching the original
game, not a replacement for the remaining matches.
Displayed multipliers and credited payouts include any returned stake. The
separate net field is actual credit minus the frozen stake. A bank-cap-clipped
payout displays only the money actually credited. The bank cap is 1,000,000,000.
777 uses the same gross/net convention, with neutral feedback for a stake
refund, not victory feedback. Its unchanged strip/table has theoretical gross
RTP 90.025% under independent uniform stop selection; this is not a guarantee
for the actual pseudo-random generator or any individual session.
## Interaction
Space/Enter spins, W/S or Up/Down change the idle stake, P opens/closes the pay
table, Left/Right select an actually paid combo. All controls have clickable
equivalents. Escape first closes the pay table; during a paid spin it queues
leaving until settlement/save completes, otherwise it returns to the hall.
No pause menu or console fallback is opened.
The result grid highlights the selected paid mask, with its type, multiplier,
index/count, aggregate multiplier, gross payout and net separately. Only the
middle line of the separate 777 machine pays; its payout panel says the stake
is included.
## Assets
Generated with the built-in image generator, then copied to
`assets/sprites/clover/cabinet-v1.png` and `symbols-v1.png`. The cabinet is opaque
640x480, symbols seven alpha-tested 56x56 frames. `pack_clover_assets.py` is an
offline packer, not a non-assembly game implementation.
Cabinet prompt: wide front-facing Clover machine in a richly furnished retro
casino, emerald enamel/worn brass/crimson trim, crisp textured Doom-era pixel
art; one large blank near-black rectangular reel bay, no baked symbols,
dividers, letters or people, straight-on framing.
Symbol prompt: transparent equal-cell 4x2 pixel-painted atlas, clover/lemon/
cherries/bell on top, diamond/chest/red seven below, final cell empty; isolated,
centered, consistent apparent size and readable silhouettes, no grid/background.
## Verification And Scope
Independent offline fixture oracle covers 553 boards, including all seven
jackpots and each pattern. Native tests cover 500 paid spins at four update
rates, frozen RNG/stake, exact final tape rows, monotonic stopping, queued exit,
idempotent payout, bank cap, missing funds and six framebuffer captures.
`check_clover.py --parity` checks assets, real framebuffer clipping, all fifteen
complete cells, selected paid-mask changes and tested/shipping assembly code.
Native talisman modifiers were subsequently integrated; see
`ARTIFACTS_AND_TOWER.md`. Legacy console achievement/dance side effects
are not ported by this change. NPC challenges count native slot rounds and
classify only positive net results as wins. No claim of completing every legacy
Clover feature or its balance is made.