Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 48 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,28 @@
<div align="center">

<img width=128px src="github/logo_outline.png">
<h1>nexterUI</h1>

</div>

<hr>

<h4 align="center">
<a href="https://nextui.loveretro.games/usage/#getting-started" target="_blank">Installation Guide</a>
<a href="https://github.com/lepht/nexterUI/issues" target="_blank">Issues</a>
·
<a href="https://nextui.loveretro.games/docs/" target="_blank">Documentation</a>
<a href="https://nextui.loveretro.games/usage/#getting-started" target="_blank">Installation (upstream docs)</a>
·
<a href="https://discord.gg/HKd7wqZk3h" target="_blank">Discord</a>
<a href="https://nextui.loveretro.games/docs/" target="_blank">Documentation (upstream docs)</a>
</h4>

<div align="center"><p>
<a href="https://github.com/LoveRetro/NextUI/releases/latest">
<img alt="Latest release" src="https://img.shields.io/github/v/release/LoveRetro/NextUI?style=for-the-badge&logo=starship&include_prerelease=false&color=C9CBFF&logoColor=D9E0EE&labelColor=302D41&sort=semver" />
<a href="https://github.com/lepht/nexterUI/pulse">
<img alt="Last commit" src="https://img.shields.io/github/last-commit/lepht/nexterUI?style=for-the-badge&logo=starship&color=8bd5ca&logoColor=D9E0EE&labelColor=302D41"/>
</a>
<a href="https://github.com/LoveRetro/NextUI/pulse">
<img alt="Last commit" src="https://img.shields.io/github/last-commit/LoveRetro/NextUI?style=for-the-badge&logo=starship&color=8bd5ca&logoColor=D9E0EE&labelColor=302D41"/>
<a href="https://github.com/lepht/nexterUI/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/lepht/nexterUI?style=for-the-badge&logo=starship&color=ee999f&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LoveRetro/NextUI/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/LoveRetro/NextUI?style=for-the-badge&logo=starship&color=ee999f&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LoveRetro/NextUI/stargazers">
<img alt="Stars" src="https://img.shields.io/github/stars/LoveRetro/NextUI?style=for-the-badge&logo=starship&color=c69ff5&logoColor=D9E0EE&labelColor=302D41" />
</a>
<a href="https://github.com/LoveRetro/NextUI/issues">
<img alt="Issues" src="https://img.shields.io/github/issues/LoveRetro/NextUI?style=for-the-badge&logo=bilibili&color=F5E0DC&logoColor=D9E0EE&labelColor=302D41" />
<a href="https://github.com/lepht/nexterUI/issues">
<img alt="Issues" src="https://img.shields.io/github/issues/lepht/nexterUI?style=for-the-badge&logo=bilibili&color=F5E0DC&logoColor=D9E0EE&labelColor=302D41" />
</a>
</div>

Expand All @@ -38,6 +32,36 @@ A CFW based of MinUI with a rebuild emulation engine and tons of added features

For other devices we recommend checking out [MinUI](https://github.com/shauninman/MinUI)

---

## Why this fork

nexterUI is a fork of [NextUI](https://github.com/LoveRetro/NextUI), taken from the last
commit published under the GPL. It exists for three reasons.

**To stay open.** Upstream is relicensing from GPL-3.0 to PolyForm Noncommercial
([LoveRetro/NextUI#765](https://github.com/LoveRetro/NextUI/issues/765)), which is not an open
source licence — it forbids commercial use and fails the OSI definition. Code already published
under the GPL cannot be relicensed without every contributor's agreement, so this fork carries
the GPL-3.0 grant forward and keeps it. Everything here stays free as in freedom.

**To add the niceties.** Conveniences that other custom firmware has had for years, that upstream
left to third-party paks or closed as "use Collections":

- **OS-level favorites**, with first-order support in a context menu on any game the UI lists —
a system folder, Recents, a collection, or the search results. Not a pak, not a workaround.
- **OS-level search**, inspired by the stock TrimUI OS: an on-screen keyboard over a live result
list covering every ROM on the card.
- More to come, in the spirit of OnionOS.

**To do the cleanup.** Several latent defects in the inherited codebase are tracked as issues
here rather than left in place — out-of-bounds reads on empty folders, leaks on the directory
alias path, and undefined behaviour in the settings code.

Upstream remains the origin of the great majority of this code, and [MinUI](https://github.com/shauninman/MinUI)
before it. Both are credited below and neither is going anywhere.


- Fixed both screen tearing and sync stutter problems of MinUI by rebuilding the emulator engine core
- Game switcher menu (Onion OS style) by [@frysee](https://github.com/frysee)
- High audio quality, due to advanced resampling engine using [libsamplerate](https://github.com/libsndfile/libsamplerate) (with quality/performance setting per emulator)
Expand All @@ -54,7 +78,7 @@ For other devices we recommend checking out [MinUI](https://github.com/shauninma
- Dynamic cpu speed scaling (keeps your device cool and extends battery life, but gives the performance right when needed)
- Fully GPU OpenGL based for faster performance
- Custom bootlogos contributed by [@SolvalouArt](https://bsky.app/profile/solvalouart.bsky.social)
- Color and font settings to customize the NextUI interface
- Color and font settings to customize the nexterUI interface
- Menu animations
- LED control, change colors, effects, brightness
- LED indicators, low battery, stand by, charging (brightness can be set seperately)
Expand Down Expand Up @@ -112,7 +136,8 @@ After two minutes the device will go into deep sleep. The leds will turn complet

## What about X feature?

NextUI supports a variety of optional extras called Paks that are maintained by community members.
nexterUI supports a variety of optional extras called Paks that are maintained by community members.
Paks built for NextUI work here unchanged.

Our wiki has a [list of all available Paks](https://nextui.loveretro.games/pak-store/) that can be downloaded from our Pak Store straight on your device.

Expand All @@ -126,14 +151,16 @@ Our wiki has a [list of all available Paks](https://nextui.loveretro.games/pak-s

---

## Play Retro's review of NextUI
## Play Retro's review of NextUI (upstream)

[![image](https://github.com/user-attachments/assets/43217a30-e052-4f67-88a9-c4361f82e72f)](https://www.youtube.com/watch?v=m_7ObMHAFK4)

## Retro Handhelds' coverage of NextUI
## Retro Handhelds' coverage of NextUI (upstream)

[![image](https://github.com/user-attachments/assets/5fd538ea-285b-46e9-add4-1ef99b2ee9e5)](https://www.youtube.com/watch?v=KlYVmtYDqRI)

---

## For all other info visit our website: [nextui.loveretro.games](https://nextui.loveretro.games)
## Upstream documentation lives at [nextui.loveretro.games](https://nextui.loveretro.games)

It still applies to nexterUI in almost every respect; where the two diverge, this repo is the authority.
6 changes: 3 additions & 3 deletions skeleton/BASE/Palettes/README.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
NextUI Color Palettes
nexterUI Color Palettes
----------------------------------------

Drop custom color palette files (.txt) in this folder. They will show up under
Expand All @@ -20,7 +20,7 @@ Each palette is a plain text file. Example (my_palette.txt):
Fields
------
version Palette file format version. Use 1. Files with a version newer than the
running NextUI build supports are ignored.
running nexterUI build supports are ignored.
name The label shown in the menu. If omitted, the file name is used (with
underscores turned into spaces).
color1 Main color - main UI elements.
Expand All @@ -33,7 +33,7 @@ color7 Background - used when no background image is set.

Colors are packed hex. Both 0xRRGGBB and 0xRRGGBBAA are accepted; when the alpha
byte is omitted the color is treated as fully opaque. Any color you leave out
falls back to the NextUI default for that slot.
falls back to the nexterUI default for that slot.

Built-in palettes live with the system files and cannot be edited. Copy one here
and rename it to use it as a starting point for your own.
31 changes: 16 additions & 15 deletions skeleton/BASE/README.txt
Original file line number Diff line number Diff line change
@@ -1,32 +1,33 @@
NextUI (formerly MinUI Next), a custom OS based of MinUI with screen sync fixes and many many more features!
nexterUI, a GPL-licensed fork of NextUI (formerly MinUI Next), a custom OS based of MinUI
with screen sync fixes and many many more features!

Source:
https://github.com/LoveRetro/NextUI
https://github.com/lepht/nexterUI

----------------------------------------
Installing

PREFACE

NextUI has two essential parts: an installer/updater zip archive named "MinUI.zip" and a bootstrap file or folder with names that vary by platform.
nexterUI has two essential parts: an installer/updater zip archive named "MinUI.zip" and a bootstrap file or folder with names that vary by platform.

On devices that support two SD cards NextUI will generally end up being installed on the "secondary" one. All instances of "SD card" or "primary card" refer to the card that goes into the second slot or to the sole SD card of devices that only support a single card.
On devices that support two SD cards nexterUI will generally end up being installed on the "secondary" one. All instances of "SD card" or "primary card" refer to the card that goes into the second slot or to the sole SD card of devices that only support a single card.

Please refer to https://nextui.loveretro.games/usage/#getting-started for detailed instructions that might differ slightly between devices.

The primary card should be a reputable brand and freshly formatted as FAT32 (MBR).

CAVEATS

While NextUI can be updated from any device once installed, some devices require (minor) changes to NAND or TF1 (via the aforementioned bootstrap file or folder) and therefore need to be installed from the specific device before using. The same is true when trying to use an existing card in a new device of the same type. When in doubt, follow the installation instructions; if all the necessary bits are already installed, the installer will just act as an updater instead.
While nexterUI can be updated from any device once installed, some devices require (minor) changes to NAND or TF1 (via the aforementioned bootstrap file or folder) and therefore need to be installed from the specific device before using. The same is true when trying to use an existing card in a new device of the same type. When in doubt, follow the installation instructions; if all the necessary bits are already installed, the installer will just act as an updater instead.

ALL

Preload the "Bios" and "Roms" folders then copy both to the root of your primary card.

MAGICX MINI ZERO 28

NextUI is meant to be used with Moss installed on the SD card that goes into the left slot (labeled TF1/INT). Download and flash the latest version:
nexterUI is meant to be used with Moss installed on the SD card that goes into the left slot (labeled TF1/INT). Download and flash the latest version:

https://github.com/shauninman/Moss-zero28/releases

Expand Down Expand Up @@ -63,19 +64,19 @@ TRIMUI BRICK / BRICK PRO / SMART PRO S
----------------------------------------
Quicksave & auto-resume

NextUI will create a quicksave when powering off in-game. The next time you power on the device it will automatically resume from where you left off. A quicksave is created when powering off manually or automatically after a short sleep. On devices without a POWER button (eg. the Trimui Smart or M17) press the MENU button twice to put the device to sleep before flipping the POWER switch.
nexterUI will create a quicksave when powering off in-game. The next time you power on the device it will automatically resume from where you left off. A quicksave is created when powering off manually or automatically after a short sleep. On devices without a POWER button (eg. the Trimui Smart or M17) press the MENU button twice to put the device to sleep before flipping the POWER switch.

----------------------------------------
Roms

Included in this zip is a "Roms" folder containing folders for each console NextUI currently supports. You can rename these folders but you must keep the uppercase tag name in parentheses in order to retain the mapping to the correct emulator (eg. "Nintendo Entertainment System (FC)" could be renamed to "Nintendo (FC)", "NES (FC)", or "Famicom (FC)").
Included in this zip is a "Roms" folder containing folders for each console nexterUI currently supports. You can rename these folders but you must keep the uppercase tag name in parentheses in order to retain the mapping to the correct emulator (eg. "Nintendo Entertainment System (FC)" could be renamed to "Nintendo (FC)", "NES (FC)", or "Famicom (FC)").

When one or more folder share the same display name (eg. "Game Boy Advance (GBA)" and "Game Boy Advance (MGBA)") they will be combined into a single menu item containing the roms from both folders (continuing the previous example, "Game Boy Advance"). This allows opening specific roms with an alternate pak.

----------------------------------------
Bios

Some emulators require or perform much better with official bios. NextUI is strictly BYOB. Place the bios for each system in a folder that matches the tag in the corresponding "Roms" folder name (eg. bios for "Sony PlayStation (PS)" roms goes in "/Bios/PS/"), or refer to https://nextui.loveretro.games/usage/#required-bios for the correct file names and locations.
Some emulators require or perform much better with official bios. nexterUI is strictly BYOB. Place the bios for each system in a folder that matches the tag in the corresponding "Roms" folder name (eg. bios for "Sony PlayStation (PS)" roms goes in "/Bios/PS/"), or refer to https://nextui.loveretro.games/usage/#required-bios for the correct file names and locations.

Bios file names are case-sensitive:

Expand All @@ -101,13 +102,13 @@ Cheat file name needs to match ROM name, and go underneath the "Cheats" director

Disc-based games

To streamline launching multi-file disc-based games with NextUI place your bin/cue (and/or iso/wav files) in a folder with the same name as the cue file. NextUI will automatically launch the cue file instead of navigating into the folder when selected, eg.
To streamline launching multi-file disc-based games with nexterUI place your bin/cue (and/or iso/wav files) in a folder with the same name as the cue file. nexterUI will automatically launch the cue file instead of navigating into the folder when selected, eg.

Harmful Park (English v1.0)/
Harmful Park (English v1.0).bin
Harmful Park (English v1.0).cue

For multi-disc games, put all the files for all the discs in a single folder. Then create an m3u file in that folder (just a text file containing the relative path to each disc's cue file on a separate line) with the same name as the folder. Instead of showing the entire messy contents of the folder, NextUI will launch the appropriate cue file, eg. For a "Policenauts" folder structured like this:
For multi-disc games, put all the files for all the discs in a single folder. Then create an m3u file in that folder (just a text file containing the relative path to each disc's cue file on a separate line) with the same name as the folder. Instead of showing the entire messy contents of the folder, nexterUI will launch the appropriate cue file, eg. For a "Policenauts" folder structured like this:

Policenauts (English v1.0)/
Policenauts (English v1.0).m3u
Expand All @@ -123,7 +124,7 @@ The m3u file would contain just:

When a multi-disc game is detected the in-game menu's Continue item will also show the current disc. Press left or right to switch between discs.

NextUI also supports chd files and official pbp files (multi-disc pbp files larger than 2GB are not supported). Regardless of the multi-disc file format used, every disc of the same game share the same memory card and save state slots.
nexterUI also supports chd files and official pbp files (multi-disc pbp files larger than 2GB are not supported). Regardless of the multi-disc file format used, every disc of the same game share the same memory card and save state slots.

----------------------------------------
Collections
Expand All @@ -139,7 +140,7 @@ A collection is just a text file containing an ordered list of full paths to rom

Display names

Certain (unsupported arcade) cores require roms to use arcane file names. You can override the display name used throughout NextUI by creating a map.txt in the same folder as the files you want to rename. One line per file, `rom.ext` followed by a single tab followed by `Display Name`. You can hide a file by adding a `.` at the beginning of the display name. eg.
Certain (unsupported arcade) cores require roms to use arcane file names. You can override the display name used throughout nexterUI by creating a map.txt in the same folder as the files you want to rename. One line per file, `rom.ext` followed by a single tab followed by `Display Name`. You can hide a file by adding a `.` at the beginning of the display name. eg.

neogeo.zip .Neo Geo Bios
mslug.zip Metal Slug
Expand All @@ -148,12 +149,12 @@ Certain (unsupported arcade) cores require roms to use arcane file names. You ca
----------------------------------------
Simple mode

Not simple enough for you (or maybe your kids)? NextUI has a simple mode that hides the Tools folder and replaces Options in the in-game menu with Reset. Perfect for handing off to littles (and olds too I guess). Just create an empty file named "enable-simple-mode" (no extension) in "/.userdata/shared/".
Not simple enough for you (or maybe your kids)? nexterUI has a simple mode that hides the Tools folder and replaces Options in the in-game menu with Reset. Perfect for handing off to littles (and olds too I guess). Just create an empty file named "enable-simple-mode" (no extension) in "/.userdata/shared/".

----------------------------------------
Advanced

NextUI can automatically run a user-authored shell script on boot. Just place a file named "auto.sh" in "/.userdata/<DEVICE>/". If you're on Windows, make sure your text editor uses Unix line-endings (eg. `\n`), these devices usually choke on Windows line-endings (eg. `\r\n`).
nexterUI can automatically run a user-authored shell script on boot. Just place a file named "auto.sh" in "/.userdata/<DEVICE>/". If you're on Windows, make sure your text editor uses Unix line-endings (eg. `\n`), these devices usually choke on Windows line-endings (eg. `\r\n`).

----------------------------------------
Thanks
Expand Down
2 changes: 1 addition & 1 deletion skeleton/SYSTEM/tg5040/etc/bluetooth/bt_init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Taken from allwinner/btmanager/config/xradio_bt_init.sh for NextUI
bt_hciattach="hciattach"
TRIMUI_MODEL=`strings /usr/trimui/bin/MainUI | grep ^Trimui`
DEVICE_NAME="$TRIMUI_MODEL (NextUI)"
DEVICE_NAME="$TRIMUI_MODEL (nexterUI)"

reset_bluetooth_power() {
echo 0 > /sys/class/rfkill/rfkill0/state;
Expand Down
2 changes: 1 addition & 1 deletion skeleton/SYSTEM/tg5050/etc/bluetooth/bt_init.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/bin/sh
# Bluetooth initialization script for NextUI
bt_hciattach="hciattach"
DEVICE_NAME="Trimui Smart Pro S (NextUI)"
DEVICE_NAME="Trimui Smart Pro S (nexterUI)"

reset_bluetooth_power() {
echo 0 > /sys/class/rfkill/rfkill0/state;
Expand Down
Loading