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
16 changes: 8 additions & 8 deletions PAKS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# About NextUI paks

A pak is just a folder with a ".pak" extension that contains a shell script named "launch.sh".
A pak is just a folder with a ".pak" extension that contains a shell script named "launch.sh".

There are two kinds of paks, emulators and tools. Emulator paks live in the Emus folder. Tool paks live in the Tools folder. These two folders live at the root of your SD card. Extra paks should never be added to the hidden ".system" folder at the root of the SD card. This folder is deleted and replaced every time a user updates NextUI.

Expand Down Expand Up @@ -29,11 +29,11 @@ NextUI maps roms to paks based on the tag in parentheses at the end the name of
Here's an example "launch.sh":

#!/bin/sh

EMU_EXE=picodrive

###############################

EMU_TAG=$(basename "$(dirname "$0")" .pak)
ROM="$1"
mkdir -p "$BIOS_PATH/$EMU_TAG"
Expand All @@ -55,7 +55,7 @@ Oh, if you're creating a pak for Anbernic's RG*XX line you'll need to change the

# Option defaults and button bindings

Copy your new pak and some roms to your SD card and launch a game. Press the MENU button and select Options. Configure the Frontend, Emulator, and Controls. NextUI standard practice is to only bind controls present on the physical controller of the original system (eg. no turbo buttons or core-specific features like palette or disk switching). Let the player dig into that if they want to, the same goes for Shortcuts. Finally select Save Changes > Save for Console. Then quit and pop your SD card back into your computer.
Copy your new pak and some roms to your SD card and launch a game. Press the MENU button and select Options. Configure the Frontend, Emulator, and Controls. NextUI standard practice is to only bind controls present on the physical controller of the original system (eg. no turbo buttons or core-specific features like palette or disk switching). Let the player dig into that if they want to, the same goes for Shortcuts. Finally select Save Changes > Save for Console. Then quit and pop your SD card back into your computer.

Inside the hidden ".userdata" folder at the root of your SD card, you'll find platform folders, and inside your platform folder a "[TAG]-[core]" folder. Copy the "minarch.cfg" file found within to your pak folder and rename it "default.cfg". Open "default.cfg" and delete any options you didn't customize. Any option name prefixed with a "-" will be set and hidden. This is useful for disabling features that may not be available (eg. overclocking) or perform poorly (eg. upscaling) on a specific platform. Near the bottom of the file you will find the button bindings. Here's an example from the "MGBA.pak":

Expand Down Expand Up @@ -97,11 +97,11 @@ But if a binary takes more than one second to initialize you might need to just
syncsettings.elf
done &
LOOP_PID=$!

./PPSSPPSDL --pause-menu-exit "$ROM_PATH"

kill $LOOP_PID

# Caveats

NextUI currently only supports the RGB565 pixel format and does not implement the OpenGL libretro APIs. It may be possible to use the stock firmware's retroarch instead of NextUI's minarch to run certain cores but that is left as an exercise for the reader.
NextUI currently only supports the RGB565 pixel format and does not implement the OpenGL libretro APIs. It may be possible to use the stock firmware's retroarch instead of NextUI's minarch to run certain cores but that is left as an exercise for the reader.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@

---

A CFW based of MinUI with a rebuild emulation engine and tons of added features for the TrimUI Brick and Smart Pro.
A CFW based of MinUI with a rebuild emulation engine and tons of added features for the TrimUI Brick and Smart Pro.

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

Expand Down
32 changes: 16 additions & 16 deletions commits.sh
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ list() {
popd >> /dev/null
}
rule() {
echo '----------------------------------------------------------------'
echo '----------------------------------------------------------------'
}
tell() {
echo $1
Expand All @@ -42,30 +42,30 @@ bump() {
rule
show ./
bump

tell TOOLCHAINS
list ./toolchains
bump

tell LIBRETRO
show ./workspace/all/minarch/libretro-common
bump

tell RG35XX
show ./workspace/rg35xx/other/DinguxCommander
show ./workspace/rg35xx/other/evtest
cores rg35xx

tell MIYOOMINI
show ./workspace/miyoomini/other/DinguxCommander
show ./workspace/miyoomini/other/sdl
cores miyoomini

tell TRIMUISMART
show ./workspace/trimuismart/other/DinguxCommander
show ./workspace/trimuismart/other/unzip60
cores trimuismart

tell RGB30
show ./workspace/rgb30/other/DinguxCommander
cores rgb30
Expand All @@ -75,41 +75,41 @@ bump() {
show ./workspace/tg5040/other/jstest
show ./workspace/tg5040/other/unzip60
cores tg5040

tell M17
cores m17

tell RG35XXPLUS
show ./workspace/rg35xxplus/other/dtc
show ./workspace/rg35xxplus/other/fbset
show ./workspace/rg35xxplus/other/sdl2
show ./workspace/rg35xxplus/other/unzip60
cores rg35xx # just copied from normal rg35xx

tell GKDPIXEL
cores gkdpixel

tell MY282
show ./workspace/my282/other/unzip60
show ./workspace/my282/other/DinguxCommander-sdl2
cores rg35xx # just copied from normal rg35xx

tell MAGICMINI
show ./workspace/magicmini/other/351files
cores magicmini

tell ZERO28
show ./workspace/zero28/other/DinguxCommander-sdl2
cores tg5040 # just copied from tg5040

tell MY355
show ./workspace/my355/other/evtest
show ./workspace/my355/other/mkbootimg
show ./workspace/my355/other/rsce-go
show ./workspace/my355/other/DinguxCommander-sdl2
cores my355

tell CHECK
echo https://github.com/USER/REPO/compare/HASH...HEAD
bump
} | sed 's/\n/ /g'
} | sed 's/\n/ /g'
2 changes: 1 addition & 1 deletion github/generate_screenshots.sh
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ for file in $files; do
done

echo -e $screenshotText > README.md
popd >> /dev/null
popd >> /dev/null
37 changes: 18 additions & 19 deletions makefile
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,11 @@ deploy: setup $(PLATFORMS) special package
adb push ./build/BASE/MinUI.zip /mnt/SDCARD && adb shell reboot

all: setup $(PLATFORMS) special package done

shell:
make -f $(TOOLCHAIN_FILE) PLATFORM=$(PLATFORM)

name:
name:
@echo $(RELEASE_NAME)

build:
Expand All @@ -78,7 +78,7 @@ endif

system:
make -f ./workspace/$(PLATFORM)/platform/makefile.copy PLATFORM=$(PLATFORM)

# populate system
ifneq ($(PLATFORM), desktop)
cp ./workspace/$(PLATFORM)/keymon/keymon.elf ./build/SYSTEM/$(PLATFORM)/bin/
Expand All @@ -100,12 +100,12 @@ endif
cp ./workspace/all/libgametimedb/build/$(PLATFORM)/libgametimedb.so ./build/SYSTEM/$(PLATFORM)/lib
cp ./workspace/all/gametimectl/build/$(PLATFORM)/gametimectl.elf ./build/SYSTEM/$(PLATFORM)/bin/
cp ./workspace/all/gametime/build/$(PLATFORM)/gametime.elf ./build/EXTRAS/Tools/$(PLATFORM)/Game\ Tracker.pak/

cp ./workspace/all/settings/build/$(PLATFORM)/settings.elf ./build/EXTRAS/Tools/$(PLATFORM)/Settings.pak/
ifeq ($(PLATFORM), tg5040)
cp ./workspace/all/ledcontrol/build/$(PLATFORM)/ledcontrol.elf ./build/EXTRAS/Tools/$(PLATFORM)/LedControl.pak/
cp ./workspace/all/bootlogo/build/$(PLATFORM)/bootlogo.elf ./build/EXTRAS/Tools/$(PLATFORM)/Bootlogo.pak/

# lib dependencies
cp ./workspace/all/minarch/build/$(PLATFORM)/libsamplerate.* ./build/SYSTEM/$(PLATFORM)/lib/
# This is a bandaid fix, needs to be cleaned up if/when we expand to other platforms.
Expand All @@ -129,7 +129,7 @@ cores: # TODO: can't assume every platform will have the same stock cores (platf
cp ./workspace/$(PLATFORM)/cores/output/picodrive_libretro.so ./build/SYSTEM/$(PLATFORM)/cores
cp ./workspace/$(PLATFORM)/cores/output/snes9x_libretro.so ./build/SYSTEM/$(PLATFORM)/cores
cp ./workspace/$(PLATFORM)/cores/output/pcsx_rearmed_libretro.so ./build/SYSTEM/$(PLATFORM)/cores

# extras
cp ./workspace/$(PLATFORM)/cores/output/a5200_libretro.so ./build/EXTRAS/Emus/$(PLATFORM)/A5200.pak
cp ./workspace/$(PLATFORM)/cores/output/prosystem_libretro.so ./build/EXTRAS/Emus/$(PLATFORM)/A7800.pak
Expand Down Expand Up @@ -166,7 +166,7 @@ endif
endif

common: build system cores

clean:
rm -rf ./build
make clean -f $(TOOLCHAIN_FILE) PLATFORM=$(PLATFORM) COMPILE_CORES=$(COMPILE_CORES)
Expand All @@ -175,22 +175,22 @@ setup: name
# ----------------------------------------------------
# make sure we're running in an input device
tty -s || echo "No tty detected"

# ready fresh build
rm -rf ./build
mkdir -p ./releases
cp -R ./skeleton ./build

# remove authoring detritus
cd ./build && find . -type f -name '.keep' -delete
cd ./build && find . -type f -name '*.meta' -delete
echo $(BUILD_HASH) > ./workspace/hash.txt

# copy readmes to workspace so we can use Linux fmt instead of host's
mkdir -p ./workspace/readmes
cp ./skeleton/BASE/README.txt ./workspace/readmes/BASE-in.txt
cp ./skeleton/EXTRAS/README.txt ./workspace/readmes/EXTRAS-in.txt

done:
# say "done" 2>/dev/null || true

Expand All @@ -211,7 +211,7 @@ special:
#endif

tidy:
rm -f releases/$(RELEASE_NAME)-base.zip
rm -f releases/$(RELEASE_NAME)-base.zip
rm -f releases/$(RELEASE_NAME)-extras.zip
rm -f releases/$(RELEASE_NAME)-all.zip
# ----------------------------------------------------
Expand All @@ -224,20 +224,20 @@ tidy:
package: tidy
# ----------------------------------------------------
# zip up build

# move formatted readmes from workspace to build
cp ./workspace/readmes/BASE-out.txt ./build/BASE/README.txt
cp ./workspace/readmes/EXTRAS-out.txt ./build/EXTRAS/README.txt
rm -rf ./workspace/readmes

cd ./build/SYSTEM && echo "$(RELEASE_NAME)\n$(BUILD_HASH)" > version.txt
# ./commits.sh > ./build/SYSTEM/commits.txt
cd ./build && find . -type f -name '.DS_Store' -delete
mkdir -p ./build/PAYLOAD
mv ./build/SYSTEM ./build/PAYLOAD/.system
cp -R ./build/BOOT/.tmp_update ./build/PAYLOAD/
cp -R ./build/EXTRAS/Tools ./build/PAYLOAD/

cd ./build/PAYLOAD && zip -r MinUI.zip .system .tmp_update Tools
mv ./build/PAYLOAD/MinUI.zip ./build/BASE

Expand All @@ -253,20 +253,19 @@ package: tidy
# Move renamed .pakz files into base folder
mkdir -p ./build/BASE
mv $(VENDOR_DEST)/* ./build/BASE/

# TODO: can I just add everything in BASE to zip?
# cd ./build/BASE && zip -r ../../releases/$(RELEASE_NAME)-base.zip Bios Roms Saves miyoo miyoo354 trimui rg35xx rg35xxplus gkdpixel miyoo355 magicx em_ui.sh MinUI.zip README.txt
cd ./build/BASE && zip -r ../../releases/$(RELEASE_NAME)-base.zip Bios Roms Saves Shaders trimui em_ui.sh MinUI.zip *.pakz README.txt
cd ./build/EXTRAS && zip -r ../../releases/$(RELEASE_NAME)-extras.zip Bios Emus Roms Saves Shaders Tools README.txt
echo "$(RELEASE_VERSION)" > ./build/latest.txt

# compound zip (brew install libzip needed)
# compound zip (brew install libzip needed)
cd ./releases && zipmerge $(RELEASE_NAME)-all.zip $(RELEASE_NAME)-base.zip && zipmerge $(RELEASE_NAME)-all.zip $(RELEASE_NAME)-extras.zip

###########################################################

.DEFAULT:
# ----------------------------------------------------
# $@
@echo "$(PLATFORMS)" | grep -q "\b$@\b" && (make common PLATFORM=$@) || (exit 1)

12 changes: 6 additions & 6 deletions makefile.native
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ ifeq ($(UNAME_S),Linux)
PREFIX_LOCAL=$(HOME)/nextui
endif
ifeq ($(UNAME_S),Darwin)
# TODO: brew installs gcc to e.g. /opt/homebrew/bin/gcc-14, but none of our makefiles support the suffix.
# TODO: brew installs gcc to e.g. /opt/homebrew/bin/gcc-14, but none of our makefiles support the suffix.
# For now, just manually symlink all the build tools to a suffix-less path: sudo ./workspace/desktop/macos_create_gcc_symlinks.sh
# and make with: make setup common PLATFORM=desktop
# From brew we need at least: brew install sdl2_image sdl2_ttf gcc make libsamplerate sqlite
Expand All @@ -25,15 +25,15 @@ ifeq ($(UNAME_S),Darwin)
endif
UNION_PLATFORM=desktop

all:
all:

clean:
cd workspace && make clean
build:

build:
COMPILE_CORES=$(COMPILE_CORES) cd workspace && make

build-cores:
build-cores:
COMPILE_CORES=$(COMPILE_CORES) cd workspace && make cores

build-core:
Expand Down
15 changes: 7 additions & 8 deletions skeleton/BASE/README.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ 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.

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 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.

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

Expand Down Expand Up @@ -64,7 +64,7 @@ NextUI will create a quicksave when powering off in-game. The next time you powe
----------------------------------------
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 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)").

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.

Expand Down Expand Up @@ -97,7 +97,7 @@ 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 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.

Harmful Park (English v1.0)/
Harmful Park (English v1.0).bin
Expand Down Expand Up @@ -136,7 +136,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.

neogeo.zip .Neo Geo Bios
mslug.zip Metal Slug
sf2.zip Street Fighter II
Expand All @@ -156,15 +156,15 @@ Thanks

To eggs, for his NEON scalers, years of top-notch example code, and patience in the face of my endless questions.

Check out eggs' releases (includes source code):
Check out eggs' releases (includes source code):

RG35XX https://www.dropbox.com/sh/3av70t99ffdgzk1/AAAKPQ4y0kBtTsO3e_Xlrhqha
Miyoo Mini https://www.dropbox.com/sh/hqcsr1h1d7f8nr3/AABtSOygIX_e4mio3rkLetWTa
Trimui Model S https://www.dropbox.com/sh/5e9xwvp672vt8cr/AAAkfmYQeqdAalPiTramOz9Ma

To neonloop, for putting together the original Trimui toolchain from which I learned everything I know about docker and buildroot and is the basis for every toolchain I've put together since, and for picoarch, the inspiration for minarch.

Check out neonloop's repos:
Check out neonloop's repos:

https://git.crowdedwood.com

Expand Down Expand Up @@ -199,8 +199,7 @@ Check out the GarlicOS repos:

To Jim Gray, for commiserating during development, for early alpha testing, and for providing the soundtrack for much of MinUI's development.

Check out Jim's music:
Check out Jim's music:

https://ourghosts.bandcamp.com/music
https://www.patreon.com/ourghosts/

Loading
Loading