From 4d2171f057d940747942af9b4c985f6ee8af21ff Mon Sep 17 00:00:00 2001 From: Elmar Kresse Date: Thu, 3 Jul 2025 16:47:17 +0200 Subject: [PATCH] Add README file with game features, setup instructions, and technical details for Tic-Tac-Toe --- readme.md | 194 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 194 insertions(+) create mode 100644 readme.md diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..89690ad --- /dev/null +++ b/readme.md @@ -0,0 +1,194 @@ +# 🎮 Tic-Tac-Toe Assembly Game + +![Assembly](https://img.shields.io/badge/Assembly-8086-blue) +![DOS](https://img.shields.io/badge/DOS-Compatible-green) +![License](https://img.shields.io/badge/License-MIT-yellow) + +A classic Tic-Tac-Toe game implemented in 8086 Assembly language with graphics, sound effects, and mouse support. + +## 🎯 Features + +- **🎨 Graphics Mode**: VGA graphics with colorful display +- **🖱️ Mouse Support**: Click-to-play interface +- **🔊 Sound Effects**: PC speaker sound feedback +- **👥 Two Players**: Human vs Human gameplay +- **🏆 Win Detection**: Automatic win/draw detection +- **🎵 Game Over Sounds**: Audio feedback for game completion + +## 📋 Game Components + +The project is organized into modular assembly files: + +| File | Purpose | +|------|---------| +| `main.asm` | Main program entry point and control flow | +| `game.asm` | Core game logic and win detection | +| `draw.asm` | Graphics rendering (circles, crosses, grid) | +| `sound.asm` | PC speaker sound effects | +| `logic.asm` | Mouse handling and timer interrupts | +| `data.asm` | Game variables and constants | + +## 🛠️ Requirements + +### Software Requirements +- **DOS-compatible system** or **DOS emulator** (DOSBox recommended) +- **MASM** (Microsoft Macro Assembler) or compatible assembler +- **LINK** (Microsoft Linker) +- **VGA-compatible graphics adapter** +- **Mouse driver** (for mouse support) + +### Hardware Requirements +- **8086 or higher processor** +- **VGA graphics capability** +- **PC speaker** (for sound effects) +- **Mouse** (optional but recommended) + +## 🚀 Setup & Installation + +### Option 1: Using DOSBox (Recommended) + +1. **Install DOSBox**: + - Download from [DOSBox official website](https://www.dosbox.com/) + - Install following the instructions for your OS + +2. **Setup DOS Development Environment**: + ```bash + # Mount your project directory + mount C: E:\git\tictactoe + C: + + # You'll need MASM and LINK utilities + # These should be available in your DOS development environment + ``` + +3. **Assemble and Link**: + ```bash + MASM main.asm; + LINK main.obj; + ``` + +### Option 2: Using DOSEMU (Linux) + +1. **Install DOSEMU**: + ```bash + sudo apt-get install dosemu + ``` + +2. **Setup and compile** as described above + +## 🎮 How to Run + +1. **Start the game**: + ```bash + MAIN.EXE + ``` + +2. **Main Menu**: + - Press `1` - Start Human vs Human game + - Press `2` - Exit game + - Press `ESC` - Return to main menu during game + +3. **Gameplay**: + - Use mouse to click on grid squares + - Player 1 (X) plays first + - Players alternate turns + - First to get 3 in a row wins! + +## 🎯 Game Rules + +- **Objective**: Get three of your marks (X or O) in a row +- **Winning Conditions**: + - 3 in a row horizontally + - 3 in a row vertically + - 3 in a row diagonally +- **Draw**: All squares filled with no winner + +## 🎨 Graphics & Sound + +### Graphics Features +- **VGA Mode 12h**: 640x480 16-color graphics +- **Colorful Interface**: Different colors for X's and O's +- **Grid System**: 3x3 clickable game board +- **Pixel-perfect Drawing**: Custom circle and cross rendering + +### Sound Features +- **Place Sound**: Feedback when placing X or O +- **Game Over Sound**: Victory/draw notification +- **PC Speaker**: Classic retro sound effects + +## 🔧 Technical Details + +### Memory Model +- **Small Model**: Code and data in separate 64KB segments +- **Stack**: 256 bytes allocated + +### Interrupts Used +- **INT 10h**: Video services +- **INT 21h**: DOS services +- **INT 33h**: Mouse services +- **INT 16h**: Keyboard services +- **INT 1Ch**: Timer interrupt + +### Graphics Implementation +- **Digital Differential Analyzer**: For smooth circle drawing +- **Pixel-level control**: Direct VGA memory manipulation +- **Color mapping**: 16-color palette utilization + +## 📁 File Structure + +``` +tictactoe/ +├── main.asm # Main program entry point +├── game.asm # Game logic and rules +├── draw.asm # Graphics and drawing functions +├── sound.asm # Sound effects +├── logic.asm # Mouse and timer handling +├── data.asm # Variables and constants +├── MAIN.EXE # Compiled executable +├── MAIN.OBJ # Object file +├── MAIN.MAP # Memory map +└── readme.md # This file +``` + +## 🐛 Troubleshooting + +### Common Issues + +1. **"File not found" errors**: + - Ensure all `.asm` files are in the same directory + - Check file paths in INCLUDE statements + +2. **Graphics not displaying**: + - Verify VGA compatibility + - Check video mode support + +3. **No sound**: + - Ensure PC speaker is functional + - Check DOS sound settings + +4. **Mouse not working**: + - Install mouse driver (`MOUSE.COM` or similar) + - Verify mouse hardware connection + +### Assembly Errors +- Ensure MASM version compatibility +- Check syntax for 8086 instruction set +- Verify memory model directives + +## 👨‍💻 Author + +**Elmar Kresse** - 19-INB-1 (2021) + +## 🏆 Acknowledgments + +- Circle drawing algorithm inspired by Digital Differential Analyzer +- Sound implementation reference: [8086 Assembly Sound Tutorial](http://muruganad.com/8086/8086-assembly-language-program-to-play-sound-using-pc-speaker.html) +- Classic DOS game development techniques + +## 🎮 Screenshots + +*Game runs in VGA graphics mode with a colorful 3x3 grid interface* + +--- + +**Enjoy playing this retro Tic-Tac-Toe game! 🎯** \ No newline at end of file