Giter VIP home page Giter VIP logo

slippi-ssbm-asm's Introduction

Project Slippi

Mission

The focus of this project is around the sport of Super Smash Bros Melee. There are a variety of actors involved in the sport, these include the competitor, streamer, caster, fan, spectator, and more. We are trying to create features for these people to enhance their experience when doing anything Melee related.

The primary means of doing this introduced by this project is by creating a data-rich replay infrastructure. Replay files have the potential to expand the competitive Melee experience in many ways including:

  1. Generating complex stats far beyond what is currently possible with video analysis tools
  2. Archiving a much larger percentage of tournament matches (all setups can be recording setups)
  3. Enabling new methods of streaming
  4. Enhancing streams and commentary discussion with detailed information about the games

More Information

Support Development: https://www.patreon.com/fizzi36

Release Blog Post: https://medium.com/project-slippi/project-public-release-4080c81d7205

Release Demo Video: https://www.youtube.com/watch?v=1OYS5JSZepQ

Discord Server: https://discord.gg/XpHZex6

.slp Parsing Libraries

Javascript [Official]

slp-parser-js: https://github.com/project-slippi/slp-parser-js

Python [Community]

py-slippi: https://github.com/hohav/py-slippi

Rust [Community]

peppi: https://github.com/hohav/peppi

How to Contribute

If you're interested in making Melee better than it already is, you should consider contributing!

Follow these steps to contribute:

  1. Fork the repository you're interested in contributing to (see Project Structure section below for the breakdown of the project)
  2. Checkout your fork
  3. Make changes
  4. Commit and push your changes
  5. Submit a pull request into the upstream project
  6. I will review the pull request and decide if it's worth merging. Please note that there's no guarantee what you work on will get merged into the main branch. That said, you can increase your chances by talking about it in the discord!

Project Structure

The project is composed of many different parts and projects that work together. This section will detail what those parts are, where they are, and how they can be contributed to.

ASM Gecko Codes (Assembly)

There are two main distributed codes: Slippi Recording and Slippi Playback.

The recording code will write data out of the game through Port B of the console. In order to do anything with this data, something must receive it. In the current case, the system receiving it is Dolphin, this will be addressed later.

The playback code requests and reads data from Port B of the console. It will request data it needs in order to play back a replay. Once again something must respond to these requests with the correct data and Dolphin currently serves that purpose.

The codes can be found at https://github.com/project-slippi/slippi-ssbm-asm. They can be compiled using the gecko tool in this project: https://github.com/JLaferri/gecko. See project readme for more info.

Faster Melee (C++)

All the code to make Dolphin support the assembly codes were built on top of Faster Melee. This code can be found at https://github.com/project-slippi/Ishiiruka/tree/slippi. Make sure to use the slippi branch. For info about how to build Dolphin, look here: https://github.com/dolphin-emu/dolphin/wiki.

To find the Slippi-specific stuff in the codebase, search for "Slippi".

Replay File

Dolphin currently serves the purpose of receiving data from the game and writing a replay file. To understand the structure and format of the replay file, please read the spec here: https://github.com/project-slippi/slippi-wiki/blob/master/SPEC.md

Slippi Launcher (TypeScript/React/Material-UI)

The desktop application is maintained in the repo found here: https://github.com/project-slippi/slippi-launcher.

This application is the one stop shop for Slippi users. Acts as a Netplay Launcher, Dolphin Auto Updater, Replay Viewer and Analyzer, and more.

.slp Tools Library (Javascript)

Replay files are read and stats are computed by a separate library that can be found here: https://github.com/project-slippi/slippi-js. This was split out from the desktop app in order to allow people to read replays and display stats in their own applications.

Nintendont (C)

We have also created a custom build of Nintendont which emulates a Slippi hardware device in a similar way to Dolphin. It is still currently a WIP but it can be found here: https://github.com/project-slippi/Nintendont/tree/slippi

slippi-ssbm-asm's People

Contributors

altf4 avatar charlesamiller avatar cnkeats avatar gurvan avatar jlaferri avatar jmlee337 avatar kyhavlov avatar nickcondron avatar nikhilnarayana avatar ownasaurus avatar rapito avatar unclepunch avatar yael333 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slippi-ssbm-asm's Issues

Hold Z to disconnect from opponent

Right now players just have to press Z once to disconnect from their opponent, but that can cause accidental disconnects. Instead we should make it a hold to disconnect similar to how you have to hold b to exit the CSS.

LRAS Indicator Index is sometimes incorrect

The LRAS Initiator set in the Game End event often indicates that Player 1 left when it was actually Player 2. Across over 2000 .slp files where the index is NOT -1, less than 5% of the quits are indicated as being from Player 2, but it would be expected for it to actually be about 50%.

Attached are 5 example files where Player 2 leaves but the LRAS Initiator Index is 0 instead of 1.

badLRAS.zip

Improved pause feature

I am proposing a better way to implement pausing.

  • After pressing pause, you can't move your character, your opponent can.
  • Your opponent gets notified that you paused.
  • If you don't get hit for ~1-2 seconds after pausing, you become intangible. Invincible could be cool also.
  • If you don't unpause within ~30seconds, your opponent can press a button to take the win. Maybe a lower duration in ranked and/or higher in unranked.
  • Limited number/duration of pauses of pauses per game.

Add support for character specific "resource" flag

Should be character data offset 0x222C

It's used for things like float, marth side b juice, luigi cyclone, etc.

Currently there's not really any good way to check these, short of tracking the usage and reset criteria manually.

Controller keeps rumbling if opponent quits during KO animation

Not sure if this is an issue w/ Ishiiruka vs some other component, so feel free to move around if it's filed incorrectly.

If the opponent quits (Start + L+R+A+Start) during a KO animation (eg opponent dying off of bottom blast zone), then the rumble continues to rumble indefinitely on the character-select screen.

It happens relatively often (1-2 times a day) as quits (rage quits) tend to correlate w/ KOs.
Seems like there might be some easy catchall fix -> like toggling rumble active state when the menu screen opens.

Issues with connecting with other people (direct mode)

Heya! I've been having issues with connecting to other people via direct mode, but none connecting with others.
I would love to be able to provide further debug info, but I'm not sure where to get any helpful information. We have tested that there is no issues with the speeds, since download is high or higher than me, ping is 2-10 (according to speedtest.net).
I don't believe this is to do with some firewall, since unranked works fine for those people I can't connect to... Is there any debug menu for additional info?

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.