Skip to content

Instantly share code, notes, and snippets.

@pmzeitler
Last active August 21, 2024 22:31
Show Gist options
  • Save pmzeitler/39e0e37e22de0c4b34f0b4d4f3140ac7 to your computer and use it in GitHub Desktop.
Save pmzeitler/39e0e37e22de0c4b34f0b4d4f3140ac7 to your computer and use it in GitHub Desktop.
CaZCno_core Readme - Development Plan

CaZCno

A cross-platform modern casino game for MSX2 and Commodore 64.

This is an experiment intended to help me learn both the secrets of the Z80 and 6502 architectures, but also develop something that would be playable on two different retro systems. I also want to create an engaging and fair casino game with modern table games such as Three Card Poker and modern video slots that have features such as bonus games and "linked" awards.

I intend to do the majority of the development in C. Rather than reinvent the wheel I will be relying on well-known machine-specific libraries for both platforms. The core game code, however, will be 100% original.

Features

Games Planned: (Subject to Change)

  • Big Wheel/"Chuck-A-Luck" (Core logic completed 20 Aug 2024)
  • Blackjack:
    • Traditional Blackjack
  • Craps
  • Poker:
    • Video Poker (Core logic completed 21 Aug 2024)
    • Three Card Poker
    • Let It Ride
    • "Ultimate" Texas Hold 'Em
  • Roulette (Core logic completed 17 Aug 2024)
  • Slot Machines: (not mentioned: line variants, simulated-linked play, or theming)
    • Traditional Three-Reel (Core logic completed 13 Aug 2024)
    • Video (with bonus games)

Other Features Planned: (Subject to Change)

  • Background Music
  • Persistent Bankroll (via password or save)

"Stretch goals":

  • Games:
    • Blackjack: Lucky Ladies Blackjack (or other side-bet based variants)
    • Poker: interactive-betting five-card poker
    • Slot Machines: Traditional Five-Reel
  • Features:
    • Cross-platform password compatibility
    • Full Windows version

MSX version

The primary platform for release will be the MSX2 with NO modifications.

The following libraries and tools will be used for MSX2 development:

Testing will be done in emulators such as VICE64 and openMSX, with the end goal of running them on native hardware. The only concessions on hardware verisimilitude that will be made are the fact that on the MSX2 I'll be using just a flash cartridge, and on the C64 I'll be using an SD-to-1541 adapter and a machine modded with the MechBoard64 mechanical keyboard upgrade. Aside from these, the game will be playable on stock out-of-the-box hardware.

MSX2 base requirements (subject to change):

  • MSX2-compatible machine (minimum 64k RAM)
  • One cartridgee slot (Stock on MSX machines; will use MegaLinker for MegaRom bank switching)
  • MSX-MUSIC compatible sound module (usually stock on most MSX2 machines)

MSX2 Release Format: CARTRIDGE (or ROM via MegaFlashROM-- cartridge manufacturing is possible if there's interest)

MSX2 Release Schedule: TBD

Commodore 64 version

The following libraries and tools will be used for Commodore 64 development:

Commodore 64 base requirements:

  • TBD

C64 Release Format: TBD

C64 Release Schedule: TBD (after the MSX2 version)

Development Process

As this is my first major project in pure C, as well as my first major projects for the MSX and C64, my focus is on encapsulation and portability. Core logic for the games will be written with as few stack variables as possible, so that memory management may be handled on a machine-by-machine basis; malloc() has been my personal bete noire particularly on older systems so I may end up coding the memory management by hand to static address locations (which is certainly not my first choice).

I intend to release a proof-of-concept, bare-bones graphical slot machine for the two legacy platforms first. As of this writing (13 Aug 2024) I expect to release this sample by the end of 2024.

Licensing and Limitations

All code will be open-source under the BSD license with an exception made for gambling purposes, specifically: You may NOT use this code to create any derivative work that will be used for real-money gambling. Game rules are used without the permission of their original creators (in the case of Let It Ride or Lucky Ladies Blackjack) but please go easy on me, this is just an experiment.

This project is intended for EDUCATIONAL and ENTERTAINMENT USE ONLY. This is a casual project and not intended to facilitate or promote real-money gambling. The software does not and will not include code to purchase credits for gambling with real money. Donations to the author via Ko-Fi or GoFundMe will not result in obtaining credits in the game, but they will make her a little happier, so please consider it.

Fairness and randomness of the RNG is not guaranteed. This code is NOT GUARANTEED to comply with local, regional, or national statutes or laws regarding simulated gambling. The author will not be held liable for any civil or criminal penalties arising from the possession or use of this software where it is not legal to possess or use it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment