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.
-
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.
- At launch, a main page is displayed prompting the user to:
-
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.
- Left Arrow (
- A bucket (
-
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.
- Alphabets (
-
Scoring System:
- Catching an alphabet adds 1 point to the score.
- The score is displayed in the top-right corner of the screen.
-
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.
-
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.
- Install DOSBox and NASM.
- Place the
CatchAlphabets.asm
file in your working directory. - Assemble the game for the 8088:
nasm -f bin CatchAlphabets.asm -o CatchAlphabets.com
- Run the game in DOSBox:
CatchAlphabets.com
-
Main Menu:
- Press any key (except Esc) to start the game.
- Press Esc to display the credits and exit.
-
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.
- Use the left arrow key (
-
Catch Alphabets:
- Align the bucket with falling alphabets to catch them and score points.
-
Avoid Misses:
- The game ends if 10 alphabets are missed.
-
Time-Based Difficulty:
- The speed of falling alphabets increases at 20 seconds and 40 seconds, adding to the challenge.
- 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.
-
Bomb Mechanic:
- Add bombs that fall alongside alphabets.
- If the bucket catches a bomb, the player experiences an instant game over.
-
Power-Ups:
- Introduce special alphabets that grant bonuses, such as:
- Double points.
- Temporarily slowing down falling items.
- Introduce special alphabets that grant bonuses, such as:
-
Sound Effects:
- Add audio cues for catching alphabets, missing them, and the game over.
- Developer: Muhammad Rahim (Rebelhere)
- Special Thanks: Ayesha Younus
CatchAlphabets - A nostalgic and exciting gaming experience on the Intel 8088!
Feel free to open issues or submit pull requests for improvements or bug fixes.
We welcome contributions from the open-source community. If you'd like to collaborate on this project, please adhere to the following guidelines:
- Fork the repository.
- Create a new branch for your feature or bug fix.
- Implement your changes and commit them with descriptive messages.
- Push your branch to your fork and submit a pull request.
CatchAlphabets: Relive the thrill of coding and gaming in the 8088 era!