O-Hole Block - ZX Spectrum port of the Quarth/Block Hole arcade game by Konami(c)1989, by oblo@2026 --------------------------------------------------------------------------------------------------- This is a free game, made for fun and for the love of it (I spent so many coins in the original arcade machine that I owed it this conversion). You may use both the compiled program and the source code for personal use, or any other non-profit reason. It may not be sold, rented or used in commercial and/or profit-making activities. You are free to improve and modify it. If you reuse part of the code, a mention of the original author would be appreciated. Created with Boriel ZX Basic v1.19.0 and ZX Basic Studio v1.7.0. AI used (Claude Opus 5.5) for ASM routines, finding and fixing bugs, and improving the overall structure of the code. Tested with the Spectaculator and Fuse emulators, with English ROMs from 48K to +3 models. All rights reserved to their respective owners (mainly Konami and/or anyone else they may apply to). Versions: - 48K: beeper sound. - 128K: AY music (all models: 128K, +2, +2A, +2B and +3). Instructions: - In the main menu: * Q key -> moves the cursor up * A key -> moves the cursor down * ENTER key (or M) -> selects the option or changes its value * S key -> turns sound on or off - Menu options: * 1 PLAYER -> single-player game * COOP + CPU -> cooperative game with the CPU on a shared playfield * VS CPU -> game against the CPU, each on their own playfield * CPU(P2) -> CPU level (LOW -> MID -> HIGH) * START AREA -> starting area (1 to 9), in 1 PLAYER and COOP * CONTROL -> keyboard, Kempston joystick or Sinclair joystick (keys 6 to 0) * REDEFINE -> redefines the keys (left, right, fire, up and pause); the pause key cannot be S or Q - During the game (default keys): * K key -> left * L key -> right * M key -> shoot * S key (hold) -> the wall drops faster (5 points per row) * H key -> pause - During the pause: * H key -> resumes the game * S key -> turns sound on or off * Q key -> quits the game and returns to the menu - When entering the high-score table: * Letters, numbers or space -> type the name (3 characters) * DELETE key -> deletes the last character * ENTER key -> confirms the name How to play: - The fired block travels up the ship's column and sticks under the first block it meets. The # symbol marks the cell where it will stick (yellow for the player and cyan for the CPU) - Points per rectangle: area x area x 10. - Each level has 9 areas. An area is cleared when all its pieces have entered and the playfield is empty (bonus of 1000 x area x level). With each area the wall drops faster and the pieces become bigger and more assorted. - Some pieces come as two joined colours: they only disappear if they are completed together into a single rectangle. - In COOP the ships can pass through each other and each player scores their own points. - In VS both playfields receive the same pieces, the speed increases every 30 seconds and whoever lets the blocks reach the red line first, loses. Special blocks (ring pattern on a coloured background). They are triggered by completing a rectangle that contains them: * Cyan -> FREEZE: the wall stops for 5 seconds * Yellow -> DOUBLE: double points for 15 seconds (in VS: RUSH, the rival's wall drops 6 rows at once) * Red -> BOMB: clears the whole playfield (10 points per block) * Magenta -> BONUS: 2000 x level points (in VS: ATTACK, the rival receives a blue piece that spans the whole width of their playfield) Acknowledgements: - To Sir Clive Sinclair, for creating this wonderful machine that opened up a world of possibilities for us. - To Konami, not only for creating Quarth/Block Hole but for developing so many great video games and sagas. - To Boriel for his ZX Basic compiler (https://zxbasic.readthedocs.io/en/latest/) - To Dr.Gusman and the rest of the team who developed ZX Basic Studio (https://github.com/boriel-basic/ZXBasicStudio). - To Duefectu for his "Boriel Basic Manual para torpes" (https://github.com/Duefectu). - To the creators of emulators, the ZX Spectrum forums that keep it alive, and all the cross-development tools for the ZX Spectrum in general, without which this would not have been possible.