libretro / libretro/libretro-common

VFS discussion

Open
#47 18 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
180
Forks
98
Avg merge
7h 16m
Merged PRs (30d)
1

Description

A lot of discussion has been going on about a VFS layer for libretro.
I think it would be important to discuss, the problem, outline the goals and a set of requirements before attempting to come up with a solution.

I've been reading the chat, and the PRs that have been opened about this and I have found the following:

Problem

The API contemplates two scenarios regarding content loading:

  • The frontend loads content for them and hands over the data and the size of such data
  • The frontend hands the core the path to the content file that the user requested.

I assume any frontend including Retrix might be able to work as-is on the first scenario. Load the content th content in-behalf of the core and just pass the data over.

The second scenario is often used by contat that might be:
a. to big to be pre-loaded in memory by the frontend
b. might be composed of several files
c. might need patching before loading
d. might be inside an archive and require many of the files within the archive
d. might need to write to the content file or the content dir (nintendo FDS for instance)

Proposals

The proposal is a VFS ala KODI which allows the frontend to get data from different filesystems and would then hand over the data or a file handle to the core.

https://github.com/libretro/Genesis-Plus-GX/pull/98
http://dpaste.com/13WQAV1
https://github.com/libretro/RetroArch/pull/3715

Use cases

  • A user might have a file hosted in a web server (the frontend would need to support http to be able to retrieve the file in the first place)
  • Allow using Google SAF to load files from various content providers on Android
  • Allow using native iOS APIs to load files from various content providers on iOS

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the linked Genesis-Plus-GX and RetroArch pull requests and the accompanying proposal to understand the existing VFS discussion. Define the problem, goals, requirements, and use cases before attempting a solution; done means the project has an agreed direction rather than an unscoped implementation.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.