Skip to content

Latest commit

 

History

History
66 lines (44 loc) · 5.34 KB

GETTING_STARTED.md

File metadata and controls

66 lines (44 loc) · 5.34 KB

Getting Started

Introduction

This document is meant to assist developers interested in learning about and contributing to the Slippi codebase.

What this document is:

  • An overview of the various components that make up the Slippi Project.
  • A collection of resources and tools.

What this document is not :

  • An in-depth programming tutorial.

Overview

The Project

The Slippi project is comprised of a number of different applications, each with their own purpose. Below is an overview of each of these applications function, and their relevant technologies.

Ishiiruka - A modified version of the Dolphin emulator. This project is responsible for handling things like: communication with the matchmaking server, writing Slippi replay files, passing external data to the emulated game, and playing replays.
Languages: C++

Slippi SSBM ASM - A series of ASM mods that are applied to Melee in order make Slippi work.
Languages: PPC Assembly

Slippi Desktop App - A desktop application that allows users to view statstics about previous matches, and launch replays.
Languages: JavaScript
Frameworks: Electron, React

slippi-js - A JavaScript library that is used to parse .slp files, and allows for the calculation of game statistics.
Languages: Typescript

The Workflow

The user launches Ishiiruka and selects an .iso of Melee to emulate. Upon lauching the emulation of Melee, Ishiiruka injects the modifications made by Slippi SSBM ASM . As the user interacts with the game, information is exchanged between Ishiiruka and the Slippi SSBM ASM code. As a user begins an online match, Ishiiruka starts a log of in-game state reported by Slippi SSBM ASM. This log is ultimately formatted and written to a .slp file, according to the Slippi replay file spec. These files are then viewable from the Slippi Desktop App . From the desktop app, a user may choose to launch the replay, in which case Ishiiruka is launched in a replay mode. A user may also choose to view details or statistics about a previously played match, in order to do so, the desktop app leverages the slippi-js library.

Commonly Asked Questions

"Where is the rollback code located?"

Rollback is accomplished by work done between the Slippi SSBM ASM code and the Ishiiruka code.

"How is data moved between the game (assembly) and the emulator?"

Via EXI communication. An example of such is demonstrated in this video by Fizzi.

"Where is the matchmaking code?"

The source code for the matchmaking server is in a private repository and is not currently planned to be open sourced.

Guides & Resources

Melee Modding and Assembly

Tools

Melee Modding and Assembly

  • VSCode PPC ASM Extension - A useful extension for syntax highlighting in VSCode
  • HxD - A free Hex editor. Hex editors in general are useful for looking through memory dumps.
  • SpeedCrunch - A calculator for programmers. It allows for quick conversions and operations between hex, binary, octal, and decimal.
  • Ghidra - A tool originally created by the NSA - it's used for reverse engineering programs. Particularly useful, is its ability to generate C code from assembly.