{"id":23178413,"url":"https://github.com/lorandil/tinyminez","last_synced_at":"2025-09-08T22:34:30.452Z","repository":{"id":203197311,"uuid":"364055034","full_name":"Lorandil/TinyMinez","owner":"Lorandil","description":"MineSweeper-ish game","archived":false,"fork":false,"pushed_at":"2022-11-06T21:11:59.000Z","size":639,"stargazers_count":1,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-19T21:20:08.707Z","etag":null,"topics":["arcade","arduino","attiny","attiny85","game","game-development","minesweeper","oled","sh1106","ssd1306","tinyjoypad"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Lorandil.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-05-03T20:38:05.000Z","updated_at":"2025-05-15T13:38:22.000Z","dependencies_parsed_at":null,"dependency_job_id":"8e602b74-4ff5-427f-b760-e5c00608971c","html_url":"https://github.com/Lorandil/TinyMinez","commit_stats":null,"previous_names":["lorandil/tinyminez"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Lorandil/TinyMinez","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lorandil%2FTinyMinez","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lorandil%2FTinyMinez/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lorandil%2FTinyMinez/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lorandil%2FTinyMinez/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Lorandil","download_url":"https://codeload.github.com/Lorandil/TinyMinez/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Lorandil%2FTinyMinez/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274231415,"owners_count":25245659,"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","status":"online","status_checked_at":"2025-09-08T02:00:09.813Z","response_time":121,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["arcade","arduino","attiny","attiny85","game","game-development","minesweeper","oled","sh1106","ssd1306","tinyjoypad"],"created_at":"2024-12-18T07:11:05.589Z","updated_at":"2025-09-08T22:34:30.425Z","avatar_url":"https://github.com/Lorandil.png","language":"C++","readme":"# TinyMinez\nA MineSweeper-ish game\n\n## The Idea\nWhen I ran into a mental blockade about gameplay on TinyDungeon (coming soon???), I thought that programming something more simple would be fun.\nFrom my long list of ideas, I chose a classic game idea which I encountered first on Windows 3.1: *MineSweeper*.\n\n## The Game\nThe goal of TinyMinez is to uncover all tiles that DO NOT hide mines. To give the player a fair chance, if a tile is uncovered,\nthe game uncovers all adjacent tiles that are not a mine. All uncovered tiles that are direct neighbors of a mine, will show a\nnumber indicating how many mines are in the neighborhood.\nFor figuring out where bombs might lie, the player can mark fields with a flag with a long button press (\u003e300ms).\nThe game is won, when all non-mine tiles are uncovered and obviously lost, when a mine is triggered by uncovering that tile.\n\n## Features\n* Board size is 12 * 8 tiles\n* Difficulty selection: 5, 10, 15 or 20 bombs\n* sound effects\n* FUN and ***BOOOM***\n\n\n## Open Points\n* add nicer screens when the game is won\n* add a time limit?\n* add sound effects (pitch depending of number of mines in the neighbourhood?)\n* try vertical shearing on explosion (like a rotation)\n* always save game state to EEPROM?\n* replay level function (store last seed on level start)\n* replay is optional (configuration value)\n* increase board size to 14 * 8?\n* add scrolling for even larger fields?\n\n\n## Implementation Details\nThe only real difficulty in this project was to get the uncovering of the tiles done.\nMy first idea (and probably the most straightforward solution) was to use recursion.\nDue to the limited RAM of the ATtiny85 that caused the game board to be overwritten with \ngarbage bytes (aka the stack) when uncovering a board containing very few mines:\n![Stack Overflow...](https://github.com/Lorandil/TinyMinez/blob/main/pic/stack_overflow.png)\n\nSo I had to implement the uncovering using an iterative approach. Not really difficult, but\nless obvious and elegant.\n\n\n## Current Size\n7556 bytes (still 636 bytes left) using the marvelous 'ATTinyCore' from Spence Konde (v1.5.2) [https://github.com/SpenceKonde/ATTinyCore]\n\nPlease use the settings from ATTinyCore_settings_for_ATtiny85.png to get the size below 8192 bytes ;)\n\n## License\nGNU General Public License v3.0\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Florandil%2Ftinyminez","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Florandil%2Ftinyminez","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Florandil%2Ftinyminez/lists"}