{"id":13344382,"url":"https://github.com/mrcook/manic-miner","last_synced_at":"2025-07-12T07:31:58.469Z","repository":{"id":67278564,"uuid":"77642395","full_name":"mrcook/manic-miner","owner":"mrcook","description":"Manic Miner: Retro! - pixel perfect Z80 to C++ port (WIP) of the classic ZX Spectrum 8-bit game","archived":false,"fork":false,"pushed_at":"2021-03-01T21:31:59.000Z","size":748,"stargazers_count":17,"open_issues_count":0,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-06T16:08:21.668Z","etag":null,"topics":["8-bit","c","conversion","cpp","game","platformer","sdl2","z80","zx-spectrum"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrcook.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-29T22:00:10.000Z","updated_at":"2025-01-31T13:26:11.000Z","dependencies_parsed_at":"2023-06-10T13:15:34.232Z","dependency_job_id":null,"html_url":"https://github.com/mrcook/manic-miner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mrcook/manic-miner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrcook%2Fmanic-miner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrcook%2Fmanic-miner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrcook%2Fmanic-miner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrcook%2Fmanic-miner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrcook","download_url":"https://codeload.github.com/mrcook/manic-miner/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrcook%2Fmanic-miner/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264958135,"owners_count":23689006,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["8-bit","c","conversion","cpp","game","platformer","sdl2","z80","zx-spectrum"],"created_at":"2024-07-29T19:33:08.518Z","updated_at":"2025-07-12T07:31:58.181Z","avatar_url":"https://github.com/mrcook.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Manic Miner: Retro!\n\nA work-in-progress port of Matthew Smith's classic 1983 Sinclair ZX Spectrum\ngame to the C++ language and using SDL.\n\n      Penguins, Man Eating Toilets, Seals, Mutant Telephones, Bugs,\n      Falling Skylabs, Kangaroo's, plus many more, join forces\n      to stop Willy in his quest to get the treasure\n\nThis is my **very experimental** attempt at porting the Manic Miner Z80 assembly\nto the C++ language, allowing for it to be played on Windows, macOS, and Linux,\nwithout the need for a ZX Spectrum emulator.\n\nOne of my goals was to retain the pixel perfect nature of the game. To achieve\nthis the original memory reading/writing as done on the ZX Spectrum has been\nretained. The full memory map is provided as a simple array:\n\n```c++\n// src/speccy.h\nuint8_t memory[TOTAL_MEMORY]; // 64KB\n```\n\nAll memory read/write address values of the original assembly (e.g. `LD (16384),A`)\nwere retained in the C code without alteration. It does however mean that on each\ngame frame the screen memory has to be converted to something that SDL can work\nwith. This comes at a performance cost, however, this should not a problem with\nany computer from the last couple of decades.\n\nIt's a neat trick that saved a huge amount of time and allowed for a pixel perfect conversion.\n\n\n_The Z80 assembly I used as a starting point was disassembled by Richard Dymond\nas part of his Skoolkit project (https://github.com/skoolkid/manicminer)._\n\n\n_NO EMULATORS were harmed in the making of this game!_\n\n\n## Controls\n\n- Left, right arrow keys\n- Space to jump\n- Enter to start\n- P to pause\n- M to mute sound\n- Q to quit\n\n\n## Current State of the Code\n\nThe goal of the project is to re-implement Manic Miner in portable C/C++ code,\nwithout changing any of the core game play!\n\n    Q. Does it build, does it run?\n    A. Yes and Yes!\n\n    Q. Is it playable?\n    A. Yes, mostly.\n\n\n### What works, what doesn't\n\nAs the game is playable most things work as expected and there are actually not\nthat many bugs. Therefore it's easier to list the things that don't work:\n\n- GFX glitches: baddie sprites can 'pick up' pixels from Willy when you _get too close_ to them.\n- No Sound.\n- No Joystick support.\n- Game Over screen needs some work.\n- Performance: it's not the most performant code at the moment.\n\nI've only tested on Linux and macOS.\n\n\n## The Game : Introduction\n\nMiner Willy, while prospecting down Surbiton way, stumbles\nupon an ancient, long forgotten mine-shaft. On further\nexploration, he finds evidence of a lost civilisation far\nsuperior to our own, which used automatons to dig beep into\nthe Earth's core to supply the essential raw materials for\ntheir advanced industry. After centuries of peace and\nprosperity, the civilisation was torn apart by war, and\nlapsed into a long dark age, abandoning their industry and\nmachines. Nobody, however, thought to tell the mine robots\nto stop working, and through countless aeons they had\nsteadily accumulated a hugh stockpile of valuable metals\nand minerals, and Miner Willy realises that he now has the\nopportunity to make his fortune by finding the underground\nstore.\n\nCan YOU take the challenge and guide Willy through the\nunderground caverns to the surface and riches.\n\nIn order to move to the next chamber, you must collect all\nthe flashing keys in the room while avoiding nasties like\nPOISONOUS PANSIES and SPIDERS and SLIME and worst of all,\nMANIC MINING ROBOTS. When you have all the keys, you can\nenter the portal which will now be flashing. The game ends\nwhen you have been 'got' or fallen heavily three times.\n\n\n# LICENSE\n\nManic Miner Copyright (c) 1983 Matthew Smith.\n\nManic Miner C/C++ port Copyright (c) 2016-2021 Michael R. Cook\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrcook%2Fmanic-miner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrcook%2Fmanic-miner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrcook%2Fmanic-miner/lists"}