commit
95cb4d4f28
138 changed files with 1854 additions and 3126 deletions
50
.github/workflows/build-main.yaml
vendored
50
.github/workflows/build-main.yaml
vendored
|
@ -128,32 +128,36 @@ jobs:
|
|||
|
||||
## Documentation
|
||||
|
||||
### Documentation For Developers
|
||||
* [Building The Distribution](/documentation/DEVEL_BUILDING_JELOS.md)
|
||||
* [Contributor Code of Conduct](/CODE_OF_CONDUCT.md)
|
||||
* [Contributing to JELOS](/CONTRIBUTING.md)
|
||||
* [Adding Hardware Quirks](/documentation/DEVEL_ADD_HARDWARE_QUIRKS.md)
|
||||
* [Creating Packages](/documentation/DEVEL_CREATING_PACKAGES.md)
|
||||
### Contribute
|
||||
|
||||
* [Building JELOS](https://jelos.org/contribute/build/)
|
||||
* [Code of Conduct](https://jelos.org/contribute/code-of-conduct/)
|
||||
* [Contributing to JELOS](https://jelos.org/contribute/)
|
||||
* [Modifying JELOS](https://jelos.org/contribute/modify/)
|
||||
* [Adding Hardware Quirks](https://jelos.org/contribute/quirks/)
|
||||
* [Creating Packages](https://jelos.org/contribute/packages/)
|
||||
* [Pull Request Template](/PULL_REQUEST_TEMPLATE.md)
|
||||
|
||||
### Documentation For Everyone
|
||||
* [Installation and Device Support](https://github.com/JustEnoughLinuxOS/distribution/tree/main#readme)
|
||||
* [Device Specific Documentation](/documentation/PER_DEVICE_DOCUMENTATION)
|
||||
* [Donating to JELOS](/documentation/GENERAL_DONATING_TO_JELOS.md)
|
||||
* [Frequently Asked Questions](/documentation/GENERAL_FREQUENTLY_ASKED_QUESTIONS.md)
|
||||
* [Hotkeys and Button Codes](/documentation/GENERAL_HOTKEYS_AND_BUTTON_CODES.md)
|
||||
* [Optimizing Performance and Battery Life](/documentation/GENERAL_PERFORMANCE_AND_BATTERY.md)
|
||||
* [Network Play](/documentation/GENERAL_NETWORK_PLAY.md)
|
||||
### Play
|
||||
|
||||
### Using JELOS
|
||||
* [Setting Up Cloud Drives](/documentation/SETUP_CLOUD_DRIVES.md)
|
||||
* [Setting Up Syncthing](/documentation/SETUP_SYNCTHING.md)
|
||||
* [Game Engines and Launch Files](/documentation/SETUP_GAME_ENGINES_AND_LAUNCH_FILES.md)
|
||||
* [Configuring Moonlight Streaming](/documentation/SETUP_MOONLIGHT_STREAMING.md)
|
||||
* [Setting Up P2P Networking With ZeroTier](/documentation/SETUP_P2P_ZEROTIER.md)
|
||||
* [Configure TailScale VPN](/documentation/SETUP_VPN_TAILSCALE.md)
|
||||
* [Setting Up Wireguard VPN](/documentation/SETUP_VPN_WIREGUARD.md)
|
||||
* [Creating Custom Shader Presets for Per Game / Per System Use](https://github.com/JustEnoughLinuxOS/distribution/blob/main/documentation/GENERAL_CUSTOM_SHADERS.md)
|
||||
* [Installing JELOS](https://jelos.org/play/install/)
|
||||
* [Updating JELOS](https://jelos.org/play/update/)
|
||||
* [Controls](https://jelos.org/play/controls/)
|
||||
* [Netplay](https://jelos.org/play/netplay/)
|
||||
* [Configuring Moonlight](https://jelos.org/systems/moonlight/)
|
||||
* [Device Specific Documentation](/documentation/PER_DEVICE_DOCUMENTATION)
|
||||
|
||||
### Configure
|
||||
|
||||
* [Optimizations](https://jelos.org/configure/optimizations/)
|
||||
* [Shaders](https://jelos.org/configure/shaders/)
|
||||
* [Cloud Sync](https://jelos.org/configure/cloud-sync/)
|
||||
* [VPN](https://jelos.org/configure/vpn/)
|
||||
|
||||
### Other
|
||||
|
||||
* [Frequently Asked Questions](https://jelos.org/faqs/)
|
||||
* [Donating to JELOS](https://jelos.org/donations/)
|
||||
|
||||
artifacts: "release/*"
|
||||
prerelease: false
|
||||
|
|
|
@ -1,131 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Contributor Covenant Code of Conduct
|
||||
|
||||
## Our Pledge
|
||||
|
||||
We as members, contributors, and leaders pledge to make participation in our
|
||||
community a harassment-free experience for everyone, regardless of age, body
|
||||
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
||||
identity and expression, level of experience, education, socio-economic status,
|
||||
nationality, personal appearance, race, religion, or sexual identity
|
||||
and orientation.
|
||||
|
||||
We pledge to act and interact in ways that contribute to an open, welcoming,
|
||||
diverse, inclusive, and healthy community.
|
||||
|
||||
## Our Standards
|
||||
|
||||
Examples of behavior that contributes to a positive environment for our
|
||||
community include:
|
||||
|
||||
* Demonstrating empathy and kindness toward other people
|
||||
* Being respectful of differing opinions, viewpoints, and experiences
|
||||
* Giving and gracefully accepting constructive feedback
|
||||
* Accepting responsibility and apologizing to those affected by our mistakes,
|
||||
and learning from the experience
|
||||
* Focusing on what is best not just for us as individuals, but for the
|
||||
overall community
|
||||
|
||||
Examples of unacceptable behavior include:
|
||||
|
||||
* The use of sexualized language or imagery, and sexual attention or
|
||||
advances of any kind
|
||||
* Trolling, insulting or derogatory comments, and personal or political attacks
|
||||
* Public or private harassment
|
||||
* Publishing others' private information, such as a physical or email
|
||||
address, without their explicit permission
|
||||
* Other conduct which could reasonably be considered inappropriate in a
|
||||
professional setting
|
||||
|
||||
## Enforcement Responsibilities
|
||||
|
||||
Community leaders are responsible for clarifying and enforcing our standards of
|
||||
acceptable behavior and will take appropriate and fair corrective action in
|
||||
response to any behavior that they deem inappropriate, threatening, offensive,
|
||||
or harmful.
|
||||
|
||||
Community leaders have the right and responsibility to remove, edit, or reject
|
||||
comments, commits, code, wiki edits, issues, and other contributions that are
|
||||
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
||||
decisions when appropriate.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies within all community spaces, and also applies when
|
||||
an individual is officially representing the community in public spaces.
|
||||
Examples of representing our community include using an official e-mail address,
|
||||
posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported to the community leaders responsible for enforcement at
|
||||
contact at jelos dot org.
|
||||
All complaints will be reviewed and investigated promptly and fairly.
|
||||
|
||||
All community leaders are obligated to respect the privacy and security of the
|
||||
reporter of any incident.
|
||||
|
||||
## Enforcement Guidelines
|
||||
|
||||
Community leaders will follow these Community Impact Guidelines in determining
|
||||
the consequences for any action they deem in violation of this Code of Conduct:
|
||||
|
||||
### 1. Correction
|
||||
|
||||
**Community Impact**: Use of inappropriate language or other behavior deemed
|
||||
unprofessional or unwelcome in the community.
|
||||
|
||||
**Consequence**: A private, written warning from community leaders, providing
|
||||
clarity around the nature of the violation and an explanation of why the
|
||||
behavior was inappropriate. A public apology may be requested.
|
||||
|
||||
### 2. Warning
|
||||
|
||||
**Community Impact**: A violation through a single incident or series
|
||||
of actions.
|
||||
|
||||
**Consequence**: A warning with consequences for continued behavior. No
|
||||
interaction with the people involved, including unsolicited interaction with
|
||||
those enforcing the Code of Conduct, for a specified period of time. This
|
||||
includes avoiding interactions in community spaces as well as external channels
|
||||
like social media. Violating these terms may lead to a temporary or
|
||||
permanent ban.
|
||||
|
||||
### 3. Temporary Ban
|
||||
|
||||
**Community Impact**: A serious violation of community standards, including
|
||||
sustained inappropriate behavior.
|
||||
|
||||
**Consequence**: A temporary ban from any sort of interaction or public
|
||||
communication with the community for a specified period of time. No public or
|
||||
private interaction with the people involved, including unsolicited interaction
|
||||
with those enforcing the Code of Conduct, is allowed during this period.
|
||||
Violating these terms may lead to a permanent ban.
|
||||
|
||||
### 4. Permanent Ban
|
||||
|
||||
**Community Impact**: Demonstrating a pattern of violation of community
|
||||
standards, including sustained inappropriate behavior, harassment of an
|
||||
individual, or aggression toward or disparagement of classes of individuals.
|
||||
|
||||
**Consequence**: A permanent ban from any sort of public interaction within
|
||||
the community.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 2.0, available at
|
||||
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
|
||||
|
||||
Community Impact Guidelines were inspired by [Mozilla's code of conduct
|
||||
enforcement ladder](https://github.com/mozilla/diversity).
|
||||
|
||||
[homepage]: https://www.contributor-covenant.org
|
||||
|
||||
For answers to common questions about this code of conduct, see the FAQ at
|
||||
https://www.contributor-covenant.org/faq. Translations are available at
|
||||
https://www.contributor-covenant.org/translations.
|
||||
Moved to [https://jelos.org/contribute/code-of-conduct/](https://jelos.org/contribute/code-of-conduct/)
|
|
@ -1,42 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Contributing to JELOS
|
||||
Welcome new contributor! Your contribution will help JELOS become a better Linux distribution, so thank you! We want to make contributing to this project as easy and transparent as possible. Contributors are able to:
|
||||
|
||||
- Discuss the current state of the code
|
||||
- Submit a fix
|
||||
- Propose new features
|
||||
- Become a maintainer
|
||||
|
||||
## Becoming a maintainer
|
||||
When contributing to JELOS you are expected to become the maintainer of your contribution. Please keep this in mind when submitting pull requests.
|
||||
* Keep track of your contributions upstreams and keep your components up-to-date.
|
||||
* Watch the issue tracker and resolve issues related to your contribution.
|
||||
|
||||
## We Develop with Github
|
||||
We use Github to host code, to track issues and feature requests, as well as accept pull requests.
|
||||
|
||||
## We Use [Github Flow](https://guides.github.com/introduction/flow/index.html), So All Code Changes Happen Through Pull Requests
|
||||
Pull requests are the best way to propose changes to the codebase (we use [Github Flow](https://guides.github.com/introduction/flow/index.html)). We actively welcome your pull requests:
|
||||
|
||||
1. Join our discord and chat with us, we'll be happy to help you successfully implement your change.
|
||||
2. Fork the repo and create your branch from `dev`.
|
||||
3. Ensure your code is built locally and tested.
|
||||
4. Any changes should be reflected in the documentation.
|
||||
5. Issue a pull request back to our `dev` branch.
|
||||
|
||||
## Any contributions you make will be under the Apache 2 Software License
|
||||
In short, when you submit code changes, your submissions are understood to be contributed under the same license as the original project code or under [Apache 2](https://choosealicense.com/licenses/apache-2.0/) license when no other license applies.
|
||||
|
||||
## Use a Consistent Coding Style
|
||||
* Follow the same style as the source you are editing.
|
||||
* If you are contributing new code, keep the style consistent with other similar works.
|
||||
* Parameterize as much as possible, try to avoid hard coded values whenever you can.
|
||||
* Use 2 spaces for indentation rather than tabs when possible.
|
||||
|
||||
## License
|
||||
By contributing, you agree that your contributions will be licensed under the license of the existing project code being modified or Apache 2.
|
||||
|
||||
## References
|
||||
This document was adapted from the open-source contribution guidelines for [Facebook's Draft](https://github.com/facebook/draft-js/blob/a9316a723f9e918afde44dea68b5f9f39b7d9b00/CONTRIBUTING.md)
|
||||
Moved to [https://jelos.org/contribute/](https://jelos.org/contribute/)
|
36
Dockerfile
36
Dockerfile
|
@ -1,21 +1,25 @@
|
|||
FROM ubuntu:22.04
|
||||
FROM ubuntu:jammy
|
||||
|
||||
RUN apt update \
|
||||
&& DEBIAN_FRONTEND=noninteractive \
|
||||
apt install -y \
|
||||
gcc make git unzip wget \
|
||||
xz-utils libsdl2-dev libsdl2-mixer-dev libfreeimage-dev libfreetype6-dev libcurl4-openssl-dev \
|
||||
rapidjson-dev libasound2-dev libgl1-mesa-dev build-essential libboost-all-dev cmake fonts-droid-fallback \
|
||||
libvlc-dev libvlccore-dev vlc-bin texinfo premake4 golang libssl-dev curl patchelf \
|
||||
xmlstarlet patchutils gawk gperf xfonts-utils default-jre python3 python-is-python3 xsltproc libjson-perl \
|
||||
lzop libncurses5-dev u-boot-tools rsync p7zip libparse-yapp-perl \
|
||||
zip binutils-aarch64-linux-gnu p7zip-full libvpx-dev bsdmainutils bc meson p7zip-full \
|
||||
qemu-user-binfmt zstd parted imagemagick \
|
||||
&& apt autoremove --purge -y \
|
||||
&& apt clean -y \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN adduser --disabled-password --gecos '' docker
|
||||
RUN apt-get update \
|
||||
&& apt-get dist-upgrade -y \
|
||||
&& apt-get install -y locales sudo
|
||||
|
||||
RUN locale-gen en_US.UTF-8 \
|
||||
&& update-locale LANG=en_US.UTF-8 LANGUAGE=en_US:en
|
||||
ENV LANG=en_US.UTF-8 \
|
||||
LANGUAGE=en_US:en \
|
||||
LC_ALL=en_US.UTF-8
|
||||
|
||||
RUN adduser --disabled-password --gecos '' docker \
|
||||
&& adduser docker sudo \
|
||||
&& echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
||||
|
||||
RUN apt-get install -y \
|
||||
bc default-jre file gawk gcc git golang-go gperf libjson-perl libncurses5-dev \
|
||||
libparse-yapp-perl libxml-parser-perl lzop make patchutils python-is-python3 \
|
||||
python3 parted unzip wget curl xfonts-utils xsltproc zip zstd
|
||||
|
||||
RUN mkdir -p /work && chown docker /work
|
||||
|
||||
|
|
193
README.md
193
README.md
|
@ -1,8 +1,11 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
|
||||
---
|
||||
|
||||
Just Enough Linux Operating System (JELOS) is an immutable Linux distribution for handheld gaming devices developed by a small community of enthusiasts. Our goal is to produce an operating system that has the features and capabilities that we need, and to have fun as we develop it.
|
||||
|
||||
## Features
|
||||
|
||||
* JELOS has a very active community of developers and users.
|
||||
* Integrated cross-device local and remote network play.
|
||||
* In-game touch support on supported devices.
|
||||
|
@ -15,127 +18,121 @@ Just Enough Linux Operating System (JELOS) is an immutable Linux distribution fo
|
|||
* Includes built-in support for scraping and retroachievements.
|
||||
|
||||
## Screenshots
|
||||
|System View|Menu View|Game List|
|
||||
|----|----|----|
|
||||
|![system-view](https://github.com/JustEnoughLinuxOS/distribution/assets/88717793/3f8b0b5a-c3ba-4b56-a0fb-d72cf143e44f)|![menu](https://github.com/JustEnoughLinuxOS/distribution/assets/88717793/2a6f0d0a-9b13-4619-ab08-19791d49d3d0)|![gamelist-view-metadata-off-immersive](https://github.com/JustEnoughLinuxOS/distribution/assets/88717793/9120a7c4-f06d-4236-a3e8-d49c7089f727)|
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td><img src="https://jelos.org/_inc/images/screenshots/system-view.png"/></td>
|
||||
<td><img src="https://jelos.org/_inc/images/screenshots/menu.png"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://jelos.org/_inc/images/screenshots/gamelist-view-metadata-immersive.png"/></td>
|
||||
<td><img src="https://jelos.org/_inc/images/screenshots/gamelist-view-no-metadata-immersive.png"/></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
## Community
|
||||
The JELOS community utilizes Discord for discussion, if you would like to join us please use the link below.
|
||||
* [https://discord.gg/seTxckZjJy](https://discord.gg/seTxckZjJy)
|
||||
|
||||
The JELOS community utilizes Discord for discussion, if you would like to join us please use this link: [https://discord.gg/seTxckZjJy](https://discord.gg/seTxckZjJy)
|
||||
|
||||
## Licenses
|
||||
|
||||
JELOS is a Linux distribution that is made up of many open-source components. Components are provided under their respective licenses. This distribution includes components licensed for non-commercial use only.
|
||||
|
||||
### JELOS Branding
|
||||
|
||||
JELOS branding and images are licensed under a [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://creativecommons.org/licenses/by-nc-sa/4.0/).
|
||||
|
||||
#### You are free to
|
||||
* Share — copy and redistribute the material in any medium or format
|
||||
* Adapt — remix, transform, and build upon the material
|
||||
You are free to:
|
||||
|
||||
#### Under the following terms
|
||||
* Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
|
||||
* NonCommercial — You may not use the material for commercial purposes.
|
||||
* ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
|
||||
- Share: copy and redistribute the material in any medium or format
|
||||
- Adapt: remix, transform, and build upon the material
|
||||
|
||||
Under the following terms:
|
||||
|
||||
- Attribution: You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
|
||||
- NonCommercial: You may not use the material for commercial purposes.
|
||||
- ShareAlike: If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
|
||||
|
||||
### JELOS Software
|
||||
|
||||
Copyright 2021-present Fewtarius
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0)
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
### Bundled Works
|
||||
All other software is provided under each component's respective license. These licenses can be found in the software sources or in this project's licenses folder.
|
||||
|
||||
## Documentation
|
||||
### Documentation For Developers
|
||||
* [Building The Distribution](/documentation/DEVEL_BUILDING_JELOS.md)
|
||||
* [Contributor Code of Conduct](/CODE_OF_CONDUCT.md)
|
||||
* [Contributing to JELOS](/CONTRIBUTING.md)
|
||||
* [Adding Hardware Quirks](/documentation/DEVEL_ADD_HARDWARE_QUIRKS.md)
|
||||
* [Creating Packages](/documentation/DEVEL_CREATING_PACKAGES.md)
|
||||
|
||||
### Contribute
|
||||
|
||||
* [Building JELOS](https://jelos.org/contribute/build/)
|
||||
* [Code of Conduct](https://jelos.org/contribute/code-of-conduct/)
|
||||
* [Contributing to JELOS](https://jelos.org/contribute/)
|
||||
* [Modifying JELOS](https://jelos.org/contribute/modify/)
|
||||
* [Adding Hardware Quirks](https://jelos.org/contribute/quirks/)
|
||||
* [Creating Packages](https://jelos.org/contribute/packages/)
|
||||
* [Pull Request Template](/PULL_REQUEST_TEMPLATE.md)
|
||||
|
||||
### Documentation For Everyone
|
||||
* [Installation and Device Support](https://github.com/JustEnoughLinuxOS/distribution/tree/main#installation)
|
||||
* [Device Specific Documentation](/documentation/PER_DEVICE_DOCUMENTATION)
|
||||
* [Donating to JELOS](/documentation/GENERAL_DONATING_TO_JELOS.md)
|
||||
* [Frequently Asked Questions](/documentation/GENERAL_FREQUENTLY_ASKED_QUESTIONS.md)
|
||||
* [Hotkeys and Button Codes](/documentation/GENERAL_HOTKEYS_AND_BUTTON_CODES.md)
|
||||
* [Optimizing Performance and Battery Life](/documentation/GENERAL_PERFORMANCE_AND_BATTERY.md)
|
||||
* [Network Play](/documentation/GENERAL_NETWORK_PLAY.md)
|
||||
### Play
|
||||
|
||||
### Using JELOS
|
||||
* [Setting Up Cloud Drives](/documentation/SETUP_CLOUD_DRIVES.md)
|
||||
* [Setting Up Syncthing](/documentation/SETUP_SYNCTHING.md)
|
||||
* [Game Engines and Launch Files](/documentation/SETUP_GAME_ENGINES_AND_LAUNCH_FILES.md)
|
||||
* [Configuring Moonlight Streaming](/documentation/SETUP_MOONLIGHT_STREAMING.md)
|
||||
* [Setting Up P2P Networking With ZeroTier](/documentation/SETUP_P2P_ZEROTIER.md)
|
||||
* [Configure TailScale VPN](/documentation/SETUP_VPN_TAILSCALE.md)
|
||||
* [Setting Up Wireguard VPN](/documentation/SETUP_VPN_WIREGUARD.md)
|
||||
* [Creating Custom Shader Presets for Per Game / Per System Use](https://github.com/JustEnoughLinuxOS/distribution/blob/main/documentation/GENERAL_CUSTOM_SHADERS.md)
|
||||
* [Installing JELOS](https://jelos.org/play/install/)
|
||||
* [Updating JELOS](https://jelos.org/play/update/)
|
||||
* [Controls](https://jelos.org/play/controls/)
|
||||
* [Netplay](https://jelos.org/play/netplay/)
|
||||
* [Configuring Moonlight](https://jelos.org/systems/moonlight/)
|
||||
* [Device Specific Documentation](/documentation/PER_DEVICE_DOCUMENTATION)
|
||||
|
||||
### Configure
|
||||
|
||||
* [Optimizations](https://jelos.org/configure/optimizations/)
|
||||
* [Shaders](https://jelos.org/configure/shaders/)
|
||||
* [Cloud Sync](https://jelos.org/configure/cloud-sync/)
|
||||
* [VPN](https://jelos.org/configure/vpn/)
|
||||
|
||||
### Other
|
||||
|
||||
* [Frequently Asked Questions](https://jelos.org/faqs/)
|
||||
* [Donating to JELOS](https://jelos.org/donations/)
|
||||
|
||||
## Device Support
|
||||
JELOS supports a variety of ARM and Intel/AMD based devices<sup>1</sup>.
|
||||
|
||||
JELOS supports a variety of ARM and Intel/AMD based devices.
|
||||
|
||||
| Manufacturer | Device | CPU / Architecture | Kernel | GL driver | Interface |
|
||||
|--|--|--|--|--|--|
|
||||
|Anbernic| RG351P/M | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + EmulationStation|
|
||||
|Anbernic| RG353P<sup>2</sup> | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + EmulationStation|
|
||||
|Anbernic| RG353M<sup>2</sup> | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + EmulationStation|
|
||||
|Anbernic| RG353V<sup>2</sup> | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + EmulationStation|
|
||||
|Anbernic| RG353VS<sup>2</sup> | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + EmulationStation|
|
||||
|Anbernic| RG503 | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + EmulationStation|
|
||||
|Anbernic| RG552 | Rockchip RK3399 (ARM) | Mainline Linux | Panfrost | Weston + EmulationStation|
|
||||
|Anbernic|Win600|AMD Athlon Silver 3050e (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|Atari|VCS|AMD Ryzen R1606G (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|AOKZOE | A1 Pro | AMD 7840u (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|AYANEO<sup>3</sup>|Air / Air Pro|Amd Ryzen 5 5560U / AMD Ryzen 7 5825U (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|AYANEO<sup>3</sup>|Air Plus|Amd Ryzen 7 6800U / (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|AYANEO<sup>3</sup>|AYANEO 2|Amd Ryzen 7 6800U / (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|Ayn|Loki Zero|AMD Athlon Silver 3050e (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|Ayn|Max|Amd Ryzen 7 6800U / (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|GPD|Win 4|Amd Ryzen 7 6800U / (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|GPD|Win Max 2 (2022)|Amd Ryzen 7 6800U / (x86_64)|Mainline Linux|Radeonsi|Weston + EmulationStation|
|
||||
|Hardkernel| Odroid Go Advance | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + EmulationStation|
|
||||
|Hardkernel| Odroid Go Super | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + EmulationStation|
|
||||
|Hardkernel|Odroid Go Ultra|Amlogic S922X / Mali G52 M6 (ARMv8-A)|Mainline Linux|Mali|Weston + EmulationStation|
|
||||
|Indiedroid|Nova|Rockchip RK3588S / Mali G610 (ARMv8-A)|Rockchip 5.10 BSP Linux|Panfrost|Weston + EmulationStation|
|
||||
|Orange Pi|Orange Pi 5|Rockchip RK3588S / Mali G610 (ARMv8-A)|Rockchip 5.10 BSP Linux|Panfrost|Weston + EmulationStation|
|
||||
|Powkiddy|RGB10 Max 3 Pro|Amlogic A311D / Mali G52 M4 (ARMv8-A)|Mainline Linux|Mali|Weston + EmulationStation|
|
||||
|Powkiddy| RGB30 | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + EmulationStation |
|
||||
|Powkiddy| RK2023 | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + EmulationStation |
|
||||
|Powkiddy| x55 | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + EmulationStation |
|
||||
| -- | -- | -- | -- | -- | -- |
|
||||
| Anbernic | [RG351P/M](http://jelos.org/devices/anbernic/rg351pm) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station |
|
||||
| Anbernic | [RG353P](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station |
|
||||
| Anbernic | [RG353M](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station |
|
||||
| Anbernic | [RG353V](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station |
|
||||
| Anbernic | [RG353VS](http://jelos.org/devices/anbernic/rg353pmvvs) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station |
|
||||
| Anbernic | [RG503](http://jelos.org/devices/anbernic/rg503) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station |
|
||||
| Anbernic | [RG552](http://jelos.org/devices/anbernic/rg552) | Rockchip RK3399 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station |
|
||||
| Anbernic | [Win600](http://jelos.org/devices/anbernic/win600) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| AOKZOE | [A1 Pro](http://jelos.org/devices/aokzoe/a1-pro) | AMD 7840u (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| Atari | [VCS](http://jelos.org/devices/atari/vcs) | AMD Ryzen R1606G (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| AYANEO | [Air / Air Pro](http://jelos.org/devices/ayaneo/air) | Amd Ryzen 5 5560U / AMD Ryzen 7 5825U (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| AYANEO | [Air Plus](http://jelos.org/devices/ayaneo/air-plus) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| AYANEO | [AYANEO 2](http://jelos.org/devices/ayaneo/ayaneo-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| Ayn | [Loki Zero](http://jelos.org/devices/ayn/loki-zero) | AMD Athlon Silver 3050e (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| Ayn | [Loki Max](http://jelos.org/devices/ayn/loki-max) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| GPD | [Win 4](http://jelos.org/devices/gpd/win4) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux | Radeonsi | Weston + Emulation Station |
|
||||
| GPD | [Win Max 2 (2022)](http://jelos.org/devices/gpd/win-max-2) | Amd Ryzen 7 6800U / (x86_64) | Mainline Linux| Radeonsi | Weston + Emulation Station |
|
||||
| Hardkernel | [Odroid Go Advance](http://jelos.org/devices/hardkernel/odroid-go-advance) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station |
|
||||
| Hardkernel | [Odroid Go Super](http://jelos.org/devices/hardkernel/odroid-go-super) | Rockchip RK3326 (ARM) | Mainline Linux | Panfrost | Weston + Emulation Station |
|
||||
| Hardkernel | [Odroid Go Ultra](http://jelos.org/devices/hardkernel/odroid-go-ultra) | Amlogic S922X / Mali G52 M6 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station |
|
||||
| Indiedroid | [Nova](http://jelos.org/devices/indiedroid/nova) | Rockchip RK3588S / Mali G610 (ARMv8-A) | Rockchip 5.10 BSP Linux | Panfrost | Weston + Emulation Station |
|
||||
| Orange Pi | [Orange Pi 5](http://jelos.org/devices/orange-pi/orange-pi-5) | Rockchip RK3588S / Mali G610 (ARMv8-A) | Rockchip 5.10 BSP Linux | Panfrost | Weston + Emulation Station |
|
||||
| Powkiddy | [RGB10 Max 3 Pro](http://jelos.org/devices/powkiddy/rgb10-max-3-pro) | Amlogic A311D / Mali G52 M4 (ARMv8-A) | Mainline Linux | Mali | Weston + Emulation Station |
|
||||
| Powkiddy | [RGB30](http://jelos.org/devices/powkiddy/rgb30) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station |
|
||||
| Powkiddy | [RK2023](http://jelos.org/devices/powkiddy/rk2023) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station |
|
||||
| Powkiddy | [x55](http://jelos.org/devices/powkiddy/x55) | Rockchip RK3566 (ARM) | Rockchip BSP 4.19 | Mali | KMS/DRM + Emulation Station |
|
||||
|
||||
> <sup>1</sup> While not technically supported, JELOS is known to work well on a variety of generic x86_64 devices including gaming PCs, mini PCs, and laptop computers.
|
||||
|
||||
> <sup>2</sup> Anbernic RG353P/M/V/VS devices with both v1 and v2 displays are supported. RG353PS will not be supported.
|
||||
|
||||
> <sup>3</sup> To boot JELOS on Ayaneo devices, hold LC and volume up and press the power button, continue holding "LC" and volume up until the Ayaneo logo appears. Select the storage device with JELOS from the boot menu using the Ayaneo button, and then press volume up to boot the distribution.
|
||||
|
||||
## Installation
|
||||
* JELOS is installed by restoring an image file and [Flashing](https://github.com/JustEnoughLinuxOS/distribution/tree/main#flashing) to a device's internal storage or an external sd card.
|
||||
* On x86 devices JELOS includes an installation tool. The installation tool can be found in the tools menu, which is one of the systems listed within ES.
|
||||
* JELOS operating system is stored on an Ext4 partition that can be read by LINUX but is not natively readable on Windows. Currently it is not possible to access the primary JELOS Ext4 partition on Windows to transfer roms.
|
||||
* On devices that support a second sd card, the sd card can be formatted as Ext4, FAT32, or exFAT. JELOS will automatically detect the second SD card on boot and configure the relevant folders for storing roms.
|
||||
* External services are disabled by default in release builds. When enabled, the username for ssh and samba access is "root". The root password is generated during every boot, it can be found in the System Settings menu.
|
||||
|
||||
### Flashing
|
||||
* Download the latest [version of JELOS](https://github.com/JustEnoughLinuxOS/distribution/releases) (.img.gz) for your device.
|
||||
* Decompress the image.
|
||||
* Write the image to an SDCARD using an imaging tool. Common imaging tools include [Balena Etcher](https://www.balena.io/etcher/), [Raspberry Pi Imager](https://www.raspberrypi.com/software/), and [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/). If you're skilled with the command line, dd works fine too.
|
||||
|
||||
### Upgrading
|
||||
* Download and install the update online via the System Settings menu.
|
||||
* Download the latest [version of JELOS](https://github.com/JustEnoughLinuxOS/distribution/releases) (.tar) for your device.
|
||||
* Copy the update to your device over the network to your device's update share.
|
||||
* Reboot the device, and the update will begin automatically.
|
||||
> [!NOTE]
|
||||
> While not technically supported, JELOS is also known to work well on a variety of generic x86_64 devices including gaming PCs, mini PCs, and laptop computers.
|
||||
|
||||
## Credits
|
||||
Like any Linux distribution, this project is not the work of one person. It is the work of many persons all over the world who have developed the open source bits without which this project could not exist. Special thanks to CoreELEC, LibreELEC, and to developers and contributors across the open source community.
|
||||
|
||||
Like any Linux distribution, this project is not the work of one person. It is the work of many persons all over the world who have developed the open source bits without which this project could not exist. Special thanks to CoreELEC, LibreELEC, and to developers and contributors across the open source community.
|
|
@ -40,6 +40,7 @@ get_graphicdrivers() {
|
|||
if listcontains "${GRAPHIC_DRIVERS}" "crocus"; then
|
||||
GALLIUM_DRIVERS+=" crocus"
|
||||
XORG_DRIVERS+=" intel"
|
||||
VULKAN_DRIVERS_MESA+=" intel_hasvk"
|
||||
COMPOSITE_SUPPORT="yes"
|
||||
VAAPI_SUPPORT="yes"
|
||||
fi
|
||||
|
|
|
@ -1,70 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
## Panel Rotation
|
||||
If you have a new device that supports Mainline Linux, adding and submitting a rotation patch is very simple. Adding a rotation patch to the kernel will provide the hints needed for Wayland/Weston to also correctly rotate the panel.
|
||||
|
||||
To begin, download the kernel sources. Extract the kernel and rename it to linux-{version}.orig, and then copy that folder to linux-{version} or extract it again so there are two copies. This will be necessary to create the [patch](https://github.com/JustEnoughLinuxOS/distribution/blob/main/BUILDING.md#creating-a-patch-for-a-package).
|
||||
|
||||
### Panel Definition and Default Orientation
|
||||
Next, edit `linux-{version}/./drivers/gpu/drm/drm_panel_orientation_quirks.c` and add a struct describing your panel and its orientation if one does not already exist. For example:
|
||||
|
||||
```
|
||||
static const struct drm_dmi_panel_orientation_data lcd1080x1920_leftside_up = {
|
||||
.width = 1080,
|
||||
.height = 1920,
|
||||
.orientation = DRM_MODE_PANEL_ORIENTATION_LEFT_UP,
|
||||
};
|
||||
```
|
||||
|
||||
In the example above, the panel is 1080p, and rotated to the left in order to be corrected.
|
||||
|
||||
### DMI Matching
|
||||
Now that the rotation correction has been defined, the kernel needs a method to match and apply it. For this we use DMI data. You can retrieve the DMI data by using `cat`, or `dmidecode`. For our example, we'll use `cat`.
|
||||
|
||||
```
|
||||
airplus:~ # cat /sys/class/dmi/id/sys_vendor
|
||||
AYANEO
|
||||
airplus:~ # cat /sys/class/dmi/id/product_name
|
||||
AIR Plus
|
||||
```
|
||||
|
||||
Using this data, we will create a match rule to match our panel struct in drm_panel_orientation_quirks.c.
|
||||
|
||||
```
|
||||
{
|
||||
.matches = {
|
||||
DMI_EXACT_MATCH(DMI_SYS_VENDOR, "AYANEO"),
|
||||
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "AIR Plus"),
|
||||
},
|
||||
.driver_data = (void *)&lcd1080x1920_leftside_up,
|
||||
}
|
||||
```
|
||||
|
||||
Save, and build your patch following the instructions in BUILDING.md. Place your patch in `packages/kernel/linux/patches/AMD64` or the appropriate device directory, and run a test build.
|
||||
|
||||
> Note: DMI_EXACT_MATCH or DMI_MATCH can be used. DMI_EXACT_MATCH is as implied, an exact match. DMI_MATCH will match that any device where its DMI data includes "AIR Plus"
|
||||
|
||||
## Hardware
|
||||
Adding hardware quirks are simple, and many examples can be found in `packages/hardware/quirks/devices`. To begin, review an existing quirk to familiarize yourself with the pattern.
|
||||
|
||||
### Creating a Quirk
|
||||
The simplest way to create a quirk for your device is to copy an existing quirk and modify it. To copy it, simply copy the whole folder to the name of your device using the same DMI pattern as above. If you are working on an AYANEO Air Plus, the folder name would be "AYANEO Air Plus" based on the DMI data in our example.
|
||||
|
||||
Next, edit each file to contain the data appropriate for your device. To collect the data that you need, use the following tools:
|
||||
|
||||
#### 001-deviceconfig
|
||||
This configuration file contains basic information for JELOS that cannot currently be determined automatically. A configuration is provided with the distribution if there is no quirk found, however it can be customized to suit. The following tools can be used to identify the correct data for your device.
|
||||
* KEYA/B_MODIFIER - `evtest`.
|
||||
* PATH_SPK/HP - `amixer`.
|
||||
|
||||
#### 002-fancontrol
|
||||
Not all devices have methods available to control the fan. The following can help determine if yours can be controlled.
|
||||
* `find /sys/devices -name pwm*` and evaluate if fan control is available.
|
||||
* DEVICE_HAS_FAN="false" if manual control cannot be enabled.
|
||||
|
||||
#### Additional Quirks
|
||||
Your device may need additional quirks to function correctly or for optimization. Ask in the JELOS discord if you need additional guidance.
|
||||
|
||||
## Submitting Quirks
|
||||
Please follow BUILDING.md and CONTRIBUTING.md to submit your quirks to the distribution for inclusion. Please do not change major functionality of the distribution or break our hotkey standards, submissions that do not follow our standards will need to be revised.
|
||||
Moved to [https://jelos.org/contribute/quirks/](https://jelos.org/contribute/quirks/)
|
|
@ -1,315 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Developing and Building JELOS
|
||||
|
||||
JELOS is a fairly unique distribution as it is *built to order* and only enough of the operating system and applications are built for the purpose of booting and executing emulators and ports. Developers and others who would like to contribute to our project should read and agree to the [Contributor Covenant Code of Conduct](https://github.com/JustEnoughLinuxOS/distribution/blob/main/CODE_OF_CONDUCT.md) and [Contributing to JELOS](https://github.com/JustEnoughLinuxOS/distribution/blob/main/CONTRIBUTING.md) guides before submitting your first contribution.
|
||||
|
||||
## Preparing the Build Machine
|
||||
Building JELOS requires a host with 200GB of free space for a single device, or 1TB of free space for a full world build.
|
||||
|
||||
**Expect your first build to take on the order of ten hours. You will need a stable internet connection, since hundreds of packages will be downloaded from their source.** Download errors often produce build failures with misleading error messages. If this happens to you, see the Troubleshooting section below.
|
||||
|
||||
After a clean build, all subsequent builds will go much faster (minutes) since 99% of the build work is cached.
|
||||
|
||||
### Docker Builds
|
||||
**Docker is the easiest and most reliable way to build JELOS.** You need no previous experience with Docker; you merely need to install it on your build machine. Newcomers to the project are strongly recommended to use this approach.
|
||||
|
||||
We recommend using Ubuntu 22.04 for the host machine, as this is well-tested and known to work. Other distributions and operating systems might also work for Docker builds, but are untested and unsupported.
|
||||
|
||||
Install Docker using the following commands:
|
||||
```
|
||||
sudo apt update
|
||||
sudo apt install ca-certificates curl gnupg
|
||||
|
||||
sudo install -m 0755 -d /etc/apt/keyrings
|
||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
|
||||
sudo chmod a+r /etc/apt/keyrings/docker.gpg
|
||||
|
||||
echo \
|
||||
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
|
||||
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
|
||||
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||||
|
||||
sudo apt update
|
||||
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
sudo groupadd docker
|
||||
sudo usermod -aG docker $USER
|
||||
newgrp docker
|
||||
|
||||
docker run hello-world
|
||||
```
|
||||
> Docker installation reference (source): [Install using the apt repository](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository) and [Linux post-installation steps](https://docs.docker.com/engine/install/linux-postinstall/).
|
||||
|
||||
The final command should produce a message indicating that Docker is properly installed. If you encounter any errors, see the reference links above.
|
||||
|
||||
### Manual Builds
|
||||
Manual builds (outside of Docker) are only recommended for developers with specific needs that cannot be met by the Docker approach. The host configuration should match the Docker container as closely as possible, running Ubuntu 22.04 with all packages listed in the [Dockerfile](../Dockerfile).
|
||||
|
||||
### Virtual Machines
|
||||
If you must use a virtual machine for your build platform, keep in mind that results vary. There have been some anecdotes of success with VMware Workstation (Player and Pro) and failure with VirtualBox and WSL. These reports are not definitive, but something to keep in mind if you must use a VM.
|
||||
|
||||
## JELOS Source Files
|
||||
After preparing the build machine, clone the project git repository onto it.
|
||||
|
||||
```
|
||||
cd ~
|
||||
git clone https://github.com/JustEnoughLinuxOS/distribution.git
|
||||
```
|
||||
|
||||
### Selecting the Desired Branch
|
||||
Once you have cloned the repo, decide whether you want to build the main branch which is more stable, or the development branch which is unstable but hosts our newest features.
|
||||
|
||||
|Branch|Purpose|
|
||||
|----|----|
|
||||
|main|Stable JELOS sources|
|
||||
|dev|Unstable JELOS sources|
|
||||
|
||||
To check out our development branch, cd into the project directory and checkout `dev`.
|
||||
|
||||
```
|
||||
cd distribution
|
||||
git checkout dev
|
||||
```
|
||||
|
||||
### Filesystem Structure
|
||||
We have a simple filesystem structure adopted from parent distributions CoreELEC, LibreELEC, etc.
|
||||
|
||||
```
|
||||
.
|
||||
├── build.JELOS-DEVICE.ARCHITECTURE
|
||||
├── config
|
||||
├── distributions
|
||||
├── Dockerfile
|
||||
├── licenses
|
||||
├── Makefile
|
||||
├── packages
|
||||
├── post-update
|
||||
├── projects
|
||||
├── release
|
||||
├── scripts
|
||||
├── sources
|
||||
└── tools
|
||||
```
|
||||
|
||||
**build.JELOS-DEVICE.ARCHITECTURE**
|
||||
|
||||
Build roots for each device and that device's architecture(s). For ARM devices JELOS builds and uses a 32bit root for several of the cores used in the 64bit distribution.
|
||||
|
||||
**config**
|
||||
|
||||
Contains functions utilized during the build process including architecture specific build flags, optimizations, and functions used throughout the build workflow.
|
||||
|
||||
**distributions**
|
||||
|
||||
Distributions contains distribution-specific build flags and parameters and splash screens.
|
||||
|
||||
**Dockerfile**
|
||||
|
||||
Used to build the Ubuntu container used to build JELOS. The container is hosted at [https://hub.docker.com/u/justenoughlinuxos](https://hub.docker.com/u/justenoughlinuxos).
|
||||
|
||||
**licenses**
|
||||
|
||||
All of the licenses used throughout the distribution packages are hosted here. If you're adding a package that contains a license, make sure it is available in this directory before submitting the PR.
|
||||
|
||||
**Makefile**
|
||||
|
||||
Used to build one or more JELOS images, or to build and deploy the Ubuntu container.
|
||||
|
||||
**packages**
|
||||
|
||||
All of the packages used to develop and build JELOS are hosted within the packages directory. The package structure documentation is available in [DEVEL_CREATING_PACKAGES.md](DEVEL_CREATING_PACKAGES.md).
|
||||
|
||||
**post-update**
|
||||
|
||||
Anything that is necessary to be run on a device after an upgrade should be added here. Be sure to apply a guard to test that the change needs to be executed before execution.
|
||||
|
||||
**projects**
|
||||
|
||||
Hardware-specific parameters are stored in the projects folder. Anything that should not be included on every device during a world build should be isolated to the specific project or device here.
|
||||
|
||||
**release**
|
||||
|
||||
The output directory for all of the build images.
|
||||
|
||||
**scripts**
|
||||
|
||||
This directory contains all of the scripts used to fetch, extract, build, and release the distribution. Review Makefile for more details.
|
||||
|
||||
**sources**
|
||||
|
||||
As the distribution is being built, package source files are fetched and hosted in this directory. They will persist after a `make clean`.
|
||||
|
||||
**tools**
|
||||
|
||||
The tools directory contains utility scripts that can be used during the development process, including a simple tool to burn an image to a usb drive or sdcard.
|
||||
|
||||
## Building JELOS
|
||||
|
||||
### Building Device Images
|
||||
Building JELOS is easy. From the root of your local repository, issue one of the `make` commands listed below, depending on the desired device and whether you are using Docker.
|
||||
|
||||
| Devices | Dependency | Docker Command | Manual Command |
|
||||
| ---- | ---- | ---- | ---- |
|
||||
|AMD64||```make docker-AMD64```|```make AMD64```|
|
||||
|RK3588||```make docker-RK3588```|```make RK3588```|
|
||||
|RK3326||```make docker-RK3326```|```make RK3326```|
|
||||
|RK3566||```make docker-RK3566```|```make RK3566```|
|
||||
|RK3566-X55|RK3566|```make docker-RK3566-X55```|```make RK3566-X55```|
|
||||
|S922X||```make docker-S922X```|```make S922X```|
|
||||
|ALL DEVICES||```make docker-world```|```make world```|
|
||||
|
||||
> Devices that list a dependency require you to build the dependency first, since that build will be used as the root of the device you are building.
|
||||
|
||||
For example, the following command uses Docker to build the AMD64 image.
|
||||
|
||||
```
|
||||
make docker-AMD64
|
||||
```
|
||||
|
||||
### Rightsized Builds
|
||||
JELOS supports various build variables which alter the behavior of the distribution for specific purposes including debugging, or hosting containers. The options are defined below and are passed on the make command line. Ex. `BASE_ONLY=true make docker-RK3566`.
|
||||
|
||||
|Build Option|Default|Function|
|
||||
|----|----|----|
|
||||
|EMULATION_DEVICE|yes|Builds EmulationStation and all emulators if `yes`. Builds EmulationStation and NO emulators if `no`.|
|
||||
|ENABLE_32BIT|yes|Builds a 32bit root and includes it in the image. Needed for 32bit cores and applications.|
|
||||
|BASE_ONLY|false<sup>1</sup>|Builds only the bare minimum packages. Includes Weston on supported devices. Does not build EmulationStation.|
|
||||
|CONTAINER_SUPPORT|no|Builds support for running containers on JELOS.|
|
||||
|
||||
> Note: <sup>1</sup> this property will change to yes/no for consistency in a future release.
|
||||
|
||||
### Special env Variables
|
||||
For development builds, you can use the following env variables to customize the image or change build time functionality. To make them globally available to the builds, add them to ${HOME}/.JELOS/options.
|
||||
|
||||
|Variable|Function|
|
||||
|----|----|
|
||||
|LOCAL_SSH_KEYS_FILE|Enables using ssh public keys for access without the root password.|
|
||||
|LOCAL_WIFI_SSID|The SSID of the network the device should connect to automatically.|
|
||||
|LOCAL_WIFI_KEY|The WIFI authentication key for the connection."|
|
||||
|SCREENSCRAPER_DEV_LOGIN|Login information for screenscraper.fr.|
|
||||
|GAMESDB_APIKEY|Login information for thegamesdb.net.|
|
||||
|CHEEVOS_DEV_LOGIN|Login information for retroachievements.org.|
|
||||
|CLEAN_PACKAGES|Allows specifying packages to clean during a build.|
|
||||
|
||||
#### SSH Keys
|
||||
```
|
||||
export LOCAL_SSH_KEYS_FILE=~/.ssh/jelos/authorized_keys
|
||||
```
|
||||
#### WiFi SSID and password
|
||||
```
|
||||
export LOCAL_WIFI_SSID=MYWIFI
|
||||
export LOCAL_WIFI_KEY=secret
|
||||
```
|
||||
|
||||
#### Screenscraper, GamesDB, and RetroAchievements
|
||||
|
||||
To enable Screenscraper, GamesDB, and RetroAchievements, register at each site and apply the api keys in ${HOME}/.JELOS/options. Unsetting one of the variables will disable it in EmulationStation. This configuration is picked up by EmulationStation during the build.
|
||||
|
||||
```
|
||||
# Apply for a Screenscraper API Key here: https://www.screenscraper.fr/forumsujets.php?frub=12&numpage=0
|
||||
export SCREENSCRAPER_DEV_LOGIN="devid=DEVID&devpassword=DEVPASSWORD"
|
||||
# Apply for a GamesDB API Key here: https://forums.thegamesdb.net/viewforum.php?f=10
|
||||
export GAMESDB_APIKEY="APIKEY"
|
||||
# Find your Cheevos Web API key here: https://retroachievements.org/controlpanel.php
|
||||
export CHEEVOS_DEV_LOGIN="z=RETROACHIEVEMENTSUSERNAME&y=APIKEYID"
|
||||
```
|
||||
|
||||
#### Cleaning Additional Packages
|
||||
```
|
||||
make docker-shell
|
||||
CLEAN_PACKAGES="linux ppsspp-sa" make AMD64
|
||||
exit
|
||||
```
|
||||
The first and last lines should be omitted if building outside of Docker.
|
||||
|
||||
## Troubleshooting
|
||||
The very first build after a fresh checkout is the hardest. Give yourself sufficient time to generate the first build and work through any failures before attempting to modify JELOS.
|
||||
- Download errors produce misleading failure messages. Beware of chasing red herrings. A network failure is much more likely than a bug in the makefile, given how frequently it is tested by the CI system and other devs.
|
||||
- Try cleaning the failed package (see above) and building again.
|
||||
- If you suspect a download failure, manually delete the relevant package(s) from the `sources` and `build.JELOS-...` directories, to force a full package re-download and re-build.
|
||||
- Exhaust all options before using `make clean` since this deletes the build cache and takes hours to regenerate.
|
||||
- As a very last resort, delete the entire local repository and start over.
|
||||
|
||||
## Modifying JELOS
|
||||
Before modifying JELOS, be sure you can successfully build the unmodified `main` or `dev` branch (see above). Establish a baseline of success before introducing changes to the JELOS source.
|
||||
|
||||
### Building a Single Package
|
||||
When modifying individual packages, it's useful to regularly verify the build-ability of your changes. Rather than rebuild an entire device image, it is much faster to simply rebuild a single package using the following commands:
|
||||
```
|
||||
make docker-shell
|
||||
export PROJECT=PC DEVICE=AMD64 ARCH=x86_64
|
||||
./scripts/clean busybox
|
||||
./scripts/build busybox
|
||||
exit
|
||||
```
|
||||
The first and last lines should be omitted if building outside of Docker. PROJECT is one of `Amlogic`, `PC`, or `Rockchip` (i.e. the subdirectories of the project directory).
|
||||
|
||||
> Note: An EmulationStation package standalone build requires additional steps because its source code is located in a separate repository. See instructions [here](https://github.com/JustEnoughLinuxOS/distribution/blob/main/packages/ui/emulationstation/package.mk).
|
||||
|
||||
### Creating a Patch for a Package
|
||||
It is common to have imported package source code modifed to fit the use case. It's recommended to use a special shell script to build it in case you need to iterate over it. See below.
|
||||
|
||||
```
|
||||
cd sources/wireguard-linux-compat
|
||||
tar -xvJf wireguard-linux-compat-v1.0.20211208.tar.xz
|
||||
mv wireguard-linux-compat-v1.0.20211208 wireguard-linux-compat
|
||||
cp -rf wireguard-linux-compat wireguard-linux-compat.orig
|
||||
|
||||
# Make your changes to wireguard-linux-compat
|
||||
mkdir -p ../../packages/network/wireguard-linux-compat/patches/AMD64
|
||||
# run from the sources dir
|
||||
diff -rupN wireguard-linux-compat wireguard-linux-compat.orig >../../packages/network/wireguard-linux-compat/patches/AMD64/mychanges.patch
|
||||
```
|
||||
|
||||
### Creating a Patch for a Package Using git
|
||||
If you are working with a git repository, building a patch for the distribution is simple. Rather than using `diff`, use `git diff`.
|
||||
```
|
||||
cd sources/emulationstation/emulationstation-098226b/
|
||||
# Make your changes to EmulationStation
|
||||
vim/emacs/vscode/notepad.exe
|
||||
# Make the patch directory
|
||||
mkdir -p ../../packages/ui/emulationstation/patches
|
||||
# Run from the sources dir
|
||||
git diff >../../packages/ui/emulationstation/patches/005-mypatch.patch
|
||||
```
|
||||
|
||||
After the patch is generated, rebuild an individual package by following the section above. The build system will automatically pick up patch files from the `patches` directory. For testing, one can either copy the built binary to the console or burn the whole image on SD card.
|
||||
|
||||
### Building a Modified Image
|
||||
If you already have a build for your device made using the above process, it's simple to shortcut the build process and create an image to test your changes quickly using the process below.
|
||||
```
|
||||
make docker-shell
|
||||
|
||||
# Update the package version for a new package, or apply your patch as above.
|
||||
vim/emacs/vscode/notepad.exe
|
||||
|
||||
export OS_VERSION=$(date +%Y%m%d) BUILD_DATE=$(date)
|
||||
export PROJECT=PC DEVICE=AMD64 ARCH=x86_64
|
||||
./scripts/clean emulationstation
|
||||
./scripts/build emulationstation
|
||||
./scripts/install emulationstation
|
||||
./scripts/image mkimage
|
||||
|
||||
exit
|
||||
```
|
||||
The first and last lines should be omitted if building outside of Docker.
|
||||
|
||||
### Pushing Modified Images to a Device
|
||||
You can of course reflash the SD card with the modified image.
|
||||
|
||||
Alternatively, you may install the image through the JELOS update mechanism, which retains your ES and emulator settings. If the device is networked and reachable from the build machine, this can be done as follows.
|
||||
```
|
||||
# Replace with your device values
|
||||
HOST=192.168.0.123
|
||||
DEVICE=RK3566
|
||||
ARCH=aarch64
|
||||
|
||||
# Assume today is the same UTC day that the image was built
|
||||
TIMESTAMP=$(date -u +%Y%m%d)
|
||||
|
||||
SSH_OPTS="-o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null"
|
||||
scp ${SSH_OPTS} ~/distribution/release/JELOS-${DEVICE}.${ARCH}-${TIMESTAMP}.tar root@${HOST}:~/.update && \
|
||||
ssh ${SSH_OPTS} root@{HOST} reboot
|
||||
```
|
||||
Moved to [https://jelos.org/contribute/build/](https://jelos.org/contribute/build/)
|
|
@ -1,272 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Structure of package.mk files
|
||||
|
||||
## Introduction
|
||||
|
||||
The package.mk file defines variables and functions to build a package.
|
||||
|
||||
## Variables
|
||||
To control the build behaviour of your package, use variables in the top-down order listed here.
|
||||
|
||||
#### Base
|
||||
|
||||
| Variable | Default | Required |Description |
|
||||
|-------------|---------|----------|------------|
|
||||
| PKG_NAME | - | yes | Name of the packaged software application. Should be lowercase |
|
||||
| PKG_VERSION | - | yes | Version of the packaged software application. If the version is a githash, please use the full githash, not the abbreviated form. |
|
||||
| PKG_SHA256 | - | yes | SHA256 hashsum of the application download file |
|
||||
| PKG_ARCH | any | no | Architectures for which the package builds. `any` or a space separated list of `aarch64`, `arm` or `x86_64` |
|
||||
| PKG_LICENSE | - | yes | License of the software application. [Reference](https://github.com/JustEnoughLinuxOS/distribution/tree/main/licenses) |
|
||||
| PKG_SITE | - | yes | Site of the software application |
|
||||
| PKG_URL | - | yes | Address at which the source of the software application can be retrieved |
|
||||
| PKG_MAINTAINER | - | no | Your name |
|
||||
| PKG_DEPENDS_BOOTSTRAP<br>PKG_DEPENDS_HOST PKG_DEPENDS_INIT PKG_DEPENDS_TARGET | - | no | A space separated list of name of packages required to build the software application |
|
||||
| PKG_SECTION | - | no | virtual if the package only defines dependencies |
|
||||
| PKG_SHORTDESC | - | no<br>yes for addons | Short description of the software package |
|
||||
| PKG_LONGDESC | - | yes | Long description of the package including purpose or function within JELOS or Kodi |
|
||||
|
||||
#### Universal Build Option
|
||||
| Variable | Default | Required |Description |
|
||||
|-------------|---------|----------|------------|
|
||||
| PKG_SOURCE_DIR | - | no | Force the folder name that application sources are unpacked to. Used when sources do not automatically unpack to a folder with the `PKG_NAME-PKG_VERSION` naming convention. |
|
||||
| PKG_SOURCE_NAME | - | no | Force the filename of the application sources. Used when the filename is not the basename of `PKG_URL` |
|
||||
| PKG_PATCH_DIRS | - | no | Patches in `./patches` are automatically applied after package unpack. Use this option to include patches from an additional folder, e.g. `./patches/$PKG_PATCH_DIRS` |
|
||||
| PKG_NEED_UNPACK | - | no | Space separated list of files or folders to include in package stamp calculation. If the stamp is invalidated through changes to package files or dependent files/folders the package is cleaned and rebuilt. e.g. `PKG_NEED_UNPACK="$(get_pkg_directory linux)"` will trigger clean/rebuild of a Linux kernel driver package when a change to the `linux` kernel package is detected. |
|
||||
| PKG_TOOLCHAIN | auto | no | Control which build toolchain is used. For detailed information, see [reference](#toolchain-options). |
|
||||
| PKG_BUILD_FLAGS | - | no | A space separated list of flags with which to fine-tune the build process. Flags can be enabled or disabled with a `+` or `-` prefix. For detailed information, see the [Reference](#build_flags-options). |
|
||||
| PKG_PYTHON_VERSION | python2.7 | no | Define the Python version to be used. |
|
||||
| PKG_IS_KERNEL_PKG | - | no | Set to `yes` for packages that include Linux kernel modules |
|
||||
|
||||
#### Meson Options
|
||||
| Variable | Default | Required |Description |
|
||||
|-------------|---------|----------|------------|
|
||||
| PKG_MESON_SCRIPT | ${PKG_BUILD}/meson.build | no | Meson build file to use |
|
||||
| PKG_MESON_OPTS_TARGET | - | no | Options directly passed to meson |
|
||||
|
||||
#### CMAKE Options
|
||||
| Variable | Default | Required |Description |
|
||||
|-------------|---------|----------|------------|
|
||||
| PKG_CMAKE_SCRIPT | ${PKG_BUILD}/CMakeLists.txt | no | CMake build file to use |
|
||||
| PKG_CMAKE_OPTS_HOST<br>PKG_CMAKE_OPTS_TARGET | - | no | Options directly passed to cmake |
|
||||
|
||||
#### Configure Options
|
||||
| Variable | Default | Required |Description |
|
||||
|-------------|---------|----------|------------|
|
||||
| PKG_CONFIGURE_SCRIPT | ${PKG_BUILD}/configure | no | configure script to use |
|
||||
| PKG_CONFIGURE_OPTS<br>PKG_CONFIGURE_OPTS_BOOTSTRAP<br>PKG_CONFIGURE_OPTS_HOST<br>PKG_CONFIGURE_OPTS_INIT<br>PKG_CONFIGURE_OPTS_TARGET | - | no | Options directly passed to configure |
|
||||
|
||||
#### Make Options
|
||||
| Variable | Default | Required |Description |
|
||||
|-------------|---------|----------|------------|
|
||||
| PKG_MAKE_OPTS<br>PKG_MAKE_OPTS_BOOTSTRP<br>PKG_MAKE_OPTS_HOST<br>PKG_MAKE_OPTS_INIT<br> PKG_MAKE_OPTS_TARGET | - | no | Options directly passed to make in the build step
|
||||
| PKG_MAKEINSTALL_OPTS_HOST<br>PKG_MAKEINSTALL_OPTS_TARGET | - | no | Options directly passed to make in the install step
|
||||
|
||||
#### Addons
|
||||
Additional options used when the package builds an addon.
|
||||
|
||||
| Variable | Default | Required |Description |
|
||||
|-------------|---------|----------|------------|
|
||||
| PKG_REV | - | yes | The revision number of the addon (starts at 100). Must be placed after `PKG_VERSION`. Must be incremented for each new version else Kodi clients will not detect version change and download the updated addon. |
|
||||
| PKG_IS_ADDON | no | yes | Must be set to `yes` <br>or to `embedded` when this addon is part of the image |
|
||||
| PKG_ADDON_NAME | - | yes | Proper name of the addon that is shown at the repo |
|
||||
| PKG_ADDON_TYPE | - | yes | See LE/config/addon/ for other possibilities |
|
||||
| PKG_ADDON_VERSION | - | no | The version of the addon, used in addon.xml |
|
||||
| PKG_ADDON_PROVIDES | - | no | [Provides](http://kodi.wiki/view/addon.xml#.3Cprovides.3E_element) in addon-xml |
|
||||
| PKG_ADDON_REQUIRES | - | no | [Requires](http://kodi.wiki/view/addon.xml#.3Crequires.3E) used in addon.xml |
|
||||
| PKG_ADDON_PROJECTS | @PROJECTS@ | no | for available projects or devices, see projects subdirectory (note: Use RPi for RPi project, and RPi1 for RPi device) |
|
||||
| PKG_DISCLAIMER | - | no | [Disclaimer](https://kodi.wiki/view/Addon.xml#.3Cdisclaimer.3E) in addon-xml |
|
||||
| PKG_ADDON_IS_STANDALONE | - | no | Defines if an addon depends on Kodi (on) or is standalone (yes) |
|
||||
| PKG_ADDON_BROKEN | - | no | Marks an addon as broken for the user |
|
||||
|
||||
#### Detailed Information for Options
|
||||
|
||||
##### TOOLCHAIN options
|
||||
|
||||
Application/packages needs different toolchains for build.
|
||||
For instance `cmake` or the classic `./configure` or same very different.
|
||||
|
||||
For the most application/packages, the auto-detection of the toolchain works proper.
|
||||
But not always. To select a specific toolchain, you only need to set the `PKG_TOOLCHAIN` variable.
|
||||
|
||||
| Toolchain | Description (if needed) |
|
||||
|----------- |-------------------------|
|
||||
| meson | [Meson Build System](http://mesonbuild.com/) |
|
||||
| cmake | [CMake](https://cmake.org/) with Ninja |
|
||||
| cmake-make | [CMake](https://cmake.org/) with Make |
|
||||
| autotools | [GNU Build System](https://en.wikipedia.org/wiki/GNU_Build_System)
|
||||
| configure | preconfigured [GNU Build System](https://en.wikipedia.org/wiki/GNU_Build_System) |
|
||||
| ninja | [Ninja Build](https://ninja-build.org/) |
|
||||
| make | [Makefile Based](https://www.gnu.org/software/make/) |
|
||||
| manual | only runs self writen build steps, see [Functions](#functions) |
|
||||
|
||||
###### Auto-Detection
|
||||
The auto-detections looks for specific files in the source path.
|
||||
|
||||
1. `meson.build` (PKG_MESON_SCRIPT) => meson toolchain
|
||||
2. `CMakeLists.txt` (PKG_CMAKE_SCRIPT) => cmake toolchain
|
||||
3. `configure` (PKG_CONFIGURE_SCRIPT) => configure toolchain
|
||||
4. `Makefile` => make toolchain
|
||||
|
||||
When none of these was found, the build abort and you have to set the toolchain via `PKG_TOOLCHAIN`
|
||||
|
||||
##### BUILD_FLAGS options
|
||||
|
||||
Build flags implement often used build options. Normally these are activated be default, but single applications/packages has problems to compile/run with these.
|
||||
|
||||
Set the variable `PKG_BUILD_FLAGS` in the `package.mk` to enable/disable the single flags. It is a space separated list. The flags can enabled with a `+` prefix, and disabled with a `-`.
|
||||
|
||||
| flag | default | affected stage | description |
|
||||
|----------|----------|----------------|-------------|
|
||||
| pic | disabled | target/init | [Position Independent Code](https://en.wikipedia.org/wiki/Position-independent_code) |
|
||||
| pic:host | disabled | host/bootstrap | see above |
|
||||
| lto | disabled | target/init | enable LTO (Link Time optimization) in the compiler and linker unless disabled via `LTO_SUPPORT`. Compiles non-fat LTO objects (only bytecode) and performs single-threaded optimization at link stage |
|
||||
| lto-parallel | disabled | target/init | same as `lto` but enable parallel optimization at link stage. Only enable this if the package build doesn't run multiple linkers in parallel otherwise this can result in lots of parallel processes! |
|
||||
| lto-fat | disabled | target/init | same as `lto` but compile fat LTO objects (bytecode plus optimized assembly). This increases compile time but can be useful to create static libraries suitable both for LTO and non-LTO linking |
|
||||
| lto-off | disabled | target/init | explicitly disable LTO in the compiler and linker |
|
||||
| gold | depend on `GOLD_SUPPORT` | target/init | can only disabled, use of the GOLD-Linker |
|
||||
| parallel | enabled | all | `make` or `ninja` builds with multiple threads/processes (or not) |
|
||||
| strip | enabled | target | strips executables (or not) |
|
||||
|
||||
###### Example
|
||||
```
|
||||
PKG_BUILD_FLAGS="+pic -gold"
|
||||
PKG_BUILD_FLAGS="-parallel"
|
||||
```
|
||||
|
||||
## Functions
|
||||
All build steps in the JELOS build system are done by shell function.
|
||||
These functions can overwritten in the `package.mk`. But this raises problems, when the build system is updated. To reduce the problem, most function was extended by `pre_` and `post_` scripts, to use instead.
|
||||
|
||||
When it is nesseary to replace configure, make and makeinstall, please use `PKG_TOOLCHAIN="manual"`.
|
||||
|
||||
Some of the build steps needs to be run once, like `unpack`. Other steps needs to be run multiple times, to create the toolchain (stage bootstrap & host) or to create the LE image (stage init & target). These stage specific functions have the stage as suffix, like `make_target`.
|
||||
|
||||
Full list of overwrittable functions.
|
||||
|
||||
| function | stages specific | description |
|
||||
|-------------------------|--------|-------------|
|
||||
| configure_package | - | Optional function to implement late binding variable assignment (see below) |
|
||||
| unpack<br>pre_unpack<br>post_unpack | - | Extract the source from the downloaded file |
|
||||
| pre_patch<br>post_patch | - | Apply the patches to the source, after extraction. The patch function it self is not allowed to overwritten |
|
||||
| pre_build_\[stage] | yes | Runs before of the start of the build |
|
||||
| pre_configure<br>pre_configure_\[stage]<br>configure_\[stage]<br>post_configure_\[stage] | yes | Configure the package for the compile. This is only relevant for toolchain, that supports it (e.g. meson, cmake, configure, manual) |
|
||||
| make_\[stage]<br>pre_make_\[stage]<br>post_make_\[stage] | yes | Build of the package |
|
||||
| makeinstall_\[stage]<br>pre_makeinstall_\[stage]<br>post_makeinstall_\[stage] | yes | Installation of the files in the correct pathes<br>host: TOOLCHAIN<br>target: SYSROOT and IMAGE<br>bootstrap and init: temporary destination
|
||||
| addon | - | Copy all files together for addon creation. This is requiered for addons |
|
||||
|
||||
## Late Binding variable assignment
|
||||
|
||||
A package will be loaded only once, by the call to `config/options`. During this process, additional package specific variables will be initialised, such as:
|
||||
|
||||
* `PKG_BUILD` - path to the build folder
|
||||
* `PKG_SOURCE_NAME` - if not already specified, generated from `PKG_URL`, `PKG_NAME` and` PKG_VERSION`
|
||||
|
||||
Since these variables will not exist at the time the package is loaded, they can only be referenced **after** package has loaded. This can be accomplished by referencing these variables in the `configure_package()` function which is executed once the additional variables have been assigned.
|
||||
|
||||
If necessary, the following variables would be configured in `configure_package()` as they are normally relative to `${PKG_BUILD}`:
|
||||
```
|
||||
PKG_CONFIGURE_SCRIPT
|
||||
PKG_CMAKE_SCRIPT
|
||||
PKG_MESON_SCRIPT
|
||||
```
|
||||
|
||||
Further to this, toolchain variables that are defined in `setup_toolchain()` must not be referenced "globally" in the package as they will only be configured reliably after `setup_toolchain()` has been called during `scripts/build`. Any variable in the following list must instead be referenced in a package function such as `pre_build_*`, `pre_configure_*`, `pre_make_*` etc.:
|
||||
```
|
||||
TARGET_CFLAGS TARGET_CXXFLAGS TARGET_LDFLAGS
|
||||
NINJA_OPTS MAKEFLAGS
|
||||
DESTIMAGE
|
||||
CC CXX CPP LD
|
||||
AS AR NM RANLIB
|
||||
OBJCOPY OBJDUMP
|
||||
STRIP
|
||||
CPPFLAGS CFLAGS CXXFLAGS LDFLAGS
|
||||
PKG_CONFIG
|
||||
PKG_CONFIG_PATH
|
||||
PKG_CONFIG_LIBDIR
|
||||
PKG_CONFIG_SYSROOT_DIR
|
||||
PKG_CONFIG_ALLOW_SYSTEM_CFLAGS
|
||||
PKG_CONFIG_ALLOW_SYSTEM_LIBS
|
||||
CMAKE_CONF CMAKE
|
||||
HOST_CC HOST_CXX HOSTCC HOSTCXX
|
||||
CC_FOR_BUILD CXX_FOR_BUILD BUILD_CC BUILD_CXX
|
||||
_python_sysroot _python_prefix _python_exec_prefix
|
||||
```
|
||||
|
||||
Lastly, the following variables are assigned during `scripts/build` but some packages may need to use alternative values for these variables. To do so, the package must assign alternative values in `pre_build_*`/`pre_configure_*`/`pre_make_*` etc. functions as these functions will be called after the variables are initialised with default values in `scripts/build` but before they are used by `scripts/build`.
|
||||
```
|
||||
CMAKE_GENERATOR_NINJA
|
||||
|
||||
TARGET_CONFIGURE_OPTS
|
||||
TARGET_CMAKE_OPTS
|
||||
TARGET_MESON_OPTS
|
||||
|
||||
HOST_CONFIGURE_OPTS
|
||||
HOST_CMAKE_OPTS
|
||||
HOST_MESON_OPTS
|
||||
|
||||
INIT_CONFIGURE_OPTS
|
||||
INIT_CMAKE_OPTS
|
||||
INIT_MESON_OPTS
|
||||
|
||||
BOOTSTRAP_CONFIGURE_OPTS
|
||||
BOOTSTRAP_CMAKE_OPTS
|
||||
BOOTSTRAP_MESON_OPTS
|
||||
```
|
||||
|
||||
#### Example
|
||||
```
|
||||
configure_package() {
|
||||
# now we know where we're building, assign a value
|
||||
PKG_CONFIGURE_SCRIPT="${PKG_BUILD}/gettext-tools/configure"
|
||||
}
|
||||
|
||||
post_patch() {
|
||||
# replace hardcoded stuff
|
||||
sed -i ${PKG_CONFIGURE_SCRIPT} 's|hardcoded stuff|variable stuff|'
|
||||
}
|
||||
|
||||
pre_configure_target() {
|
||||
# add extra flag to toolchain default
|
||||
CFLAGS="${CFLAGS} -DEXTRA_FLAG=yeah"
|
||||
}
|
||||
|
||||
post_makeinstall_target() {
|
||||
# remove unused executable, install what remains
|
||||
rm ${INSTALL}/usr/bin/bigexecutable
|
||||
}
|
||||
```
|
||||
|
||||
#### tools/pkgcheck
|
||||
|
||||
Use `tools/pkgcheck` to verify packages. It detects the following issues:
|
||||
|
||||
Issue | Level | Meaning |
|
||||
| :--- | :----: | ---- |
|
||||
| late binding violation | FAIL | Late binding variables referenced outside of a function - see [late binding](https://github.com/JELOS/JELOS.tv/blob/master/packages/readme.md#late-binding-variable-assignment) |
|
||||
| duplicate function def | FAIL | Function defined multiple times, only last definition will be used |
|
||||
| bad func - missing brace | FAIL | Opening brace (`{`) for function definition should be on same line as the function def, ie. `pre_configure_target() {` |
|
||||
| intertwined vars & funcs | WARN | Variable assignments and logic is intertwined with functions - this is cosmetic, but variables and logic should be specified before all functions |
|
||||
| unknown function | WARN | Could be a misspelled function, ie. `per_configure_target() {` which might fail silently.|
|
||||
| ignored depends assign | WARN | Values assigned to `PKG_DEPENDS_*` outside of the global section or `configure_package()` will be ignored. |
|
||||
|
||||
|
||||
## Add a new package to the Image
|
||||
1. Think about, why you need it in the image.
|
||||
* new multimedia tool
|
||||
* add a new network tool
|
||||
* new kernel driver
|
||||
* ...
|
||||
2. Find a place in the packages tree
|
||||
* look into the package tree structure, which is generally self explaind.
|
||||
* do not place it in an existing package (directory that includes a `package.mk`)
|
||||
* when you found a place, create a directory with the name of your package (use same value for `PKG_NAME`!!)
|
||||
3. Create an initial `package.mk`
|
||||
* you can find a template under `packages/package.mk.template`. Copy the template into the new directory and call it `package.mk`
|
||||
* apply any required changes to your new `package.mk`
|
||||
4. Find a place in the dependency tree
|
||||
* when it extend an existing package, add it there to the `PKG_DEPENDS_TARGET`/`PKG_DEPENDS_HOST` etc.
|
||||
* take a look into the path `packages/virtual`, there you should find a virtual packages, that match your new package (misc-packages should be the last option)
|
||||
5. Now you can build your image
|
||||
* after the build, inside the `build-*` folder you should find a directory with your package name and -version, eg. `widget-1.2.3`.
|
||||
Moved to [https://jelos.org/contribute/packages/](https://jelos.org/contribute/packages/)
|
|
@ -1,50 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Creating custom shader preset for use with JELOS game and per-system selection
|
||||
JELOS supports adding custom shaders in addition to the built-in shaders available in the "Advanced Game Options" and "Game Settings / Per System Advanced Configuration" settings "shader set" selection.
|
||||
|
||||
## Step 1: Launch a game and access the shaders menu in quick settings
|
||||
If Shaders are set to "off," change to "on"
|
||||
|
||||
## Step 2: Configure Shader settings to preference by modifying existing shaders
|
||||
Specific parameters will vary on a per-shader basis so it's recommended you test with the individual shaders first by loading the built-ins and modifying their parameters to your preference.
|
||||
When you know how you'd lke to configure everything, you'll select your parameters and passes. To start, you'll select the number of shader passes, the filtering (linear, nearests, or default), and the number of passes for each individual shader listed (generally leave this item at default). Then select "apply changes," set parameters, and save the shader.
|
||||
|
||||
----
|
||||
|
||||
### Example
|
||||
The below example shader configuration is based on a custom shader with two passes for GBA to enable vba-color for original colors (ala real hardware) and LCD grid:
|
||||
|
||||
In shaders, choose "load" and then load "vba-color" (either from the main list, or if on android/PC, it'll be in the "handhelds" folder.
|
||||
|
||||
Once loaded, go down to "shader passes" and change it from 1 to 2.
|
||||
|
||||
For the second pass where it says "N/A" select it, go into the "handhelds" folder and choose LCD1x.
|
||||
|
||||
Then press "Apply changes" to set it. From there go into "shader parameters" and you'll see the darkening, brighten scanlines, and brighten LCD options. Configure parameters as preferred. For this example, set:
|
||||
|
||||
* Darken: 0.25
|
||||
* Brighten Scanlines: 28.00
|
||||
* Brighten LCD: 6.00
|
||||
|
||||
Once it's configured to your liking, back out of the parameters menu and in the shaders menu press "save" in the menu list. In the save menu set "Simple Presets" to "off" and then "save shader preset as" and name the custom shader. It will now be selectable as a default like any of the other preconfigured shaders.
|
||||
|
||||
-----------
|
||||
|
||||
You can add additional passes following the steps above (increase passes to 3 and follow the same steps), but keep in mind performance will be dependent on your device, and not all shaders will work at full speed with multiple passes.
|
||||
|
||||
|
||||
## Step 3: Save your new shader preset
|
||||
Select "Save" in the shaders menu.
|
||||
|
||||
At the top of the list, set "Simple Presets" to off. Then choose "Save Shader Preset As" and name the shader. Press the enter key on the on-screen keyboard to save the preset. Exit Retroarch normally via the hotkey preset, or by backing out to the main menu and choosing "Quit Retroarch"
|
||||
|
||||
## Step 4: Load your shader preset from JELOS menu
|
||||
|
||||
Browse into either "advanced game options" within game selection, or Main Menu -> Game Settings -> Per System Advanced Configuration.
|
||||
|
||||
Select shader set, then browse through with the d-pad, joystick, or L/R buttons to page. Your custom shader will now be available to select in the list.
|
||||
It may not be specifically where you'd expect. The shader list is alphabetical, but custom shaders are placed at the end of the folder list for shaders, but before the Borders folder path at the end, so you will likely find your custom shader a few pages up from the bottom of the list.
|
||||
|
||||
|
||||
Moved to [https://jelos.org/configure/shaders/](https://jelos.org/configure/shaders/)
|
|
@ -1,25 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
## Donations and Funding
|
||||
Thank you for your interest in donating to JELOS! At this time we are not accepting financial contributions. If you would like to volunteer or contribute in some way to our project, please read our [Code of Conduct](https://github.com/JustEnoughLinuxOS/distribution/blob/main/CODE_OF_CONDUCT.md#contributor-covenant-code-of-conduct) and [Contributing to JELOS](https://github.com/JustEnoughLinuxOS/distribution/blob/main/CONTRIBUTING.md#contributing-to-jelos) guides. You are also encouraged to join us on Discord. Our Discord invitation can be found at the top of the page.
|
||||
|
||||
## Why Don't You Accept Donations?
|
||||
* As an Open Source project our operational expenses are fairly low, so to us a donation of your time is much more valuable.
|
||||
* Open Source development is not considered charitable activity in some parts of the world, including the United States. Accepting donations can create unnecessary complexity for the project, and for the person donating.
|
||||
|
||||
## Build Infrastructure
|
||||
Our GitHub runners are the nodes we use to build and push releases to GitHub. Trillian is our primary development host, Deepthought is our primary release builder. Node specs can be found in the table below:
|
||||
|
||||
| Name | CPU | Cores/Threads | RAM | Disk | Usage |
|
||||
|----|----|----|----|----|----|
|
||||
| deepthought | Ryzen 7 5800H | 8c/16t | 32GB | 2TB NVMe SSD | GitHub Runner |
|
||||
| trillian | Ryzen 7 5800H | 8c/16t | 32GB | 2TB NVMe SSD | Local Development |
|
||||
|
||||
## Project and Web Hosting
|
||||
GitHub serves our release packages, as well as our WIKI. Our domain, https://www.jelos.org is hosted with GitHub pages and is a simple WIKI redirect. Currently, JELOS does not take advantage of functionality that requires a paid GitHub plan.
|
||||
|
||||
| Project | URL | Comment |
|
||||
|----|----|----|
|
||||
| JELOS | https://github.com/JustEnoughLinuxOS/distribution | Project site, Stable Release Repository. |
|
||||
| Documentation | https://github.com/JustEnoughLinuxOS/distribution/README.md | JELOS User Documentation |
|
||||
Moved to [https://jelos.org/donations/](https://jelos.org/donations/)
|
|
@ -1,98 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Frequently Asked Questions
|
||||
|
||||
## About the Distribution
|
||||
|
||||
### Does JELOS offer any formal support?
|
||||
* No. JELOS is something that we develop for fun, it is provided as-is. There are a variety of avenues to seek community help, but this is a tinkerer's distribution so you will need to get your hands dirty to solve your problems.
|
||||
|
||||
### Do you plan to add additional ports, software, or emulators?
|
||||
* We are a community developed distribution, and we believe that it is the responsibility of the person who wants a new feature to develop and contribute that feature. If you would like to add something to JELOS, pull requests are welcomed. Please review our [code of conduct](https://github.com/JustEnoughLinuxOS/distribution/blob/main/CODE_OF_CONDUCT.md), our [contributing guidelines](https://github.com/JustEnoughLinuxOS/distribution/blob/main/CONTRIBUTING.md), and our [build guide](https://github.com/JustEnoughLinuxOS/distribution/blob/main/BUILDING.md) before submitting your first pull request.
|
||||
|
||||
### Licensing JELOS for redistribution
|
||||
JELOS utilizes a non-commercial CC BY-NC-SA 4.0 copyleft license on our branding which is intended to prevent abuse of our software. Device Makers and others who would like to bundle on devices may not do so without our express permission.
|
||||
|
||||
#### Redistribution Authorization Requirements
|
||||
If you would like to receive permission from our project to redistribute JELOS, you must request permission in writing. We can be reached at contact@jelos.org.
|
||||
|
||||
##### Benefits
|
||||
Authorization to use our branding will allow you to distribute JELOS on your device without needing to maintain a fork of the project for your device. This would include access to our online update feature.
|
||||
|
||||
##### Minimum Requirements
|
||||
To receive permission to redistribute JELOS the following *minimum* criteria must be met. Please note, that taking these actions without formally receiving approval from our project does not grant you the authority to use our branding. You MUST receive approval from JELOS.
|
||||
|
||||
1. We receive sources for device(s) before they ship to consumers and we have irrevokable authority to publish at our leisure. We strongly prefer device makers contribute changes to support their device(s) directly to the distribution themselves.
|
||||
2. Provide, upon request, device samples for every JELOS team member (including core developers, moderation team, and outside contributors), as well as any community developer designated by JELOS, for all devices planned, supported by, or bundled with JELOS for as long as the device maker manufactures the device.
|
||||
3. It is up to the requestor to secure distribution rights for software included with JELOS that is not developed or owned by JELOS.
|
||||
4. A support representative must join and participate in our community to support their device(s).
|
||||
|
||||
##### Selling JELOS
|
||||
JELOS branding is licensed for non-commercial use only. Even if approved to be distributed on a device, it is not allowed to be sold or included as an up charge in any form what-so-ever. Period. This is not negotiable.
|
||||
|
||||
### What if you stop working on JELOS?
|
||||
* I don't expect that to happen, however JELOS is an Open Source project hosted here on GitHub which means the source code is readily available for anyone in the world to pick up and continue where we left off. Our [license model](https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)) allows for this to happen by providing and encouraging redistribution ([freedom 2](https://www.gnu.org/philosophy/free-sw.en.html#four-freedoms)) and the right to distribute a modified version ([freedom 3](https://www.gnu.org/philosophy/free-sw.en.html#four-freedoms)). JELOS only prohibits commercial use through our branding which is licensed by the [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License](https://tldrlegal.com/license/creative-commons-attribution-noncommercial-sharealike-4.0-international-(cc-by-nc-sa-4.0)).
|
||||
|
||||
## About Using JELOS
|
||||
|
||||
### Which emulators and game engines are supported by JELOS?
|
||||
* Emulators and game engines are configured on a per device basis and are automatically documented at build time. Documentation can be found at the following URL:
|
||||
* [Per Device Documentation](/documentation/PER_DEVICE_DOCUMENTATION)
|
||||
|
||||
### Sound suddenly stopped working on my device!
|
||||
* Log in over ssh, and run the following steps.
|
||||
```
|
||||
systemctl stop pipewire-pulse pipewire-pulse.socket pipewire pipewire.socket wireplumber
|
||||
rm -rf /storage/.local/state /storage/.config/pulse
|
||||
reboot
|
||||
```
|
||||
|
||||
### EmuStation displays duplicate game titles. How can I disable a file extension to remove the duplicates? (e.g. display only ```.cue``` and don't display ```.bin``` files for PlayStation)
|
||||
|
||||
* Within EmuStation, select the relevant game system (e.g. PlayStation)
|
||||
* Press ```Select``` to View Options
|
||||
* In View Options section, choose View Customisation
|
||||
* Under File Extensions, deselect any file extensions that are not required (e.g. deselect ```.bin``` for PlayStation when also using ```.cue``` files)
|
||||
|
||||
### How do I edit ```es_systems.cfg``` (for example, to modify the list of systems in EmuStation, add a custom core or script, or change the order that systems are displayed)?
|
||||
|
||||
* Delete the ~/.config/emulationstation/es_systems.cfg symlink.
|
||||
* Copy the custom version of ```es_systems.cfg``` to ```~/.config/emulationstation```.
|
||||
* Stop the UI service.
|
||||
|
||||
`systemctl stop ${UI_SERVICE}`
|
||||
* Restart the UI service to use the custom version
|
||||
|
||||
`systemctl start ${UI_SERVICE}`
|
||||
|
||||
> Note: System updates will overwrite it, custom settings will be preserved as last_es_systems.cfg.
|
||||
|
||||
### Where do I put bios files and files and Retroarch system files
|
||||
|
||||
* They go in ```/storage/roms/bios```
|
||||
* System bios checker in ```game settings, missing bios``` identities missing files per emulator and indicates their required location
|
||||
|
||||
### Where do I put music files to enable background music within emulationstation (while browsing my game library)?
|
||||
* Music files should be added to `/storage/roms/BGM`
|
||||
|
||||
### My game has slowdown and stuttering issues. What can I do to improve performance?
|
||||
First make sure you do not have a TDP configured that is too low for your emulator to function correctly. Next, try adjusting settings within the emulator, either retroarch core or standalone emulator configuration menu. First make sure that rewind is disabled. Search online to check for recommended settings that others may have determined.
|
||||
|
||||
### Where are log files stored?
|
||||
* Log files can be found in `/var/log/`
|
||||
|
||||
Various logs are generated, including
|
||||
* EmuStation logs `es_log.txt` (cumulative log of all ES activity), `es_launch_stdout.log` (last emulator launched from ES) and `es_launch_stderr.log` (blank if there wasn't an error for the last emulator launch)
|
||||
* Execution log `exec.log` (generic execution log that indicates what was last executed, including the command to launch the emulator) e.g. for gzdoom launch of heretic.doom `runemu.sh: Executing /usr/bin/bash start_gzdoom.sh /storage/roms/doom/heretic.doom`
|
||||
* Boot log `boot.log` (Output from autostart during system startup)
|
||||
* Emulator-specific log (for non-retroarch emulators) e.g. `gzdoom.log` is the log specific to gzdoom to indicate whether there is any issue within the emulator when launching heretic.doom, noted above
|
||||
* Retroarch logs are [turned off by default](https://github.com/JustEnoughLinuxOS/distribution/blob/main/packages/games/emulators/retroarch/sources/handheld/retroarch.cfg#L420), but can be enabled within Retroarch (`Tools > Retroarch`: `Settings > Logging > Log to a File`), are stored in `/var/log/retroarch` and are quite detailed, so should provide sufficient detail to identify missing roms within a game's romset, configuration issues and other errors that prevent games from working
|
||||
|
||||
> Note: Retroarch uses a shared config file, so logging can be enabled within 64bit or 32bit and it will be enabled for all Retroarch cores
|
||||
|
||||
### I have a device with a single microsd and I can't see the games partition in Windows or macOS.
|
||||
* JELOS does not create an ExFAT partition on the boot device, and expands the full partition using ext4. You can sync files to the device using SyncThing, copy files to the device using SAMBA, or by loading your files onto a EXT4, ExFAT, or FAT32 formatted usb stick and copy them with FileMan or over ssh.
|
||||
* Windows Users can connect to their device by unc path using the device name such as ```\\handheld``` or by IP ```\\device IP address``` into the address bar in Windows Explorer.
|
||||
* Mac users can connect by selecting "Go" from the Finder menu, followed by "Connect to Server", then enter ```smb://handheld``` or ```smb://device IP address```.
|
||||
* Log in as root. The root password is required for access which can be found in the system menu.
|
||||
Moved to [https://jelos.org/faqs/](https://jelos.org/faqs/)
|
|
@ -1,363 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Hotkey Auto-configuration
|
||||
By default JELOS will detect your controller and configure RetroArch hotkeys automatically. If this behavior is not desired it can be disabled in the System Settings menu by disabling the "AUTOCONFIGURE RETROARCH HOTKEYS" option.
|
||||
|
||||
# RetroArch Hotkeys
|
||||
* [Hotkey Enable](https://docs.libretro.com/guides/input-and-controls/#hotkey-controls): Select (Hold)
|
||||
* Exit: Start (Press Twice)
|
||||
* Menu: X
|
||||
* Favorite: Hold X
|
||||
* Show/Hide FPS: Y
|
||||
* Save State: R1
|
||||
* Load State: L1
|
||||
* Rewind: L2
|
||||
* Fast-Forward Toggle: R2
|
||||
> Note: X and Y are reversed on some devices, this is normal behavior.
|
||||
|
||||
# Global Hotkeys
|
||||
* Pause: Start
|
||||
* Quit: Start+Select
|
||||
* Force-Close: L1+Start+Select
|
||||
* Skip 5s: R1
|
||||
* Back 5s: L1
|
||||
* Skip 60s: R2
|
||||
* Back 60s: L2
|
||||
> Note: Force-Close is R1+Start+Select on some devices, this is normal behavior.
|
||||
|
||||
# Per Device Hotkeys
|
||||
|Device|Brightness Up|Brightness Down|Battery Status|WIFI Toggle|
|
||||
|----|----|----|----|----|
|
||||
|Anbernic RG351M|Select & Vol +|Select & Vol -|Start & Vol +|Start & Vol -|
|
||||
|Anbernic RG353M|Select & Vol +|Select & Vol -|Fn & Vol +|Fn & Vol -|
|
||||
|Anbernic RG353P|Select & Vol +|Select & Vol -|Fn & Vol +|Fn & Vol -|
|
||||
|Anbernic RG353V|Select & Vol +|Select & Vol -|Fn & Vol +|Fn & Vol -|
|
||||
|Anbernic RG503|Select & Vol +|Select & Vol -|Fn & Vol +|Fn & Vol -|
|
||||
|Anbernic RG552|Select & Vol +|Select & Vol -|Fn & Vol +|Fn & Vol -|
|
||||
|ATARI VCS 800 Onyx|NA|NA|NA|NA|
|
||||
|AYANEO AIR|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO AIR Plus|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO AIR Pro|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO AYANEO 2|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO AYA NEO 2021|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO AYANEO 2021|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO AYANEO 2021 Pro|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO AYANEO 2021 Pro Retro Power|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYA NEO AYA NEO Founder|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO AYANEO NEXT Pro|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO GEEK|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO NEXT|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO NEXT Advance|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|AYANEO NEXT Pro|Aya Button & Vol + | Aya Button & Vol - | = Button & Vol + | = Button & Vol -|
|
||||
|GPD G1619-04|TBD|TBD|TBD|TBD|
|
||||
|Hardkernel ODROID-GO-Ultra|F1 & Vol +|F1 & Vol -|F2 & Vol +|F2 & Vol -|
|
||||
|Indiedroid Nova|NA|NA|NA|NA|
|
||||
|LENOVO 81TC|NA|NA|NA|NA|
|
||||
|ODROID-GO Advance|Select & Vol +|Select & Vol -|Start & Vol +|Start & Vol -|
|
||||
|ODROID-GO Advance Black Edition|Select & Vol +|Select & Vol -|Start & Vol +|Start & Vol -|
|
||||
|ODROID-GO Super|Select & Vol +|Select & Vol -|Start & Vol +|Start & Vol -|
|
||||
|Orange Pi 5|NA|NA|NA|NA|
|
||||
|Powkiddy RGB10 MAX 3|F1 & Vol +|F1 & Vol -|F2 & Vol +|F2 & Vol -|
|
||||
|Powkiddy RK2023|Select & Vol +|Select & Vol -|Start & Vol +|Start & Vol -|
|
||||
|Powkiddy x55|Select & Vol +|Select & Vol -|Start & Vol +|Start & Vol -|
|
||||
|Valve Jupiter|Steam Button & Vol + | Steam Button & Vol - | ... Button & Vol + | ... Button & Vol -|
|
||||
|
||||
[Reference](https://github.com/JustEnoughLinuxOS/distribution/blob/main/packages/jelos/profile.d/98-jslisten)
|
||||
|
||||
# Emulator Hotkeys and Button Assignments
|
||||
<table>
|
||||
<tr style="vertical-align:top">
|
||||
<th align="left">Emulator</th><th align="left">Notes</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/midwan/amiberry/wiki">Amiberry</a></td><td><a href="https://github.com/midwan/amiberry/wiki/Kickstart-ROMs-(BIOS)">Standalone</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><a href="https://github.com/dolphin-emu/dolphin">Dolphin (dolphin-sa)</a></td><td><a href="https://dolphin-emu.org/">Standalone</a>
|
||||
|
||||
```
|
||||
HOTKEYS (BASED ON GAMECUBE CONTROLLER PROFILE)
|
||||
=======
|
||||
SELECT hotkey enable
|
||||
START exit to EmulationStation ("ES")
|
||||
R save state
|
||||
L load state
|
||||
A screenshot
|
||||
B internal resolution
|
||||
Z game speed (fast forward)
|
||||
X aspect ratio
|
||||
Y fps on / off
|
||||
DUP +1 save state slot
|
||||
DDOWN -1 save state slot
|
||||
```
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="http://maniacsvault.net/ecwolf/wiki/Main_Page">ecwolf</a></td><td><a href="http://maniacsvault.net/ecwolf/wiki/Game_data">Game Engine</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/coelckers/gzdoom">gzdoom</a></td><td><a href="https://zdoom.org/wiki/IWAD">Game Engine</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://git.tuxfamily.org/hatari/hatari.git">Hatari (Hatarisa)</a></td><td><a href="https://docs.libretro.com/library/hatari/#bios">Standalone</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><a href="https://github.com/DirtBagXon/hypseus-singe">Hypseus-singe</a></td><td><a href="https://www.daphne-emu.com:9443/mediawiki/index.php/Main_Page">Standalone</a>
|
||||
|
||||
```
|
||||
SELECT coin
|
||||
START start
|
||||
BUTTON 1 a
|
||||
BUTTON 2 b
|
||||
BUTTON 3 x
|
||||
MOVEMENT d-pad or left-analog
|
||||
QUIT select+start
|
||||
```
|
||||
to add functions, edit `/storage/.config/game/configs/hypseus/hypinput.ini` under `[KEYBOARD]` section by changing third number for a function from `0` (disabled) to the joystick button number
|
||||
|
||||
retrieve joystick button numbers with
|
||||
|
||||
```jstest /dev/input/js0```
|
||||
|
||||
the following assigns quit to ```L1``` and pause to ```R1```
|
||||
|
||||
```
|
||||
[KEYBOARD]
|
||||
KEY_QUIT = SDLK_ESCAPE 0 5
|
||||
KEY_PAUSE = SDLK_p 0 6
|
||||
|
||||
```
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/drfrag666/gzdoom">lzdoom</a></td><td><a href="https://zdoom.org/wiki/IWAD">Game Engine</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><a href="https://github.com/mupen64plus/mupen64plus-video-glide64mk2">mupen64plus (mupen64plussa)</a></td><td><a href="https://mupen64plus.org/docs">Standalone</a>
|
||||
|
||||
```
|
||||
SELECT hotkey enable
|
||||
START start
|
||||
B a
|
||||
Y b
|
||||
RIGHT ANALOG C-stick
|
||||
LEFT ANALOG analog
|
||||
L1 L
|
||||
L2 Z
|
||||
R1 R
|
||||
|
||||
HOTKEYS
|
||||
=======
|
||||
SELECT+START exit to EmulationStation ("ES")
|
||||
SELECT+R1 save state
|
||||
SELECT+L1 load state
|
||||
SELECT+Y screenshot
|
||||
SELECT+B reset current game
|
||||
```
|
||||
CONTROLLER PROFILES
|
||||
|
||||
Z and L button assignment can be changed in ES.
|
||||
|
||||
* Highlight the game and press X
|
||||
* Select ADVANCED GAME OPTIONS (A to confirm)
|
||||
* Set EMULATOR to either MUPEN64PLUSSA
|
||||
* Change INPUT CONFIGURATION
|
||||
* DEFAULT: L1 = L, L2 = Z
|
||||
* Z & L SWAP: L1 = Z, L2 = L
|
||||
* CUSTOM: Users can create their own controller layout in ```/storage/.configs/game/configs/mupen64plussa```
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><a href="https://github.com/DCurrent/openbor">Openbor</a></td><td><a href="https://www.chronocrash.com/forum/index.php?resources/">Standalone</a>
|
||||
|
||||
```
|
||||
START start, confirm
|
||||
A attack 1
|
||||
X attack 2
|
||||
L1 attack 3
|
||||
R1 attack 4
|
||||
B jump
|
||||
Y special
|
||||
D-PAD up/down/left/right
|
||||
SELECT cancel, screenshot
|
||||
```
|
||||
note: pressing A on title screen will exit
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><a href="https://github.com/hrydgard/ppsspp">PPSSPPSDL</a></td><td><a href="https://www.ppsspp.org/faq.html">Standalone</a>
|
||||
|
||||
```
|
||||
START start
|
||||
SELECT select
|
||||
B cross
|
||||
A circle
|
||||
X triangle
|
||||
Y square
|
||||
L1 L
|
||||
R1 R
|
||||
ANALOG LEFT analog
|
||||
ANALOG RIGHT cross(down) circle(right) triangle(up) square(left)
|
||||
D-PAD up/down/left/right
|
||||
L3 PPSSPPSDL menu
|
||||
```
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://zdoom.org/wiki/Raze">Raze</a></td><td><a href="https://zdoom.org/wiki/Raze#Supported_games">Game Engine</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://www.scummvm.org">Scummmvm (Scummvmsa)</a></td><td><a href="https://www.scummvm.org/compatibility/">Standalone</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><a href="https://vice-emu.sourceforge.io/vice_toc.html">vice (vicesa)</a></td><td><a href="https://vice-emu.sourceforge.io/vice_2.html#SEC5">Standalone</a>
|
||||
|
||||
```
|
||||
SELECT onscreen keyboard
|
||||
START show menu
|
||||
A back (in menus); show menu
|
||||
B fire (joystick port 1); confirm (in menus)
|
||||
L1 back (in menus); show menu
|
||||
L2 assign hotkey
|
||||
L3 fire (joystick port 2)
|
||||
R1 confirm (in menus)
|
||||
R2 swap joystick port (either [left analog + B=fire] or [right analog + L3=fire])
|
||||
```
|
||||
Notes:
|
||||
|
||||
Games will require keyboard key presses to progress through messages and to launch
|
||||
(e.g. SPACE, RSTR [run/start], F3, F7).
|
||||
|
||||
SELECT to show onscreen keyboard, left analog/d-pad to move cursor, B to confirm
|
||||
|
||||
C= on keyboard resets the machine
|
||||
|
||||
L2 to assign highlighted key or menu function to gamepad button (save config to retain)
|
||||
|
||||
To cancel onscreen keyboard, move cursor to blank area and A/L1 to close keyboard
|
||||
or click on X in top left corner of keyboard
|
||||
|
||||
Joystick can be assigned to port 1 or 2. R2 to switch ports.
|
||||
port 1: [left analog] + [B = fire]
|
||||
port 2: [right analog] + [L3 = fire].
|
||||
|
||||
To quit emulator, START, highlight Exit Emulator, B to confirm
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><a href="http://wiki.yabause.org/index.php5?title=Documentations">Yabasanshiro</a></td><td><a href="http://www.uoyabause.org">Standalone</a>
|
||||
|
||||
```
|
||||
SELECT menu
|
||||
START start
|
||||
D-PAD up/down/left/right
|
||||
Y a
|
||||
B b
|
||||
A c
|
||||
X x
|
||||
L1 (shoulder) y
|
||||
R1 (shoulder) z
|
||||
L2 (trigger) l
|
||||
R2 (trigger) r
|
||||
LEFT ANALOG analog stick
|
||||
START+SELECT+L1+R1 exit emulator
|
||||
```
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top"><a href="https://www.retroarch.com">Retroarch with Libretro Cores (<strong>RA:</strong>)</a></td><td>64-bit and 32-bit versions use shared config files
|
||||
|
||||
```
|
||||
SELECT+START: exit (press twice)
|
||||
SELECT+A: pause emulation
|
||||
SELECT+B: reset emulation
|
||||
SELECT+X: Retroarch menu
|
||||
SELECT+Y: toggle fps
|
||||
SELECT+L1: load state
|
||||
SELECT+R1: save state
|
||||
SELECT+L2: rewind toggle
|
||||
SELECT+R2: fast-forward toggle
|
||||
```
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a href="https://github.com/christianhaitian/PortMaster/blob/main/README.md">Port Master</a></td><td><a href="https://github.com/christianhaitian/PortMaster/wiki">Port Installer</a></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
# Button Codes
|
||||
From ssh terminal:
|
||||
```
|
||||
evtest
|
||||
```
|
||||
then select `retrogame_joypad` to see details for each button press, including button labels, codes and analog stick values in real-time
|
||||
|
||||
```
|
||||
jstest-sdl -t 0
|
||||
```
|
||||
to see interactive keymap
|
||||
|
||||
<table>
|
||||
<tr style="vertical-align:top">
|
||||
<th align="left">Joypad Button</th><th align="left" colspan=4>Button Codes</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<strong>DIGITAL</strong></td><td><strong><a href="https://github.com/JustEnoughLinuxOS/distribution/blob/5ae14a65cc446c1e6f7083ac47adeafc806134a6/packages/ui/emulationstation/config/es_input.cfg#L63">RG552/RG503/RG353P</a></strong></td><td><strong><a href="https://github.com/JustEnoughLinuxOS/distribution/blob/5ae14a65cc446c1e6f7083ac47adeafc806134a6/packages/ui/emulationstation/config/es_input.cfg#L33">RG351MP</a></strong></td><td><strong><a href="https://github.com/JustEnoughLinuxOS/distribution/blob/5ae14a65cc446c1e6f7083ac47adeafc806134a6/packages/ui/emulationstation/config/es_input.cfg#L6">RG351P/M</a></strong></td><td><strong><a href="https://github.com/JustEnoughLinuxOS/distribution/blob/5ae14a65cc446c1e6f7083ac47adeafc806134a6/packages/ui/emulationstation/config/es_input.cfg#L6">RG351V</a></strong></td></tr>
|
||||
<tr><td>
|
||||
A (EAST) </td><td><strong>1</strong> (305 BTN_EAST)</td><td><strong>1</strong> (305 BTN_EAST)</td><td><strong>0</strong> (305 BTN_EAST)</td><td><strong>0</strong> (305 BTN_EAST)</td></tr>
|
||||
<tr><td>
|
||||
B (SOUTH) </td><td><strong>0</strong> (304 BTN_SOUTH)</td><td><strong>0</strong> (304 BTN_SOUTH)</td><td><strong>1</strong> (304 BTN_SOUTH)</td><td><strong>1</strong> (304 BTN_SOUTH)</td></tr>
|
||||
<tr><td>
|
||||
X (NORTH) </td><td><strong>2</strong> (307 BTN_NORTH)</td><td><strong>2</strong> (307 BTN_NORTH)</td><td><strong>2</strong> (307 BTN_NORTH)</td><td><strong>2</strong> (307 BTN_NORTH)</td></tr>
|
||||
<tr><td>
|
||||
Y (WEST) </td><td><strong>3</strong> (308 BTN_WEST)</td><td><strong>3</strong> (308 BTN_WEST)</td><td><strong>3</strong> (306 BTN_C)</td><td><strong>3</strong> (306 BTN_C)</td></tr>
|
||||
<tr><td>
|
||||
L1 </td><td><strong>4</strong> (310 BTN_TL)</td><td><strong>4</strong> (310 BTN_TL)</td><td><strong>4</strong> (308 BTN_WEST)</td><td><strong>4</strong> (308 BTN_WEST)</td></tr>
|
||||
<tr><td>
|
||||
L2 </td><td><strong>6</strong> (312 BTN_TL2)</td><td><strong>6</strong> (312 BTN_TL2)</td><td><strong>10</strong> (314 BTN_SELECT)</td><td><strong>10</strong> (314 BTN_SELECT)</td></tr>
|
||||
<tr><td>
|
||||
L3 </td><td><strong>11</strong> (317 BTN_THUMBL)</td><td><strong>14</strong> (706 BTN_TRIGGER_HAPPY3)</td><td><strong>8</strong> (312 BTN_TL2)</td><td><strong>8</strong> (312 BTN_TL2)</td></tr>
|
||||
<tr><td>
|
||||
R1 </td><td><strong>5</strong> (311 BTN_TR)</td><td><strong>5</strong> (311 BTN_TR)</td><td><strong>5</strong> (309 BTN_Z)</td><td><strong>5</strong> (309 BTN_Z)</td></tr>
|
||||
<tr><td>
|
||||
R2 </td><td><strong>7</strong> (313 BTN_TR2)</td><td><strong>7</strong> (313 BTN_TR2)</td><td><strong>11</strong> (315 BTN_START)</td><td><strong>11</strong> (315 BTN_START)</td></tr>
|
||||
<tr><td>
|
||||
R3 </td><td><strong>12</strong> (318 BTN_THUMBR)</td><td><strong>15</strong> (707 BTN_TRIGGER_HAPPY4)</td><td><strong>9</strong> (313 BTN_TR2)</td><td><strong>9</strong> (313 BTN_TR2; F)</td></tr>
|
||||
<tr><td>
|
||||
SELECT </td><td><strong>8</strong> (314 BTN_SELECT)</td><td><strong>12</strong> (704 BTN_TRIGGER_HAPPY1)</td><td><strong>7</strong> (311 BTN_TR)</td><td><strong>7</strong> (311 BTN_TR)</td></tr>
|
||||
<tr><td>
|
||||
START </td><td><strong>9</strong> (315 BTN_START)</td><td><strong>13</strong> (705 BTN_TRIGGER_HAPPY2)</td><td><strong>6</strong> (310 BTN_TL)</td><td><strong>6</strong> (310 BTN_TL)</td></tr>
|
||||
<tr><td>
|
||||
HOTKEY ENABLE </td><td><strong>10</strong> (316) </td><td><strong>12</strong> (704 BTN_TRIGGER_HAPPY1) </td><td><strong>7</strong> (311 BTN_TR) </td><td><strong>7</strong> (311 BTN_TR) </td></tr>
|
||||
<tr><td>
|
||||
DPAD UP </td><td><strong>13</strong> (544 BTN_DPAD_UP) </td><td><strong>8</strong> (544 BTN_DPAD_UP) </td><td><strong>hat(1)</strong> (16 -ve ABS_HAT0Y -1)</td><td><strong>hat(1)</strong> (16 -ve ABS_HAT0Y -1)</td></tr>
|
||||
<tr><td>
|
||||
DPAD DOWN </td><td><strong>14</strong> (545 BTN_DPAD_DOWN) </td><td><strong>9</strong> (545 BTN_DPAD_DOWN) </td><td><strong>hat(4)</strong> (16 +ve ABS_HAT0Y 1)</td><td><strong>hat(4)</strong> (16 +ve ABS_HAT0Y 1)</td></tr>
|
||||
<tr><td>
|
||||
DPAD LEFT </td><td><strong>15</strong> (546 BTN_DPAD_LEFT) </td><td><strong>10</strong> (546 BTN_DPAD_LEFT) </td><td><strong>hat(8)</strong> (17 -ve ABS_HAT0X -1)</td><td><strong>hat(8)</strong> (17 -ve ABS_HAT0X -1)</td></tr>
|
||||
<tr><td>
|
||||
DPAD RIGHT </td><td><strong>16</strong> (547 BTN_DPAD_RIGHT) </td><td><strong>11</strong> (547 BTN_DPAD_RIGHT) </td><td><strong>hat(2)</strong> (17 +ve ABS_HAT0X 1)</td><td><strong>hat(2)</strong> (17 +ve ABS_HAT0X 1)</td></tr>
|
||||
<tr><td>
|
||||
<strong>ANALOG</strong></td><td><strong><a href="https://github.com/JustEnoughLinuxOS/distribution/blob/5ae14a65cc446c1e6f7083ac47adeafc806134a6/packages/ui/emulationstation/config/es_input.cfg#L63">RG552/RG503/RG353P</a></strong></td><td><strong><a href="https://github.com/JustEnoughLinuxOS/distribution/blob/5ae14a65cc446c1e6f7083ac47adeafc806134a6/packages/ui/emulationstation/config/es_input.cfg#L33">RG351MP</a></strong></td><td><strong><a href="https://github.com/JustEnoughLinuxOS/distribution/blob/5ae14a65cc446c1e6f7083ac47adeafc806134a6/packages/ui/emulationstation/config/es_input.cfg#L6">RG351P/M</a></strong></td><td><strong><a href="https://github.com/JustEnoughLinuxOS/distribution/blob/5ae14a65cc446c1e6f7083ac47adeafc806134a6/packages/ui/emulationstation/config/es_input.cfg#L6">RG351V</a></strong></td></tr>
|
||||
<tr><td>
|
||||
LEFTANALOGLEFT </td><td><strong>AXIS 0 -ve</strong> (ABS_X)</td><td><strong>AXIS 0 -ve</strong> (ABS_X)</td><td><strong>AXIS 2 +ve</strong> (ABS_Z 4095)</td><td><strong>AXIS 2 +ve</strong> (ABS_Z 4095)</td></tr>
|
||||
<tr><td>
|
||||
LEFTANALOGRIGHT </td><td><strong>AXIS 0 +ve</strong> (ABS_X)</td><td><strong>AXIS 0 +ve</strong> (ABS_X)</td><td><strong>AXIS 2 -ve (ABS_Z 0)</strong></td><td><strong>AXIS 2 -ve</strong> (ABS_Z 0)</td></tr>
|
||||
<tr><td>
|
||||
LEFTANALOGUP </td><td><strong>AXIS 1 -ve</strong> (ABS_Y)</td><td><strong>AXIS 1 -ve</strong> (ABS_Y)</td><td><strong>AXIS 3 +ve</strong> (ABS_RX 4040)</td><td><strong>AXIS 3 +ve</strong> (ABS_RX 4040)</td></tr>
|
||||
<tr><td>
|
||||
LEFTANALOGDOWN </td><td><strong>AXIS 1 +ve</strong> (ABS_Y)</td><td><strong>AXIS 1 +ve</strong> (ABS_Y)</td><td><strong>AXIS 3 -ve</strong> (ABS_RX 0)</td><td><strong>AXIS 3 -ve</strong> (ABS_RX 0)</td></tr>
|
||||
<tr><td>
|
||||
RIGHTANALOGLEFT </td><td><strong>AXIS 2 -ve</strong> (ABS_RX)</td><td><strong>AXIS 2 -ve</strong> (ABS_RX)</td><td><strong>AXIS 4 -ve</strong> (ABS_RY)</td><td></td></tr>
|
||||
<tr><td>
|
||||
RIGHTANALOGRIGHT </td><td><strong>AXIS 2 +ve</strong> (ABS_RX)</td><td><strong>AXIS 2 +ve</strong> (ABS_RX)</td><td><strong>AXIS 4 +ve</strong> (ABS_RY)</td><td></td></tr>
|
||||
<tr><td>
|
||||
RIGHTANALOGUP </td><td><strong>AXIS 3 -ve</strong> (ABS_RY)</td><td><strong>AXIS 3 -ve (ABS_RY)</strong></td><td><strong>AXIS 5 -ve</strong> (ABS_RZ)</td><td></td></tr>
|
||||
<tr><td>
|
||||
RIGHTANALOGDOWN </td><td><strong>AXIS 3 +ve</strong> (ABS_RY)</td><td><strong>AXIS 3 +ve (ABS_RY)</strong></td><td><strong>AXIS 5 +ve</strong> (ABS_RZ)</td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
Moved to [https://jelos.org/play/controls/](https://jelos.org/play/controls/)
|
|
@ -1,58 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
# Network Play
|
||||
|
||||
RetroArch network play for up to 4 players is available across all WIFI enabled devices supported by JELOS. Before continuing, please make sure that all devices are updated to the same version of the operating system.
|
||||
|
||||
## Enabling Network Play
|
||||
Before netplay is available, it must be enabled on each participating device.
|
||||
|
||||
* Select Games Settings -> Netplay Settings
|
||||
* NetPlay -> Enabled
|
||||
* Index Games
|
||||
|
||||
## LAN based Network Play
|
||||
Using this feature is simple. For LAN based play, connect your devices to your WIFI network. A minimum of one host and one client are required for play.
|
||||
|
||||
### Local LAN Play (HOST)
|
||||
* Select Network Settings.
|
||||
* Disable Local Play Mode.
|
||||
* Select 1 (Host).
|
||||
* Choose a game and press Y.
|
||||
* Select Netplay Options.
|
||||
* Select Host a Netplay Session.
|
||||
|
||||
### Local LAN Play (CLIENTS)
|
||||
* Select Network Settings.
|
||||
* Disable Local Play Mode.
|
||||
* Select 2-4 (Clients).
|
||||
* Choose a game and press Y.
|
||||
* Select Netplay Options.
|
||||
* Select Connect to a Netplay Session.
|
||||
|
||||
## Device to Device Network Play
|
||||
Device to device connections will automatically generate and connect to a local WIFI network. As with LAN based play, one host and one client are required for play. Using the same version of JELOS on each device is REQUIRED or devices will not connect. Device to device connections are intended for local play only, retroAchievements, scraping, and system updates will not be available in this mode.
|
||||
|
||||
### Device to Device Play (HOST)
|
||||
* Select Network Settings.
|
||||
* Enable Local Play Mode.
|
||||
* Select 1 (Host).
|
||||
* Choose a game and press Y.
|
||||
* Select Netplay Options.
|
||||
* Select Host a Netplay Session.
|
||||
|
||||
### Device to Device Play (CLIENTS)
|
||||
* Select Network Settings.
|
||||
* Enable Local Play Mode.
|
||||
* Select 2-4 (Clients).
|
||||
* Choose a game and press Y.
|
||||
* Select Netplay Options.
|
||||
* Select Connect to a Netplay Session.
|
||||
|
||||
## GameBoy GameLink
|
||||
JELOS supports GameLink play for GameBoy and GameBoy Color. To use, on each device select the appropriate core for the game being started in advanced settings for the game, or for the system.
|
||||
|
||||
|Core|Features|
|
||||
|----|----|
|
||||
|TGBDual * Recommended|Support for multiplayer GameLink play, including battle/trading.|
|
||||
|Gambatte|Support for multiplayer GameLink play.|
|
||||
Moved to [https://jelos.org/play/netplay/](https://jelos.org/play/netplay/)
|
|
@ -1,69 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
# Performance and Battery Life Optimizations
|
||||
JELOS provides a variety of knobs and switches that allow the user to optimize for battery life or performance globally, and on a per system and per game basis. For emulating 6th generation and later systems, we recommend installing JELOS on internal storage if available to reduce IO bottlenecks reading and writing shader cache.
|
||||
|
||||
## Optimizing Performance
|
||||
Optimizing for performance will have significant impact on battery life, however it will provide the best experience for more demanding emulators.
|
||||
|
||||
### Recommended Global Settings
|
||||
|
||||
#### AMD / Intel based devices
|
||||
|
||||
|Enabled CPU Threads|Cooling Profile|Max TDP|Scaling Governor|Enhanced Power Saving|WIFI Power Saving|
|
||||
|----|----|----|----|----|
|
||||
|All|Moderate|18w|Balanced|Off|Off|
|
||||
|
||||
#### ARM based devices
|
||||
|
||||
|Enabled CPU Threads|Cooling Profile|Scaling Governor|Enhanced Power Saving|WIFI Power Saving|
|
||||
|----|----|----|----|----|
|
||||
|All|Moderate<sup>1</sup>|Balanced|Off|Off|
|
||||
|
||||
> Note: It's recommended to reboot the device after disabling Enhanced Power Saving.
|
||||
|
||||
## Optimizing Battery Life
|
||||
JELOS includes an `Enhanced Power Saving` mode which is available in the `System Settings` menu. This option provides a variety of sub options that when enabled tune your device for optimal battery life without immediately sacrificing performance.
|
||||
|
||||
|Feature|Function|May Affect Stability|
|
||||
|----|----|----|
|
||||
|CPU Power Saving|Tunes the CPU/SoC to preference battery life over performance.|No|
|
||||
GPU Performance Profile<sup>1</sup>|User configurable to force the GPU into the preferred performance state|No|
|
||||
Audio Power Saving|Enables the audio device to operate in a low power mode.|No|
|
||||
PCIE Active State Power Management|Forces a low power state for PCI and PCIe connections.|Yes|
|
||||
Enable Wake Events|Enables PCI wakeup signalling to allow devices to enter low power states.|Yes|
|
||||
Runtime Power Management|Enables USB idle power management, and configures usb devices to autosuspend.|Yes|
|
||||
|
||||
### Recommended Settings For Optimal Battery Life
|
||||
Enable Enhanced Power Saving, and enable all options. If the device has undesired behavior, disable the options that may effect stability and reboot the device.
|
||||
|
||||
#### AMD / Intel based devices
|
||||
|Enabled CPU Threads|Cooling Profile|Max TDP|Scaling Governor|GPU Performance Profile|Enhanced Power Saving|WIFI Power Saving|
|
||||
|----|----|----|----|----|----|----|
|
||||
|4|Quiet<sup>1</sup>|4.5w|Powersave|Battery Focus|On|On|
|
||||
|
||||
#### ARM based devices
|
||||
|Enabled CPU Threads|Cooling Profile|CPU Governor|Enhanced Power Saving|WIFI Power Saving|
|
||||
|----|----|----|----|----|
|
||||
|4|Quiet<sup>1</sup>|Powersave|Battery Focus|On|On|
|
||||
|
||||
#### AMD / Intel Recommended Settings Per System
|
||||
|Manufacturer|System|Enabled CPU Threads|Cooling Profile|Max TDP|Scaling Governor|GPU Performance Profile<sup>1</sup>|Enhanced Power Saving|WIFI Power Saving|
|
||||
|----|----|----|----|----|----|----|----|----|
|
||||
|Microsoft|Xbox|6|Quiet|22w|Schedutil|Balanced|On|On|
|
||||
|Nintendo|GameCube, Wii|4|Quiet|15W|Schedutil|Balanced|On|On|
|
||||
|Nintendo|Wii U, Switch|6|Moderate|22w|Schedutil|Balanced|On|On|
|
||||
|Sony|PS2|4|Quiet|18w|Schedutil|Balanced|On|
|
||||
|Sony|PSP|2|Quiet|9w|Powersave|Battery Focus|On|On|
|
||||
|
||||
#### ARM Devices
|
||||
|Manufacturer|System|Enabled CPU Threads|Cooling Profile|Scaling Governor|Enhanced Power Saving|WIFI Power Saving|
|
||||
|----|----|----|----|----|----|----|
|
||||
|Nintendo|64|All|Moderate<sup>1</sup>|Performance|On|On|
|
||||
|Nintendo|GameCube, Wii|All|Moderate<sup>1</sup>|Performance|On|On|
|
||||
|Sega|Saturn, Dreamcast|All|Moderate<sup>1</sup>|Performance|On|On|
|
||||
|Sony|PSP|All|Moderate<sup>1</sup>|Performance|On|On|
|
||||
|
||||
Note: Emulating 6th generation and newer consoles will result in lower runtimes as they require significant power draw.
|
||||
|
||||
> <sup>1</sup> Only available when "Enhanced Power Saving" is enabled or if the feature is supported.
|
||||
Moved to [https://jelos.org/configure/optimizations/](https://jelos.org/configure/optimizations/)
|
|
@ -112,7 +112,7 @@ This document describes all available systems emulators and cores available for
|
|||
|SNK|Neo Geo Pocket (ngp)|1998|`ngp`|.ngc .ngp .zip .7z|**retroarch:** beetle_ngp (default)<br>**retroarch:** race<br>|
|
||||
|SNK|Neo Geo Pocket Color (ngpc)|1999|`ngpc`|.ngc .zip .7z|**retroarch:** beetle_ngp (default)<br>**retroarch:** race<br>|
|
||||
|Sony|PlayStation (psx)|1994|`psx`|.bin .cue .img .mdf .pbp .toc .cbn .m3u .ccd .chd .iso|**retroarch:** beetle_psx (default)<br>**Duckstation:** duckstation-sa<br>**retroarch:** duckstation<br>**retroarch:** swanstation<br>|
|
||||
|Sony|PlayStation 2 (ps2)|2000|`ps2`|.iso .mdf .nrg .bin .img .dump .gz .cso .chd|**retroarch:** pcsx2 (default)<br>**pcsx2:** pcsx2-sa<br>|
|
||||
|Sony|PlayStation 2 (ps2)|2000|`ps2`|.iso .mdf .nrg .bin .img .dump .gz .cso .chd|**pcsx2:** pcsx2-sa (default)<br>**retroarch:** pcsx2<br>|
|
||||
|Sony|PlayStation 3 (ps3)|2006|`ps3`|.ps3 .bin|**rpcs3:** rpcs3-sa (default)<br>|
|
||||
|Sony|PlayStation Portable (psp)|2004|`psp`|.iso .cso .pbp|**ppsspp:** ppsspp-sa (default)<br>**retroarch:** ppsspp<br>|
|
||||
|Sony|PlayStation Vita (psvita)|2011|`launcher`|.sh|**vita3k:** vita3k-sa (default)<br>|
|
||||
|
|
|
@ -70,6 +70,7 @@ This document describes all available systems emulators and cores available for
|
|||
|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)<br>**retroarch:** gbsp<br>**retroarch:** vbam<br>**retroarch:** vba_next<br>**retroarch:** beetle_gba<br>|
|
||||
|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>|
|
||||
|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>|
|
||||
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)<br>**retroarch:** dolphin<br>|
|
||||
|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** beetle_supafaust<br>|
|
||||
|Nintendo|N64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)<br>**retroarch:** mupen64plus<br>**retroarch:** parallel_n64<br>**mupen64plus:** mupen64plus-sa<br>|
|
||||
|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)<br>**retroarch:** fceumm<br>**retroarch:** quicknes<br>**retroarch:** mesen<br>|
|
||||
|
@ -80,6 +81,7 @@ This document describes all available systems emulators and cores available for
|
|||
|Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** snes9x2010<br>**retroarch:** snes9x2002<br>**retroarch:** snes9x2005_plus<br>**retroarch:** beetle_supafaust<br>**retroarch:** bsnes<br>**retroarch:** bsnes_mercury_performance<br>**retroarch:** bsnes_hd_beta<br>|
|
||||
|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** snes9x2010<br>**retroarch:** snes9x2002<br>**retroarch:** snes9x2005_plus<br>**retroarch:** beetle_supafaust<br>**retroarch:** bsnes<br>**retroarch:** bsnes_mercury_performance<br>**retroarch:** bsnes_hd_beta<br>|
|
||||
|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)<br>|
|
||||
|Nintendo|Wii (wii)|2006|`wii`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad|**dolphin:** dolphin-sa-wii (default)<br>**retroarch:** dolphin<br>|
|
||||
|Panasonic|3DO (3do)|1993|`3do`|.iso .bin .chd .cue|**retroarch:** opera (default)<br>|
|
||||
|Philips|VideoPac (videopac)|1978|`videopac`|.bin .zip .7z|**retroarch:** o2em (default)<br>|
|
||||
|Sammy|Atomiswave (atomiswave)|2003|`atomiswave`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021<br>**retroarch:** flycast32 (default)<br>**retroarch:** flycast<br>**flycast:** flycast-sa<br>|
|
||||
|
|
|
@ -60,7 +60,7 @@ This document describes all available systems emulators and cores available for
|
|||
|NEC|TurboGrafx-16 (tg16)|1989|`tg16`|.pce .bin .zip .7z|**retroarch:** beetle_pce_fast (default)<br>**retroarch:** beetle_pce<br>**retroarch:** beetle_supergrafx<br>|
|
||||
|NEC|TurboGrafx-CD (tg16cd)|1989|`tg16cd`|.cue .ccd .chd .toc .m3u|**retroarch:** beetle_pce_fast (default)<br>**retroarch:** beetle_pce<br>**retroarch:** beetle_supergrafx<br>|
|
||||
|Nesbox|TIC-80 (tic-80)|2017|`tic-80`|.tic|**retroarch:** tic80 (default)<br>|
|
||||
|Nintendo|DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa (default)<br>**retroarch:** melonds<br>**retroarch:** desmume<br>|
|
||||
|Nintendo|DS (nds)|2005|`nds`|.nds .zip .7z|**drastic:** drastic-sa<br>**retroarch:** melonds (default)<br>**melonds:** melonds-sa<br>**retroarch:** desmume<br>|
|
||||
|Nintendo|Famicom (famicom)|1983|`famicom`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)<br>**retroarch:** fceumm<br>**retroarch:** quicknes<br>**retroarch:** mesen<br>|
|
||||
|Nintendo|Famicom Disk System (fds)|1986|`fds`|.fds .zip .7z|**retroarch:** nestopia (default)<br>**retroarch:** fceumm<br>**retroarch:** quicknes<br>|
|
||||
|Nintendo|Game and Watch (gameandwatch)|1980|`gameandwatch`|.mgw .zip .7z|**retroarch:** gw<br>|
|
||||
|
@ -70,7 +70,7 @@ This document describes all available systems emulators and cores available for
|
|||
|Nintendo|Game Boy Advance (Hacks) (gbah)|2001|`gbah`|.gba .zip .7z|**retroarch:** mgba (default)<br>**retroarch:** gbsp<br>**retroarch:** vbam<br>**retroarch:** vba_next<br>**retroarch:** beetle_gba<br>|
|
||||
|Nintendo|Game Boy Color (gbc)|1998|`gbc`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>|
|
||||
|Nintendo|Game Boy Color (Hacks) (gbch)|1998|`gbch`|.gb .gbc .zip .7z|**retroarch:** gambatte (default)<br>**retroarch:** sameboy<br>**retroarch:** gearboy<br>**retroarch:** tgbdual<br>**retroarch:** mgba<br>**retroarch:** vbam<br>|
|
||||
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**retroarch:** dolphin (default)<br>|
|
||||
|Nintendo|GameCube (gamecube)|2001|`gamecube`|.gcm .iso .gcz .ciso .wbfs .rvz .dol|**dolphin:** dolphin-sa-gc (default)<br>**retroarch:** dolphin<br>|
|
||||
|Nintendo|MSU-1 (snesmsu1)|2012|`snesmsu1`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** beetle_supafaust<br>|
|
||||
|Nintendo|N64 (n64)|1996|`n64`|.z64 .n64 .v64 .zip .7z|**retroarch:** mupen64plus_next (default)<br>**retroarch:** mupen64plus<br>**retroarch:** parallel_n64<br>**mupen64plus:** mupen64plus-sa<br>|
|
||||
|Nintendo|NES (Hacks) (nesh)|1985|`nesh`|.nes .unif .unf .zip .7z|**retroarch:** nestopia (default)<br>**retroarch:** fceumm<br>**retroarch:** quicknes<br>**retroarch:** mesen<br>|
|
||||
|
@ -81,7 +81,7 @@ This document describes all available systems emulators and cores available for
|
|||
|Nintendo|Super Nintendo (Hacks) (snesh)|1991|`snesh`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** snes9x2010<br>**retroarch:** snes9x2002<br>**retroarch:** snes9x2005_plus<br>**retroarch:** beetle_supafaust<br>**retroarch:** bsnes<br>**retroarch:** bsnes_mercury_performance<br>**retroarch:** bsnes_hd_beta<br>|
|
||||
|Nintendo|Super Nintendo (snes)|1991|`snes`|.smc .fig .sfc .swc .zip .7z|**retroarch:** snes9x (default)<br>**retroarch:** snes9x2010<br>**retroarch:** snes9x2002<br>**retroarch:** snes9x2005_plus<br>**retroarch:** beetle_supafaust<br>**retroarch:** bsnes<br>**retroarch:** bsnes_mercury_performance<br>**retroarch:** bsnes_hd_beta<br>|
|
||||
|Nintendo|Virtual Boy (virtualboy)|1995|`virtualboy`|.vb .zip .7z|**retroarch:** beetle_vb (default)<br>|
|
||||
|Nintendo|Wii (wii)|2006|`wii`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad|**retroarch:** dolphin (default)<br>|
|
||||
|Nintendo|Wii (wii)|2006|`wii`|.gcm .iso .gcz .ciso .wbfs .rvz .dol .wad|**dolphin:** dolphin-sa-wii (default)<br>**retroarch:** dolphin<br>|
|
||||
|Panasonic|3DO (3do)|1993|`3do`|.iso .bin .chd .cue|**retroarch:** opera (default)<br>|
|
||||
|Philips|VideoPac (videopac)|1978|`videopac`|.bin .zip .7z|**retroarch:** o2em (default)<br>|
|
||||
|Sammy|Atomiswave (atomiswave)|2003|`atomiswave`|.lst .bin .dat .zip .7z|**retroarch:** flycast2021<br>**retroarch:** flycast32 (default)<br>**retroarch:** flycast<br>**flycast:** flycast-sa<br>|
|
||||
|
|
|
@ -1,180 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Configuring Rclone in JELOS
|
||||
JELOS now supports mounting cloud volumes, and backing up and restoring save games and save states to your cloud provider. Using Rclone is easy, however configuration must be performed manually before it will function correctly.
|
||||
|
||||
rclone.cfg is stored in `/storage/.config/rclone/rclone.conf` and can be copied from another device but only after the destination device has booted into Jelos (so copy to secondary sd, boot device, launch 351files, copy from there to proper path above)
|
||||
|
||||
## Setup Rclone
|
||||
### Credentialed Access
|
||||
To set up rclone, open an ssh connection to your handheld using PowerShell ssh, putty, or ssh on Linux and Mac.
|
||||
* Username: root (all lower case!)
|
||||
* Password: (To get the root password, press Start, then Select System Settings.)
|
||||
* Connection: (Your device, example RG552 or RG351MP.)
|
||||
|
||||
### Example using PowerShell ssh, Linux, or macOS:
|
||||
```ssh root@RG552```
|
||||
|
||||
### Setting up Rclone
|
||||
Now that you're connected you will need to configure Rclone. This process is menu driven, but also requires steps on your PC. To complete configuration of Rclone, run `rclone config` in your ssh session and then follow the provider documentation and headless configuration steps to configure it for your cloud provider of choice.
|
||||
|
||||
* [Rclone Provider Documentation](https://rclone.org/#providers)
|
||||
* [Rclone Headless Configuration](https://rclone.org/remote_setup/)
|
||||
|
||||
[See detailed setup example below](https://github.com/JustEnoughLinuxOS/distribution/documentation/SETUP_CLOUD_DRIVES.md#setting-up-rclone-detailed-example)
|
||||
|
||||
### Using Rclone
|
||||
In JELOS you are able to mount your cloud drive like any other storage device, as long as you are network connected. To mount your cloud drive, press Start, select Network Settings, and then select the Mount Cloud Drive option. This drive is available on /storage/cloud by default, and is accessible from ssh and from 351Files. To mount the cloud drive over ssh use ```rclonectl mount``` to mount the drive and ```rclonectl unmount``` to unmount it.
|
||||
|
||||
> Note: Mounting the cloud drive is not persistent, you will need to select it before use.
|
||||
|
||||
### Using Cloud Backup and Restore
|
||||
In the tools menu you will find two options, `Cloud Backup`, and `Cloud Restore`. These tools will back up or restore your save games and save states by connecting your cloud drive and copying them. These tools are configurable by editing /storage/.config/rsync.conf and /storage/.config/rsync-rules.conf.
|
||||
|
||||
> Note: The cloud backup and restore tools are destructive, but they do not delete data by default. Deletes are left to the user to manage.
|
||||
|
||||
#### rsync.conf
|
||||
The rsync.conf configuration file contains parameters used by the cloud tools that provide the path for your cloud drive to be mounted, the path to sync the data from, the destination for the sync and rsync options for cloud backup and restore. The configuration is user editable, and the defaults are as follows:
|
||||
```
|
||||
### This is the path where your cloud volume is mounted.
|
||||
MOUNTPATH="/storage/cloud"
|
||||
|
||||
### This is the path to your game folder on your cloud drive.
|
||||
SYNCPATH="GAMES"
|
||||
|
||||
### This is the path we are backup up from.
|
||||
BACKUPPATH="/storage/roms"
|
||||
|
||||
### This allows changes to the rsync options for cloud_backup (pending stable release)
|
||||
RSYNCOPTSBACKUP="-raiv --prune-empty-dirs"
|
||||
|
||||
### This allows changes to the rsync options for cloud_restore (pending stable release)
|
||||
RSYNCOPTSRESTORE="-raiv"
|
||||
```
|
||||
|
||||
#### rsync-rules.conf
|
||||
The rsync-rules.conf configuration file contains the pattern used by rsync to know which files to backup and restore. This file is user editable. The default settings are as follows:
|
||||
```
|
||||
# This is a required rule for subdirectory matching.
|
||||
+ */
|
||||
|
||||
### Do not include BIOS.
|
||||
- bios/**
|
||||
|
||||
### Retroarch saves
|
||||
+ *.sav
|
||||
+ *.srm
|
||||
+ *.auto
|
||||
+ *.state*
|
||||
|
||||
### This is a required rule to exclude all other file types.
|
||||
- *
|
||||
```
|
||||
|
||||
To create custom match rules, use - to exclude and + to include. Use caution as a mismatched rule can copy every single file from the source path or no files at all.
|
||||
|
||||
## Setting Up Rclone detailed example
|
||||
This example configures rclone to use Dropbox
|
||||
|
||||
Rclone provide detailed examples for connecting to all supported cloud servers, including [Rclone Dropbox example](https://rclone.org/dropbox/)
|
||||
|
||||
### Configure cloud backup connection on JELOS device using ssh
|
||||
From the terminal command line type
|
||||
```
|
||||
rclone version
|
||||
```
|
||||
|
||||
and press `enter`
|
||||
|
||||
Note the version number, which is required for a later step
|
||||
|
||||
![Rclone version installed in JELOS](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/ssh%20rclone%20version.png "Check version of rclone")
|
||||
|
||||
Now type
|
||||
```
|
||||
rclone config
|
||||
```
|
||||
|
||||
and press `enter`
|
||||
|
||||
type `n` to create a new remote site
|
||||
|
||||
type in a name for the site (use a name without spaces), then press `enter`
|
||||
|
||||
> rclone suggest using `remote`, but in this example the remote site is called `rg503`
|
||||
|
||||
> don’t include spaces in the site’s name. Rclone does allow names that include spaces, but rsync will fail if a site name with spaces is used in the cloud backup script.
|
||||
|
||||
![Type: rclone config](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/ssh%20rclone%20config.png "rclone config")
|
||||
|
||||
Choose from the list of cloud providers that is displayed. For Dropbox, type `12` and `enter` in this example
|
||||
|
||||
![Select cloud provider](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/ssh%20rclone%20config%20select%20dropbox.png "type 12 for Dropbox")
|
||||
|
||||
*The next options displayed are slightly different from the Dropbox example on rclone website*
|
||||
|
||||
For client_id and client_secret press `enter` and `enter` to skip, or read [Rclone Dropbox example](https://rclone.org/dropbox/) for details about setting up your own App ID (rclone App ID is shared with all rclone users by default)
|
||||
|
||||
Type `n` to skip editing the advanced config
|
||||
|
||||
![Skip Client ID, secret and advanced config](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/ssh%20rclone%20config%20client%20id.png "type enter to skip, then n for no")
|
||||
|
||||
For auto config, select `n` for remote or headless machine (i.e. JELOS device that doesn't have a web browser)
|
||||
|
||||
![No auto-config for remote or headless machine](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/ssh%20rclone%20config%20remote%20machine.png "type n for no")
|
||||
|
||||
Instructions are provided explaining how to authorize the connection from the remote device to the cloud service
|
||||
|
||||
![Device with web-browser is required for authorization](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/ssh%20rclone%20config%20authorize%20and%20paste%20token.png "Use pc to authorize connection")
|
||||
|
||||
### Install and run rclone on machine with a web-browser to authorize connection to cloud service
|
||||
|
||||
Download rclone on a device with a web-browser so rclone can use a web-page to authorize the connection by allowing you to login with your authorization credentials for the cloud service
|
||||
|
||||
[Rclone download server](https://downloads.rclone.org/ "Download same version of rclone for authorisation")
|
||||
|
||||
> Download the same version of rclone as is installed on JELOS device, as noted above.
|
||||
|
||||
Use terminal window (e.g. `CMD` on Windows) to browse to rclone executable and run
|
||||
|
||||
```
|
||||
rclone authorize dropbox
|
||||
```
|
||||
|
||||
and press `enter`
|
||||
|
||||
![Authorize dropbox for rclone](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/rclone%20authorise%20dropbox.png "Authorize rclone from terminal command prompt")
|
||||
|
||||
Rclone will launch a web page to enable login to the cloud service and authorization of the connection
|
||||
|
||||
![Authorize dropbox for rclone](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/rclone%20authorise%20from%20pc.png "Confirm authorization of rclone connection")
|
||||
|
||||
After successful authorization, the terminal window will display the authorization token that needs to be pasted into JELOS ssh
|
||||
|
||||
![Copy authorization token](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/rclone%20authorise%20login%20then%20paste%20into%20remote%20ssh.png "Copy token to paste into JELOS ssh")
|
||||
|
||||
Copy the entire token
|
||||
|
||||
### Update JELOS with authorization token
|
||||
|
||||
Paste authorization token into JELOS command prompt, then type `y` to confirm that the remote connection is correct
|
||||
|
||||
![Paste authorization token into ssh](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/ssh%20rclone%20config%20authorize%20and%20paste%20token.png "Paste token at config_token prompt")
|
||||
|
||||
The connection is now configured and can be tested (`q` to quit rclone config)
|
||||
|
||||
Type
|
||||
```
|
||||
rclone lsd rg503:
|
||||
```
|
||||
|
||||
where `rg503` is the name of the remote connection (rclone example names the remote connection as `remote`)
|
||||
|
||||
> **don't forget to add `:` to the name of remote connection**
|
||||
|
||||
The names of the top-level folders within Dropbox cloud service will be displayed
|
||||
|
||||
![Dropbox folder names are displayed](https://github.com/JustEnoughLinuxOS/distribution/blob/gh-pages/images/ssh%20rclone%20list%20top-level%20directories%20on%20dropbox.png "Top-level folder names in Dropbox cloud service")
|
||||
|
||||
Now that the connection is set up and authorized [Using Rclone](https://github.com/JustEnoughLinuxOS/distribution/documentation/SETUP_CLOUD_DRIVES.md#using-rclone) and [Using Cloud Backup and Restore](https://github.com/JustEnoughLinuxOS/distribution/documentation/SETUP_CLOUD_DRIVES.md#using-cloud-backup-and-restore) explain how to configure and use the connection for backup
|
||||
Moved to [https://jelos.org/configure/cloud-sync/](https://jelos.org/configure/cloud-sync/)
|
|
@ -1,32 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Using Moonlight Game Streaming
|
||||
|
||||
JELOS now supports Moonlight Game Streaming, which allows to connect to your local computer running [Moonlight](https://moonlight-stream.org/) and stream AAA games.
|
||||
|
||||
## Setup Moonlight on your local PC
|
||||
Please follow standard guide to setup Moonlight on your home PC, [link](https://github.com/moonlight-stream/moonlight-docs/wiki/Setup-Guide).
|
||||
|
||||
## Setup Moonlight in JELOS
|
||||
The setup requires pairing with your local PC running Moonlight and then populating Moonlight Streaming tab with all your games. After those are completed, you can select an individual game to start streaming.
|
||||
|
||||
### Pair with your local PC
|
||||
* On your JELOS device press "start" button to go into Emulation Station Main Menu
|
||||
* Select "MOONLIGHT GAME STREAMING" submenu
|
||||
* Please note the "PAIRING PIN" at the bottom of the window
|
||||
* You can also specify "SERVER IP" address, but it should be detected automatically
|
||||
* Select "PAIR WITH SERVER" option
|
||||
* Now, go to the local PC and enter PIN to continue the pairing process
|
||||
* You should see a confirmation message on your device
|
||||
* The paring process should complete
|
||||
|
||||
After pairing was successful, select "UPDATE MOONLIGHT GAMES" option. This should query the server for the list of all games and populate Moonlight Streaming tab in Emulation Station.
|
||||
|
||||
## Play Games
|
||||
Find Moonlight Game Streaming tab in Emulation Station. Select the game you want to play. The game should start and you should be able to interact with it.
|
||||
|
||||
## Remote Playing over internet
|
||||
* The easiest option is to add your device to your Tailscale network with your local PC, [link](https://github.com/JustEnoughLinuxOS/distribution/documentation/SETUP_VPN_TAILSCALE.md).
|
||||
* Moonlight allows to open several ports to connect to the local PC to stream over the internet. Setup might be somewhat complicated.
|
||||
* Another option is to use [WireGuard VPN](https://github.com/JustEnoughLinuxOS/distribution/documentation/SETUP_VPN_WIREGUARD.md) to setup the connection with the device. This approach requires only a single open port, but it requires WireGuard server to be running on your local network.
|
||||
Moved to [https://jelos.org/systems/moonlight/](https://jelos.org/systems/moonlight/)
|
|
@ -1,34 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# ZeroTier quickstart
|
||||
JELOS now supports ZeroTier. ZeroTier allows you to build robust peer-to-peer networks, connetcting all of your devices together. It's very similar to [Tailscale](https://github.com/JustEnoughLinuxOS/distribution/documentation/SETUP_VPN_TAILSCALE.md).
|
||||
|
||||
## Step 1: Sign up for ZeroTier account
|
||||
[Sign up for a ZeroTier account](https://my.zerotier.com).
|
||||
|
||||
## Step 2: Add other devices to your ZeroTier network
|
||||
|
||||
You can add devices that you want connected to the ZeroTier network. One device can be connected to multiple networks, so you can even have different networks for different purposes.
|
||||
|
||||
It's most likely going to run everywhere you want it, since the software exists for OpenWRT, Desktop Linux, Windows, Android, etc.
|
||||
|
||||
[Download ZeroTier](https://www.zerotier.com/download)
|
||||
|
||||
## Step 3: Add your device to your network
|
||||
|
||||
JELOS Emulation Station has customized UI with ZeroTier support.
|
||||
|
||||
- Create a file called "zerotier-networks" in ```/storage/.config/zerotier-networks```, containing one network ID per line
|
||||
- Press "start" button to go into Emulation Station Main Menu.
|
||||
- Select Network Settings submenu.
|
||||
- Select "ZeroTier VPN" and turn it on.
|
||||
- Select "Back" button to exit setting dialog.
|
||||
|
||||
Don't forget to authenticate your device in the ZerTier [control panel](my.zerotier.com) after starting the service. It should show up on the webpage.
|
||||
|
||||
You can also use the traditional way of adding a network ID by using ```zerotier-cli join``` through SSH shell, but in this cae the zerotier-networks file shouldn't be present.
|
||||
|
||||
## Links
|
||||
* ZeroTier homepage [link](https://zerotier.com/)
|
||||
* Script used to add networks on start [link](https://github.com/JustEnoughLinuxOS/distribution/blob/dev/packages/network/zerotier-one/scripts/zerotier-join.sh)
|
||||
Moved to [https://jelos.org/configure/vpn/#zerotier](https://jelos.org/configure/vpn/#zerotier)
|
|
@ -1,64 +1 @@
|
|||
# Syncthing
|
||||
Syncthing is a tool that lets you synchronize the contents of folders across multiple devices. It is different from cloud storage in that devices are updated directly with the latest changes from their peer(s) whenever they are online at the same time.
|
||||
Some things you can use it for with JELOS:
|
||||
* Keep your game library synchronized between your computer and JELOS device(s),
|
||||
* Keep all your handhelds synchronized (including those that run Android),
|
||||
* Copy savegames as they are created and seamlessly continue playing on another device,
|
||||
* Keep a copy of your configuration files for easier editing.
|
||||
|
||||
## Setup
|
||||
|
||||
### Setup on JELOS
|
||||
* Make sure you are connected to a WiFi network before continuing.
|
||||
* Go to "Network Settings" and set "Enable Syncthing" to "on". Make a note of your device's IP address, as well as the root password in the System Settings menu.
|
||||
* On a computer or mobile device in the same network, open a browser and point it to "http://a.b.c.d:8384" where "a.b.c.d" is the IP address of your JELOS device.
|
||||
* When prompted for a user name and password, enter "root" as user and the password you noted earlier.
|
||||
* You should now be directed to a configuration page running on your JELOS device - we'll come back to this shortly.
|
||||
|
||||
### Setup on Peer(s)
|
||||
* Install Syncthing on the device or computer that you want to synchronize with your JELOS device. If your other device also runs JELOS, simply repeat the above steps. Otherwise go to https://syncthing.net to download Syncthing for your platform. You may also find it in your Linux distribution's package manager, the Android Play Store, etc. Generally it is not required to install the same version of Syncthing on all devices. You can synchronize a folder across any number of peers.
|
||||
|
||||
### Connecting Folders
|
||||
1. Go to the web interface of your JELOS device (see above). Don't worry about notices about upgrading or the file system being read-only, nothing you can do.
|
||||
(Note: You can also go to the web interface of any of the peers, it'll work the same - but for this documentation it is assumed that you're on a JELOS device.)
|
||||
2. Under "Remote Devices", click "Add Remote Device". Enter the Device ID of the peer you want to synchronize with. If the remote is in the same network as your JELOS device the ID will be shown automatically. Otherwise, you'll find it in the remote's web interface by clicking "Actions" at the top and then "Show ID". Give the device a name if you like.
|
||||
3. In the "Folders" section, click "Add Folder". In the popup window that opens, set a label and specify the path on the device (e.g. /storage/roms). This is the folder you will be sharing with other peers.
|
||||
4. In the same popup window, go to the "Sharing" tab and select the remote device you just set up. Optionally, go to the "Ignore Patterns" tab and configure those. Click "Save" to close the window.
|
||||
5. On the remote's interface you should receive a popup that a new device wants to connect. Click "Add Device" and then "Save" to accept. It should now show up under "Remote Devices".
|
||||
6. Still on the remote, you should receive a new popup saying that the JELOS device wants to share a folder. Click "Add", then in the popup window, specify the path to an empty local folder to store the synchronized contents. Click "Save".
|
||||
7. The folder should now be copied from the JELOS device to the remote.
|
||||
|
||||
### Adding more Peers
|
||||
* To share the folder with more peers, first follow step 2 on your JELOS device to add another remote.
|
||||
* Find the folder you want to add another peer to and click "Edit".
|
||||
* In the popup window, go to the "Sharing" tab. The new remote should appear as an option. Select it and then click "Save".
|
||||
* Follow steps 5 and 6 on the new remote to connect the folder.
|
||||
|
||||
## Things to Keep in Mind
|
||||
|
||||
### Syncthing is not a cloud storage
|
||||
In order for devices to synchronize, they need to be online at the same time. Unless you have one peer that is always on, this is different from an online storage like Dropbox or Nextcloud. However, this behaviour can be emulated (no pun intended) by installing Syncthing on a cloud server or an always-on Raspberry Pi.
|
||||
|
||||
### Syncthing is not a backup
|
||||
Folders are synchronized with other peers immediately as they come online at the same time - this includes changes and deletions! Be sure to make regular backups of your folders.
|
||||
|
||||
### Devices do not need to be on the same network
|
||||
Syncthing uses relay servers to ensure communication between peers. This means that there does not need to be a direct connection between your devices, no port forwarding, etc - as soon as they are both online they will find each other and synchronize. Although file transfers are end-to-end encrypted when they are sent through relays, be aware of this if you plan on using Syncthing for anything more sensitive than your save files.
|
||||
|
||||
### Using Syncthing for Saves/States
|
||||
Using Syncthing for savegames is great because it allows you to seamlessly play a game across multiple handhelds, or even other devices. For example, you can play a game of Super Mario 64 on your RG353 while on the go, then launch the game on a RetroPie or PC running RetroArch and your save game will be transferred automatically to be continued on the big screen. However, this comes with a few caveats.
|
||||
|
||||
RetroArch differentiates between *saves*, i.e. the battery or memory card storage featured in the original game, and *states*, i.e. the save state feature that is part of the emulator. While *saves* are often compatible across different versions of RetroArch cores, *states* tend to break more frequently. This means that if you create states with two incompatible versions of an emulator and they are synchronized, you may lose one of them.
|
||||
|
||||
* For maximum compatibility, make sure to use the same cores on all devices and update them at similar frequencies.
|
||||
* RetroArch uses two separate folders for *saves* and *states*. This makes it easy to choose whether you want to synchronize only saves, states, or both.
|
||||
* In the RetroArch settings under "Saving", you can tell RetroArch to sort saves and states into subfolders based on content directory or core name. It is highly recommended to make use of this to reduce the risk of accidentally overwriting an incompatible save or state.
|
||||
* Make regular backups of your save folders.
|
||||
|
||||
### Synchronizing with Android
|
||||
* For Android-based handhelds people seem to be recommending the [Syncthing-Fork from F-Droid](https://f-droid.org/en/packages/com.github.catfriend1.syncthingandroid).
|
||||
* Keeping Syncthing running in the background may severely impact your battery life and reduce standby time. Check out [these tips](https://github.com/Catfriend1/syncthing-android/wiki/Info-on-battery-optimization-and-settings-affecting-battery-usage) to help you balance battery life and synchronization times.
|
||||
* Using cross-platform versions of emulators is much more likely to introduce incompatibilities so be extra careful when syncing savegames.
|
||||
|
||||
## Further Documentation
|
||||
For any questions and advanced configuration, be sure to check out the full documentation at https://docs.syncthing.net/index.html.
|
||||
Moved to [https://jelos.org/configure/cloud-sync/](https://jelos.org/configure/cloud-sync/)
|
|
@ -1,43 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Tailscale quickstart
|
||||
JELOS now supports Tailscale. Tailscale is a VPN service that makes the devices and applications you own accessible anywhere in the world, securely and effortlessly. It enables encrypted point-to-point connections using the open source [WireGuard](https://www.wireguard.com/) protocol, which means only devices on your private network can communicate with each other.
|
||||
|
||||
## Step 1: Sign up for Tailscale account
|
||||
[Sign up for a Tailscale account](https://login.tailscale.com/start).
|
||||
|
||||
Tailscale requires a Single Sign-On (SSO) provider, so you’ll need a Google, Microsoft, GitHub, Okta, OneLogin, or other [supported SSO identity provider](https://tailscale.com/kb/1013/sso-providers) account to begin.
|
||||
|
||||
## Step 2: Add a PC to your Tailscale network
|
||||
|
||||
Tailscale helps you connect your devices together. For that to be possible, Tailscale needs to run on your PC.
|
||||
|
||||
Tailscale works seamlessly with Linux, Windows, macOS, Raspberry Pi, Android, Synology, and more. Download Tailscale and log in on the PC.
|
||||
|
||||
[Download Tailscale](https://tailscale.com/download/)
|
||||
|
||||
## Step 3: Add your device to your network
|
||||
|
||||
JELOS Emulation Station has customized UI with Tailscale support.
|
||||
|
||||
- Press "start" button to go into Emulation Station Main Menu.
|
||||
- Select Network Settings submenu.
|
||||
- Select "Tailscale VPN" and turn it on.
|
||||
- Select "Back" button to exit setting dialog.
|
||||
|
||||
The initial connection to Tailscale will require authentication.
|
||||
|
||||
- Select Network Settings submenu again.
|
||||
- You should see Tailscale authentication url. You need to type this url on your PC browser and authenticate.
|
||||
- After login on PC is successful, Select "Tailscale VPN" and turn it on again.
|
||||
- Select "Back" button to exit setting dialog.
|
||||
- Tailscale VPN should be connected.
|
||||
|
||||
The magic of Tailscale happens when it’s installed on multiple devices. Add more of your devices and share Tailscale with your peers to grow your private network.
|
||||
|
||||
Add more machines to your network by repeating step 2, or 3, or by [inviting others to join your network](https://tailscale.com/kb/1064/invite-team-members).
|
||||
|
||||
## Links
|
||||
* Tailscale homepage [link](https://tailscale.com/)
|
||||
|
||||
Moved to [https://jelos.org/configure/vpn/#tailscale](https://jelos.org/configure/vpn/#tailscale)
|
|
@ -1,123 +1 @@
|
|||
<img src="https://raw.githubusercontent.com/JustEnoughLinuxOS/distribution/dev/distributions/JELOS/logos/jelos-logo.png" width=192> [![Latest Version](https://img.shields.io/github/release/JustEnoughLinuxOS/distribution.svg?color=5998FF&label=latest%20version&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/releases/latest) [![Activity](https://img.shields.io/github/commit-activity/m/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/commits) [![Pull Requests](https://img.shields.io/github/issues-pr-closed/JustEnoughLinuxOS/distribution?color=5998FF&style=flat-square)](https://github.com/JustEnoughLinuxOS/distribution/pulls) [![Discord Server](https://img.shields.io/discord/948029830325235753?color=5998FF&label=chat&style=flat-square)](https://discord.gg/seTxckZjJy)
|
||||
#
|
||||
|
||||
# Using WireGuard VPN
|
||||
JELOS now supports WireGuard VPN, which connects securely to your local network from any place in the world. As game streaming becomes more popular, it enables AAA games, streamed over the internet from your home computer, to be played on your console while traveling.
|
||||
|
||||
## Configuring WireGuard VPN in JELOS
|
||||
Typically the configuration involves copying your WireGuard VPN config file over to your JELOS device and then enabling WireGuard VPN in Emulation Station Network Settings menu.
|
||||
|
||||
### WireGuard Config
|
||||
JELOS uses standard WireGuard config file format. The file is typically provided by your VPN provider. If you want to host your own VPN Server on your local network, there are plenty of tutorials available online.
|
||||
|
||||
Currently only the single connection is supported. The WireGuard config file must be placed in the following location - `/storage/.config/wireguard/wg0.conf`. Please use SSH or Samba to create the file there.
|
||||
|
||||
Don't forget to restart Emulation Station to pick up the changes.
|
||||
|
||||
Sample `wg0.conf` file
|
||||
```
|
||||
[Interface]
|
||||
PrivateKey = <your private key>
|
||||
Address = 10.111.10.2/24
|
||||
|
||||
[Peer]
|
||||
PublicKey = <server public key>
|
||||
AllowedIPs = 0.0.0.0/0
|
||||
Endpoint = <server>:<port>
|
||||
```
|
||||
> Note: "DNS" option is not yet supported in the config. Please remove line starting with "DNS" from your config file.
|
||||
|
||||
### Enabling WireGuard connection
|
||||
Emulation Station now has a new menu item toggle to enable or disable WireGuard VPN connection. Use it turn the connection on or off.
|
||||
|
||||
> Note: make sure that WireGuard config file is present on the device, see the [Configuring WireGuard VPN in JELOS](https://github.com/JustEnoughLinuxOS/distribution/documentation/SETUP_VPN_WIREGUARD.md#Configuring-WireGuard-VPN-in-JELOS) section above. The menu option is only available when the config file is present.
|
||||
|
||||
Connect to configured VPN server
|
||||
* Press "start" button to go into Emulation Station Main Menu
|
||||
* Select Network Settings submenu
|
||||
* Select "Wireguard VPN" and turn it on
|
||||
* Select "Back" button to exit setting dialog
|
||||
* WireGuard VPN should be connected
|
||||
|
||||
Disconnect from configured VPN server
|
||||
* Press "start" button to go into Emulation Station Main Menu
|
||||
* Select Network Settings submenu
|
||||
* Select "Wireguard VPN" and turn it off
|
||||
* Select "Back" button to exit setting dialog
|
||||
* WireGuard VPN should be disconnected
|
||||
|
||||
### Server Configuration (for advanced users)
|
||||
The local PC can be setup to be a WireGuard server. This allows accessing that PC (and a local network if SNAT is enabled) from the remote location using the device.
|
||||
|
||||
The configuration is the following:
|
||||
* Generate pair of configuration files
|
||||
* Install WireGuard on your local PC and import server config
|
||||
* Setup Port Forwarding for WireGuard port from your local router to your local PC
|
||||
* Enable WireGuard on your device
|
||||
|
||||
#### Config Pair generation
|
||||
The device have a helper script which can generate a pair of configuration files for the device and for the local PC with WireGuard server.
|
||||
|
||||
The script should be executed from SSH terminal.
|
||||
```
|
||||
# Generate config file
|
||||
wg-genconfig
|
||||
```
|
||||
The script will generate `wg0.conf` and `wg0.conf.server` files.
|
||||
|
||||
##### `wg0.conf.server` server config
|
||||
```
|
||||
[Interface]
|
||||
PrivateKey = <server private key>
|
||||
# PublicKey = <server public key>
|
||||
Address = 10.111.10.1/24
|
||||
ListenPort = 51820
|
||||
|
||||
# If you want to access other devices on the same network,
|
||||
# you need to enable SNAT, the lines below.
|
||||
# Make sure that eth0 matches your main network interface.
|
||||
#PostUp = echo 1 > /proc/sys/net/ipv4/ip_forward
|
||||
#PostUp = iptables -A FORWARD -i %i -j ACCEPT
|
||||
#PostUp = iptables -A FORWARD -o %i -j ACCEPT
|
||||
#PostUp = iptables -t nat -A POSTROUTING -s 10.111.10.0/24 -o eth0 -j MASQUERADE
|
||||
#PostDown = iptables -D FORWARD -i %i -j ACCEPT
|
||||
#PostDown = iptables -D FORWARD -o %i -j ACCEPT
|
||||
#PostDown = iptables -t nat -D POSTROUTING -s 10.111.10.0/24 -o eth0 -j MASQUERADE
|
||||
|
||||
[Peer]
|
||||
PublicKey = <device public key>
|
||||
AllowedIPs = 10.111.10.2/32
|
||||
```
|
||||
If you want you device to access your local network, you need to enable SNAT, allow your local PC forward network packets to other devices on your local network. That is done by uncommenting PostUp/PostDown commands in the config.
|
||||
|
||||
#### Install WireGuard on your local PC
|
||||
* Download the client for your OS from [here](https://www.wireguard.com/install/).
|
||||
* Import wg0.conf.server and enable the tunnel.
|
||||
|
||||
## Troubleshooting
|
||||
### Diagnostics
|
||||
Sometimes the tunnel doesn't establish successfully. The following commands can useful to diagnose issues.
|
||||
|
||||
The commands below should be executed on the device using SSH shell access.
|
||||
|
||||
```
|
||||
# Check the status of active tunnels.
|
||||
# You should see the connection statistics.
|
||||
wg show
|
||||
```
|
||||
```
|
||||
# Check my public ip address
|
||||
curl ifconfig.co -4
|
||||
```
|
||||
```
|
||||
# Bring tunnel up
|
||||
wg-quick up /storage/.config/wireguard/wg0.conf
|
||||
```
|
||||
```
|
||||
# Bring tunnel down
|
||||
wg-quick down /storage/.config/wireguard/wg0.conf
|
||||
```
|
||||
|
||||
### Links
|
||||
* WireGuard homepage [link](https://www.wireguard.com/)
|
||||
* WireGuard is also supported in ConnMan VPN plugin using ssh command line [link](https://wiki.libreelec.tv/configuration/wireguard)
|
||||
Moved to [https://jelos.org/configure/vpn/#wireguard](https://jelos.org/configure/vpn/#wireguard)
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2021-present Team LibreELEC (https://libreelec.tv)
|
||||
|
||||
PKG_NAME="pipewire"
|
||||
PKG_VERSION="0.3.77"
|
||||
PKG_VERSION="0.3.80"
|
||||
PKG_LICENSE="LGPL"
|
||||
PKG_SITE="https://pipewire.org"
|
||||
PKG_URL="https://github.com/PipeWire/pipewire/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -21,8 +21,6 @@ PKG_MESON_OPTS_TARGET="-Dintrospection=disabled \
|
|||
-Dtests=false"
|
||||
|
||||
post_makeinstall_target() {
|
||||
# connect to the system bus
|
||||
sed '/^\[Service\]/a Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/dbus/system_bus_socket' -i ${INSTALL}/usr/lib/systemd/system/wireplumber.service
|
||||
|
||||
# ref https://gitlab.freedesktop.org/pipewire/wireplumber/-/commit/0da29f38181e391160fa8702623050b8544ec775
|
||||
cat > ${INSTALL}/usr/share/wireplumber/main.lua.d/89-disable-session-dbus-dependent-features.lua << EOF
|
||||
|
|
|
@ -7,10 +7,14 @@ PKG_LICENSE="GPL"
|
|||
PKG_SITE="https://git.kernel.org/pub/scm/libs/libtrace/${PKG_NAME}.git/log/"
|
||||
PKG_URL="https://git.kernel.org/pub/scm/libs/libtrace/${PKG_NAME}.git/snapshot/${PKG_NAME}-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_HOST="ccache:host"
|
||||
PKG_DEPENDS_TARGET="toolchain libtraceevent:host linux:host"
|
||||
PKG_DEPENDS_TARGET="toolchain libtraceevent:host"
|
||||
PKG_LONGDESC="Provides APIs to access kernel tracepoint events."
|
||||
#PKG_BUILD_FLAGS="+pic"
|
||||
|
||||
pre_configure_host() {
|
||||
LDFLAGS="${LDFLAGS} -ldl"
|
||||
}
|
||||
|
||||
makeinstall_host() {
|
||||
mkdir -p ${TOOLCHAIN}/lib
|
||||
cp src/${PKG_NAME}.a ${TOOLCHAIN}/lib
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="beetle-pce-fast-lr"
|
||||
PKG_VERSION="f2ff19e56fb33361793f9fdaf44c1ea28bce1da3"
|
||||
PKG_VERSION="d7c1553d90eddab574fab7c315ce748d7ace1eed"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="beetle-pce-lr"
|
||||
PKG_VERSION="541463bd937dad175aec09c2a0c8d6a52d175386"
|
||||
PKG_VERSION="40210e91808561178f5439f83413cec14a8d30ba"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="beetle-supergrafx-lr"
|
||||
PKG_VERSION="56261ccd56f576a42a2d22190c09eb326a4331da"
|
||||
PKG_VERSION="b9cb84001a8b89aa8f4f4602f83d7bf1f1a356b4"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
PKG_NAME="bsnes-lr"
|
||||
PKG_VERSION="3fe4f9049f99ac71d038b3cb684ebfc8e6cef15a"
|
||||
PKG_VERSION="39c6b38c2f96881ddbfd98ad24cc9560e65b12c1"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/bsnes-libretro"
|
||||
PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="core-info"
|
||||
PKG_VERSION="dacae85b406131feb12395a415fdf57fc4745201"
|
||||
PKG_VERSION="63fc405d19f64b6559fe6428e719756a7979e596"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/libretro/libretro-core-info"
|
||||
PKG_URL="https://github.com/libretro/libretro-core-info/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="dosbox-pure-lr"
|
||||
PKG_VERSION="3352a46f6d1f61191483c3d776d822cd68f25486"
|
||||
PKG_VERSION="384b9d02fada8a60b0085b5e938ea4284b26fe1e"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2022-present Lakka (https://www.lakka.tv)
|
||||
|
||||
PKG_NAME="fake08-lr"
|
||||
PKG_VERSION="10bd648f2ed91268c758751e3eda7708512cf065"
|
||||
PKG_VERSION="29d7996aabaf7268037fd95688be6cd227e93f98"
|
||||
PKG_LICENSE="MIT"
|
||||
PKG_SITE="https://github.com/jtothebell/fake-08"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
# Copyright (C) 2023-present Fewtarius
|
||||
|
||||
PKG_NAME="fbneo-lr"
|
||||
PKG_VERSION="6b6ba331c6616dbf35e83d7966b6e77744ce773d"
|
||||
PKG_VERSION="99f06cf43ae61b77527765a42454ab05f0a733a0"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Non-commercial"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="fceumm-lr"
|
||||
PKG_VERSION="f068818c4d68620c31eca0c02a5891ee3096b645"
|
||||
PKG_VERSION="7fad08e5522e5396a1196055fc106be9b5d5de77"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="gambatte-lr"
|
||||
PKG_VERSION="64561b7e1b21dfa42eecb94963c1c495ba332466"
|
||||
PKG_VERSION="40d0d7ac4e11b5c2d1feac2ce96e4d824c248985"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="genesis-plus-gx-lr"
|
||||
PKG_VERSION="141257e1e2104c4e4a49dc771d9f3c06e00292ec"
|
||||
PKG_VERSION="3b85b2496275e1e308544eaf18150a472f943ad1"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="Non-commercial"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="hatari-lr"
|
||||
PKG_VERSION="274e4fe133ca4cabd1a86a23bb60dabf1afc0235"
|
||||
PKG_VERSION="a4c9eb0bb79e47a2870c12b04566c1f8d25e4bf3"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="libretro-database"
|
||||
PKG_VERSION="f04381b606f679e960cefbe7d9d70f00bacec12f"
|
||||
PKG_VERSION="7b8991bc1fbb8f007977b35174aef7be6369e027"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="mame2003-plus-lr"
|
||||
PKG_VERSION="6c413c298fcfb4dc7c8e8d6bec28c077d900e7dd"
|
||||
PKG_VERSION="e28af780b8ebecf8fb31f5737dbefa4e41744f86"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="MAME"
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="mrboom-lr"
|
||||
PKG_VERSION="376177d4a5020df528bf3632b909fa033592f152"
|
||||
PKG_VERSION="06ab71e8ceeca06f30b77626a21b58b1e7d9a686"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv3"
|
||||
|
|
|
@ -21,10 +21,16 @@ if [ "${OPENGLES_SUPPORT}" = yes ]; then
|
|||
PKG_DEPENDS_TARGET+=" ${OPENGLES}"
|
||||
fi
|
||||
|
||||
if [ "${VULKAN_SUPPORT}" = "yes" ]; then
|
||||
PKG_MAKE_OPTS_TARGET+=" HAVE_PARALLEL=1"
|
||||
fi
|
||||
|
||||
case ${DEVICE} in
|
||||
RK3*|S922X*)
|
||||
PKG_MAKE_OPTS_TARGET=" platform=${DEVICE}"
|
||||
PKG_MAKE_OPTS_TARGET+=" platform=${DEVICE}"
|
||||
;;
|
||||
AMD64)
|
||||
PKG_MAKE_OPTS_TARGET+=" HAVE_PARALLEL_RSP=1"
|
||||
esac
|
||||
|
||||
makeinstall_target() {
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="pcsx_rearmed-lr"
|
||||
PKG_VERSION="80bc142638988fa7ba87aa17af1ccfcfc21d1e99"
|
||||
PKG_VERSION="6183ddf982e296b854f767c168f424b877a22243"
|
||||
PKG_ARCH="arm aarch64"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/libretro/pcsx_rearmed"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="ppsspp-lr"
|
||||
PKG_VERSION="e829c97d7e78b6ec7c1a0ee031d58c32987194e6"
|
||||
PKG_VERSION="aedd51f2f69fa3940c991a626be7df430883af4c"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/hrydgard/ppsspp"
|
||||
PKG_URL="https://github.com/hrydgard/ppsspp.git"
|
||||
|
|
|
@ -27,7 +27,7 @@ PKG_LICENSE="MIT"
|
|||
PKG_SITE="https://github.com/libretro/sameboy"
|
||||
PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz"
|
||||
PKG_GIT_CLONE_BRANCH="buildbot"
|
||||
PKG_DEPENDS_TARGET="toolchain"
|
||||
PKG_DEPENDS_TARGET="toolchain util-linux:host"
|
||||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="libretro"
|
||||
PKG_SHORTDESC="Gameboy and Gameboy Color emulator written in C"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="scummvm-lr"
|
||||
PKG_VERSION="a56c2b83153c84b0a1c0f3f9a18c38f23b430fc9"
|
||||
PKG_VERSION="0f6773217c670368de73348e201495cc4456023f"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="slang-shaders"
|
||||
PKG_VERSION="c1488579ee8e9421222501ca679ace333e047a2a"
|
||||
PKG_VERSION="7db474790c1d2fa060e9b73f5468ec6bb2ecd387"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPL"
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="stella-lr"
|
||||
PKG_VERSION="afe84954a80406f4fbbce423712166b9b87d10b3"
|
||||
PKG_VERSION="85f23044437a5da35d68f96045d363d0e339f872"
|
||||
PKG_REV="1"
|
||||
PKG_LICENSE="GPL2"
|
||||
PKG_SITE="https://github.com/stella-emu/stella"
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
################################################################################
|
||||
|
||||
PKG_NAME="vice-lr"
|
||||
PKG_VERSION="c0ef3653deadf40807293b9d9cb56a2a810f7d70"
|
||||
PKG_VERSION="04f37fe3a1d8525003e5e739a376acf01f72f84e"
|
||||
PKG_REV="1"
|
||||
PKG_ARCH="any"
|
||||
PKG_LICENSE="GPLv2"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
PKG_NAME="citra-sa"
|
||||
PKG_VERSION="8d45390ed38fe82c50d788fe1ebbbfe86369b975"
|
||||
PKG_VERSION="a034c54f91495e6c987e3c3d221c7f7615d60a56"
|
||||
PKG_LICENSE="MPLv2"
|
||||
PKG_SITE="https://github.com/JustEnoughLinuxOS/citra-canary"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
[GCPad1]
|
||||
Device = evdev/0/Microsoft X-Box 360 pad
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 2
|
||||
Buttons/Start = Button 6
|
||||
Buttons/X = Button 1
|
||||
Buttons/Y = Button 3
|
||||
Buttons/Z = Button 5
|
||||
Buttons/Hotkey = Button 7
|
||||
C-Stick/Dead Zone = 25.000000000000000
|
||||
C-Stick/Down = Axis 4+
|
||||
C-Stick/Left = Axis 3-
|
||||
C-Stick/Modifier = Control_L
|
||||
C-Stick/Modifier/Range = 50.000000000000000
|
||||
C-Stick/Right = Axis 3+
|
||||
C-Stick/Up = Axis 4-
|
||||
D-Pad/Down = Axis 7+
|
||||
D-Pad/Left = Axis 6-
|
||||
D-Pad/Right = Axis 6+
|
||||
D-Pad/Up = Axis 7-
|
||||
Main Stick/Dead Zone = 25.000000000000000
|
||||
Main Stick/Down = Axis 1+
|
||||
Main Stick/Left = Axis 0-
|
||||
Main Stick/Modifier = Shift_L
|
||||
Main Stick/Modifier/Range = 50.000000000000000
|
||||
Main Stick/Right = Axis 0+
|
||||
Main Stick/Up = Axis 1-
|
||||
Triggers/L = Axis 2+
|
||||
Triggers/R = Axis 5+
|
|
@ -2,7 +2,9 @@
|
|||
VSync = False
|
||||
Adapter = 0
|
||||
[Settings]
|
||||
PreferGLES = True
|
||||
AspectRatio = 0
|
||||
InternalResolution = 2
|
||||
Crop = False
|
||||
wideScreenHack = False
|
||||
UseXFB = False
|
||||
|
@ -37,10 +39,14 @@ SWDumpTevStages = False
|
|||
SWDumpTevTexFetches = False
|
||||
SWDrawStart = 0
|
||||
SWDrawEnd = 100000
|
||||
ShaderCompilationMode = 0
|
||||
WaitForShadersBeforeStarting = True
|
||||
BackendMultithreading = True
|
||||
EnableGPUTextureDecoding = True
|
||||
[Enhancements]
|
||||
ForceFiltering = False
|
||||
ForceTextureFiltering = False
|
||||
MaxAnisotropy = 0
|
||||
PostProcessingShader =
|
||||
PostProcessingShader =
|
||||
[Stereoscopy]
|
||||
StereoMode = 0
|
||||
StereoDepth = 20
|
||||
|
@ -53,3 +59,4 @@ ForceProgressive = True
|
|||
EFBToTextureEnable = True
|
||||
EFBScaledCopy = False
|
||||
EFBEmulateFormatChanges = False
|
||||
SkipDuplicateXFBs = True
|
||||
|
|
|
@ -0,0 +1,20 @@
|
|||
[Wiimote1]
|
||||
Device = evdev/0/Microsoft X-Box 360 pad
|
||||
Buttons/A = Button 0
|
||||
Buttons/B = Button 1
|
||||
Buttons/1 = Button 2
|
||||
Buttons/2 = Button 3
|
||||
Buttons/- = Button 6
|
||||
Buttons/+ = Button 7
|
||||
Buttons/Home = Button 8
|
||||
Shake/X = Button 4
|
||||
Shake/Y = Button 4
|
||||
Shake/Z = Button 4
|
||||
D-Pad/Up = Axis 6-
|
||||
D-Pad/Down = Axis 6+
|
||||
D-Pad/Left = Axis 7-
|
||||
D-Pad/Right = Axis 7+
|
||||
IR/Up = `Axis 4-`
|
||||
IR/Down = `Axis 4+`
|
||||
IR/Left = `Axis 3-`
|
||||
IR/Right = `Axis 3+`
|
|
@ -24,3 +24,7 @@ Nunchuk/Stick/Right = Axis 0+
|
|||
Nunchuk/Shake/X = Axis 2+
|
||||
Nunchuk/Shake/Y = Axis 2+
|
||||
Nunchuk/Shake/Z = Axis 2+
|
||||
IR/Up = `Axis 4-`
|
||||
IR/Down = `Axis 4+`
|
||||
IR/Left = `Axis 3-`
|
||||
IR/Right = `Axis 3+`
|
||||
|
|
|
@ -14,3 +14,7 @@ D-Pad/Up = Axis 7-
|
|||
D-Pad/Down = Axis 7+
|
||||
D-Pad/Left = Axis 6-
|
||||
D-Pad/Right = Axis 6+
|
||||
IR/Up = `Axis 4-`
|
||||
IR/Down = `Axis 4+`
|
||||
IR/Left = `Axis 3-`
|
||||
IR/Right = `Axis 3+`
|
|
@ -35,7 +35,10 @@ fi
|
|||
|
||||
if [ "${DISPLAYSERVER}" = "wl" ]; then
|
||||
PKG_DEPENDS_TARGET+=" wayland ${WINDOWMANAGER} xorg-server xrandr libXi"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_WAYLAND=ON"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_WAYLAND=ON \
|
||||
-DENABLE_X11=ON"
|
||||
else
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_X11=OFF"
|
||||
fi
|
||||
|
||||
if [ "${VULKAN_SUPPORT}" = "yes" ]
|
||||
|
@ -58,8 +61,7 @@ PKG_CMAKE_OPTS_TARGET+=" -DENABLE_HEADLESS=ON \
|
|||
-DENABLE_LTO=ON \
|
||||
-DENABLE_QT=OFF \
|
||||
-DENCODE_FRAMEDUMPS=OFF \
|
||||
-DENABLE_CLI_TOOL=OFF \
|
||||
-DENABLE_X11=OFF"
|
||||
-DENABLE_CLI_TOOL=OFF"
|
||||
|
||||
|
||||
makeinstall_target() {
|
||||
|
@ -80,6 +82,9 @@ post_install() {
|
|||
RK356*)
|
||||
DOLPHIN_PLATFORM="drm"
|
||||
;;
|
||||
RK3588)
|
||||
DOLPHIN_PLATFORM="x11"
|
||||
;;
|
||||
*)
|
||||
DOLPHIN_PLATFORM="wayland"
|
||||
;;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
diff -rupN dolphin.orig/CMake/FindWaylandProtocols.cmake dolphin/CMake/FindWaylandProtocols.cmake
|
||||
--- dolphin.orig/CMake/FindWaylandProtocols.cmake 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ dolphin/CMake/FindWaylandProtocols.cmake 2023-06-05 18:48:45.007819529 +0000
|
||||
+++ dolphin/CMake/FindWaylandProtocols.cmake 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -0,0 +1,28 @@
|
||||
+# from https://github.com/glfw/glfw/blob/master/CMake/modules/FindWaylandProtocols.cmake
|
||||
+
|
||||
|
@ -32,7 +32,7 @@ diff -rupN dolphin.orig/CMake/FindWaylandProtocols.cmake dolphin/CMake/FindWayla
|
|||
+set(WAYLAND_PROTOCOLS_VERSION ${WaylandProtocols_VERSION})
|
||||
diff -rupN dolphin.orig/CMake/FindXKBCommon.cmake dolphin/CMake/FindXKBCommon.cmake
|
||||
--- dolphin.orig/CMake/FindXKBCommon.cmake 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ dolphin/CMake/FindXKBCommon.cmake 2023-06-05 18:48:45.007819529 +0000
|
||||
+++ dolphin/CMake/FindXKBCommon.cmake 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -0,0 +1,33 @@
|
||||
+# - Try to find XKBCommon
|
||||
+# Once done, this will define
|
||||
|
@ -68,9 +68,9 @@ diff -rupN dolphin.orig/CMake/FindXKBCommon.cmake dolphin/CMake/FindXKBCommon.cm
|
|||
+
|
||||
+mark_as_advanced(XKBCOMMON_LIBRARY XKBCOMMON_INCLUDE_DIR)
|
||||
diff -rupN dolphin.orig/CMakeLists.txt dolphin/CMakeLists.txt
|
||||
--- dolphin.orig/CMakeLists.txt 2023-06-01 19:24:09.874000574 +0000
|
||||
+++ dolphin/CMakeLists.txt 2023-06-05 18:48:45.007819529 +0000
|
||||
@@ -43,6 +43,7 @@ set(DOLPHIN_DEFAULT_UPDATE_TRACK "" CACH
|
||||
--- dolphin.orig/CMakeLists.txt 2023-09-26 17:58:02.593990718 +0000
|
||||
+++ dolphin/CMakeLists.txt 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -47,6 +47,7 @@ set(DOLPHIN_DEFAULT_UPDATE_TRACK "" CACH
|
||||
|
||||
if(UNIX AND NOT APPLE AND NOT ANDROID)
|
||||
option(ENABLE_X11 "Enables X11 Support" ON)
|
||||
|
@ -78,7 +78,7 @@ diff -rupN dolphin.orig/CMakeLists.txt dolphin/CMakeLists.txt
|
|||
endif()
|
||||
if(NOT WIN32 AND NOT APPLE AND NOT HAIKU)
|
||||
option(ENABLE_EGL "Enables EGL OpenGL Interface" ON)
|
||||
@@ -549,6 +550,17 @@ if(ENABLE_X11)
|
||||
@@ -543,6 +544,17 @@ if(ENABLE_X11)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -97,9 +97,9 @@ diff -rupN dolphin.orig/CMakeLists.txt dolphin/CMakeLists.txt
|
|||
find_package(EGL)
|
||||
if(EGL_FOUND)
|
||||
diff -rupN dolphin.orig/Source/Core/Common/CMakeLists.txt dolphin/Source/Core/Common/CMakeLists.txt
|
||||
--- dolphin.orig/Source/Core/Common/CMakeLists.txt 2023-06-01 19:24:09.918002004 +0000
|
||||
+++ dolphin/Source/Core/Common/CMakeLists.txt 2023-06-05 18:48:45.487834884 +0000
|
||||
@@ -255,11 +255,20 @@ if(ENABLE_EGL AND EGL_FOUND)
|
||||
--- dolphin.orig/Source/Core/Common/CMakeLists.txt 2023-09-26 17:58:02.801995519 +0000
|
||||
+++ dolphin/Source/Core/Common/CMakeLists.txt 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -253,11 +253,20 @@ if(ENABLE_EGL AND EGL_FOUND)
|
||||
GL/GLInterface/EGLAndroid.cpp
|
||||
GL/GLInterface/EGLAndroid.h
|
||||
)
|
||||
|
@ -126,8 +126,8 @@ diff -rupN dolphin.orig/Source/Core/Common/CMakeLists.txt dolphin/Source/Core/Co
|
|||
target_include_directories(common PRIVATE ${EGL_INCLUDE_DIRS})
|
||||
target_link_libraries(common PUBLIC ${EGL_LIBRARIES})
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLContext.cpp dolphin/Source/Core/Common/GL/GLContext.cpp
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLContext.cpp 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLContext.cpp 2023-06-05 18:48:45.499835268 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLContext.cpp 2023-09-26 17:58:02.801995519 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLContext.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -25,6 +25,9 @@
|
||||
#if defined(ANDROID)
|
||||
#include "Common/GL/GLInterface/EGLAndroid.h"
|
||||
|
@ -164,8 +164,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLContext.cpp dolphin/Source/Core/
|
|||
if (wsi.type == WindowSystemType::Headless || wsi.type == WindowSystemType::FBDev)
|
||||
context = std::make_unique<GLContextEGL>();
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLContext.h dolphin/Source/Core/Common/GL/GLContext.h
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLContext.h 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLContext.h 2023-06-05 18:48:45.503835396 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLContext.h 2023-09-26 17:58:02.801995519 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLContext.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -36,8 +36,8 @@ public:
|
||||
virtual bool MakeCurrent();
|
||||
virtual bool ClearCurrent();
|
||||
|
@ -178,8 +178,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLContext.h dolphin/Source/Core/Co
|
|||
virtual void Swap();
|
||||
virtual void SwapInterval(int interval);
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.h dolphin/Source/Core/Common/GL/GLInterface/AGL.h
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.h 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/AGL.h 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.h 2023-09-26 17:58:02.801995519 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/AGL.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -27,6 +27,8 @@ public:
|
||||
|
||||
bool MakeCurrent() override;
|
||||
|
@ -190,8 +190,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.h dolphin/Source/C
|
|||
void Update() override;
|
||||
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.mm dolphin/Source/Core/Common/GL/GLInterface/AGL.mm
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.mm 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/AGL.mm 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.mm 2023-09-26 17:58:02.801995519 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/AGL.mm 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -144,7 +144,7 @@ bool GLContextAGL::ClearCurrent()
|
||||
return true;
|
||||
}
|
||||
|
@ -202,8 +202,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/AGL.mm dolphin/Source/
|
|||
if (!m_view)
|
||||
return;
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.cpp dolphin/Source/Core/Common/GL/GLInterface/EGL.cpp
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.cpp 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGL.cpp 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.cpp 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGL.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -292,8 +292,8 @@ bool GLContextEGL::CreateWindowSurface()
|
||||
{
|
||||
if (!IsHeadless())
|
||||
|
@ -267,8 +267,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.cpp dolphin/Source
|
|||
+ m_backbuffer_height = static_cast<u32>(surface_height);
|
||||
+}
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.h dolphin/Source/Core/Common/GL/GLInterface/EGL.h
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.h 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGL.h 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.h 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGL.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -22,7 +22,8 @@ public:
|
||||
bool MakeCurrent() override;
|
||||
bool ClearCurrent() override;
|
||||
|
@ -294,7 +294,7 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGL.h dolphin/Source/C
|
|||
std::vector<int> m_attribs;
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.cpp dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.cpp
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.cpp 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.cpp 2023-06-05 18:48:45.507835524 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -0,0 +1,36 @@
|
||||
+// Copyright 2019 Dolphin Emulator Project
|
||||
+// Licensed under GPLv2+
|
||||
|
@ -334,7 +334,7 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.cpp dolphin
|
|||
+}
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.h dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.h
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.h 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.h 2023-06-05 18:48:45.507835524 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLWayland.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -0,0 +1,19 @@
|
||||
+// Copyright 2019 Dolphin Emulator Project
|
||||
+// Licensed under GPLv2+
|
||||
|
@ -356,8 +356,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLWayland.h dolphin/S
|
|||
+ EGLNativeWindowType GetEGLNativeWindow(EGLConfig config) override;
|
||||
+};
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.cpp dolphin/Source/Core/Common/GL/GLInterface/EGLX11.cpp
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.cpp 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLX11.cpp 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.cpp 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLX11.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -11,7 +11,7 @@ GLContextEGLX11::~GLContextEGLX11()
|
||||
m_render_window.reset();
|
||||
}
|
||||
|
@ -368,8 +368,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.cpp dolphin/Sou
|
|||
m_render_window->UpdateDimensions();
|
||||
m_backbuffer_width = m_render_window->GetWidth();
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.h dolphin/Source/Core/Common/GL/GLInterface/EGLX11.h
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.h 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLX11.h 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.h 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/EGLX11.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -13,7 +13,7 @@ class GLContextEGLX11 final : public GLC
|
||||
public:
|
||||
~GLContextEGLX11() override;
|
||||
|
@ -380,8 +380,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/EGLX11.h dolphin/Sourc
|
|||
protected:
|
||||
EGLDisplay OpenEGLDisplay() override;
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.cpp dolphin/Source/Core/Common/GL/GLInterface/GLX.cpp
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.cpp 2023-06-01 19:24:09.918002004 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/GLX.cpp 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.cpp 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/GLX.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -310,7 +310,7 @@ bool GLContextGLX::ClearCurrent()
|
||||
return glXMakeCurrent(m_display, None, nullptr);
|
||||
}
|
||||
|
@ -392,8 +392,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.cpp dolphin/Source
|
|||
m_render_window->UpdateDimensions();
|
||||
m_backbuffer_width = m_render_window->GetWidth();
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.h dolphin/Source/Core/Common/GL/GLInterface/GLX.h
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.h 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/GLX.h 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.h 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/GLX.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -24,7 +24,7 @@ public:
|
||||
bool MakeCurrent() override;
|
||||
bool ClearCurrent() override;
|
||||
|
@ -404,8 +404,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/GLX.h dolphin/Source/C
|
|||
void SwapInterval(int Interval) override;
|
||||
void Swap() override;
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.cpp dolphin/Source/Core/Common/GL/GLInterface/WGL.cpp
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.cpp 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/WGL.cpp 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.cpp 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/WGL.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -480,7 +480,7 @@ bool GLContextWGL::ClearCurrent()
|
||||
}
|
||||
|
||||
|
@ -416,8 +416,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.cpp dolphin/Source
|
|||
RECT rcWindow;
|
||||
GetClientRect(m_window_handle, &rcWindow);
|
||||
diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.h dolphin/Source/Core/Common/GL/GLInterface/WGL.h
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.h 2023-06-01 19:23:58.513631223 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/WGL.h 2023-06-05 18:48:45.507835524 +0000
|
||||
--- dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.h 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/GL/GLInterface/WGL.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -19,7 +19,7 @@ public:
|
||||
bool MakeCurrent() override;
|
||||
bool ClearCurrent() override;
|
||||
|
@ -428,8 +428,8 @@ diff -rupN dolphin.orig/Source/Core/Common/GL/GLInterface/WGL.h dolphin/Source/C
|
|||
void Swap() override;
|
||||
void SwapInterval(int interval) override;
|
||||
diff -rupN dolphin.orig/Source/Core/Common/WindowSystemInfo.h dolphin/Source/Core/Common/WindowSystemInfo.h
|
||||
--- dolphin.orig/Source/Core/Common/WindowSystemInfo.h 2023-06-01 19:23:58.517631353 +0000
|
||||
+++ dolphin/Source/Core/Common/WindowSystemInfo.h 2023-06-05 18:48:45.499835268 +0000
|
||||
--- dolphin.orig/Source/Core/Common/WindowSystemInfo.h 2023-09-26 17:58:02.805995611 +0000
|
||||
+++ dolphin/Source/Core/Common/WindowSystemInfo.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -40,7 +40,11 @@ struct WindowSystemInfo
|
||||
// This is kept seperate as input may require a different handle to rendering, and
|
||||
// during video backend startup the surface pointer may change (MoltenVK).
|
||||
|
@ -444,9 +444,9 @@ diff -rupN dolphin.orig/Source/Core/Common/WindowSystemInfo.h dolphin/Source/Cor
|
|||
float render_surface_scale = 1.0f;
|
||||
};
|
||||
diff -rupN dolphin.orig/Source/Core/Core/Core.cpp dolphin/Source/Core/Core/Core.cpp
|
||||
--- dolphin.orig/Source/Core/Core/Core.cpp 2023-06-01 19:24:09.922002134 +0000
|
||||
+++ dolphin/Source/Core/Core/Core.cpp 2023-06-05 18:48:45.511835652 +0000
|
||||
@@ -478,6 +478,8 @@ static void EmuThread(std::unique_ptr<Bo
|
||||
--- dolphin.orig/Source/Core/Core/Core.cpp 2023-09-26 17:58:02.809995703 +0000
|
||||
+++ dolphin/Source/Core/Core/Core.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -474,6 +474,8 @@ static void EmuThread(std::unique_ptr<Bo
|
||||
// is relative to the render window, instead of the main window.
|
||||
ASSERT(g_controller_interface.IsInit());
|
||||
g_controller_interface.ChangeWindow(wsi.render_window);
|
||||
|
@ -456,8 +456,8 @@ diff -rupN dolphin.orig/Source/Core/Core/Core.cpp dolphin/Source/Core/Core/Core.
|
|||
Pad::LoadConfig();
|
||||
Pad::LoadGBAConfig();
|
||||
diff -rupN dolphin.orig/Source/Core/Core/HW/GCPadEmu.cpp dolphin/Source/Core/Core/HW/GCPadEmu.cpp
|
||||
--- dolphin.orig/Source/Core/Core/HW/GCPadEmu.cpp 2023-06-01 19:24:09.926002264 +0000
|
||||
+++ dolphin/Source/Core/Core/HW/GCPadEmu.cpp 2023-06-05 18:48:45.531836292 +0000
|
||||
--- dolphin.orig/Source/Core/Core/HW/GCPadEmu.cpp 2023-09-26 17:58:02.817995888 +0000
|
||||
+++ dolphin/Source/Core/Core/HW/GCPadEmu.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -24,6 +24,7 @@ static const u16 button_bitmasks[] = {
|
||||
PAD_BUTTON_X,
|
||||
PAD_BUTTON_Y,
|
||||
|
@ -477,8 +477,8 @@ diff -rupN dolphin.orig/Source/Core/Core/HW/GCPadEmu.cpp dolphin/Source/Core/Cor
|
|||
groups.emplace_back(m_main_stick = new ControllerEmu::OctagonAnalogStick(
|
||||
MAIN_STICK_GROUP, _trans("Control Stick"), MAIN_STICK_GATE_RADIUS));
|
||||
diff -rupN dolphin.orig/Source/Core/Core/HW/GCPadEmu.h dolphin/Source/Core/Core/HW/GCPadEmu.h
|
||||
--- dolphin.orig/Source/Core/Core/HW/GCPadEmu.h 2023-06-01 19:23:58.529631743 +0000
|
||||
+++ dolphin/Source/Core/Core/HW/GCPadEmu.h 2023-06-05 18:48:45.531836292 +0000
|
||||
--- dolphin.orig/Source/Core/Core/HW/GCPadEmu.h 2023-09-26 17:58:02.817995888 +0000
|
||||
+++ dolphin/Source/Core/Core/HW/GCPadEmu.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
static constexpr const char* X_BUTTON = "X";
|
||||
static constexpr const char* Y_BUTTON = "Y";
|
||||
|
@ -488,9 +488,9 @@ diff -rupN dolphin.orig/Source/Core/Core/HW/GCPadEmu.h dolphin/Source/Core/Core/
|
|||
|
||||
// i18n: The left trigger button (labeled L on real controllers)
|
||||
diff -rupN dolphin.orig/Source/Core/DolphinLib.props dolphin/Source/Core/DolphinLib.props
|
||||
--- dolphin.orig/Source/Core/DolphinLib.props 2023-06-01 19:24:09.942002785 +0000
|
||||
+++ dolphin/Source/Core/DolphinLib.props 2023-06-05 18:48:45.483834756 +0000
|
||||
@@ -1219,6 +1219,7 @@
|
||||
--- dolphin.orig/Source/Core/DolphinLib.props 2023-09-26 17:58:02.829996165 +0000
|
||||
+++ dolphin/Source/Core/DolphinLib.props 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -1207,6 +1207,7 @@
|
||||
<ClCompile Include="VideoBackends\Vulkan\VKPerfQuery.cpp" />
|
||||
<ClCompile Include="VideoBackends\Vulkan\VKPipeline.cpp" />
|
||||
<ClCompile Include="VideoBackends\Vulkan\VKRenderer.cpp" />
|
||||
|
@ -499,8 +499,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinLib.props dolphin/Source/Core/Dolphin
|
|||
<ClCompile Include="VideoBackends\Vulkan\VKStreamBuffer.cpp" />
|
||||
<ClCompile Include="VideoBackends\Vulkan\VKSwapChain.cpp" />
|
||||
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/CMakeLists.txt dolphin/Source/Core/DolphinNoGUI/CMakeLists.txt
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/CMakeLists.txt 2023-06-01 19:24:09.942002785 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/CMakeLists.txt 2023-06-05 18:48:45.571837571 +0000
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/CMakeLists.txt 2023-09-26 17:58:02.833996257 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/CMakeLists.txt 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -17,6 +17,22 @@ if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux"
|
||||
target_sources(dolphin-nogui PRIVATE PlatformFBDev.cpp)
|
||||
endif()
|
||||
|
@ -525,8 +525,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/CMakeLists.txt dolphin/Source/C
|
|||
|
||||
target_link_libraries(dolphin-nogui
|
||||
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/MainNoGUI.cpp dolphin/Source/Core/DolphinNoGUI/MainNoGUI.cpp
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/MainNoGUI.cpp 2023-06-01 19:24:09.942002785 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/MainNoGUI.cpp 2023-06-05 18:48:45.571837571 +0000
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/MainNoGUI.cpp 2023-09-26 17:58:02.833996257 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/MainNoGUI.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -155,6 +155,11 @@ static std::unique_ptr<Platform> GetPlat
|
||||
{
|
||||
std::string platform_name = static_cast<const char*>(options.get("platform"));
|
||||
|
@ -551,8 +551,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/MainNoGUI.cpp dolphin/Source/Co
|
|||
|
||||
optparse::Values& options = CommandLineParse::ParseArguments(parser.get(), argc, argv);
|
||||
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/Platform.h dolphin/Source/Core/DolphinNoGUI/Platform.h
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/Platform.h 2023-06-01 19:23:58.553632524 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/Platform.h 2023-06-05 18:48:45.571837571 +0000
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/Platform.h 2023-09-26 17:58:02.833996257 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/Platform.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -35,6 +35,10 @@ public:
|
||||
static std::unique_ptr<Platform> CreateX11Platform();
|
||||
#endif
|
||||
|
@ -566,8 +566,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/Platform.h dolphin/Source/Core/
|
|||
#endif
|
||||
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp dolphin/Source/Core/DolphinNoGUI/PlatformWayland.cpp
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/PlatformWayland.cpp 2023-06-07 14:37:14.927874203 +0000
|
||||
@@ -0,0 +1,371 @@
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/PlatformWayland.cpp 2023-09-26 18:27:27.334792936 +0000
|
||||
@@ -0,0 +1,364 @@
|
||||
+// Copyright 2018 Dolphin Emulator Project
|
||||
+// Licensed under GPLv2+
|
||||
+// Refer to the license.txt file included.
|
||||
|
@ -791,13 +791,6 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp dolphin/Sou
|
|||
+ xdg_toplevel_set_title(m_xdg_toplevel, string.c_str());
|
||||
+}
|
||||
+
|
||||
+auto ShowEmulationSpeed = []() {
|
||||
+ const float emulation_speed = Config::Get(Config::MAIN_EMULATION_SPEED);
|
||||
+ OSD::AddMessage(emulation_speed <= 0 ?
|
||||
+ "Emulation Speed: Unlimited" :
|
||||
+ fmt::format("Emulation Speed: {}%", std::lround(emulation_speed * 100.f)));
|
||||
+};
|
||||
+
|
||||
+void PlatformWayland::MainLoop()
|
||||
+{
|
||||
+ while (IsRunning())
|
||||
|
@ -899,13 +892,13 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp dolphin/Sou
|
|||
+ auto speed = Config::Get(Config::MAIN_EMULATION_SPEED) + 1.0;
|
||||
+ speed = (speed >= 0.95 && speed <= 1.05) ? 1.0 : speed;
|
||||
+ Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
|
||||
+ ShowEmulationSpeed();
|
||||
+ OSD::AddMessage("Fast Forward: ON");
|
||||
+ fforward = 1;
|
||||
+ } else {
|
||||
+ auto speed = Config::Get(Config::MAIN_EMULATION_SPEED) - 1.0;
|
||||
+ speed = (speed <= 0 || (speed >= 0.95 && speed <= 1.05)) ? 1.0 : speed;
|
||||
+ Config::SetCurrent(Config::MAIN_EMULATION_SPEED, speed);
|
||||
+ ShowEmulationSpeed();
|
||||
+ OSD::AddMessage("Fast Forward: OFF");
|
||||
+ fforward = 0;
|
||||
+ }
|
||||
+ hotkey = 0;
|
||||
|
@ -940,8 +933,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformWayland.cpp dolphin/Sou
|
|||
+ return std::make_unique<PlatformWayland>();
|
||||
+}
|
||||
diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformX11.cpp dolphin/Source/Core/DolphinNoGUI/PlatformX11.cpp
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/PlatformX11.cpp 2023-06-01 19:24:09.942002785 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/PlatformX11.cpp 2023-06-05 18:48:45.571837571 +0000
|
||||
--- dolphin.orig/Source/Core/DolphinNoGUI/PlatformX11.cpp 2023-09-26 17:58:02.833996257 +0000
|
||||
+++ dolphin/Source/Core/DolphinNoGUI/PlatformX11.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -57,8 +57,8 @@ private:
|
||||
#endif
|
||||
int m_window_x = Config::Get(Config::MAIN_RENDER_WINDOW_XPOS);
|
||||
|
@ -987,8 +980,8 @@ diff -rupN dolphin.orig/Source/Core/DolphinNoGUI/PlatformX11.cpp dolphin/Source/
|
|||
break;
|
||||
}
|
||||
diff -rupN dolphin.orig/Source/Core/InputCommon/GCPadStatus.h dolphin/Source/Core/InputCommon/GCPadStatus.h
|
||||
--- dolphin.orig/Source/Core/InputCommon/GCPadStatus.h 2023-06-01 19:23:58.569633044 +0000
|
||||
+++ dolphin/Source/Core/InputCommon/GCPadStatus.h 2023-06-05 18:48:45.595838339 +0000
|
||||
--- dolphin.orig/Source/Core/InputCommon/GCPadStatus.h 2023-09-26 17:58:02.845996536 +0000
|
||||
+++ dolphin/Source/Core/InputCommon/GCPadStatus.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -26,6 +26,7 @@ enum PadButton
|
||||
PAD_BUTTON_X = 0x0400,
|
||||
PAD_BUTTON_Y = 0x0800,
|
||||
|
@ -998,9 +991,101 @@ diff -rupN dolphin.orig/Source/Core/InputCommon/GCPadStatus.h dolphin/Source/Cor
|
|||
|
||||
struct GCPadStatus
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp dolphin/Source/Core/VideoBackends/OGL/OGLRender.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp 2023-06-01 19:24:09.954003175 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/OGL/OGLRender.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
@@ -1079,7 +1079,7 @@ void Renderer::CheckForSurfaceChange()
|
||||
--- dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/OGL/OGLRender.cpp 2023-09-26 21:41:39.568275473 +0000
|
||||
@@ -471,11 +471,7 @@ Renderer::Renderer(std::unique_ptr<GLCon
|
||||
g_ogl_config.bSupportsDebug =
|
||||
GLExtensions::Supports("GL_KHR_debug") || GLExtensions::Supports("GL_ARB_debug_output");
|
||||
g_ogl_config.bSupportsTextureStorage = GLExtensions::Supports("GL_ARB_texture_storage");
|
||||
- g_ogl_config.bSupports3DTextureStorageMultisample =
|
||||
- GLExtensions::Supports("GL_ARB_texture_storage_multisample") ||
|
||||
- GLExtensions::Supports("GL_OES_texture_storage_multisample_2d_array");
|
||||
- g_ogl_config.bSupports2DTextureStorageMultisample =
|
||||
- GLExtensions::Supports("GL_ARB_texture_storage_multisample");
|
||||
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageNone;
|
||||
g_ogl_config.bSupportsImageLoadStore = GLExtensions::Supports("GL_ARB_shader_image_load_store");
|
||||
g_ogl_config.bSupportsConservativeDepth = GLExtensions::Supports("GL_ARB_conservative_depth");
|
||||
g_ogl_config.bSupportsAniso = GLExtensions::Supports("GL_EXT_texture_filter_anisotropic");
|
||||
@@ -506,9 +502,10 @@ Renderer::Renderer(std::unique_ptr<GLCon
|
||||
|
||||
if (m_main_gl_context->IsGLES())
|
||||
{
|
||||
- g_ogl_config.SupportedESPointSize = GLExtensions::Supports("GL_OES_geometry_point_size") ? 1 :
|
||||
- GLExtensions::Supports("GL_EXT_geometry_point_size") ? 2 :
|
||||
- 0;
|
||||
+ g_ogl_config.SupportedESPointSize =
|
||||
+ GLExtensions::Supports("GL_OES_geometry_point_size") ? EsPointSizeType::PointSizeOes :
|
||||
+ GLExtensions::Supports("GL_EXT_geometry_point_size") ? EsPointSizeType::PointSizeExt :
|
||||
+ EsPointSizeType::PointSizeNone;
|
||||
g_ogl_config.SupportedESTextureBuffer =
|
||||
GLExtensions::Supports("VERSION_GLES_3_2") ? EsTexbufType::TexbufCore :
|
||||
GLExtensions::Supports("GL_OES_texture_buffer") ? EsTexbufType::TexbufOes :
|
||||
@@ -548,21 +545,16 @@ Renderer::Renderer(std::unique_ptr<GLCon
|
||||
g_Config.backend_info.bSupportsGeometryShaders = g_ogl_config.bSupportsAEP;
|
||||
g_Config.backend_info.bSupportsComputeShaders = true;
|
||||
g_Config.backend_info.bSupportsGSInstancing =
|
||||
- g_Config.backend_info.bSupportsGeometryShaders && g_ogl_config.SupportedESPointSize > 0;
|
||||
+ g_Config.backend_info.bSupportsGeometryShaders &&
|
||||
+ g_ogl_config.SupportedESPointSize != EsPointSizeType::PointSizeNone;
|
||||
g_Config.backend_info.bSupportsSSAA = g_ogl_config.bSupportsAEP;
|
||||
g_Config.backend_info.bSupportsFragmentStoresAndAtomics = true;
|
||||
g_ogl_config.bSupportsMSAA = true;
|
||||
g_ogl_config.bSupportsTextureStorage = true;
|
||||
- g_ogl_config.bSupports2DTextureStorageMultisample = true;
|
||||
+ if (GLExtensions::Supports("GL_OES_texture_storage_multisample_2d_array"))
|
||||
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageOes;
|
||||
g_Config.backend_info.bSupportsBitfield = true;
|
||||
g_Config.backend_info.bSupportsDynamicSamplerIndexing = g_ogl_config.bSupportsAEP;
|
||||
- if (g_ActiveConfig.stereo_mode != StereoMode::Off && g_ActiveConfig.iMultisamples > 1 &&
|
||||
- !g_ogl_config.bSupports3DTextureStorageMultisample)
|
||||
- {
|
||||
- // GLES 3.1 can't support stereo rendering and MSAA
|
||||
- OSD::AddMessage("MSAA Stereo rendering isn't supported by your GPU.", 10000);
|
||||
- Config::SetCurrent(Config::GFX_MSAA, UINT32_C(1));
|
||||
- }
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -572,7 +564,8 @@ Renderer::Renderer(std::unique_ptr<GLCon
|
||||
g_ogl_config.bSupportsImageLoadStore = true;
|
||||
g_Config.backend_info.bSupportsGeometryShaders = true;
|
||||
g_Config.backend_info.bSupportsComputeShaders = true;
|
||||
- g_Config.backend_info.bSupportsGSInstancing = g_ogl_config.SupportedESPointSize > 0;
|
||||
+ g_Config.backend_info.bSupportsGSInstancing =
|
||||
+ g_ogl_config.SupportedESPointSize != EsPointSizeType::PointSizeNone;
|
||||
g_Config.backend_info.bSupportsPaletteConversion = true;
|
||||
g_Config.backend_info.bSupportsSSAA = true;
|
||||
g_Config.backend_info.bSupportsFragmentStoresAndAtomics = true;
|
||||
@@ -581,8 +574,7 @@ Renderer::Renderer(std::unique_ptr<GLCon
|
||||
g_ogl_config.bSupportsDebug = true;
|
||||
g_ogl_config.bSupportsMSAA = true;
|
||||
g_ogl_config.bSupportsTextureStorage = true;
|
||||
- g_ogl_config.bSupports2DTextureStorageMultisample = true;
|
||||
- g_ogl_config.bSupports3DTextureStorageMultisample = true;
|
||||
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageCore;
|
||||
g_Config.backend_info.bSupportsBitfield = true;
|
||||
g_Config.backend_info.bSupportsDynamicSamplerIndexing = true;
|
||||
g_Config.backend_info.bSupportsSettingObjectNames = true;
|
||||
@@ -590,6 +582,9 @@ Renderer::Renderer(std::unique_ptr<GLCon
|
||||
}
|
||||
else
|
||||
{
|
||||
+ if (GLExtensions::Supports("GL_ARB_texture_storage_multisample"))
|
||||
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageCore;
|
||||
+
|
||||
if (GLExtensions::Version() < 300)
|
||||
{
|
||||
PanicAlertFmtT("GPU: OGL ERROR: Need at least GLSL 1.30\n"
|
||||
@@ -628,7 +623,7 @@ Renderer::Renderer(std::unique_ptr<GLCon
|
||||
{
|
||||
// TODO: We should really parse the GL_SHADING_LANGUAGE_VERSION token.
|
||||
g_ogl_config.eSupportedGLSLVersion = Glsl430;
|
||||
- g_ogl_config.bSupportsTextureStorage = true;
|
||||
+ g_ogl_config.SupportedMultisampleTexStorage = MultisampleTexStorageType::TexStorageCore;
|
||||
g_ogl_config.bSupportsImageLoadStore = true;
|
||||
g_Config.backend_info.bSupportsSSAA = true;
|
||||
g_Config.backend_info.bSupportsSettingObjectNames = true;
|
||||
@@ -1079,7 +1074,7 @@ void Renderer::CheckForSurfaceChange()
|
||||
if (!m_surface_changed.TestAndClear())
|
||||
return;
|
||||
|
||||
|
@ -1009,7 +1094,7 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp dolphin/Sour
|
|||
m_new_surface_handle = nullptr;
|
||||
|
||||
// With a surface change, the window likely has new dimensions.
|
||||
@@ -1093,7 +1093,7 @@ void Renderer::CheckForSurfaceResize()
|
||||
@@ -1093,7 +1088,7 @@ void Renderer::CheckForSurfaceResize()
|
||||
if (!m_surface_resized.TestAndClear())
|
||||
return;
|
||||
|
||||
|
@ -1018,9 +1103,139 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.cpp dolphin/Sour
|
|||
m_backbuffer_width = m_main_gl_context->GetBackBufferWidth();
|
||||
m_backbuffer_height = m_main_gl_context->GetBackBufferHeight();
|
||||
m_system_framebuffer->UpdateDimensions(m_backbuffer_width, m_backbuffer_height);
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.h dolphin/Source/Core/VideoBackends/OGL/OGLRender.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/OGL/OGLRender.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/OGL/OGLRender.h 2023-09-26 21:32:17.039048706 +0000
|
||||
@@ -31,6 +31,14 @@ enum GlslVersion
|
||||
GlslEs310, // GLES 3.1
|
||||
GlslEs320, // GLES 3.2
|
||||
};
|
||||
+
|
||||
+enum class EsPointSizeType
|
||||
+{
|
||||
+ PointSizeNone,
|
||||
+ PointSizeOes,
|
||||
+ PointSizeExt,
|
||||
+};
|
||||
+
|
||||
enum class EsTexbufType
|
||||
{
|
||||
TexbufNone,
|
||||
@@ -46,6 +54,13 @@ enum class EsFbFetchType
|
||||
FbFetchArm,
|
||||
};
|
||||
|
||||
+enum class MultisampleTexStorageType
|
||||
+{
|
||||
+ TexStorageNone,
|
||||
+ TexStorageCore,
|
||||
+ TexStorageOes,
|
||||
+};
|
||||
+
|
||||
// ogl-only config, so not in VideoConfig.h
|
||||
struct VideoConfig
|
||||
{
|
||||
@@ -60,11 +75,10 @@ struct VideoConfig
|
||||
bool bSupportsAEP;
|
||||
bool bSupportsDebug;
|
||||
bool bSupportsCopySubImage;
|
||||
- u8 SupportedESPointSize;
|
||||
+ EsPointSizeType SupportedESPointSize;
|
||||
EsTexbufType SupportedESTextureBuffer;
|
||||
bool bSupportsTextureStorage;
|
||||
- bool bSupports2DTextureStorageMultisample;
|
||||
- bool bSupports3DTextureStorageMultisample;
|
||||
+ MultisampleTexStorageType SupportedMultisampleTexStorage;
|
||||
bool bSupportsConservativeDepth;
|
||||
bool bSupportsImageLoadStore;
|
||||
bool bSupportsAniso;
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/OGLTexture.cpp dolphin/Source/Core/VideoBackends/OGL/OGLTexture.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/OGL/OGLTexture.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/OGL/OGLTexture.cpp 2023-09-26 21:34:37.398249032 +0000
|
||||
@@ -128,12 +128,18 @@ OGLTexture::OGLTexture(const TextureConf
|
||||
GLenum gl_internal_format = GetGLInternalFormatForTextureFormat(m_config.format, true);
|
||||
if (tex_config.IsMultisampled())
|
||||
{
|
||||
- if (g_ogl_config.bSupportsTextureStorage)
|
||||
+ ASSERT(g_ogl_config.bSupportsMSAA);
|
||||
+ if (g_ogl_config.SupportedMultisampleTexStorage != MultisampleTexStorageType::TexStorageNone)
|
||||
+ {
|
||||
glTexStorage3DMultisample(target, tex_config.samples, gl_internal_format, m_config.width,
|
||||
m_config.height, m_config.layers, GL_FALSE);
|
||||
+ }
|
||||
else
|
||||
+ {
|
||||
+ ASSERT(!g_ogl_config.bIsES);
|
||||
glTexImage3DMultisample(target, tex_config.samples, gl_internal_format, m_config.width,
|
||||
m_config.height, m_config.layers, GL_FALSE);
|
||||
+ }
|
||||
}
|
||||
else if (g_ogl_config.bSupportsTextureStorage)
|
||||
{
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp dolphin/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/OGL/ProgramShaderCache.cpp 2023-09-26 21:37:11.705777665 +0000
|
||||
@@ -661,12 +661,13 @@ void ProgramShaderCache::CreateHeader()
|
||||
std::string SupportedESTextureBuffer;
|
||||
switch (g_ogl_config.SupportedESPointSize)
|
||||
{
|
||||
- case 1:
|
||||
+ case EsPointSizeType::PointSizeOes:
|
||||
SupportedESPointSize = "#extension GL_OES_geometry_point_size : enable";
|
||||
break;
|
||||
- case 2:
|
||||
+ case EsPointSizeType::PointSizeExt:
|
||||
SupportedESPointSize = "#extension GL_EXT_geometry_point_size : enable";
|
||||
break;
|
||||
+ case EsPointSizeType::PointSizeNone:
|
||||
default:
|
||||
SupportedESPointSize = "";
|
||||
break;
|
||||
@@ -718,6 +719,13 @@ void ProgramShaderCache::CreateHeader()
|
||||
break;
|
||||
}
|
||||
|
||||
+ // The sampler2DMSArray keyword is reserved in GLSL ES 3.0 and 3.1, but is available in 3.2 and
|
||||
+ // with GL_OES_texture_storage_multisample_2d_array for 3.1.
|
||||
+ // See https://bugs.dolphin-emu.org/issues/13198.
|
||||
+ const bool use_multisample_2d_array_precision =
|
||||
+ v >= GlslEs320 ||
|
||||
+ g_ogl_config.SupportedMultisampleTexStorage != MultisampleTexStorageType::TexStorageNone;
|
||||
+
|
||||
std::string shader_shuffle_string;
|
||||
if (g_ogl_config.bSupportsShaderThreadShuffleNV)
|
||||
{
|
||||
@@ -762,6 +770,7 @@ void ProgramShaderCache::CreateHeader()
|
||||
"{}\n" // shader thread shuffle
|
||||
"{}\n" // derivative control
|
||||
"{}\n" // query levels
|
||||
+ "{}\n" // OES multisample texture storage
|
||||
|
||||
// Precision defines for GLSL ES
|
||||
"{}\n"
|
||||
@@ -847,12 +856,18 @@ void ProgramShaderCache::CreateHeader()
|
||||
g_ActiveConfig.backend_info.bSupportsTextureQueryLevels ?
|
||||
"#extension GL_ARB_texture_query_levels : enable" :
|
||||
"",
|
||||
+ // Note: GL_ARB_texture_storage_multisample doesn't have an #extension, as it doesn't
|
||||
+ // need to change GLSL, but on GLES 3.1 sampler2DMSArray is a reserved keyword unless
|
||||
+ // the extension is enabled. Thus, we don't need to check TexStorageCore/have an ARB version.
|
||||
+ g_ogl_config.SupportedMultisampleTexStorage == MultisampleTexStorageType::TexStorageOes ?
|
||||
+ "#extension GL_OES_texture_storage_multisample_2d_array : enable" :
|
||||
+ "",
|
||||
is_glsles ? "precision highp float;" : "", is_glsles ? "precision highp int;" : "",
|
||||
is_glsles ? "precision highp sampler2DArray;" : "",
|
||||
(is_glsles && g_ActiveConfig.backend_info.bSupportsPaletteConversion) ?
|
||||
"precision highp usamplerBuffer;" :
|
||||
"",
|
||||
- v > GlslEs300 ? "precision highp sampler2DMSArray;" : "",
|
||||
+ use_multisample_2d_array_precision ? "precision highp sampler2DMSArray;" : "",
|
||||
v >= GlslEs310 ? "precision highp image2DArray;" : "");
|
||||
}
|
||||
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.cpp dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.cpp 2023-06-01 19:23:58.577633304 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -32,6 +32,16 @@ bool SWOGLWindow::IsHeadless() const
|
||||
return m_gl_context->IsHeadless();
|
||||
}
|
||||
|
@ -1058,8 +1273,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.cpp dolph
|
|||
GLsizei glWidth = (GLsizei)m_gl_context->GetBackBufferWidth();
|
||||
GLsizei glHeight = (GLsizei)m_gl_context->GetBackBufferHeight();
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.h dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.h 2023-06-01 19:23:58.577633304 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Software/SWOGLWindow.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -20,6 +20,10 @@ public:
|
||||
GLContext* GetContext() const { return m_gl_context.get(); }
|
||||
bool IsHeadless() const;
|
||||
|
@ -1072,8 +1287,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWOGLWindow.h dolphin
|
|||
void ShowImage(const AbstractTexture* image, const MathUtil::Rectangle<int>& xfb_region);
|
||||
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.cpp dolphin/Source/Core/VideoBackends/Software/SWRenderer.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.cpp 2023-06-01 19:24:09.954003175 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Software/SWRenderer.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Software/SWRenderer.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -60,17 +60,17 @@ SWRenderer::CreateFramebuffer(AbstractTe
|
||||
static_cast<SWTexture*>(depth_attachment));
|
||||
}
|
||||
|
@ -1128,8 +1343,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.cpp dolphi
|
|||
{
|
||||
u32 value = 0;
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.h dolphin/Source/Core/VideoBackends/Software/SWRenderer.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.h 2023-06-01 19:24:09.954003175 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Software/SWRenderer.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Software/SWRenderer.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -29,7 +29,7 @@ public:
|
||||
std::unique_ptr<AbstractFramebuffer>
|
||||
CreateFramebuffer(AbstractTexture* color_attachment, AbstractTexture* depth_attachment) override;
|
||||
|
@ -1149,8 +1364,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Software/SWRenderer.h dolphin/
|
|||
};
|
||||
} // namespace SW
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CMakeLists.txt dolphin/Source/Core/VideoBackends/Vulkan/CMakeLists.txt
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CMakeLists.txt 2023-06-01 19:24:09.954003175 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/CMakeLists.txt 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CMakeLists.txt 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/CMakeLists.txt 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -35,6 +35,8 @@ add_library(videovulkan
|
||||
VulkanContext.h
|
||||
VulkanLoader.cpp
|
||||
|
@ -1161,8 +1376,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CMakeLists.txt dolphin/
|
|||
|
||||
target_link_libraries(videovulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp 2023-06-01 19:24:09.954003175 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -10,24 +10,24 @@
|
||||
#include "Common/MsgHandler.h"
|
||||
#include "Common/Thread.h"
|
||||
|
@ -1562,8 +1777,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.cp
|
|||
-std::unique_ptr<CommandBufferManager> g_command_buffer_mgr;
|
||||
} // namespace Vulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h 2023-06-01 19:24:09.954003175 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -22,10 +22,12 @@
|
||||
|
||||
namespace Vulkan
|
||||
|
@ -1703,8 +1918,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/CommandBufferManager.h
|
|||
|
||||
} // namespace Vulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/Constants.h dolphin/Source/Core/VideoBackends/Vulkan/Constants.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/Constants.h 2023-06-01 19:24:09.954003175 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/Constants.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/Constants.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/Constants.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -12,7 +12,7 @@
|
||||
namespace Vulkan
|
||||
{
|
||||
|
@ -1715,8 +1930,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/Constants.h dolphin/Sou
|
|||
// Number of frames in flight, will be used to decide how many descriptor pools are used
|
||||
constexpr size_t NUM_FRAMES_IN_FLIGHT = 2;
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp 2023-06-01 19:24:09.954003175 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -389,6 +389,8 @@ VkSampler ObjectCache::GetSampler(const
|
||||
VkRenderPass ObjectCache::GetRenderPass(VkFormat color_format, VkFormat depth_format,
|
||||
u32 multisamples, VkAttachmentLoadOp load_op)
|
||||
|
@ -1736,8 +1951,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.cpp dolphin
|
|||
vkDestroyRenderPass(g_vulkan_context->GetDevice(), it.second, nullptr);
|
||||
m_render_pass_cache.clear();
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.h dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.h 2023-06-01 19:23:58.577633304 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/ObjectCache.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -7,6 +7,7 @@
|
||||
#include <cstddef>
|
||||
#include <map>
|
||||
|
@ -1755,8 +1970,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/ObjectCache.h dolphin/S
|
|||
std::map<RenderPassCacheKey, VkRenderPass> m_render_pass_cache;
|
||||
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp dolphin/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp 2023-06-01 19:23:58.577633304 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "Common/Assert.h"
|
||||
|
@ -1778,8 +1993,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StagingBuffer.cpp dolph
|
|||
|
||||
void StagingBuffer::BufferMemoryBarrier(VkCommandBuffer command_buffer, VkBuffer buffer,
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.cpp dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -16,59 +16,93 @@
|
||||
|
||||
namespace Vulkan
|
||||
|
@ -2179,8 +2394,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.cpp dolphi
|
|||
g_object_cache->GetPipelineLayout(PIPELINE_LAYOUT_COMPUTE), 0, 1,
|
||||
&m_compute_descriptor_set, 1, &m_bindings.utility_ubo_offset);
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.h dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.h 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/StateTracker.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -13,28 +13,24 @@
|
||||
|
||||
namespace Vulkan
|
||||
|
@ -2256,8 +2471,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/StateTracker.h dolphin/
|
|||
};
|
||||
} // namespace Vulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "VideoBackends/Vulkan/StagingBuffer.h"
|
||||
#include "VideoBackends/Vulkan/StateTracker.h"
|
||||
|
@ -2395,8 +2610,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKBoundingBox.cpp dolph
|
|||
|
||||
bool VKBoundingBox::CreateGPUBuffer()
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKMain.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKMain.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKMain.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKMain.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKMain.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKMain.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -18,6 +18,7 @@
|
||||
#include "VideoBackends/Vulkan/VKVertexManager.h"
|
||||
#include "VideoBackends/Vulkan/VulkanContext.h"
|
||||
|
@ -2481,8 +2696,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKMain.cpp dolphin/Sour
|
|||
ShutdownShared();
|
||||
UnloadVulkanLibrary();
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "Common/Logging/Log.h"
|
||||
#include "Common/MsgHandler.h"
|
||||
|
@ -2602,8 +2817,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKPerfQuery.cpp dolphin
|
|||
Renderer::GetInstance()->ExecuteCommandBuffer(true, blocking);
|
||||
}
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -31,6 +31,7 @@
|
||||
#include "VideoBackends/Vulkan/VKVertexFormat.h"
|
||||
#include "VideoBackends/Vulkan/VulkanContext.h"
|
||||
|
@ -3325,7 +3540,7 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKRenderer.cpp dolphin/
|
|||
} // namespace Vulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -0,0 +1,155 @@
|
||||
+// Copyright 2022 Dolphin Emulator Project
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
@ -3484,7 +3699,7 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.cpp dolphin
|
|||
+} // namespace Vulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.h dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.h 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.h 2023-06-05 18:48:45.615838979 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKScheduler.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -0,0 +1,160 @@
|
||||
+// Copyright 2022 Dolphin Emulator Project
|
||||
+// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
@ -3647,8 +3862,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKScheduler.h dolphin/S
|
|||
+extern std::unique_ptr<Scheduler> g_scheduler;
|
||||
+} // namespace Vulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp 2023-06-01 19:23:58.577633304 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "Common/MsgHandler.h"
|
||||
|
||||
|
@ -3722,8 +3937,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKStreamBuffer.cpp dolp
|
|||
m_current_offset == iter->second ? m_tracked_fences.end() : ++iter);
|
||||
m_current_offset = new_offset;
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -13,9 +13,9 @@
|
||||
|
||||
#include "VideoBackends/Vulkan/CommandBufferManager.h"
|
||||
|
@ -3888,8 +4103,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.cpp dolphin
|
|||
if (m_surface == VK_NULL_HANDLE)
|
||||
return false;
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.h dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.h 2023-06-01 19:23:58.577633304 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKSwapChain.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -3,6 +3,7 @@
|
||||
|
||||
#pragma once
|
||||
|
@ -3943,8 +4158,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKSwapChain.h dolphin/S
|
|||
u32 m_height = 0;
|
||||
u32 m_layers = 0;
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.cpp 2023-06-01 19:44:08.124503603 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "VideoBackends/Vulkan/VKStreamBuffer.h"
|
||||
#include "VideoBackends/Vulkan/VulkanContext.h"
|
||||
|
@ -4452,8 +4667,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.cpp dolphin/S
|
|||
}
|
||||
} // namespace Vulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.h dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.h 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKTexture.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -67,8 +67,8 @@ public:
|
||||
// irrelevant and will not be loaded.
|
||||
void OverrideImageLayout(VkImageLayout new_layout);
|
||||
|
@ -4466,8 +4681,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKTexture.h dolphin/Sou
|
|||
private:
|
||||
bool CreateView(VkImageViewType type);
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp dolphin/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "VideoBackends/Vulkan/CommandBufferManager.h"
|
||||
#include "VideoBackends/Vulkan/StateTracker.h"
|
||||
|
@ -4662,8 +4877,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VKVertexManager.cpp dol
|
|||
}
|
||||
} // namespace Vulkan
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp dolphin/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -274,6 +274,13 @@ bool VulkanContext::SelectInstanceExtens
|
||||
return false;
|
||||
}
|
||||
|
@ -4679,8 +4894,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanContext.cpp dolph
|
|||
if (wstype == WindowSystemType::Android &&
|
||||
!AddExtension(VK_KHR_ANDROID_SURFACE_EXTENSION_NAME, true))
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl dolphin/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl 2023-06-01 19:23:58.577633304 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -49,6 +49,11 @@ VULKAN_INSTANCE_ENTRY_POINT(vkCreateXlib
|
||||
VULKAN_INSTANCE_ENTRY_POINT(vkGetPhysicalDeviceXlibPresentationSupportKHR, false)
|
||||
#endif
|
||||
|
@ -4694,8 +4909,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanEntryPoints.inl d
|
|||
VULKAN_INSTANCE_ENTRY_POINT(vkCreateAndroidSurfaceKHR, false)
|
||||
#endif
|
||||
diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanLoader.h dolphin/Source/Core/VideoBackends/Vulkan/VulkanLoader.h
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanLoader.h 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanLoader.h 2023-06-05 18:48:45.615838979 +0000
|
||||
--- dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanLoader.h 2023-09-26 17:58:02.853996721 +0000
|
||||
+++ dolphin/Source/Core/VideoBackends/Vulkan/VulkanLoader.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -13,6 +13,10 @@
|
||||
#define VK_USE_PLATFORM_XLIB_KHR
|
||||
#endif
|
||||
|
@ -4708,8 +4923,8 @@ diff -rupN dolphin.orig/Source/Core/VideoBackends/Vulkan/VulkanLoader.h dolphin/
|
|||
#define VK_USE_PLATFORM_ANDROID_KHR
|
||||
#endif
|
||||
diff -rupN dolphin.orig/Source/Core/VideoCommon/FramebufferManager.cpp dolphin/Source/Core/VideoCommon/FramebufferManager.cpp
|
||||
--- dolphin.orig/Source/Core/VideoCommon/FramebufferManager.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoCommon/FramebufferManager.cpp 2023-06-05 19:16:23.547426723 +0000
|
||||
--- dolphin.orig/Source/Core/VideoCommon/FramebufferManager.cpp 2023-09-26 17:58:02.857996813 +0000
|
||||
+++ dolphin/Source/Core/VideoCommon/FramebufferManager.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -630,7 +630,7 @@ void FramebufferManager::DestroyReadback
|
||||
|
||||
bool FramebufferManager::CreateReadbackFramebuffer()
|
||||
|
@ -4747,8 +4962,8 @@ diff -rupN dolphin.orig/Source/Core/VideoCommon/FramebufferManager.cpp dolphin/S
|
|||
return;
|
||||
}
|
||||
diff -rupN dolphin.orig/Source/Core/VideoCommon/RenderBase.cpp dolphin/Source/Core/VideoCommon/RenderBase.cpp
|
||||
--- dolphin.orig/Source/Core/VideoCommon/RenderBase.cpp 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoCommon/RenderBase.cpp 2023-06-05 20:18:15.508539814 +0000
|
||||
--- dolphin.orig/Source/Core/VideoCommon/RenderBase.cpp 2023-09-26 17:58:02.857996813 +0000
|
||||
+++ dolphin/Source/Core/VideoCommon/RenderBase.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -364,19 +364,24 @@ void Renderer::RenderToXFB(u32 xfbAddr,
|
||||
return;
|
||||
}
|
||||
|
@ -4811,8 +5026,8 @@ diff -rupN dolphin.orig/Source/Core/VideoCommon/RenderBase.cpp dolphin/Source/Co
|
|||
}
|
||||
|
||||
diff -rupN dolphin.orig/Source/Core/VideoCommon/RenderBase.h dolphin/Source/Core/VideoCommon/RenderBase.h
|
||||
--- dolphin.orig/Source/Core/VideoCommon/RenderBase.h 2023-06-01 19:24:09.958003305 +0000
|
||||
+++ dolphin/Source/Core/VideoCommon/RenderBase.h 2023-06-05 19:00:51.760701274 +0000
|
||||
--- dolphin.orig/Source/Core/VideoCommon/RenderBase.h 2023-09-26 17:58:02.857996813 +0000
|
||||
+++ dolphin/Source/Core/VideoCommon/RenderBase.h 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -193,7 +193,8 @@ public:
|
||||
std::tuple<MathUtil::Rectangle<int>, MathUtil::Rectangle<int>>
|
||||
ConvertStereoRectangle(const MathUtil::Rectangle<int>& rc) const;
|
||||
|
@ -4854,8 +5069,8 @@ diff -rupN dolphin.orig/Source/Core/VideoCommon/RenderBase.h dolphin/Source/Core
|
|||
// These will be set on the first call to SetWindowSize.
|
||||
int m_last_window_request_width = 0;
|
||||
diff -rupN dolphin.orig/Source/Core/VideoCommon/TextureCacheBase.cpp dolphin/Source/Core/VideoCommon/TextureCacheBase.cpp
|
||||
--- dolphin.orig/Source/Core/VideoCommon/TextureCacheBase.cpp 2023-06-01 19:24:09.962003435 +0000
|
||||
+++ dolphin/Source/Core/VideoCommon/TextureCacheBase.cpp 2023-06-05 19:37:47.708471335 +0000
|
||||
--- dolphin.orig/Source/Core/VideoCommon/TextureCacheBase.cpp 2023-09-26 17:58:02.857996813 +0000
|
||||
+++ dolphin/Source/Core/VideoCommon/TextureCacheBase.cpp 2023-09-26 18:02:22.836042087 +0000
|
||||
@@ -1046,7 +1046,7 @@ static void SetSamplerState(u32 index, f
|
||||
// that have arbitrary contents, eg. are used for fog effects where the
|
||||
// distance they kick in at is important to preserve at any resolution.
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
frameskip_type = 0
|
||||
frameskip_value = 4
|
||||
safe_frameskip = 0
|
||||
show_frame_counter = 0
|
||||
screen_orientation = 0
|
||||
screen_swap = 0
|
||||
savestate_number = 0
|
||||
fast_forward = 0
|
||||
enable_sound = 1
|
||||
clock_speed = 0
|
||||
threaded_3d = 0
|
||||
mirror_touch = 0
|
||||
compress_savestates = 1
|
||||
savestate_snapshot = 1
|
||||
unzip_roms = 0
|
||||
preload_roms = 0
|
||||
backup_in_savestates = 1
|
||||
ignore_gamecard_limit = 0
|
||||
frame_interval = 0
|
||||
trim_roms = 0
|
||||
fix_main_2d_screen = 0
|
||||
disable_edge_marking = 0
|
||||
interframe_blend = 0
|
||||
hires_3d = 1
|
||||
use_rtc_custom_time = 0
|
||||
rtc_custom_time = 0
|
||||
rtc_system_time = 0
|
||||
slot2_device_type = 0
|
||||
rumble_frames = 3
|
||||
firmware.username = Jelos
|
||||
firmware.language = 1
|
||||
firmware.favorite_color = 0
|
||||
firmware.birthday_month = 1
|
||||
firmware.birthday_day = 1
|
||||
enable_cheats = 1
|
||||
controls_a[CONTROL_INDEX_UP] = 1217
|
||||
controls_a[CONTROL_INDEX_DOWN] = 1153
|
||||
controls_a[CONTROL_INDEX_LEFT] = 1216
|
||||
controls_a[CONTROL_INDEX_RIGHT] = 1152
|
||||
controls_a[CONTROL_INDEX_A] = 65535
|
||||
controls_a[CONTROL_INDEX_B] = 65535
|
||||
controls_a[CONTROL_INDEX_X] = 65535
|
||||
controls_a[CONTROL_INDEX_Y] = 65535
|
||||
controls_a[CONTROL_INDEX_L] = 65535
|
||||
controls_a[CONTROL_INDEX_R] = 65535
|
||||
controls_a[CONTROL_INDEX_START] = 65535
|
||||
controls_a[CONTROL_INDEX_SELECT] = 65535
|
||||
controls_a[CONTROL_INDEX_HINGE] = 65535
|
||||
controls_a[CONTROL_INDEX_TOUCH_CURSOR_UP] = 65535
|
||||
controls_a[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = 65535
|
||||
controls_a[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = 65535
|
||||
controls_a[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = 65535
|
||||
controls_a[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = 65535
|
||||
controls_a[CONTROL_INDEX_MENU] = 65535
|
||||
controls_a[CONTROL_INDEX_SAVE_STATE] = 65535
|
||||
controls_a[CONTROL_INDEX_LOAD_STATE] = 65535
|
||||
controls_a[CONTROL_INDEX_FAST_FORWARD] = 65535
|
||||
controls_a[CONTROL_INDEX_SWAP_SCREENS] = 65535
|
||||
controls_a[CONTROL_INDEX_SWAP_ORIENTATION_A] = 65535
|
||||
controls_a[CONTROL_INDEX_SWAP_ORIENTATION_B] = 65535
|
||||
controls_a[CONTROL_INDEX_LOAD_GAME] = 65535
|
||||
controls_a[CONTROL_INDEX_QUIT] = 65535
|
||||
controls_a[CONTROL_INDEX_FAKE_MICROPHONE] = 65535
|
||||
controls_a[CONTROL_INDEX_UI_UP] = 1217
|
||||
controls_a[CONTROL_INDEX_UI_DOWN] = 1153
|
||||
controls_a[CONTROL_INDEX_UI_LEFT] = 1216
|
||||
controls_a[CONTROL_INDEX_UI_RIGHT] = 1152
|
||||
controls_a[CONTROL_INDEX_UI_SELECT] = 65535
|
||||
controls_a[CONTROL_INDEX_UI_BACK] = 65535
|
||||
controls_a[CONTROL_INDEX_UI_EXIT] = 65535
|
||||
controls_a[CONTROL_INDEX_UI_PAGE_UP] = 65535
|
||||
controls_a[CONTROL_INDEX_UI_PAGE_DOWN] = 65535
|
||||
controls_a[CONTROL_INDEX_UI_SWITCH] = 65535
|
||||
controls_b[CONTROL_INDEX_UP] = 1037
|
||||
controls_b[CONTROL_INDEX_DOWN] = 1038
|
||||
controls_b[CONTROL_INDEX_LEFT] = 1039
|
||||
controls_b[CONTROL_INDEX_RIGHT] = 1040
|
||||
controls_b[CONTROL_INDEX_A] = 1025
|
||||
controls_b[CONTROL_INDEX_B] = 1024
|
||||
controls_b[CONTROL_INDEX_X] = 1026
|
||||
controls_b[CONTROL_INDEX_Y] = 1027
|
||||
controls_b[CONTROL_INDEX_L] = 1028
|
||||
controls_b[CONTROL_INDEX_R] = 1029
|
||||
controls_b[CONTROL_INDEX_START] = 1033
|
||||
controls_b[CONTROL_INDEX_SELECT] = 1032
|
||||
controls_b[CONTROL_INDEX_HINGE] = 65535
|
||||
controls_b[CONTROL_INDEX_TOUCH_CURSOR_UP] = 1219
|
||||
controls_b[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = 1155
|
||||
controls_b[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = 1218
|
||||
controls_b[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = 1154
|
||||
controls_b[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = 1036
|
||||
controls_b[CONTROL_INDEX_MENU] = 1035
|
||||
controls_b[CONTROL_INDEX_SAVE_STATE] = 65535
|
||||
controls_b[CONTROL_INDEX_LOAD_STATE] = 65535
|
||||
controls_b[CONTROL_INDEX_FAST_FORWARD] = 65535
|
||||
controls_b[CONTROL_INDEX_SWAP_SCREENS] = 65535
|
||||
controls_b[CONTROL_INDEX_SWAP_ORIENTATION_A] = 1030
|
||||
controls_b[CONTROL_INDEX_SWAP_ORIENTATION_B] = 1031
|
||||
controls_b[CONTROL_INDEX_LOAD_GAME] = 65535
|
||||
controls_b[CONTROL_INDEX_QUIT] = 65535
|
||||
controls_b[CONTROL_INDEX_FAKE_MICROPHONE] = 65535
|
||||
controls_b[CONTROL_INDEX_UI_UP] = 1037
|
||||
controls_b[CONTROL_INDEX_UI_DOWN] = 1038
|
||||
controls_b[CONTROL_INDEX_UI_LEFT] = 1039
|
||||
controls_b[CONTROL_INDEX_UI_RIGHT] = 1040
|
||||
controls_b[CONTROL_INDEX_UI_SELECT] = 1025
|
||||
controls_b[CONTROL_INDEX_UI_BACK] = 65535
|
||||
controls_b[CONTROL_INDEX_UI_EXIT] = 1024
|
||||
controls_b[CONTROL_INDEX_UI_PAGE_UP] = 65535
|
||||
controls_b[CONTROL_INDEX_UI_PAGE_DOWN] = 65535
|
||||
controls_b[CONTROL_INDEX_UI_SWITCH] = 65535
|
|
@ -321,7 +321,7 @@ Rewind = SDL-0/Back & SDL-0/+LeftTrigger
|
|||
WindowX = 0
|
||||
WindowY = 0
|
||||
WindowWidth = 1920
|
||||
WindowHeight = 1152
|
||||
WindowHeight = 1080
|
||||
|
||||
|
||||
[GameList]
|
||||
|
|
|
@ -9,15 +9,23 @@ PKG_URL="${PKG_SITE}.git"
|
|||
PKG_SHORTDESC="Fast PlayStation 1 emulator for x86-64/AArch32/AArch64 "
|
||||
PKG_TOOLCHAIN="cmake"
|
||||
|
||||
case ${DEVICE} in
|
||||
RK356*)
|
||||
PKG_VERSION="5ab5070d73f1acc51e064bd96be4ba6ce3c06f5c"
|
||||
PKG_PATCH_DIRS+=" legacy"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_DRMKMS=ON -DENABLE_EGL=ON -DUSE_MALI=OFF"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="0798292"
|
||||
PKG_PATCH_DIRS+=" wayland"
|
||||
case ${TARGET_ARCH} in
|
||||
aarch64)
|
||||
case ${DEVICE} in
|
||||
RK356*)
|
||||
PKG_VERSION="5ab5070d73f1acc51e064bd96be4ba6ce3c06f5c"
|
||||
PKG_PATCH_DIRS+=" legacy"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DUSE_DRMKMS=ON -DENABLE_EGL=ON -DUSE_MALI=OFF"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="bfa792ddbff11c102521124f235ccb310cac6e6a"
|
||||
PKG_PATCH_DIRS+=" wayland/${TARGET_ARCH}"
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
x86_64)
|
||||
PKG_VERSION="a45b50c3e996af823d35a6a193458532c4f4316d"
|
||||
PKG_PATCH_DIRS+=" wayland/${TARGET_ARCH}"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -37,6 +45,7 @@ fi
|
|||
if [ "${VULKAN_SUPPORT}" = "yes" ]; then
|
||||
PKG_DEPENDS_TARGET+=" vulkan-loader vulkan-headers"
|
||||
PKG_CMAKE_OPTS_TARGET+=" -DENABLE_VULKAN=ON"
|
||||
else PKG_CMAKE_OPTS_TARGET+=" -DENABLE_VULKAN=OFF"
|
||||
fi
|
||||
|
||||
pre_configure_target() {
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
diff --git a/src/frontend-common/evdev_input_source.cpp b/src/frontend-common/evdev_input_source.cpp
|
||||
index 970e0ca4..480fb0ba 100644
|
||||
--- a/src/frontend-common/evdev_input_source.cpp
|
||||
+++ b/src/frontend-common/evdev_input_source.cpp
|
||||
@@ -328,7 +328,7 @@ std::optional<InputBindingKey> EvdevInputSource::ParseKeyString(const std::strin
|
||||
if (abinding == axis.name)
|
||||
{
|
||||
key.source_subtype = InputSubclass::ControllerAxis;
|
||||
- key.negative = (binding[0] == '-');
|
||||
+ // key.negative = (binding[0] == '-');
|
||||
key.data = axis.id;
|
||||
return key;
|
||||
}
|
||||
@@ -365,7 +365,8 @@ std::string EvdevInputSource::ConvertKeyToString(InputBindingKey key)
|
||||
{
|
||||
if (static_cast<u32>(axis.id) == key.data)
|
||||
{
|
||||
- ret = fmt::format("{}/{}{}", cd->uniq, key.negative ? "-" : "+", axis.name);
|
||||
+ //ret = fmt::format("{}/{}{}", cd->uniq, key.negative ? "-" : "+", axis.name);
|
||||
+ ret = fmt::format("{}/{}{}", cd->uniq, axis.name);
|
||||
break;
|
||||
}
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
diff --git a/src/frontend-common/platform_misc_unix.cpp b/src/frontend-common/platform_misc_unix.cpp
|
||||
diff --git a/src/util/platform_misc_unix.cpp b/src/util/platform_misc_unix.cpp
|
||||
index 1f7ae9ec..e0487476 100644
|
||||
--- a/src/frontend-common/platform_misc_unix.cpp
|
||||
+++ b/src/frontend-common/platform_misc_unix.cpp
|
||||
--- a/src/util/platform_misc_unix.cpp
|
||||
+++ b/src/util/platform_misc_unix.cpp
|
||||
@@ -24,12 +24,12 @@ static bool SetScreensaverInhibitX11(bool inhibit, const WindowInfo& wi)
|
||||
char* argv[4] = {command.GetWriteableCharArray(), operation.GetWriteableCharArray(), id.GetWriteableCharArray(),
|
||||
nullptr};
|
|
@ -0,0 +1,22 @@
|
|||
diff -rupN duckstation-sa.orig/src/duckstation-nogui/wayland_nogui_platform.cpp duckstation-sa/src/duckstation-nogui/wayland_nogui_platform.cpp
|
||||
--- duckstation-sa.orig/src/duckstation-nogui/wayland_nogui_platform.cpp 2023-09-28 19:52:20.630654047 +0000
|
||||
+++ duckstation-sa/src/duckstation-nogui/wayland_nogui_platform.cpp 2023-09-28 19:52:43.891283524 +0000
|
||||
@@ -7,7 +7,6 @@
|
||||
#include "common/string_util.h"
|
||||
#include "common/threading.h"
|
||||
#include "core/host.h"
|
||||
-#include "core/host_settings.h"
|
||||
#include "nogui_host.h"
|
||||
#include "nogui_platform.h"
|
||||
|
||||
diff -rupN duckstation-sa.orig/src/duckstation-nogui/x11_nogui_platform.h duckstation-sa/src/duckstation-nogui/x11_nogui_platform.h
|
||||
--- duckstation-sa.orig/src/duckstation-nogui/x11_nogui_platform.h 2023-09-28 19:52:20.630654047 +0000
|
||||
+++ duckstation-sa/src/duckstation-nogui/x11_nogui_platform.h 2023-09-28 19:53:51.529094295 +0000
|
||||
@@ -12,7 +12,6 @@
|
||||
#include "common/string_util.h"
|
||||
#include "common/threading.h"
|
||||
#include "core/host.h"
|
||||
-#include "core/host_settings.h"
|
||||
#include "nogui_host.h"
|
||||
#include "nogui_platform.h"
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
diff --git a/src/common/file_system.cpp b/src/common/file_system.cpp
|
||||
index b22db26e..092fa9ee 100644
|
||||
--- a/src/common/file_system.cpp
|
||||
+++ b/src/common/file_system.cpp
|
||||
@@ -1308,6 +1308,8 @@ bool FileSystem::DeleteDirectory(const char* path)
|
||||
|
||||
std::string FileSystem::GetProgramPath()
|
||||
{
|
||||
+ return "/storage/.config/duckstation";
|
||||
+
|
||||
std::wstring buffer;
|
||||
buffer.resize(MAX_PATH);
|
||||
|
||||
@@ -1789,6 +1791,8 @@ bool FileSystem::DeleteDirectory(const char* path)
|
||||
|
||||
std::string FileSystem::GetProgramPath()
|
||||
{
|
||||
+ return "/storage/.config/duckstation";
|
||||
+
|
||||
#if defined(__linux__)
|
||||
static const char* exeFileName = "/proc/self/exe";
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
diff --git a/src/common/file_system.cpp b/src/common/file_system.cpp
|
||||
index b22db26e..ad856d93 100644
|
||||
--- a/src/common/file_system.cpp
|
||||
+++ b/src/common/file_system.cpp
|
||||
@@ -315,6 +315,9 @@ std::string FileSystem::GetDisplayNameFromPath(const std::string_view& path)
|
||||
|
||||
std::string_view Path::GetDirectory(const std::string_view& path)
|
||||
{
|
||||
+
|
||||
+return "/storage/.config/duckstation";
|
||||
+
|
||||
const std::string::size_type pos = GetLastSeperatorPosition(path, false);
|
||||
if (pos == std::string_view::npos)
|
||||
return {};
|
|
@ -4,7 +4,7 @@
|
|||
# Copyright (C) 2022-present Fewtarius
|
||||
|
||||
PKG_NAME="flycast-sa"
|
||||
PKG_VERSION="213bc70e2d4bf14052af94255557792b4b14a0f4"
|
||||
PKG_VERSION="cb91ad3ae0c1291485892bf3a9663a2fd303ce83"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_SITE="https://github.com/flyinghead/flycast"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -8,7 +8,7 @@ PKG_VERSION="d05ea1965ad1f070859806a3a67aaf5ea6c46234"
|
|||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/ZDoom/gzdoom"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_DEPENDS_HOST="toolchain zmusic:host"
|
||||
PKG_DEPENDS_HOST="toolchain SDL2:host zmusic:host"
|
||||
PKG_DEPENDS_TARGET="toolchain SDL2 gzdoom-sa:host zmusic"
|
||||
PKG_LONGDESC="GZDoom is a modder-friendly OpenGL and Vulkan source port based on the DOOM engine"
|
||||
GET_HANDLER_SUPPORT="git"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2018-present 5schatten (https://github.com/5schatten)
|
||||
|
||||
PKG_NAME="hatarisa"
|
||||
PKG_VERSION="9756e36bb858c4e3b6039b07fe6f1b72263b1f70"
|
||||
PKG_VERSION="18d783305e87d673b6641c9f0424f6609f47829d"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/hatari/hatari"
|
||||
PKG_URL="https://github.com/hatari/hatari/archive/${PKG_VERSION}.tar.gz"
|
||||
|
|
|
@ -0,0 +1,147 @@
|
|||
Key_A=-1
|
||||
Key_B=-1
|
||||
Key_Select=-1
|
||||
Key_Start=-1
|
||||
Key_Right=-1
|
||||
Key_Left=-1
|
||||
Key_Up=-1
|
||||
Key_Down=-1
|
||||
Key_R=-1
|
||||
Key_L=-1
|
||||
Key_X=-1
|
||||
Key_Y=-1
|
||||
Joy_A=1
|
||||
Joy_B=0
|
||||
Joy_Select=6
|
||||
Joy_Start=7
|
||||
Joy_Right=65794
|
||||
Joy_Left=1114376
|
||||
Joy_Up=17891585
|
||||
Joy_Down=16843012
|
||||
Joy_R=86114303
|
||||
Joy_L=35782655
|
||||
Joy_X=3
|
||||
Joy_Y=2
|
||||
HKKey_Lid=-1
|
||||
HKKey_Mic=-1
|
||||
HKKey_Pause=-1
|
||||
HKKey_Reset=-1
|
||||
HKKey_FastForward=-1
|
||||
HKKey_FastForwardToggle=-1
|
||||
HKKey_FullscreenToggle=-1
|
||||
HKKey_SwapScreens=-1
|
||||
HKKey_SolarSensorDecrease=-1
|
||||
HKKey_SolarSensorIncrease=-1
|
||||
HKKey_FrameStep=-1
|
||||
HKKey_SaveState=-1
|
||||
HKKey_LoadState=-1
|
||||
HKJoy_Lid=-1
|
||||
HKJoy_Mic=10
|
||||
HKJoy_Pause=-1
|
||||
HKJoy_Reset=-1
|
||||
HKJoy_FastForward=-1
|
||||
HKJoy_FastForwardToggle=-1
|
||||
HKJoy_FullscreenToggle=-1
|
||||
HKJoy_SwapScreens=9
|
||||
HKJoy_SolarSensorDecrease=-1
|
||||
HKJoy_SolarSensorIncrease=-1
|
||||
HKJoy_FrameStep=-1
|
||||
HKJoy_SaveState=5
|
||||
HKJoy_LoadState=4
|
||||
JoystickID=0
|
||||
WindowWidth=1920
|
||||
WindowHeight=1080
|
||||
WindowMax=0
|
||||
ScreenRotation=0
|
||||
ScreenGap=0
|
||||
ScreenLayout=2
|
||||
ScreenSwap=0
|
||||
ScreenSizing=3
|
||||
IntegerScaling=0
|
||||
ScreenAspectTop=0
|
||||
ScreenAspectBot=0
|
||||
ScreenFilter=1
|
||||
ScreenUseGL=0
|
||||
ScreenVSync=0
|
||||
ScreenVSyncInterval=1
|
||||
3DRenderer=0
|
||||
Threaded3D=1
|
||||
GL_ScaleFactor=1
|
||||
GL_BetterPolygons=0
|
||||
LimitFPS=1
|
||||
AudioSync=0
|
||||
ShowOSD=1
|
||||
ConsoleType=0
|
||||
DirectBoot=1
|
||||
JIT_Enable=0
|
||||
JIT_MaxBlockSize=32
|
||||
JIT_BranchOptimisations=1
|
||||
JIT_LiteralOptimisations=1
|
||||
JIT_FastMemory=1
|
||||
ExternalBIOSEnable=0
|
||||
BIOS9Path=
|
||||
BIOS7Path=
|
||||
FirmwarePath=
|
||||
DSiBIOS9Path=
|
||||
DSiBIOS7Path=
|
||||
DSiFirmwarePath=
|
||||
DSiNANDPath=
|
||||
DLDIEnable=0
|
||||
DLDISDPath=dldi.bin
|
||||
DLDISize=0
|
||||
DLDIReadOnly=0
|
||||
DLDIFolderSync=0
|
||||
DLDIFolderPath=
|
||||
DSiSDEnable=0
|
||||
DSiSDPath=dsisd.bin
|
||||
DSiSDSize=0
|
||||
DSiSDReadOnly=0
|
||||
DSiSDFolderSync=0
|
||||
DSiSDFolderPath=
|
||||
FirmwareOverrideSettings=0
|
||||
FirmwareUsername=melonDS
|
||||
FirmwareLanguage=1
|
||||
FirmwareBirthdayMonth=1
|
||||
FirmwareBirthdayDay=1
|
||||
FirmwareFavouriteColour=0
|
||||
FirmwareMessage=
|
||||
FirmwareMAC=
|
||||
MPAudioMode=1
|
||||
MPRecvTimeout=25
|
||||
LANDevice=
|
||||
DirectLAN=0
|
||||
SavStaRelocSRAM=0
|
||||
AudioInterp=0
|
||||
AudioBitrate=0
|
||||
AudioVolume=256
|
||||
MicInputType=0
|
||||
MicWavPath=
|
||||
LastROMFolder=
|
||||
RecentROM_0=
|
||||
RecentROM_1=
|
||||
RecentROM_2=
|
||||
RecentROM_3=
|
||||
RecentROM_4=
|
||||
RecentROM_5=
|
||||
RecentROM_6=
|
||||
RecentROM_7=
|
||||
RecentROM_8=
|
||||
RecentROM_9=
|
||||
SaveFilePath=/storage/roms/nds
|
||||
SavestatePath=/storage/roms/savestates/nds
|
||||
CheatFilePath=
|
||||
EnableCheats=0
|
||||
MouseHide=0
|
||||
MouseHideSeconds=5
|
||||
PauseLostFocus=0
|
||||
DSBatteryLevelOkay=1
|
||||
DSiBatteryLevel=15
|
||||
DSiBatteryCharging=1
|
||||
Camera0_InputType=0
|
||||
Camera0_ImagePath=
|
||||
Camera0_CamDeviceName=
|
||||
Camera0_XFlip=0
|
||||
Camera1_InputType=0
|
||||
Camera1_ImagePath=
|
||||
Camera1_CamDeviceName=
|
||||
Camera1_XFlip=0
|
|
@ -11,14 +11,14 @@ PKG_DEPENDS_TARGET="toolchain libX11"
|
|||
PKG_PRIORITY="optional"
|
||||
PKG_SECTION="emulators"
|
||||
PKG_SHORTDESC="Virtual Macintosh Plus"
|
||||
PKG_TOOLCHAIN="manual"
|
||||
PKG_TOOLCHAIN="make"
|
||||
|
||||
make_target() {
|
||||
pre_make_target() {
|
||||
cd ${PKG_BUILD}
|
||||
gcc setup/tool.c -o setup_t
|
||||
${TOOLCHAIN}/bin/host-gcc setup/tool.c -o setup_t
|
||||
./setup_t -t lx64 -fullscreen 1 > setup.sh
|
||||
. setup.sh
|
||||
make
|
||||
sed -i "s|gcc|${TARGET_PREFIX}gcc|" ${PKG_BUILD}/Makefile
|
||||
}
|
||||
|
||||
makeinstall_target() {
|
||||
|
|
|
@ -46,7 +46,7 @@ make_target() {
|
|||
rm -rf build
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G Ninja ${ARM} -DCMAKE_BUILD_TYPE="Release" ..
|
||||
cmake -G Ninja ${ARM} -DCMAKE_FIND_ROOT_PATH="${SYSROOT_PREFIX}" -DCMAKE_BUILD_TYPE="Release" ..
|
||||
VERBOSE=1 cmake --build .
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
DocumentsFolderMode=User
|
||||
CustomDocumentsFolder=/storage/.config/PCSX2
|
||||
UseDefaultSettingsFolder=enabled
|
||||
SettingsFolder=/storage/.config/PCSX2/inis
|
||||
Install_Dir=/usr/bin
|
||||
RunWizard=0
|
|
@ -1,5 +0,0 @@
|
|||
[Host0]
|
||||
Url=www.example.com
|
||||
Desc=Set DNS to 192.0.2.1 to use this host list
|
||||
Address=0.0.0.0
|
||||
Enabled=disabled
|
|
@ -1,93 +0,0 @@
|
|||
DisableDualSourceBlend = 0
|
||||
DisableFramebufferFetch = 0
|
||||
DumpDirectTextures = 1
|
||||
DumpPaletteTextures = 1
|
||||
DumpReplaceableMipmaps = 0
|
||||
DumpReplaceableTextures = 0
|
||||
DumpTexturesWithFMVActive = 0
|
||||
GSDumpCompression = 0
|
||||
HWDisableReadbacks = 0
|
||||
IntegerScaling = 0
|
||||
LoadTextureReplacements = 0
|
||||
LoadTextureReplacementsAsync = 1
|
||||
MaxAnisotropy = 0
|
||||
OsdScale = 100
|
||||
OsdShowCPU = 0
|
||||
OsdShowFPS = 0
|
||||
OsdShowGPU = 0
|
||||
OsdShowGSStats = 0
|
||||
OsdShowIndicators = 1
|
||||
OsdShowMessages = 1
|
||||
OsdShowResolution = 0
|
||||
OsdShowSpeed = 0
|
||||
OverrideGeometryShaders = -1
|
||||
OverrideTextureBarriers = -1
|
||||
PrecacheTextureReplacements = 0
|
||||
Renderer = 14
|
||||
ShadeBoost = 0
|
||||
ShadeBoost_Brightness = 50
|
||||
ShadeBoost_Contrast = 50
|
||||
ShadeBoost_Saturation = 50
|
||||
SkipDuplicateFrames = 0
|
||||
TVShader = 0
|
||||
ThreadedPresentation = 0
|
||||
UseBlitSwapChain = 0
|
||||
UseDebugDevice = 0
|
||||
UserHacks = 0
|
||||
UserHacks_AutoFlush = 0
|
||||
UserHacks_CPUSpriteRenderBW = 0
|
||||
UserHacks_CPU_FB_Conversion = 0
|
||||
UserHacks_DisableDepthSupport = 0
|
||||
UserHacks_DisablePartialInvalidation = 0
|
||||
UserHacks_Disable_Safe_Features = 0
|
||||
UserHacks_HalfPixelOffset = 0
|
||||
UserHacks_Half_Bottom_Override = -1
|
||||
UserHacks_SkipDraw_End = 0
|
||||
UserHacks_SkipDraw_Start = 0
|
||||
UserHacks_TCOffsetX = 0
|
||||
UserHacks_TCOffsetY = 0
|
||||
UserHacks_TextureInsideRt = 0
|
||||
UserHacks_TriFilter = -1
|
||||
UserHacks_WildHack = 0
|
||||
UserHacks_align_sprite_X = 0
|
||||
UserHacks_merge_pp_sprite = 0
|
||||
UserHacks_round_sprite_offset = 0
|
||||
accurate_blending_unit = 1
|
||||
accurate_date = 1
|
||||
autoflush_sw = 1
|
||||
crc_hack_level = -1
|
||||
deinterlace = 7
|
||||
disable_hw_gl_draw = 0
|
||||
disable_interlace_offset = 0
|
||||
disable_shader_cache = 0
|
||||
dithering_ps2 = 2
|
||||
dump = 0
|
||||
extrathreads = 2
|
||||
extrathreads_height = 4
|
||||
filter = 2
|
||||
fxaa = 0
|
||||
linear_present = 1
|
||||
mipmap = 1
|
||||
mipmap_hw = -1
|
||||
override_GL_ARB_clear_texture = -1
|
||||
override_GL_ARB_direct_state_access = -1
|
||||
override_GL_ARB_gpu_shader5 = -1
|
||||
override_GL_ARB_shader_image_load_store = -1
|
||||
override_GL_ARB_texture_barrier = -1
|
||||
paltex = 0
|
||||
pcrtc_antiblur = 1
|
||||
pcrtc_offsets = 0
|
||||
pcrtc_overscan = 0
|
||||
preload_frame_with_gs_data = 0
|
||||
save = 0
|
||||
savef = 0
|
||||
savel = 5000
|
||||
saven = 0
|
||||
savet = 0
|
||||
savez = 0
|
||||
shaderfx = 0
|
||||
shaderfx_conf = shaders/GS_FX_Settings.ini
|
||||
shaderfx_glsl = shaders/GS.fx
|
||||
texture_preloading = 2
|
||||
upscale_multiplier = 1
|
||||
wrap_gs_mem = 0
|
|
@ -1,6 +0,0 @@
|
|||
first_time_wizard = 1
|
||||
options = 0
|
||||
mouse_sensibility = 100
|
||||
ff_intensity = 1
|
||||
uid[0] = 0
|
||||
uid[1] = 0
|
|
@ -5,28 +5,26 @@ ConfirmShutdown = true
|
|||
StartPaused = false
|
||||
PauseOnFocusLoss = false
|
||||
StartFullscreen = true
|
||||
DoubleClickTogglesFullscreen = true
|
||||
DoubleClickTogglesFullscreen = false
|
||||
HideMouseCursor = false
|
||||
RenderToSeparateWindow = false
|
||||
HideMainWindowWhenRunning = false
|
||||
DisableWindowResize = false
|
||||
Theme = darkfusion
|
||||
MainWindowGeometry = AdnQywADAAAAAAAAAAAAFAAABP8AAALjAAAAAAAAABQAAAO1AAACkwAAAAAABAAABQAAAAAAAAAAFAAABP8AAALj
|
||||
MainWindowState = AAAA/wAAAAD9AAAAAAAABQAAAAK9AAAABAAAAAQAAAAIAAAACPwAAAABAAAAAgAAAAEAAAAOAHQAbwBvAGwAQgBhAHIAAAAAAP////8AAAAAAAAAAA==
|
||||
ShowStatusBar = false
|
||||
|
||||
|
||||
[Folders]
|
||||
Bios = /storage/roms/bios
|
||||
Snapshots = snaps
|
||||
Savestates = sstates
|
||||
MemoryCards = memcards
|
||||
Bios = /storage/roms/bios/pcsx2/bios
|
||||
Snapshots = /storage/roms/screenshots
|
||||
Savestates = /storage/roms/savestates/ps2
|
||||
MemoryCards = /storage/roms/saves/ps2
|
||||
Logs = logs
|
||||
Cheats = cheats
|
||||
CheatsWS = cheats_ws
|
||||
CheatsNI = cheats_ni
|
||||
Cheats = /storage/roms/bios/pcsx2/cheats
|
||||
CheatsWS = /storage/roms/bios/pcsx2/cheats_ws
|
||||
CheatsNI = /storage/roms/bios/pcsx2/cheats_ni
|
||||
Cache = cache
|
||||
Textures = textures
|
||||
Textures = /storage/roms/bios/pcsx2/textures
|
||||
InputProfiles = inputprofiles
|
||||
|
||||
|
||||
|
@ -52,6 +50,7 @@ WarnAboutUnsafeSettings = true
|
|||
GzipIsoIndexTemplate = $(f).pindex.tmp
|
||||
BlockDumpSaveDirectory =
|
||||
EnableFastBoot = true
|
||||
EnablePerGameSettings = true
|
||||
|
||||
|
||||
[EmuCore/Speedhacks]
|
||||
|
@ -122,12 +121,12 @@ DisableFramebufferFetch = false
|
|||
ThreadedPresentation = false
|
||||
SkipDuplicateFrames = false
|
||||
OsdShowMessages = true
|
||||
OsdShowSpeed = true
|
||||
OsdShowFPS = true
|
||||
OsdShowCPU = true
|
||||
OsdShowGPU = true
|
||||
OsdShowResolution = true
|
||||
OsdShowGSStats = true
|
||||
OsdShowSpeed = false
|
||||
OsdShowFPS = false
|
||||
OsdShowCPU = false
|
||||
OsdShowGPU = false
|
||||
OsdShowResolution = false
|
||||
OsdShowGSStats = false
|
||||
OsdShowIndicators = true
|
||||
HWDisableReadbacks = false
|
||||
paltex = false
|
||||
|
@ -290,7 +289,7 @@ IOP.bitset = 0
|
|||
|
||||
|
||||
[Filenames]
|
||||
BIOS = scph39001.bin
|
||||
BIOS =
|
||||
|
||||
|
||||
[Framerate]
|
||||
|
@ -337,27 +336,12 @@ SDLControllerEnhancedMode = false
|
|||
|
||||
|
||||
[Hotkeys]
|
||||
ToggleFullscreen = Keyboard/Alt & Keyboard/Return
|
||||
CycleAspectRatio = Keyboard/F6
|
||||
CycleInterlaceMode = Keyboard/F5
|
||||
CycleMipmapMode = Keyboard/Insert
|
||||
GSDumpMultiFrame = Keyboard/Control & Keyboard/Shift & Keyboard/F8
|
||||
Screenshot = Keyboard/F8
|
||||
GSDumpSingleFrame = Keyboard/Shift & Keyboard/F8
|
||||
ToggleSoftwareRendering = Keyboard/F9
|
||||
ZoomIn = Keyboard/Control & Keyboard/Plus
|
||||
ZoomOut = Keyboard/Control & Keyboard/Minus
|
||||
InputRecToggleMode = Keyboard/Shift & Keyboard/R
|
||||
LoadStateFromSlot = Keyboard/F3
|
||||
SaveStateToSlot = Keyboard/F1
|
||||
NextSaveStateSlot = Keyboard/F2
|
||||
PreviousSaveStateSlot = Keyboard/Shift & Keyboard/F2
|
||||
OpenPauseMenu = Keyboard/Escape
|
||||
ToggleFrameLimit = Keyboard/F4
|
||||
TogglePause = Keyboard/Space
|
||||
ToggleSlowMotion = Keyboard/Shift & Keyboard/Backtab
|
||||
ToggleTurbo = Keyboard/Tab
|
||||
HoldTurbo = Keyboard/Period
|
||||
Screenshot = SDL-0/Back & SDL-0/B
|
||||
LoadStateFromSlot = SDL-0/Back & SDL-0/LeftShoulder
|
||||
SaveStateToSlot = SDL-0/Back & SDL-0/RightShoulder
|
||||
OpenPauseMenu = SDL-0/Back & SDL-0/Y
|
||||
ToggleTurbo = SDL-0/Back & SDL-0/+RightTrigger
|
||||
ShutdownVM = SDL-0/Back & SDL-0/Start
|
||||
|
||||
|
||||
[Pad]
|
||||
|
@ -433,5 +417,6 @@ Type = None
|
|||
[Pad8]
|
||||
Type = None
|
||||
|
||||
|
||||
[AutoUpdater]
|
||||
CheckAtStartup = false
|
||||
|
|
|
@ -1,157 +0,0 @@
|
|||
MainGuiPosition=93,371
|
||||
SysSettingsTabName=Cpu
|
||||
McdSettingsTabName=none
|
||||
ComponentsTabName=
|
||||
AppSettingsTabName=none
|
||||
GameDatabaseTabName=none
|
||||
LanguageId=0
|
||||
LanguageCode=default
|
||||
RecentIsoCount=20
|
||||
GzipIsoIndexTemplate=$(f).pindex.tmp
|
||||
Listbook_ImageSize=32
|
||||
Toolbar_ImageSize=24
|
||||
Toolbar_ShowLabels=enabled
|
||||
CurrentBlockdump=
|
||||
CurrentELF=
|
||||
CurrentIRX=
|
||||
EnableSpeedHacks=enabled
|
||||
EnableGameFixes=disabled
|
||||
EnableFastBoot=enabled
|
||||
EnablePresets=enabled
|
||||
PresetIndex=1
|
||||
AskOnBoot=disabled
|
||||
DevMode=disabled
|
||||
CdvdSource=ISO
|
||||
[ProgramLog]
|
||||
Visible=disabled
|
||||
AutoDock=enabled
|
||||
DisplayPosition=492,371
|
||||
DisplaySize=680,560
|
||||
FontSize=8
|
||||
Theme=Default
|
||||
[Folders]
|
||||
UseDefaultBios=enabled
|
||||
UseDefaultSnapshots=enabled
|
||||
UseDefaultSavestates=enabled
|
||||
UseDefaultMemoryCards=enabled
|
||||
UseDefaultLogs=enabled
|
||||
UseDefaultLangs=enabled
|
||||
UseDefaultCheats=enabled
|
||||
UseDefaultCheatsWS=enabled
|
||||
UseDefaultTextures=enabled
|
||||
Bios=/storage/roms/bios
|
||||
Snapshots=/storage/roms/screenshots
|
||||
Savestates=/storage/saves/ps2
|
||||
MemoryCards=/storage/saves/ps2
|
||||
Logs=/var/log
|
||||
Langs=/usr/bin/resources/locale
|
||||
Cheats=/storage/cheats/ps2/cheats
|
||||
CheatsWS=/storage/cheats/ps2/cheats_ws
|
||||
Cache=/system/cache/ps2
|
||||
Textures=/storage/.config/PCSX2
|
||||
RunIso=/storage/PCSX2
|
||||
RunELF=/storage/PCSX2
|
||||
RunDisc=
|
||||
[GSWindow]
|
||||
CloseOnEsc=enabled
|
||||
DefaultToFullscreen=disabled
|
||||
AlwaysHideMouse=disabled
|
||||
DisableResizeBorders=disabled
|
||||
DisableScreenSaver=enabled
|
||||
WindowSize=640,480
|
||||
WindowPos=0,0
|
||||
IsMaximized=disabled
|
||||
IsFullscreen=disabled
|
||||
EnableVsyncWindowFlag=disabled
|
||||
IsToggleFullscreenOnDoubleClick=enabled
|
||||
SyncToHostRefreshRate=disabled
|
||||
AspectRatio=Auto 4:3/3:2 (Progressive)
|
||||
FMVAspectRatioSwitch=Off
|
||||
Zoom=100
|
||||
[InputRecording]
|
||||
VirtualPadPosition=-1,-1
|
||||
m_frame_advance_amount=1
|
||||
[Capture]
|
||||
EnableAudio=enabled
|
||||
[UiTemplates]
|
||||
LimiterUnlimited=Max
|
||||
LimiterTurbo=Turbo
|
||||
LimiterSlowmo=Slowmo
|
||||
LimiterNormal=Normal
|
||||
OutputFrame=Frame
|
||||
OutputField=Field
|
||||
OutputProgressive=Progressive
|
||||
OutputInterlaced=Interlaced
|
||||
Paused=<PAUSED>
|
||||
TitleTemplate=Slot: ${slot} | Speed: ${speed} (${vfps}) | ${videomode} | Limiter: ${limiter} | ${gs} | ${omodei} | ${cpuusage}
|
||||
RecordingTemplate=Slot: ${slot} | Frame: ${frame}/${maxFrame} | Rec. Mode: ${mode} | Speed: ${speed} (${vfps}) | Limiter: ${limiter}
|
||||
[MemoryCards]
|
||||
Slot1_Enable=enabled
|
||||
Slot1_Filename=Mcd001.ps2
|
||||
Slot2_Enable=enabled
|
||||
Slot2_Filename=Mcd002.ps2
|
||||
Multitap1_Slot2_Enable=disabled
|
||||
Multitap1_Slot2_Filename=Mcd-Multitap1-Slot02.ps2
|
||||
Multitap1_Slot3_Enable=disabled
|
||||
Multitap1_Slot3_Filename=Mcd-Multitap1-Slot03.ps2
|
||||
Multitap1_Slot4_Enable=disabled
|
||||
Multitap1_Slot4_Filename=Mcd-Multitap1-Slot04.ps2
|
||||
Multitap2_Slot2_Enable=disabled
|
||||
Multitap2_Slot2_Filename=Mcd-Multitap2-Slot02.ps2
|
||||
Multitap2_Slot3_Enable=disabled
|
||||
Multitap2_Slot3_Filename=Mcd-Multitap2-Slot03.ps2
|
||||
Multitap2_Slot4_Enable=disabled
|
||||
Multitap2_Slot4_Filename=Mcd-Multitap2-Slot04.ps2
|
||||
[Filenames]
|
||||
BIOS=scph39001.bin
|
||||
[Framerate]
|
||||
NominalScalar=1
|
||||
TurboScalar=2
|
||||
SlomoScalar=0.5
|
||||
[ConsoleLogSources]
|
||||
Devel=disabled
|
||||
.EEout=enabled
|
||||
.IOPout=enabled
|
||||
.EErecPerf=disabled
|
||||
.ELF=disabled
|
||||
.SysEvents=disabled
|
||||
.p\&xThread=disabled
|
||||
.SYSout=disabled
|
||||
.PGIFout=disabled
|
||||
.Input\ Recording=disabled
|
||||
.Controller\ Info=disabled
|
||||
[TraceLogSources]
|
||||
.SIF=disabled
|
||||
EE.Bios=disabled
|
||||
EE.Memory=disabled
|
||||
EE.Disasm.R5900=disabled
|
||||
EE.Disasm.COP0=disabled
|
||||
EE.Disasm.FPU=disabled
|
||||
EE.Disasm.VUmacro=disabled
|
||||
EE.Disasm.Cache=disabled
|
||||
EE.Registers.HwRegs=disabled
|
||||
EE.Registers.UnknownRegs=disabled
|
||||
EE.Registers.DmaRegs=disabled
|
||||
EE.Registers.IPU=disabled
|
||||
EE.GIFtags=disabled
|
||||
EE.VIFcodes=disabled
|
||||
EE.MSKPATH3=disabled
|
||||
EE.Events.DmaCtrl=disabled
|
||||
EE.Events.Counters=disabled
|
||||
EE.Events.MFIFO=disabled
|
||||
EE.Events.VIF=disabled
|
||||
EE.Events.GIF=disabled
|
||||
IOP.Bios=disabled
|
||||
IOP.Memorycards=disabled
|
||||
IOP.Pad=disabled
|
||||
IOP.Disasm.R3000A=disabled
|
||||
IOP.Disasm.Memory=disabled
|
||||
IOP.Registers.HwRegs=disabled
|
||||
IOP.Registers.UnknownRegs=disabled
|
||||
IOP.Registers.DmaRegs=disabled
|
||||
IOP.Events.DmaCrl=disabled
|
||||
IOP.Events.Counters=disabled
|
||||
IOP.Events.CDVD=disabled
|
||||
IOP.Events.MDEC=disabled
|
||||
[TraceLogSources/IOP.Disasm.COP2]
|
||||
GPU=disabled
|
|
@ -1,116 +0,0 @@
|
|||
[EmuCore]
|
||||
CdvdVerboseReads=disabled
|
||||
CdvdDumpBlocks=disabled
|
||||
CdvdShareWrite=disabled
|
||||
EnablePatches=enabled
|
||||
EnableCheats=disabled
|
||||
EnablePINE=disabled
|
||||
EnableWideScreenPatches=disabled
|
||||
EnableNoInterlacingPatches=disabled
|
||||
EnableRecordingTools=enabled
|
||||
ConsoleToStdio=disabled
|
||||
HostFs=disabled
|
||||
PatchBios=disabled
|
||||
PatchRegion=
|
||||
BackupSavestate=enabled
|
||||
SavestateZstdCompression=enabled
|
||||
McdEnableEjection=enabled
|
||||
McdFolderAutoManage=enabled
|
||||
MultitapPort0_Enabled=disabled
|
||||
MultitapPort1_Enabled=disabled
|
||||
GzipIsoIndexTemplate=$(f).pindex.tmp
|
||||
[EmuCore/Speedhacks]
|
||||
EECycleRate=0
|
||||
EECycleSkip=0
|
||||
fastCDVD=disabled
|
||||
IntcStat=enabled
|
||||
WaitLoop=enabled
|
||||
vuFlagHack=enabled
|
||||
vuThread=disabled
|
||||
vu1Instant=enabled
|
||||
[EmuCore/CPU]
|
||||
FPU.DenormalsAreZero=enabled
|
||||
FPU.FlushToZero=enabled
|
||||
FPU.Roundmode=3
|
||||
AffinityControlMode=0
|
||||
VU.DenormalsAreZero=enabled
|
||||
VU.FlushToZero=enabled
|
||||
VU.Roundmode=3
|
||||
[EmuCore/CPU/Recompiler]
|
||||
EnableEE=enabled
|
||||
EnableIOP=enabled
|
||||
EnableEECache=disabled
|
||||
EnableVU0=enabled
|
||||
EnableVU1=enabled
|
||||
vuOverflow=enabled
|
||||
vuExtraOverflow=disabled
|
||||
vuSignOverflow=disabled
|
||||
vuUnderflow=disabled
|
||||
fpuOverflow=enabled
|
||||
fpuExtraOverflow=disabled
|
||||
fpuFullMode=disabled
|
||||
StackFrameChecks=disabled
|
||||
PreBlockCheckEE=disabled
|
||||
PreBlockCheckIOP=disabled
|
||||
[EmuCore/GS]
|
||||
VsyncQueueSize=2
|
||||
FrameLimitEnable=enabled
|
||||
VsyncEnable=0
|
||||
FramerateNTSC=59.94
|
||||
FrameratePAL=50
|
||||
[EmuCore/Gamefixes]
|
||||
VuAddSubHack=disabled
|
||||
FpuMulHack=disabled
|
||||
FpuNegDivHack=disabled
|
||||
XgKickHack=disabled
|
||||
EETimingHack=disabled
|
||||
SoftwareRendererFMVHack=disabled
|
||||
SkipMPEGHack=disabled
|
||||
OPHFlagHack=disabled
|
||||
DMABusyHack=disabled
|
||||
VIFFIFOHack=disabled
|
||||
VIF1StallHack=disabled
|
||||
GIFFIFOHack=disabled
|
||||
GoemonTlbHack=disabled
|
||||
IbitHack=disabled
|
||||
VUSyncHack=disabled
|
||||
VUOverflowHack=disabled
|
||||
BlitInternalFPSHack=disabled
|
||||
[EmuCore/Profiler]
|
||||
Enabled=disabled
|
||||
RecBlocks_EE=enabled
|
||||
RecBlocks_IOP=enabled
|
||||
RecBlocks_VU0=enabled
|
||||
RecBlocks_VU1=enabled
|
||||
[EmuCore/Debugger]
|
||||
ShowDebuggerOnStart=disabled
|
||||
AlignMemoryWindowStart=enabled
|
||||
FontWidth=8
|
||||
FontHeight=12
|
||||
WindowWidth=1000
|
||||
WindowHeight=720
|
||||
MemoryViewBytesPerRow=16
|
||||
[EmuCore/TraceLog]
|
||||
Enabled=disabled
|
||||
EE.bitset=0
|
||||
IOP.bitset=0
|
||||
[DEV9]
|
||||
[DEV9/Eth]
|
||||
EthEnable=disabled
|
||||
EthApi=Unset
|
||||
EthDevice=
|
||||
EthLogDNS=disabled
|
||||
InterceptDHCP=disabled
|
||||
PS2IP=0.0.0.0
|
||||
Mask=0.0.0.0
|
||||
Gateway=0.0.0.0
|
||||
DNS1=0.0.0.0
|
||||
DNS2=0.0.0.0
|
||||
AutoMask=enabled
|
||||
AutoGateway=enabled
|
||||
ModeDNS1=Auto
|
||||
ModeDNS2=Auto
|
||||
[DEV9/Hdd]
|
||||
HddEnable=disabled
|
||||
HddFile=DEV9hdd.raw
|
||||
HddSizeSectors=83886080
|
|
@ -1,43 +0,0 @@
|
|||
[SOUNDTOUCH]
|
||||
SequenceLengthMS=30
|
||||
SeekWindowMS=20
|
||||
OverlapMS=10
|
||||
[MIXING]
|
||||
Interpolation=5
|
||||
FinalVolume=100
|
||||
AdvancedVolumeControl=0
|
||||
VolumeAdjustC(dB)=0
|
||||
VolumeAdjustFL(dB)=0
|
||||
VolumeAdjustFR(dB)=0
|
||||
VolumeAdjustBL(dB)=0
|
||||
VolumeAdjustBR(dB)=0
|
||||
VolumeAdjustSL(dB)=0
|
||||
VolumeAdjustSR(dB)=0
|
||||
VolumeAdjustLFE(dB)=0
|
||||
[OUTPUT]
|
||||
Output_Module=cubeb
|
||||
Latency=100
|
||||
Synch_Mode=0
|
||||
SpeakerConfiguration=0
|
||||
[DEBUG]
|
||||
Global_Enable=0
|
||||
Show_Messages=0
|
||||
Show_Messages_Key_On_Off=0
|
||||
Show_Messages_Voice_Off=0
|
||||
Show_Messages_DMA_Transfer=0
|
||||
Show_Messages_AutoDMA=0
|
||||
Show_Messages_Overruns=0
|
||||
Show_Messages_CacheStats=0
|
||||
Log_Register_Access=0
|
||||
Log_DMA_Transfers=0
|
||||
Log_WAVE_Output=0
|
||||
Dump_Info=0
|
||||
Dump_Memory=0
|
||||
Dump_Regs=0
|
||||
Access_Log_Filename=SPU2Log.txt
|
||||
WaveLog_Filename=SPU2log.wav
|
||||
DMA4Log_Filename=SPU2dma4.dat
|
||||
DMA7Log_Filename=SPU2dma7.dat
|
||||
Info_Dump_Filename=SPU2Cores.txt
|
||||
Mem_Dump_Filename=SPU2mem.dat
|
||||
Reg_Dump_Filename=SPU2regs.dat
|
|
@ -5,12 +5,14 @@
|
|||
. /etc/profile
|
||||
|
||||
ARG=${1//[\\]/}
|
||||
|
||||
jslisten set "-9 pcsx2-qt"
|
||||
|
||||
if [ ! -d "/storage/.config/PCSX2" ]
|
||||
then
|
||||
cp -rf /usr/config/PCSX2 /storage/.config
|
||||
fi
|
||||
@APPIMAGE@ -fastboot -- "${ARG}"
|
||||
@APPIMAGE@ -fastboot -nogui -- "${ARG}"
|
||||
|
||||
#Workaround until we can learn why it doesn't exit cleanly when asked.
|
||||
killall -9 pcsx2-qt
|
||||
killall -9 pcsx2-qt
|
|
@ -7,7 +7,7 @@ PKG_REV="1"
|
|||
PKG_ARCH="any"
|
||||
PKG_SITE="https://github.com/hrydgard/ppsspp"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_VERSION="e829c97d7e78b6ec7c1a0ee031d58c32987194e6"
|
||||
PKG_VERSION="aedd51f2f69fa3940c991a626be7df430883af4c"
|
||||
PKG_LICENSE="GPLv2"
|
||||
PKG_DEPENDS_TARGET="toolchain ffmpeg libzip SDL2 zlib zip"
|
||||
PKG_SHORTDESC="PPSSPPDL"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
diff --git a/SDL/SDLMain.cpp b/SDL/SDLMain.cpp
|
||||
index 27695ec2d..e761cb8e8 100644
|
||||
index dae1b6934..ea2230533 100644
|
||||
--- a/SDL/SDLMain.cpp
|
||||
+++ b/SDL/SDLMain.cpp
|
||||
@@ -803,12 +803,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta
|
||||
@@ -817,12 +817,7 @@ static void ProcessSDLEvent(SDL_Window *window, const SDL_Event &event, InputSta
|
||||
g_Config.iWindowWidth = new_width;
|
||||
g_Config.iWindowHeight = new_height;
|
||||
}
|
||||
|
@ -16,15 +16,13 @@ index 27695ec2d..e761cb8e8 100644
|
|||
break;
|
||||
}
|
||||
|
||||
@@ -1444,10 +1439,7 @@ int main(int argc, char *argv[]) {
|
||||
#if !defined(MOBILE_DEVICE)
|
||||
if (lastUIState != GetUIState()) {
|
||||
lastUIState = GetUIState();
|
||||
- if (lastUIState == UISTATE_INGAME && g_Config.UseFullScreen() && !g_Config.bShowTouchControls)
|
||||
- SDL_ShowCursor(SDL_DISABLE);
|
||||
- if (lastUIState != UISTATE_INGAME || !g_Config.UseFullScreen())
|
||||
- SDL_ShowCursor(SDL_ENABLE);
|
||||
+ SDL_ShowCursor(SDL_DISABLE);
|
||||
}
|
||||
#endif
|
||||
@@ -1435,9 +1430,7 @@ int main(int argc, char *argv[]) {
|
||||
printf("Init from thread error: '%s'\n", error_message.c_str());
|
||||
}
|
||||
|
||||
-#ifdef MOBILE_DEVICE
|
||||
SDL_ShowCursor(SDL_DISABLE);
|
||||
-#endif
|
||||
|
||||
// Ensure that the swap interval is set after context creation (needed for kmsdrm)
|
||||
SDL_GL_SetSwapInterval(1);
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
# Copyright (C) 2023-present Fewtarius
|
||||
|
||||
PKG_NAME="retroarch"
|
||||
PKG_VERSION="c5b2ed13826848d4ce5fcec81bb57724d680b505"
|
||||
PKG_VERSION="0bbfba8137a9a103495cc1bc5368781ce05b0c80"
|
||||
PKG_SITE="https://github.com/libretro/RetroArch"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
PKG_LICENSE="GPLv3"
|
||||
|
|
|
@ -4,7 +4,7 @@ fluidsynth_misc_interpolation=4th
|
|||
last_fullscreen_mode_width=1920
|
||||
multi_midi=false
|
||||
gui_browser_show_hidden=true
|
||||
soundfont=/usr/share/soundfonts/GeneralUser.sf2/GeneralUser.sf2
|
||||
soundfont=/usr/share/soundfonts/GeneralUser.sf2
|
||||
fluidsynth_chorus_nr=3
|
||||
fluidsynth_chorus_waveform=sine
|
||||
music_driver=auto
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2022-present BrooksyTech (https://github.com/brooksytech)
|
||||
|
||||
PKG_NAME="yuzu-sa"
|
||||
PKG_VERSION="aa6afb0cfedab2b73e87f882797f4d935c899f5d"
|
||||
PKG_VERSION="53f904b740c00ee491565578012a8c739bd9ed77"
|
||||
PKG_ARCH="x86_64"
|
||||
PKG_LICENSE="GPLv3"
|
||||
PKG_SITE="https://github.com/yuzu-emu/yuzu"
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# Copyright (C) 2020-present Fewtarius
|
||||
|
||||
PKG_NAME="retroarch-joypads"
|
||||
PKG_VERSION="5666e46bb89caf4e9af358fdb97a2b384cb62f36"
|
||||
PKG_VERSION="37f429527d7b44fcc6e9d5c3861b89d89b803b4e"
|
||||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://github.com/libretro/retroarch-joypad-autoconfig"
|
||||
PKG_URL="${PKG_SITE}.git"
|
||||
|
|
|
@ -7,10 +7,10 @@ PKG_VERSION="2.28.2"
|
|||
PKG_LICENSE="GPL"
|
||||
PKG_SITE="https://www.libsdl.org/"
|
||||
PKG_URL="https://www.libsdl.org/release/SDL2-${PKG_VERSION}.tar.gz"
|
||||
PKG_DEPENDS_TARGET="toolchain alsa-lib systemd dbus pulseaudio libdrm"
|
||||
PKG_DEPENDS_HOST="toolchain"
|
||||
PKG_DEPENDS_TARGET="toolchain alsa-lib systemd dbus pulseaudio libdrm SDL2:host"
|
||||
PKG_LONGDESC="Simple DirectMedia Layer is a cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware."
|
||||
PKG_DEPENDS_HOST="toolchain:host distutilscross:host"
|
||||
PKG_PATCH_DIRS+="${DEVICE}"
|
||||
|
||||
if [ ! "${OPENGL}" = "no" ]; then
|
||||
PKG_DEPENDS_TARGET+=" ${OPENGL} glu"
|
||||
|
@ -64,10 +64,35 @@ fi
|
|||
case ${PROJECT} in
|
||||
Rockchip)
|
||||
PKG_DEPENDS_TARGET+=" librga"
|
||||
PKG_PATCH_DIRS_TARGET+="${DEVICE}"
|
||||
;;
|
||||
esac
|
||||
|
||||
pre_configure_target(){
|
||||
|
||||
if [ -n "${PKG_PATCH_DIRS_TARGET}" ]
|
||||
then
|
||||
###
|
||||
### Patching here is necessary to allow SDL2 to be built for
|
||||
### use by host builds without requiring additional unnecessary
|
||||
### packages to also be built (and break) during the build.
|
||||
###
|
||||
### It may be better served as a hook in scripts/build.
|
||||
###
|
||||
|
||||
if [ -d "${PKG_DIR}/patches/${PKG_PATCH_DIRS_TARGET}" ]
|
||||
then
|
||||
cd $(get_build_dir SDL2)
|
||||
for PATCH in ${PKG_DIR}/patches/${PKG_PATCH_DIRS_TARGET}/*
|
||||
do
|
||||
patch -p1 <${PATCH}
|
||||
done
|
||||
cd -
|
||||
fi
|
||||
|
||||
### End
|
||||
fi
|
||||
|
||||
export LDFLAGS="${LDFLAGS} -ludev"
|
||||
PKG_CMAKE_OPTS_TARGET+="-DSDL_STATIC=OFF \
|
||||
-DLIBC=ON \
|
||||
|
|
|
@ -22,8 +22,7 @@ case ${DEVICE} in
|
|||
PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz"
|
||||
;;
|
||||
*)
|
||||
PKG_VERSION="23.1.7"
|
||||
PKG_SHA256="409641eadf0ed1c7794797a6f5a0b0195b5580b282166e5ec5629c6bcda6acd3"
|
||||
PKG_VERSION="23.2.1"
|
||||
PKG_SITE="http://www.mesa3d.org/"
|
||||
PKG_URL="https://mesa.freedesktop.org/archive/mesa-${PKG_VERSION}.tar.xz"
|
||||
;;
|
||||
|
|
8
packages/hardware/quirks/devices/AYANEO AIR Plus/010-led_control
Executable file
8
packages/hardware/quirks/devices/AYANEO AIR Plus/010-led_control
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/010-led_control
|
||||
DEVICE_LED_CONTROL="true"
|
||||
DEVICE_LED_BRIGHTNESS="true"
|
||||
EOF
|
9
packages/hardware/quirks/devices/AYANEO AIR Plus/020-fan_control
Executable file
9
packages/hardware/quirks/devices/AYANEO AIR Plus/020-fan_control
Executable file
|
@ -0,0 +1,9 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# Copyright (C) 2021-present Fewtarius (https://github.com/fewtarius)
|
||||
|
||||
cat <<EOF >/storage/.config/profile.d/020-fan_control
|
||||
DEVICE_HAS_FAN="false"
|
||||
DEVICE_TEMP_SENSOR="$(find /sys/devices/pci*/* -path "*/nvme" -prune -o -name temp1_input -print)"
|
||||
EOF
|
||||
|
371
packages/hardware/quirks/devices/AYANEO AIR Plus/bin/ledcontrol
Executable file
371
packages/hardware/quirks/devices/AYANEO AIR Plus/bin/ledcontrol
Executable file
|
@ -0,0 +1,371 @@
|
|||
#!/bin/sh
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
# Copyright (C) 2023-present Fewtarius
|
||||
|
||||
# A simple tool to manipulate the controller LEDs using outb, thanks
|
||||
# in large part to Maya Matuszczyk (https://github.com/Maccraft123)
|
||||
# for help with reverse engineering.
|
||||
|
||||
. /etc/profile
|
||||
|
||||
OUTB="/usr/bin/outb"
|
||||
|
||||
ADDR_PORT="0x4e"
|
||||
DATA_PORT="0x4f"
|
||||
|
||||
DEBUG=false
|
||||
|
||||
function debug_out() {
|
||||
$DEBUG && echo "ledcontrol: $*"
|
||||
}
|
||||
|
||||
function led_ctl() {
|
||||
${OUTB} ${ADDR_PORT} 0x2e
|
||||
${OUTB} ${DATA_PORT} 0x11
|
||||
${OUTB} ${ADDR_PORT} 0x2f
|
||||
${OUTB} ${DATA_PORT} 0xd1 # high
|
||||
|
||||
${OUTB} ${ADDR_PORT} 0x2e
|
||||
${OUTB} ${DATA_PORT} 0x10
|
||||
${OUTB} ${ADDR_PORT} 0x2f
|
||||
${OUTB} ${DATA_PORT} ${1} # low
|
||||
|
||||
${OUTB} ${ADDR_PORT} 0x2e
|
||||
${OUTB} ${DATA_PORT} 0x12
|
||||
${OUTB} ${ADDR_PORT} 0x2f
|
||||
${OUTB} ${DATA_PORT} ${2} # data
|
||||
}
|
||||
|
||||
function led_open() {
|
||||
led_ctl 0x87 0xa5
|
||||
}
|
||||
|
||||
function led_close() {
|
||||
led_ctl ${1} 0x01
|
||||
}
|
||||
|
||||
function led_ack() {
|
||||
led_open
|
||||
led_ctl 0x70 0x0
|
||||
led_close 0x86
|
||||
}
|
||||
|
||||
function led_state() {
|
||||
# 0x31 = off
|
||||
# 0x37 = on
|
||||
for ZONE in 0xb2 0x72
|
||||
do
|
||||
led_open
|
||||
led_ctl ${ZONE} ${1}
|
||||
led_ctl 0xc6 0x01
|
||||
led_ack
|
||||
done
|
||||
}
|
||||
|
||||
function led_enable() {
|
||||
led_state 0x37
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xbf 0x0
|
||||
led_close 0xc6
|
||||
|
||||
led_open
|
||||
led_ctl 0x7f 0x0
|
||||
led_close 0xc6
|
||||
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xc0 0x0
|
||||
led_close 0xc6
|
||||
|
||||
led_open
|
||||
led_ctl 0x80 0x0
|
||||
led_close 0x86
|
||||
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xc1 0x5
|
||||
led_close 0xc6
|
||||
|
||||
led_open
|
||||
led_ctl 0x81 0x5
|
||||
led_close 0xc6
|
||||
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xc2 0x5
|
||||
led_close 0xc6
|
||||
|
||||
led_open
|
||||
led_ctl 0x82 0x5
|
||||
led_close 0x86
|
||||
|
||||
led_open
|
||||
led_ctl 0x70 0x0
|
||||
led_close 0x86
|
||||
|
||||
led_open
|
||||
led_ctl 0xc3 0x5
|
||||
led_close 0x86
|
||||
|
||||
led_open
|
||||
led_ctl 0x83 0x5
|
||||
led_close 0x86
|
||||
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xc4 0x5
|
||||
led_close 0xc6
|
||||
|
||||
led_open
|
||||
led_ctl 0x84 0x5
|
||||
led_close 0x86
|
||||
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xc5 0x7
|
||||
led_close 0xc6
|
||||
|
||||
led_open
|
||||
led_ctl 0x85 0x7
|
||||
led_close 0x86
|
||||
|
||||
led_open
|
||||
led_ctl 0x70 0x0
|
||||
led_close 0x86
|
||||
|
||||
led_open
|
||||
led_ctl 0xc5 0x7
|
||||
led_close 0xc6
|
||||
|
||||
led_open
|
||||
led_ctl 0x85 0x7
|
||||
led_close 0x86
|
||||
|
||||
led_open
|
||||
led_ctl 0x70 0x0
|
||||
led_close 0x86
|
||||
|
||||
led_open
|
||||
led_ctl 0xb2 0xba
|
||||
led_close 0xc6
|
||||
|
||||
led_open
|
||||
led_ctl 0x72 0xba
|
||||
led_close 0x86
|
||||
|
||||
led_open
|
||||
led_ctl 0x70 0x0
|
||||
led_close 0x86
|
||||
|
||||
led_ack
|
||||
|
||||
}
|
||||
|
||||
function led_color() {
|
||||
# Zone 1 (Left Stick)
|
||||
led_open
|
||||
led_ctl 0xB3 ${1} # Quadrant 1
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xB4 ${2}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xB5 ${3}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xB6 ${1} # Quadrant 2
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xB7 ${2}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xB8 ${3}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xB9 ${1} # Quadrant 3
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xBA ${2}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xBB ${3}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xBC ${1} # Quadrant 4
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xBD ${2}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0xBE ${3}
|
||||
led_ack
|
||||
|
||||
# Zone 2 (Right Stick)
|
||||
led_open
|
||||
led_ctl 0x73 ${1} # Quadrant 1
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x74 ${2}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x75 ${3}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x76 ${1} # Quadrant 2
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x77 ${2}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x78 ${3}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x79 ${1} # Quadrant 3
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x7A ${2}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x7B ${3}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x7C ${1} # Quadrant 4
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x7D ${2}
|
||||
led_ack
|
||||
|
||||
led_open
|
||||
led_ctl 0x7E ${3}
|
||||
led_ack
|
||||
}
|
||||
|
||||
function intensity() {
|
||||
printf "0x%X\n" $((${1} / ${2}))
|
||||
}
|
||||
|
||||
GETBRIGHTNESS=$(get_setting led.brightness)
|
||||
if [ ! -z "${2}" ]
|
||||
then
|
||||
LEDBRIGHTNESS=${2}
|
||||
debug_out "Arg[2]: ${2}"
|
||||
elif [ ! -z "${GETBRIGHTNESS}" ]
|
||||
then
|
||||
LEDBRIGHTNESS=${GETBRIGHTNESS}
|
||||
debug_out "GETBRIGHTESS: ${GETBRIGHTNESS}"
|
||||
else
|
||||
debug_out "NO SETTING: min"
|
||||
LEDBRIGHTNESS=min
|
||||
set_setting led.brightness min
|
||||
fi
|
||||
|
||||
case ${LEDBRIGHTNESS} in
|
||||
max)
|
||||
LEDBRIGHTNESS=1
|
||||
set_setting led.brightness max
|
||||
;;
|
||||
mid)
|
||||
LEDBRIGHTNESS=4
|
||||
set_setting led.brightness mid
|
||||
;;
|
||||
min)
|
||||
LEDBRIGHTNESS=8
|
||||
set_setting led.brightness min
|
||||
;;
|
||||
esac
|
||||
|
||||
case ${1} in
|
||||
off)
|
||||
led_state 0x31
|
||||
set_setting led.color off
|
||||
;;
|
||||
on)
|
||||
led_state 0x37
|
||||
set_setting led.color on
|
||||
led_enable
|
||||
;;
|
||||
red)
|
||||
COLOR=$(intensity 0xFF ${LEDBRIGHTNESS})
|
||||
ledcontrol off
|
||||
led_color ${COLOR} 0x00 0x00
|
||||
set_setting led.color red
|
||||
led_enable
|
||||
;;
|
||||
green)
|
||||
COLOR=$(intensity 0xFF ${LEDBRIGHTNESS})
|
||||
ledcontrol off
|
||||
led_color 0x00 ${COLOR} 0x00
|
||||
set_setting led.color green
|
||||
led_enable
|
||||
;;
|
||||
blue)
|
||||
COLOR=$(intensity 0xFF ${LEDBRIGHTNESS})
|
||||
ledcontrol off
|
||||
led_color 0x00 0x00 ${COLOR}
|
||||
set_setting led.color blue
|
||||
led_enable
|
||||
;;
|
||||
teal)
|
||||
COLOR=$(intensity 0xFF ${LEDBRIGHTNESS})
|
||||
ledcontrol off
|
||||
led_color 0x00 ${COLOR} ${COLOR}
|
||||
set_setting led.color teal
|
||||
led_enable
|
||||
;;
|
||||
purple)
|
||||
COLOR=$(intensity 0xFF ${LEDBRIGHTNESS})
|
||||
ledcontrol off
|
||||
led_color ${COLOR} 0x00 ${COLOR}
|
||||
set_setting led.color purple
|
||||
led_enable
|
||||
;;
|
||||
white)
|
||||
COLOR=$(intensity 0xFF ${LEDBRIGHTNESS})
|
||||
ledcontrol off
|
||||
led_color ${COLOR} ${COLOR} ${COLOR}
|
||||
set_setting led.color white
|
||||
led_enable
|
||||
;;
|
||||
default)
|
||||
del_setting led.color
|
||||
;;
|
||||
brightness)
|
||||
set_setting led.brightness ${2}
|
||||
ledcontrol $(get_setting led.color)
|
||||
;;
|
||||
*)
|
||||
COLOR=$(get_setting led.color)
|
||||
if [ ! -z "${COLOR}" ]
|
||||
then
|
||||
ledcontrol ${COLOR}
|
||||
fi
|
||||
;;
|
||||
esac
|
|
@ -5,6 +5,7 @@
|
|||
cat <<EOF >/storage/.config/profile.d/020-fan_control
|
||||
DEVICE_HAS_FAN="true"
|
||||
DEVICE_PWM_FAN="$(find /sys/devices/platform/oxp-platform -name pwm1)"
|
||||
DEVICE_FAN_INPUT="$(find /sys/devices/platform/oxp-platform -name fan*_input)"
|
||||
DEVICE_TEMP_SENSOR="$(find /sys/devices/pci*/* -path "*/nvme" -prune -o -name temp1_input -print)"
|
||||
EOF
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
#
|
||||
# A simple tool to manipulate the controller LEDs using ectool, thanks to
|
||||
# Maya (https://github.com/Maccraft123) for reverse engineering.
|
||||
# Maya Matuszczyk (https://github.com/Maccraft123) for reverse engineering.
|
||||
#
|
||||
# Schema:
|
||||
#
|
||||
|
@ -98,9 +98,9 @@ then
|
|||
LEDBRIGHTNESS=${GETBRIGHTNESS}
|
||||
debug_out "GETBRIGHTESS: ${GETBRIGHTNESS}"
|
||||
else
|
||||
debug_out "NO SETTING: max"
|
||||
LEDBRIGHTNESS=max
|
||||
set_setting led.brightness max
|
||||
debug_out "NO SETTING: min"
|
||||
LEDBRIGHTNESS=min
|
||||
set_setting led.brightness min
|
||||
fi
|
||||
|
||||
case ${LEDBRIGHTNESS} in
|
||||
|
|
1
packages/hardware/quirks/devices/ayn Loki MiniPro
Symbolic link
1
packages/hardware/quirks/devices/ayn Loki MiniPro
Symbolic link
|
@ -0,0 +1 @@
|
|||
ayn Loki Zero
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
cat <<EOF >/storage/.config/profile.d/020-fan_control
|
||||
DEVICE_HAS_FAN="true"
|
||||
DEVICE_PWM_FAN="$(find /sys/devices/platform/ayn-platform -name pwm1)"
|
||||
DEVICE_FAN_INPUT="$(find /sys/devices/platform/ayn-platform -name fan*_input)"
|
||||
DEVICE_TEMP_SENSOR="$(find /sys/devices/pci*/* -path "*/nvme" -prune -o -name temp1_input -print)"
|
||||
EOF
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue