{"id":18885431,"url":"https://github.com/dagit/annelid","last_synced_at":"2025-04-14T21:30:57.215Z","repository":{"id":49367991,"uuid":"517508548","full_name":"dagit/annelid","owner":"dagit","description":"Speedrun timer with autosplitter for fxpak/sd2snes","archived":false,"fork":false,"pushed_at":"2024-09-14T00:39:51.000Z","size":540,"stargazers_count":14,"open_issues_count":8,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-09-15T13:39:29.247Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","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/dagit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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}},"created_at":"2022-07-25T03:49:07.000Z","updated_at":"2024-09-15T12:11:05.000Z","dependencies_parsed_at":"2023-01-22T01:45:47.387Z","dependency_job_id":"08555603-311c-40d5-855d-28050ef3522f","html_url":"https://github.com/dagit/annelid","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagit%2Fannelid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagit%2Fannelid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagit%2Fannelid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dagit%2Fannelid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dagit","download_url":"https://codeload.github.com/dagit/annelid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223645023,"owners_count":17178836,"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":[],"created_at":"2024-11-08T07:18:37.572Z","updated_at":"2024-11-08T07:18:38.295Z","avatar_url":"https://github.com/dagit.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# About\n\n![Action Shot](data/inaction.png)\n![Menu](data/context-menu.png)\n![Settings Editor](data/settings-editor.png)\n\nThis is a simple barebones re-imagining of LiveSplit + autosplitter for SNES\n(sd2snes/fxpak + qusb2snes or SNI). It's named for the [phylum of segmented\nworms](https://en.wikipedia.org/wiki/Annelid), because segments.\n\nIt currently only supports Super Metroid, but other SNES games could be easily\nadded. The Super Metroid support is based on\n[SuperMetroid.asl](data/SuperMetroid.asl).\n\nIt's written in Rust using `egui`. This means it should work on Windows, macOS,\nand Linux. However, I've only tested it on Linux.\n\n# Dependencies\n\nYou will need qusb2snes or SNI so that the autosplitter can read the SNES memory (console or emulator). Beyond that, it should build and run on Windows, macOS, and Linux.\n\n# Getting Started\n\nThe easiest way to get Annelid is to download a release build for your OS:\n[Releases](https://github.com/dagit/annelid/releases)\n\nOnce you have Annelid running, you can right-click to import a layout and splits\nfrom LiveSplit. Then use the Autosplitter editor to create an autosplitter logic\nthat matches your splits.\n\n## Linux\n\nYour user account will need to be in the `input` group. This is so we can\nsupport global hotkeys. You can check if your account is already in the `input`\ngroup by typing:\n```sh\nid \u003cyour username\u003e\n```\n\nFor example, my username is `dagit`:\n```sh\n$ id dagit\nuid=1000(dagit) gid=1000(dagit) groups=1000(dagit),4(wheel),8(floppy),10(lp),11(dialout),12(audio),13(video),16(cdrom),17(optical),24(kvm),25(input),101(xbuilder),984(vboxusers)\n```\n\nNotice `25(input)`, that means my account is part of the `input` group. To add\nyour user to the group if it's not already there, use this command:\n\n```sh\nsudo usermod -a -G input \u003cyour username\u003e\n```\n\nOnce you've added your user account to the input group you may need to reboot or\nlog out of your graphical session.\n\n# Building\n\nYou'll need to install Rust. I recommend using [rustup](http://rustup.rs). Once you have the rust toolchain installed, clone this repository, and then type:\n\n```sh\ncargo build --release\n```\n\nNote: On Linux you may also need to install gtk3-devel, something like\n\n```sh\nsudo apt-get install libgtk-3-dev\n```\n\nIf the build is successful, you can run it with:\n\n```sh\ncargo run --release\n```\n\nIf you see the message:\n\n```\nError: \"No devices present\"\n```\n\nThat means you need to turn on your SNES and make sure that qusb2snes is connected to it.\n\n# TODO\n\n  * [X] Settings editor. A tree view with checkboxes should work pretty well for\n    configuring autosplit behavior.\n  * [X] Named settings that can be saved/loaded\n  * [X] Right-click menu for:\n    * [X] Settings editor\n    * [X] Save/Load splits and settings\n    * [ ] Way to select your usb2snes server\n    * [ ] Toggle for latency display\n  * [ ] Keybindings for skipping a split, undo, pausing, and stopping. Whatever livesplit supports.\n  * [X] Make sure the logic for starting a new run starts from a fresh snes state\n  * [X] Implement comparisons\n  * [X] Fix the horizontal sizing, currently hard coded\n  * [X] Allow it to start up without a connection and stay running when the\n  connection dies\n  * [ ] Do something to avoid refiring splits in the case of reset or death mid\n    run.\n\n# Cross compiling\n\n## For Windows\n```sh\nsudo xbps-install -Su cross-x86_64-w64-mingw32\nrustup target add x86_64-pc-windows-gnu\ncargo build --target x86_64-pc-windows-gnu\nwine ./target/x86_64-pc-windows-gnu/debug/annelid.exe\n```\n\n## For macOS\n\nThis fails because it needs all the Apple frameworks and there is currently no\nway to test it from linux. So cross compiling to macOS effectively doesn't work\nyet.\n\nHowever, it may still be useful to list the target in case those things change.\n\n```sh\nrustup target add x86_64-apple-darwin\ncargo build --target x86_64-apple-darwin\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdagit%2Fannelid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdagit%2Fannelid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdagit%2Fannelid/lists"}