Releases: rachel-multiverse/rachel-commodore-vic20
Release list
v1.0.0 — Rachel for the Commodore VIC-20
A complete Rachel client in 6502 assembly, in one 8K-expanded PRG: solo play for two to eight seats against a local rules kernel, and online play against the authoritative host over RUBP v2 through a user-port WiFi modem.
What this version number is based on
Emulation. Everything below was verified under Emu198x or VICE against the real Go server. None of it has run on a physical VIC-20. The checklist in docs/HARDWARE_TESTING.md is still open and this release remains experimental on real hardware. Tagging verifies nothing.
Verified
- A complete solo game reaches a winner at every table size from two to eight.
- The kernel soak plays sixteen seeds across all seven table sizes, asserting on every turn that the fifty-two cards are conserved across hands, deck and discard pile. No seed reaches the turn bound.
- A complete online game reaches the terminal server event through the cycle-driven user-port ESP-AT bridge, under both PAL and NTSC timing.
- The online human input path is driven separately with the production PRG rather than the autoplay build.
- The source assembles under both cc65 and Asm198x 0.0.53.
Fixed on the way here
Three of these had been shipping:
solo_deck_popoverran the packed deck intoSW_DISCARD_COUNT, so every draw zeroed the discard count and the pile could never be recycled. Three of sixteen soak seeds were silently grinding to the turn bound; none now do.- The client acknowledged state snapshots it had never received, letting the host release
TURN_STARTagainst a view a turn old — seven to nine unearned acknowledgements per ten-play game (#14). render_handdiscarded the page base it had just computed, so past the fifth card the selected card was not on screen.- Solo seeded every game, and every replay, from a fixture constant, so the deal never varied.
- The lobby's waiting message was never cleared when play began, and sat across the discard card all game.
Known and recorded
The serial link discards 37 to 74 inbound frames per game to CRC failure, and the protocol is built to absorb it. That figure is an emulator measurement; what real hardware does is one of the things the physical checklist should establish, and it matters because the sync-acknowledgement fix above is verified against a simulated link.
Getting it running
xvic -memory 8k rachel-vic20.prg
Then RUN. S for solo — it asks how many seats — or O for online.
Requires a VIC-20 with 8KB+ expansion. For online play the modem must run stock Espressif ESP-AT firmware, not the Hayes-style firmware most Commodore user-port modems ship with; see the README for what to check.
Fits in 9,462 bytes of a 9,712-byte ceiling, with the 2 KiB single-PRG contingency intact.