44 lines
1.4 KiB
Markdown
44 lines
1.4 KiB
Markdown
# Solitaire C64
|
|
|
|
A classic Klondike solitaire card game for the Commodore 64, written in c65gm.
|
|
|
|
## Features
|
|
|
|
- **Full Klondike Solitaire**: Stock, waste, 7 tableaus, and 4 foundation piles
|
|
- **Dual Input Support**: Play with joystick or 1351 mouse
|
|
- **Draw Modes**: Toggle between draw-1 and draw-3 gameplay
|
|
- **Custom Graphics**: Character-based card rendering using extended color mode
|
|
- **Sprite Cursor**: Visual pointer for card selection and movement
|
|
- **Smart Shuffling**: Hardware-seeded RNG for true randomness
|
|
|
|
## Technical Details
|
|
|
|
**Language**: c65gm (C-like language for 6502/C64)
|
|
**Memory Layout**: Code at $3000, custom charset at $2000
|
|
**Graphics**: Extended Color Mode (ECM) with custom character set
|
|
**Input**: CIA joystick ports + 1351 proportional mouse support
|
|
|
|
## Building
|
|
|
|
Requires the c65gm compiler and ACME assembler:
|
|
|
|
```bash
|
|
./cm.sh
|
|
```
|
|
|
|
Outputs `main.prg` ready to load on C64 or emulator.
|
|
|
|
## Project Structure
|
|
|
|
- `cardgame.c65` - Main entry point and initialization
|
|
- `gameloop.c65` - Game loop, interaction, and pile detection
|
|
- `cardmoves.c65` - Move validation and execution logic
|
|
- `cardrender.c65` - Card and pile rendering routines
|
|
- `carddeck.c65` - Deck shuffling and dealing
|
|
- `mouse.c65` / `joystick.c65` - Input handling
|
|
- `pointer.c65` - Sprite cursor management
|
|
- `cardsprites.c65` - Sprite data for cursor
|
|
|
|
## License
|
|
|
|
See LICENSE file for details.
|