All Projects → kodi-game → controller-topology-project

kodi-game / controller-topology-project

Licence: ODbL-1.0 license
The Controller Topology Project models how controllers connect to and map to each other for all gaming history

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to controller-topology-project

just-calling-random-api
React app to call various APIs. A place for new contributors to learn how to consume their APIs and contribute to open-source. Part of Hacktoberfest.
Stars: ✭ 25 (+47.06%)
Mutual labels:  hacktoberfest2021
Ravys-unified-discord-ruleset
Extensive, yet polished community ruleset, aimed at reducing the work of moderators
Stars: ✭ 21 (+23.53%)
Mutual labels:  hacktoberfest2021
30-Days-Of-Code
This File Contains all solutions of: Hackerrank 30 day of code. You are welcome to add any other variants of them or in other language if you know, but DO NOT MAKE THIS REPO ACT LIKE A SOURCE OF +1.
Stars: ✭ 14 (-17.65%)
Mutual labels:  hacktoberfest2021
browzica
Use browzica to keep track of your bookmarks
Stars: ✭ 18 (+5.88%)
Mutual labels:  hacktoberfest2021
Hacktoberfest-2021
Repository for community contributions
Stars: ✭ 46 (+170.59%)
Mutual labels:  hacktoberfest2021
ML-ProjectYard
This repo consists of multiple machine learning based projects with frontend
Stars: ✭ 105 (+517.65%)
Mutual labels:  hacktoberfest2021
samsungrac
Home Assistant Climate Device for controlling (not only) Samsung AC
Stars: ✭ 32 (+88.24%)
Mutual labels:  hacktoberfest2021
TruHealth
A website, which is wholly focused on Mental Health issues.
Stars: ✭ 16 (-5.88%)
Mutual labels:  hacktoberfest2021
Web-Dev-Helper
Developer Helper where you can find all resources related to open source and software developer resources
Stars: ✭ 33 (+94.12%)
Mutual labels:  hacktoberfest2021
BnademOverflow
BnademOverFlow's Official Website
Stars: ✭ 37 (+117.65%)
Mutual labels:  hacktoberfest2021
NAME-CARD hacktoberfest
It is a website for showcasing your Github profile.
Stars: ✭ 33 (+94.12%)
Mutual labels:  hacktoberfest2021
watora-translations
Files which contains Watora's answers in different languages
Stars: ✭ 16 (-5.88%)
Mutual labels:  hacktoberfest2021
open-source-contribution
to learn how to do pull request and do contribution to other's repo
Stars: ✭ 78 (+358.82%)
Mutual labels:  hacktoberfest2021
Web-OS
No description or website provided.
Stars: ✭ 21 (+23.53%)
Mutual labels:  hacktoberfest2021
HacktoberFest2021
Beginner-friendly repository for Hacktober Fest 2021. Start your contribution to open source through baby steps. 💜
Stars: ✭ 33 (+94.12%)
Mutual labels:  hacktoberfest2021
HackerRank-swift-solutions
My solutions in Swift for HackerRank tests
Stars: ✭ 16 (-5.88%)
Mutual labels:  hacktoberfest2021
EduSmart
It utilizes 3D, Augmented reality to give real-life simulations or feels of various models and make the learning process more impactful and fascinating. With an interactive live feature, students can ask the teacher their doubts instantly and also discuss.
Stars: ✭ 23 (+35.29%)
Mutual labels:  hacktoberfest2021
wallet-adapter
Modular TypeScript wallet adapters and components for Solana applications.
Stars: ✭ 964 (+5570.59%)
Mutual labels:  hacktoberfest2021
CodeBucket
A beginner-friendly project to help you in open-source contributions. Made specifically for contributions in HACKTOBERFEST! Please leave a star ⭐ to support this project! ✨
Stars: ✭ 22 (+29.41%)
Mutual labels:  hacktoberfest2021
NbGodotBoilerplate
This is a simple kickstarter project for NimbleBeasts projects. It comes with some standard features and little helpers as well as a some stuff, no one has time for in a game jam.
Stars: ✭ 18 (+5.88%)
Mutual labels:  hacktoberfest2021

Controller Topology Project

"Topology" is the way in which things are connected. Connections appear in emulation in several ways. For example, buttons on modern controllers map to buttons on retro controllers.

As another example, SNES supports hubs called "multitaps". These allow four controllers to connect to a single port on the SNES console.

This project aims to curate connections like this for all gaming history.

For a practical example of what be done with this data, see the visualization experiment.

Data specification

This database is structed for Kodi. A future script might spit out XML, JSON or JSON-LD, to allow for database queries.

See Readme-Addons.md for the complete specification of how the data is stored.

Topology types

Currently, this project uses two type of topologies:

1. Button topology

The button topology is how the buttons on controllers map to each other. To visualize this, imagine a SNES controller next to a 360 controller, with lines drawn from buttons on the SNES controller to the corresponding buttons on the 360 controller.

With this information, if a user is holding a 360 controller, we can automatically generate a buttonmap for SNES emulators.

2. Wire topology

The wire topology is how controllers are physically wired to the emulated game console. Two specific types of connections need to be modeled: multitaps and daisy chaining.

Controller representations

The button topology allows for automatically mapping between controllers. This is done using controller "profiles", which describe the button and wire layout.

However, generating a profile typically requires the original controller. Blurry images on Google Image Search don't expose the information we need, unfortunately.

Furthermore, even if we could get our hands on every controller ever, we can't manually map every controller to every other controller. The amount of work explodes quadratically. We need an automated solution.

So how do we solve profile generation and buttonmap generation?

To solve these problems, we transform controller profiles into different "representations" that we have data for, curate data for that representation, then transform the data back into the controller profile.

Libretro representation

Libretro emulators necessarily know which buttons are on their controllers. We curate button data from emulators for the libretro abstraction, then transform the data from the libretro abstraction back into our controller profiles.

Now, we have button data for most controllers.

Driver representation

Many projects, including libretro and Kodi, curate data mapping driver button IDs to a controller profile. Kodi allows mapping a physical controller to multiple profiles. When multiple profiles are mapped to the same driver data, we can transform this data back into mappings between profiles.

Now, we have data mapping controllers to each other.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].