{"id":32657173,"url":"https://github.com/sascha37/super-mario-motion","last_synced_at":"2026-01-28T19:02:51.486Z","repository":{"id":318547783,"uuid":"1066362116","full_name":"Sascha37/super-mario-motion","owner":"Sascha37","description":"Application written in Python, that uses machine learning to translate your movements into inputs for Super Mario Bros. 1.","archived":false,"fork":false,"pushed_at":"2026-01-26T21:50:34.000Z","size":8367,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-27T06:37:48.417Z","etag":null,"topics":["mediapipe","opencv","python"],"latest_commit_sha":null,"homepage":"","language":"Python","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/Sascha37.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-29T11:34:39.000Z","updated_at":"2026-01-26T16:03:07.000Z","dependencies_parsed_at":"2025-10-07T21:23:06.990Z","dependency_job_id":"f46f082e-23b5-4cb7-b731-274299195761","html_url":"https://github.com/Sascha37/super-mario-motion","commit_stats":null,"previous_names":["sascha37/super-mario-motion"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/Sascha37/super-mario-motion","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sascha37%2Fsuper-mario-motion","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sascha37%2Fsuper-mario-motion/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sascha37%2Fsuper-mario-motion/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sascha37%2Fsuper-mario-motion/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sascha37","download_url":"https://codeload.github.com/Sascha37/super-mario-motion/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sascha37%2Fsuper-mario-motion/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28849378,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["mediapipe","opencv","python"],"created_at":"2025-10-31T12:00:51.274Z","updated_at":"2026-01-28T19:02:51.481Z","avatar_url":"https://github.com/Sascha37.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Super Mario Motion \n![GitHub License](https://img.shields.io/github/license/Sascha37/super-mario-motion) ![GitHub last commit](https://img.shields.io/github/last-commit/Sascha37/super-mario-motion) [![Run Unit Test via Pytest](https://github.com/Sascha37/super-mario-motion/actions/workflows/run_test.yml/badge.svg)](https://github.com/Sascha37/super-mario-motion/actions/workflows/run_test.yml)\n\n\nAn application written in Python that uses OpenCV alongside MediaPipe to translate your movements,\ncaptured by your webcam, into inputs for *Super Mario Bros. 1*.\n\nThis software is designed to be used alongside an NES emulator running the original Super Mario\nBros. game.\nWe do not provide the emulator or the game.\n\nIf you don't have an emulator, the application also supports sending inputs to a web version of the game.\n\n## Table of Contents\n\n- [Requirements](#requirements)\n- [Downloads](#downloads)\n- [Build app and edit source code](#build-app-and-edit-source-code)\n    - [On macOS and Linux](#on-macos-and-linux-using-make)\n    - [On Windows](#on-windows)\n- [Usage](#usage)\n- [Project Documentation](#project-documentation)\n- [Compatibility](#compatibility)\n- [Data Processing](#data-processing)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Requirements\n### For running the app\n- **Webcam:** Any common USB webcam will do, make sure it is connected, otherwise, the program will\n  not be able to run\n\n- (Optional) **NES Emulator**: Any of your choice.\n  - **Recommended:** default\n  settings [Steam version of RetroArch](https://store.steampowered.com/app/1118310/RetroArch/) using the preinstalled FCEUmm NES core\n- (Optional) **ROM file**: You must provide your own legally obtained NES ROM. This repository does not\n  include or link to any ROMs.\n\n### For building the app\n\n- **Python**: Version 3.12.10 / 3.12.11\n\n- **External libraries**: All required modules can be found in\n  the [requirements.txt](requirements.txt)\n  file\n\n## Downloads\nGet the latest release of this application here:\n\nhttps://github.com/Sascha37/super-mario-motion/releases/latest\n\n\n## Build app and edit source code\n\n### On macOS and Linux (using `make`)\n\nIf you want to start working on the app, use:\n\n```\ngit clone https://github.com/Sascha37/super-mario-motion.git\ncd super-mario-motion/\nmake run\n```\n\n- `make run`  starts the application\n- `make pyinstaller` will build an executable (for the current os)\n- `make train` builds the ML model (needs training data)\n- `make test` will run the pytest testsuite\n- `make doc` creates the sphinx html docs page\n- `make metrics` runs tests on the current joblib to get metrics\n\nTo modify the source code, open the project in your preferred text editor or IDE.\n\nAlternatively to using the makefile, you can manually create a Python virtual environment and\ninstall dependencies using pip. Look into\nthe [Makefile](Makefile) of this project\nfor reference.\n\n### On Windows (without PyCharm)\n\nIf you just want to **run** the program, execute the `run-win.bat` file, located in the root folder of the project.\n\nYou can edit the source code in any IDE you like.\n\n### On Windows (with PyCharm)\nIf you want to **work with and modify this code**, we recommend the code editor\n[PyCharm](https://www.jetbrains.com/pycharm/)\n\nThere are a few steps to set up this project inside the IDE.\n\n1. Make sure you have the correct version of the Python interpreter installed (3.12.10 or 3.12.11)\n2. PyCharm will prompt you to create a virtual environment and install the dependencies listed in `requirements.txt`. Do that.\n3. Now you need to set up the run configurations. Do that by clicking on the top right where it says `Current File`. And select `edit configurations`. A new window will pop up. There, you will add a new configuration by pressing the `+`-Button. You need to select `Python`. You can give it a name like `main`, make sure that you select `module` from the drop-down menu and set the path as `super_mario_motion.main`.\n4. Right-click the `src` folder and select: `Mark Directory as` -\u003e `Sources Root`.\n\n## Usage\n\n### Quick Start\n\n- Start the program (either from source code or the standalone application).\n- Select the version of the game you want to play (web or original).\n- Select between `Simple` (designed to be used while sitting) or `Full-body` mode (designed to be used while standing). \n- Inputs can only be sent to the game if the window of the game is in focus and the `Send Inputs` checkbox has been checked.\n\n**For more information please press the `Help`-Button or [open this file](docs/help/help_page.pdf)**\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\"docs/screenshots/ss1.png\" alt=\"Screenshot\" height=\"730\"/\u003e\n\u003c/p\u003e\n\n## Project Documentation\n\n- Everything related to documentation can be found in the `docs/` folder.\n    - For PDFs used as bullet points to discuss in the weekly meetings, see `docs/meetings/`\n    - A comprehensive report, including weekly feature updates, can be found\n      in [progress_documentation.md](docs/progress_documentation.md)\n\n## Compatibility\n\nThis project is being developed and tested on the following operating systems:\n\n- **Windows 10** (22H2) and **Windows 11** (25H2)\n- **macOS** (15.7.1 and 26.1)\n- **Arch Linux** using Wayland and KDE Plasma\n\nWe aim to support all versions of Windows, macOS, and Linux.\n\nIf you encounter issues on any version, please leave an issue so we can investigate.\n\n## Data Processing\n\nUses the webcam input of your selected camera to estimate your body pose in real time.\nNo webcam images or videos are saved.\n\n[Look at this flowchart for more information](docs/smm_flowchart.png)\n\n### Collecting Training Data\nWhen collect mode is enabled, pose data will be recorded for training.\n- Stored data consists of:\n  -  pose labels\n  -  list of skeleton landmark coordinates\n- Data each run is saved as a CSV file to your Application Data Directory\n\n### Model Training\nSearches for all CSV files in your Application Data Directory, concatenates them into a single file. This file is then used to produce a single `.joblib` model file.\n\n## Contributing\nIf you want to contribute to the project, please take a look at [CONTRIBUTING.md](CONTRIBUTING.md)\n## License\n\nThis project is available under the GPL v3.0. See\nthe [LICENSE](LICENSE) file for more info.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsascha37%2Fsuper-mario-motion","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsascha37%2Fsuper-mario-motion","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsascha37%2Fsuper-mario-motion/lists"}