Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/rebelhere/alphabet-catcher

CatchAlphabets is a game for the Intel 8088, where players use a bucket to catch falling alphabets. The game ends after 10 misses, displays the score, and transitions to scrolling credits. It features custom functions, adjustable speeds, and interrupt-driven input.
https://github.com/rebelhere/alphabet-catcher

alphabet-catcher assembly-language coal game

Last synced: about 2 months ago
JSON representation

CatchAlphabets is a game for the Intel 8088, where players use a bucket to catch falling alphabets. The game ends after 10 misses, displays the score, and transitions to scrolling credits. It features custom functions, adjustable speeds, and interrupt-driven input.

Awesome Lists containing this project

README

        

# CatchAlphabets Game - Computer Organization and Assembly Language (COAL)

## Project Description
**CatchAlphabets** is an interactive game developed for the **Intel 8088 microprocessor**, showcasing low-level assembly language programming skills. The game runs on **DOSBox** with NASM, allowing players to control a **bucket** and catch falling alphabets to score points while avoiding penalties. It features a main menu, dynamic gameplay, increasing difficulty over time, and creative endgame elements, making it an excellent demonstration of interrupt handling, custom functions, and real-time user interaction.

---

## Features

### **Core Gameplay**:
1. **Main Menu**:
- At launch, a **main page** is displayed prompting the user to:
- **Press any key (except Esc)** to start the game.
- Pressing **Esc** displays the credits and exits the program.

2. **Bucket Mechanics**:
- A **bucket** (`ASCII value 0xDC`) is displayed at the **bottom-middle** of the screen when the game starts.
- The bucket can be moved using the **arrow keys**:
- **Left Arrow** (`0x4B`): Move the bucket left.
- **Right Arrow** (`0x4D`): Move the bucket right.

3. **Falling Alphabets**:
- Alphabets (`A-Z`) appear at random positions in the top row and fall toward the bucket.
- At least **5 alphabets** fall simultaneously at varying speeds.
- The speed of falling alphabets **automatically increases** at **10 seconds** and again at **20 seconds**, tracked using the **INT 8h hardware interrupt**.

4. **Scoring System**:
- Catching an alphabet adds **1 point** to the score.
- The score is displayed in the **top-right corner** of the screen.

5. **Game Over Condition**:
- Missing **10 alphabets** ends the game.
- The player's **final score** and **total time played** are displayed in the **middle of the screen** for a few seconds before transitioning to the credits.

6. **Credits Scroll**:
- After displaying the final score and time or pressing **Esc** at the main menu, a scrolling credits screen plays to conclude the game.

---

## How to Run
1. Install **DOSBox** and **NASM**.
2. Place the `CatchAlphabets.asm` file in your working directory.
3. Assemble the game for the 8088:
```
nasm -f bin CatchAlphabets.asm -o CatchAlphabets.com
```
4. Run the game in DOSBox:
```
CatchAlphabets.com
```

---

## Gameplay Instructions
1. **Main Menu**:
- Press any key (except **Esc**) to start the game.
- Press **Esc** to display the credits and exit.

2. **Move the Bucket**:
- Use the **left arrow key** (`0x4B`) to move the bucket left.
- Use the **right arrow key** (`0x4D`) to move the bucket right.

3. **Catch Alphabets**:
- Align the bucket with falling alphabets to catch them and score points.

4. **Avoid Misses**:
- The game ends if **10 alphabets** are missed.

5. **Time-Based Difficulty**:
- The speed of falling alphabets increases at **20 seconds** and **40 seconds**, adding to the challenge.

---

## Code Features
- **Custom Random Function**:
Generates random positions and speeds for falling alphabets.
- **Real-Time Input**:
Hooks into **INT 9h** for responsive keyboard controls.
- **Time Tracking**:
Uses **INT 8h hardware interrupt** to track elapsed time and dynamically adjust difficulty.
- **Adjustable Speed**:
Falling speeds increase automatically based on time, adding progressive difficulty.
- **Score and Time Display**:
At the end of the game, the final score and total time played are shown in the **middle of the screen**.
- **Main Menu and Credits**:
A main menu prompts the user to start or quit. A scrolling credits screen concludes the game.

---

## Future Enhancements
1. **Bomb Mechanic**:
- Add **bombs** that fall alongside alphabets.
- If the bucket catches a bomb, the player experiences an **instant game over**.

2. **Power-Ups**:
- Introduce special alphabets that grant bonuses, such as:
- Double points.
- Temporarily slowing down falling items.

3. **Sound Effects**:
- Add audio cues for catching alphabets, missing them, and the game over.

---

## Credits
- **Developer**: Muhammad Rahim (Rebelhere)
- **Special Thanks**: Ayesha Younus

**CatchAlphabets - A nostalgic and exciting gaming experience on the Intel 8088!**

---

## Contributing
Feel free to open issues or submit pull requests for improvements or bug fixes.

---

## Collaboration Guidelines
We welcome contributions from the open-source community. If you'd like to collaborate on this project, please adhere to the following guidelines:
1. Fork the repository.
2. Create a new branch for your feature or bug fix.
3. Implement your changes and commit them with descriptive messages.
4. Push your branch to your fork and submit a pull request.

---

### Feel free to reach out if you have any questions or suggestions !

---

**CatchAlphabets: Relive the thrill of coding and gaming in the 8088 era!**