Giter VIP home page Giter VIP logo

annelid's Introduction

About

Action Shot Menu Settings Editor

This is a simple barebones re-imagining of LiveSplit + autosplitter for SNES (sd2snes/fxpak + qusb2snes or SNI). It's named for the phylum of segmented worms, because segments.

It currently only supports Super Metroid, but other SNES games could be easily added. The Super Metroid support is based on SuperMetroid.asl.

It's written in Rust using egui. This means it should work on Windows, macOS, and Linux. However, I've only tested it on Linux.

Dependencies

You 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.

Getting Started

The easiest way to get Annelid is to download a release build for your OS: Releases

Once you have Annelid running, you can right-click to import a layout and splits from LiveSplit. Then use the Autosplitter editor to create an autosplitter logic that matches your splits.

Linux

Your user account will need to be in the input group. This is so we can support global hotkeys. You can check if your account is already in the input group by typing:

id <your username>

For example, my username is dagit:

$ id dagit
uid=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)

Notice 25(input), that means my account is part of the input group. To add your user to the group if it's not already there, use this command:

sudo usermod -a -G input <your username>

Once you've added your user account to the input group you may need to reboot or log out of your graphical session.

Building

You'll need to install Rust. I recommend using rustup. Once you have the rust toolchain installed, clone this repository, and then type:

cargo build --release

Note: On Linux you may also need to install gtk3-devel, something like

sudo apt-get install libgtk-3-dev

If the build is successful, you can run it with:

cargo run --release

If you see the message:

Error: "No devices present"

That means you need to turn on your SNES and make sure that qusb2snes is connected to it.

TODO

  • Settings editor. A tree view with checkboxes should work pretty well for configuring autosplit behavior.
  • Named settings that can be saved/loaded
  • Right-click menu for:
    • Settings editor
    • Save/Load splits and settings
    • Way to select your usb2snes server
    • Toggle for latency display
  • Keybindings for skipping a split, undo, pausing, and stopping. Whatever livesplit supports.
  • Make sure the logic for starting a new run starts from a fresh snes state
  • Implement comparisons
  • Fix the horizontal sizing, currently hard coded
  • Allow it to start up without a connection and stay running when the connection dies
  • Do something to avoid refiring splits in the case of reset or death mid run.

Cross compiling

For Windows

sudo xbps-install -Su cross-x86_64-w64-mingw32
rustup target add x86_64-pc-windows-gnu
cargo build --target x86_64-pc-windows-gnu
wine ./target/x86_64-pc-windows-gnu/debug/annelid.exe

For macOS

This fails because it needs all the Apple frameworks and there is currently no way to test it from linux. So cross compiling to macOS effectively doesn't work yet.

However, it may still be useful to list the target in case those things change.

rustup target add x86_64-apple-darwin
cargo build --target x86_64-apple-darwin

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.