
This change provides the ability to upload save states. When a state is downloaded, the state (savestate.state), screenshot (screenshot.jpg), and a json file (rominfo.json) describing the save state are zipped and downloaded. The json file description is defined as follows: ```json { "Name": "Super Mario Bros. (1985-09-13)(Nintendo)(JP-US).zip", "StateDateTime": "2024-06-24T05:34:38", "StateName": "", "MD5": "7d158dcd242e77ba249ac8342474aa77", "SHA1": "3d4b04dc78f9d998f17d9fe9ad982a83b5ed72df", "Type": "ROM" } ``` | Attribute | Value | | -------- | ------| | Name | The name of the ROM that the state belongs to. This is merely a convenience attribute. | | StateDateTime | The date and time (in UTC) when the state was initially saved. | | StateName | The name of the state | | MD5 | The MD5 hash of the ROM that the state belongs to. | | SHA1 | The SHA1 hash of the ROM that the state belongs to. | | Type | Whether the state belongs to a ROM or ROM Group | If the zip is re-uploaded, the above json file will be used to automatically match the saved state to the ROM that created it. If a zip is uploaded without the above three files, the upload will fail. If a file is uploaded that is not a zip, it will be stored against the currently running ROM and a warning will be displayed that Gaseous was unable to verify that the state belongs to the ROM, and may not function as expected. Closes #336
Gaseous Server
This is the server for the Gaseous system. It offers ROM and title management, as well as some basic in browser emulation of those ROMs.
Warning
Versions 1.6.1 and earlier are not suitable for being exposed to the internet, as:
- there is no authentication support, meaning anyone could trash your library
- the server has not been hardened for exposure to the internet - so there maybe unknown vulnerabilities
If you expose one of these earlier versions of the server to the internet, you do so at your own risk.
Version 1.7.0 and later contain user authentication, and can be exposed to the internet. However, it is recommended to no expose the server to the internet if you're not actively using it remotely, or if you have alternative means to access it remotely like a VPN.
While we do our best to stay on top of server security, if you expose the server to the internet you do so at your own risk.
Screenshots
Requirements
- MariaDB 11.1.2 (preferred) or MySQL Server 8+
- These are the database versions Gaseous has been tested and developed against. Your mileage may vary with earlier versions.
- MariaDB is the preferred database server, while MySQL will continue to be supported for existing users (they should be interchangable).
- Note that due to the earlier database schema using MySQL specific features, moving to MariaDB from MySQL will require rebuilding your database from scratch. The "Library Scan" background task can be used to re-import all titles.
- Internet Game Database API Key. See: https://api-docs.igdb.com/#account-creation
If using the provided docker-compose.yml, MariaDB will be installed for you.
Friends of Gaseous
- EmulatorJS: A fantastic (and fast) Javascript based implementation of RetroArch, supporting a wide variety of platforms. Discord: https://discord.gg/6akryGkETU
- RomM: Another self hosted ROM manager. Discord: https://discord.gg/P5HtHnhUDH
Third Party Projects
The following projects are used by Gaseous
Discord Server
Installation
See https://github.com/gaseous-project/gaseous-server/wiki/Installation for installation instructions.
Adding Content
- Import signatures: see https://github.com/gaseous-project/gaseous-server/wiki/Signatures
- Add ROMs: see https://github.com/gaseous-project/gaseous-server/wiki/Adding-ROMs