Files
tictactoe/readme.md

194 lines
5.3 KiB
Markdown

# 🎮 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! 🎯**