diff --git a/.clang-format b/.clang-format
index 96a0ebac..306c6d38 100644
--- a/.clang-format
+++ b/.clang-format
@@ -1,21 +1,21 @@
-# MinUI clang-format style
+# LessUI clang-format style
# Preserves existing code style while improving consistency
-# Based on LLVM style with MinUI customizations
+# Based on LLVM style with LessUI customizations
BasedOnStyle: LLVM
-# Indentation - MinUI uses tabs
+# Indentation - LessUI uses tabs
UseTab: ForIndentation
TabWidth: 4
IndentWidth: 4
-# Braces - Opening brace on same line (actual MinUI style)
+# Braces - Opening brace on same line (actual LessUI style)
BreakBeforeBraces: Attach
# Line length - be reasonable
ColumnLimit: 100
-# Pointers and references - MinUI uses left-aligned (char* p, not char *p)
+# Pointers and references - LessUI uses left-aligned (char* p, not char *p)
PointerAlignment: Left
DerivePointerAlignment: false
diff --git a/.github/workflows/README.md b/.github/workflows/README.md
index c8436c0a..8fabcb12 100644
--- a/.github/workflows/README.md
+++ b/.github/workflows/README.md
@@ -1,6 +1,6 @@
# GitHub Actions CI Workflows
-This directory contains the continuous integration workflows for MinUI.
+This directory contains the continuous integration workflows for LessUI.
## Workflows
@@ -68,15 +68,15 @@ make all
Add to README.md:
```markdown
-[](https://github.com/nchapman/MinUI/actions/workflows/qa.yml)
-[](https://github.com/nchapman/MinUI/actions/workflows/build.yml)
+[](https://github.com/nchapman/LessUI/actions/workflows/qa.yml)
+[](https://github.com/nchapman/LessUI/actions/workflows/build.yml)
```
## Future Enhancements
### ARM64 Runners
-GitHub now supports ARM64 runners which could significantly speed up builds since MinUI compiles for ARM devices. To use ARM64 runners:
+GitHub now supports ARM64 runners which could significantly speed up builds since LessUI compiles for ARM devices. To use ARM64 runners:
1. Enable ARM64 runners in repository settings
2. Update workflow files to use `runs-on: [self-hosted, linux, arm64]` or `runs-on: ubuntu-24.04-arm64` (when available)
diff --git a/.shellcheckrc b/.shellcheckrc
index bbc4f7e3..48aad6ca 100644
--- a/.shellcheckrc
+++ b/.shellcheckrc
@@ -1,4 +1,4 @@
-# ShellCheck configuration for MinUI
+# ShellCheck configuration for LessUI
# Start forgiving, tighten over time
# Disable these common warnings that are too noisy for now
diff --git a/CLAUDE.md b/CLAUDE.md
index fe571586..f4120ffa 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -4,7 +4,7 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
## Project Overview
-MinUI is a focused, custom launcher and libretro frontend for retro handheld gaming devices. It provides a simple, distraction-free interface for playing retro games across multiple hardware platforms (Miyoo Mini, Trimui Smart, Anbernic RG35xx series, etc.).
+LessUI is a focused, custom launcher and libretro frontend for retro handheld gaming devices. It provides a simple, distraction-free interface for playing retro games across multiple hardware platforms (Miyoo Mini, Trimui Smart, Anbernic RG35xx series, etc.).
**Key Design Philosophy:**
- Simplicity: No configuration, no boxart, no themes
@@ -15,7 +15,7 @@ MinUI is a focused, custom launcher and libretro frontend for retro handheld gam
### Multi-Platform Build System
-MinUI uses a **platform abstraction layer** to support 15+ different handheld devices with a single codebase:
+LessUI uses a **platform abstraction layer** to support 15+ different handheld devices with a single codebase:
```
workspace/
@@ -81,7 +81,7 @@ The common code in `workspace/all/common/defines.h` uses these to create derived
### Docker-Based Cross-Compilation
-MinUI uses Docker containers with platform-specific toolchains to cross-compile for ARM devices:
+LessUI uses Docker containers with platform-specific toolchains to cross-compile for ARM devices:
```bash
# Enter platform build environment
@@ -109,6 +109,58 @@ Active platforms (as of most recent): miyoomini, trimuismart, rg35xx, rg35xxplus
## Development Commands
+### macOS Native Development (makefile.dev)
+
+For rapid UI development on macOS, use native builds instead of Docker cross-compilation:
+
+```bash
+# First-time setup
+brew install sdl2 sdl2_image sdl2_ttf
+
+# Development workflow
+make dev # Build minui for macOS (native, with AddressSanitizer)
+make dev-run # Build and run minui in SDL2 window (4x3 default)
+make dev-run-4x3 # Run in 4:3 aspect ratio (640×480)
+make dev-run-16x9 # Run in 16:9 aspect ratio (854×480)
+make dev-clean # Clean macOS build artifacts
+```
+
+**How it works:**
+- Compiles minui natively on macOS using system gcc/clang
+- Links against Homebrew SDL2 libraries
+- Runs in SDL2 window (640×480 for 4x3, 854×480 for 16x9)
+- Uses fake SD card at `workspace/macos/FAKESD/` instead of actual device storage
+- Keyboard input: Arrow keys (D-pad), A/S/W/Q (face buttons), Enter (Start), 4 (Select), Space (Menu)
+- Quit: Hold Backspace/Delete
+
+**Setting up test ROMs:**
+```bash
+# Create console directories
+mkdir -p workspace/macos/FAKESD/Roms/GB
+mkdir -p workspace/macos/FAKESD/Roms/GBA
+
+# Add test ROMs
+cp ~/Downloads/game.gb workspace/macos/FAKESD/Roms/GB/
+```
+
+**Use cases:**
+- UI iteration (instant feedback vs. SD card deploy)
+- Visual testing of menus, text rendering, graphics
+- Debugging with sanitizers (-fsanitize=address)
+- Integration testing with file I/O and ROM browsing
+
+**Limitations:**
+- **minui (launcher) only** - Cannot test minarch (libretro cores)
+- Hardware features stubbed (brightness, volume, power management)
+- Performance differs from ARM devices
+- Path handling: SDCARD_PATH is `../../macos/FAKESD` relative to `workspace/all/minui/` working directory
+
+**Implementation details:**
+- Source files: Same as production minui build (from `workspace/all/minui/makefile`)
+- Platform code: `workspace/macos/platform/platform.{h,c}` provides macOS-specific stubs
+- Build output: `workspace/all/minui/build/macos/minui` binary
+- See `workspace/macos/FAKESD/README.md` for SD card structure
+
### Quality Assurance (makefile.qa)
```bash
@@ -179,7 +231,7 @@ This pattern appears in `getEmuName()` and was the source of a critical bug.
### Display Name Processing
-MinUI automatically cleans up ROM filenames for display:
+LessUI automatically cleans up ROM filenames for display:
- Removes file extensions (`.gb`, `.nes`, `.p8.png`)
- Strips region codes and version info in parentheses: `Game (USA) (v1.2)` → `Game`
- Trims whitespace
diff --git a/README.md b/README.md
index 8030020c..936e4cc4 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,8 @@
-# MinUI
+# LessUI
-MinUI is a focused, custom launcher and libretro frontend for [a variety of retro handhelds](#supported-devices).
+> **Built on the shoulders of giants:** LessUI is a fork of [MinUI](https://github.com/shauninman/MinUI), the brilliant work of [Shaun Inman](https://github.com/shauninman). Shaun's vision of a distraction-free, beautifully simple retro gaming experience is what makes this project possible. This fork exists to explore new directions while honoring the elegance and philosophy of the original.
+
+LessUI is a focused, custom launcher and libretro frontend for [a variety of retro handhelds](#supported-devices).
@@ -32,7 +34,7 @@ MinUI is a focused, custom launcher and libretro frontend for [a variety of retr
multiple devices from different
manufacturers
-**[Download the latest release](https://github.com/shauninman/MinUI/releases)**
+**[Download the latest release](https://github.com/nchapman/LessUI/releases)**
## Installation
@@ -96,16 +98,16 @@ For detailed installation steps and device-specific setup, see the `README.txt`
| **MagicX** | XU Mini M | May 2024 | Deprecated |
> [!NOTE]
-> Deprecated devices will continue to work with current MinUI releases but will not receive new features or platform-specific fixes.
+> Deprecated devices will continue to work with current LessUI releases but will not receive new features or platform-specific fixes.
---
## For Developers
-Want to build MinUI, create custom paks, or understand how it works?
+Want to build LessUI, create custom paks, or understand how it works?
- **[Development Guide](docs/DEVELOPMENT.md)** - Building, testing, and contributing
-- **[Architecture Guide](docs/ARCHITECTURE.md)** - How MinUI works internally
+- **[Architecture Guide](docs/ARCHITECTURE.md)** - How LessUI works internally
- **[Cores Guide](docs/CORES.md)** - How libretro cores are built and loaded
- **[Pak Development Guide](docs/PAKS.md)** - Creating custom emulator and tool paks
- **[Platform Documentation](workspace/)** - Technical hardware details for each device
diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md
index 9fc4f162..0e929c53 100644
--- a/docs/ARCHITECTURE.md
+++ b/docs/ARCHITECTURE.md
@@ -1,10 +1,10 @@
-# MinUI Architecture
+# LessUI Architecture
-This document explains how MinUI is structured and how the pieces fit together.
+This document explains how LessUI is structured and how the pieces fit together.
## Core Concept
-MinUI uses a **platform abstraction layer** to run the same code on 20+ different handheld devices. Write once, compile for each platform with hardware-specific constants.
+LessUI uses a **platform abstraction layer** to run the same code on 20+ different handheld devices. Write once, compile for each platform with hardware-specific constants.
## The Three Layers
@@ -73,13 +73,13 @@ Device-specific daemons and utilities:
1. Device boots → runs platform boot script (`workspace//install/boot.sh`)
2. Boot script displays splash screen (installing/updating if needed)
-3. Launches MinUI via `.system//paks/MinUI.pak/launch.sh`
-4. MinUI reads ROM folders and displays launcher
+3. Launches LessUI via `.system//paks/LessUI.pak/launch.sh`
+4. LessUI reads ROM folders and displays launcher
### Launching a Game
1. User selects ROM in launcher
-2. MinUI calls the appropriate pak's `launch.sh` script
+2. LessUI calls the appropriate pak's `launch.sh` script
3. Pak script runs `minarch.elf `
4. Minarch loads the libretro core and starts emulation
5. User presses MENU → in-game menu appears
@@ -143,7 +143,7 @@ build/
## The Pak System
-MinUI is extended through "paks" - folders ending in `.pak` with a `launch.sh` script inside.
+LessUI is extended through "paks" - folders ending in `.pak` with a `launch.sh` script inside.
### Emulator Paks
@@ -176,14 +176,14 @@ See [PAKS.md](PAKS.md) for complete pak development guide.
## Multi-Resolution Support
-MinUI supports devices from 320x240 to 1280x720 using a scale factor:
+LessUI supports devices from 320x240 to 1280x720 using a scale factor:
- **1x**: 320x240 devices (trimuismart, gkdpixel)
- **2x**: 640x480 devices (most platforms)
- **3x**: 960x720 devices (tg5040 brick)
- **4x**: 1280x960+ devices (future)
-Each platform defines `FIXED_SCALE` in `platform.h`. At startup, MinUI loads the appropriate sprite sheet:
+Each platform defines `FIXED_SCALE` in `platform.h`. At startup, LessUI loads the appropriate sprite sheet:
```c
sprintf(asset_path, RES_PATH "/assets@%ix.png", FIXED_SCALE);
@@ -198,7 +198,7 @@ This way UI code is resolution-independent.
## Input Handling
-MinUI supports three input methods (platforms use one or more):
+LessUI supports three input methods (platforms use one or more):
1. **SDL Keyboard**: `BUTTON_A = SDLK_SPACE`
2. **SDL Joystick**: `JOY_A = 0`
@@ -224,7 +224,7 @@ The platform layer handles the actual hardware polling.
### Rendering
-MinUI uses double-buffering:
+LessUI uses double-buffering:
```c
GFX_clear(screen); // Clear back buffer
GFX_blitText(...); // Draw UI elements
@@ -246,7 +246,7 @@ GFX_blitAsset(ASSET_BATTERY, screen, x, y, width, height, rotation);
## Save States
-MinUI has 9 save state slots per game:
+LessUI has 9 save state slots per game:
- **Slots 0-8**: Manual saves (accessible in-game menu)
- **Slot 9**: Auto-save (created on quit, loaded on resume)
@@ -264,7 +264,7 @@ Save states are shared across all platforms (unlike per-game configs which are p
### Stack vs Heap
-MinUI prefers stack allocation for speed:
+LessUI prefers stack allocation for speed:
```c
char path[MAX_PATH]; // 512 bytes on stack
```
@@ -317,10 +317,10 @@ Launcher shows these first for quick access.
1. Device hardware boots
2. Runs boot script from device-specific location
3. Boot script:
- - Checks for `MinUI.zip` (update)
+ - Checks for `LessUI.zip` (update)
- Displays splash screen if updating
- - Extracts update or launches MinUI
-4. MinUI launcher starts
+ - Extracts update or launches LessUI
+4. LessUI launcher starts
5. User navigates and plays games
6. On quit, device reboots or powers off (prevents stock firmware access)
@@ -355,7 +355,7 @@ Minarch maintains 60fps by:
## Thread Safety
-MinUI is mostly single-threaded except:
+LessUI is mostly single-threaded except:
- Some platforms use background threads for HDMI monitoring
- Keymon runs as separate process
- Settings use shared memory or files for IPC
diff --git a/docs/CORES.md b/docs/CORES.md
index 209f0394..0cc05c91 100644
--- a/docs/CORES.md
+++ b/docs/CORES.md
@@ -1,10 +1,10 @@
-# MinUI Cores
+# LessUI Cores
-How libretro cores work in MinUI - their organization, build system, runtime loading, and platform differences.
+How libretro cores work in LessUI - their organization, build system, runtime loading, and platform differences.
## What Are Cores?
-MinUI uses **libretro cores** to emulate different gaming systems. Libretro is a simple API that allows emulator cores to be used across different frontends. MinUI's libretro frontend is called **minarch** (`workspace/all/minarch/`).
+LessUI uses **libretro cores** to emulate different gaming systems. Libretro is a simple API that allows emulator cores to be used across different frontends. LessUI's libretro frontend is called **minarch** (`workspace/all/minarch/`).
**Core**: A compiled `.so` library implementing a specific emulator (e.g., `gambatte_libretro.so` for Game Boy)
@@ -98,7 +98,7 @@ workspace/all/cores/patches/
└── 001-export-dmg-grid-color-on-change.patch
```
-These patches add MinUI-specific features (like DMG palette color export for color palettes).
+These patches add LessUI-specific features (like DMG palette color export for color palettes).
---
@@ -106,7 +106,7 @@ These patches add MinUI-specific features (like DMG palette color export for col
### Two-Tier Makefile Architecture
-MinUI uses a templated build system with platform-specific and shared components:
+LessUI uses a templated build system with platform-specific and shared components:
#### 1. Platform-Specific Makefile
@@ -185,7 +185,7 @@ The build process follows these steps:
1. **Clone** upstream libretro core repository
2. **Apply platform-specific patch** (adds platform definition to core's Makefile)
-3. **Apply shared patches** (MinUI-specific features)
+3. **Apply shared patches** (LessUI-specific features)
4. **Cross-compile** using Docker toolchain with `platform=` flag
5. **Copy** compiled `.so` file to `output/` directory
@@ -229,7 +229,7 @@ This tells the core:
#### Shared Patches
-These add MinUI-specific features across all platforms. Example: `workspace/all/cores/patches/gambatte/001-export-dmg-grid-color-on-change.patch` adds support for exporting palette color changes for color palette swapping.
+These add LessUI-specific features across all platforms. Example: `workspace/all/cores/patches/gambatte/001-export-dmg-grid-color-on-change.patch` adds support for exporting palette color changes for color palette swapping.
### Cross-Compilation Toolchain
@@ -432,7 +432,7 @@ nice -20 minarch.elf "$CORES_PATH/${EMU_EXE}_libretro.so" "$ROM" \
&> "$LOGS_PATH/$EMU_TAG.txt"
```
-Environment variables (set by `MinUI.pak/launch.sh`):
+Environment variables (set by `LessUI.pak/launch.sh`):
- `PLATFORM`: `"miyoomini"`, `"trimuismart"`, `"rgb30"`, etc.
- `SDCARD_PATH`: `"/mnt/SDCARD"`
- `SYSTEM_PATH`: `"$SDCARD_PATH/.system/$PLATFORM"`
@@ -593,7 +593,7 @@ These callbacks are implemented by MinArch and called by the core during `retro_
```c
// Video: Core calls this to display a frame
typedef void (*retro_video_refresh_t)(
- const void* data, // Frame buffer (RGB565 in MinUI)
+ const void* data, // Frame buffer (RGB565 in LessUI)
unsigned width,
unsigned height,
size_t pitch // Bytes per scanline
@@ -635,7 +635,7 @@ static bool environment_callback(unsigned cmd, void* data) {
case RETRO_ENVIRONMENT_SET_PIXEL_FORMAT:
// Core says: "I want to output RGB565"
if (*(enum retro_pixel_format*)data != RETRO_PIXEL_FORMAT_RGB565)
- return false; // MinUI only supports RGB565!
+ return false; // LessUI only supports RGB565!
return true;
case RETRO_ENVIRONMENT_GET_VARIABLE:
@@ -706,21 +706,21 @@ static bool environment_callback(unsigned cmd, void* data) {
|<--------- dlclose() ----------------|
```
-### Key MinUI-Specific Requirements
+### Key LessUI-Specific Requirements
-1. **Pixel Format**: MinUI **only** supports RGB565 (16-bit color)
+1. **Pixel Format**: LessUI **only** supports RGB565 (16-bit color)
- Cores that output RGB888 or XRGB8888 are rejected
- This is for performance on low-end ARM devices
-2. **Sample Rate**: MinUI resamples audio to platform-native sample rate
+2. **Sample Rate**: LessUI resamples audio to platform-native sample rate
- Most cores output 32040 Hz or 48000 Hz
- - MinUI's audio resampler converts to device sample rate (often 44100 Hz)
+ - LessUI's audio resampler converts to device sample rate (often 44100 Hz)
-3. **Save State Paths**: MinUI manages save state paths
+3. **Save State Paths**: LessUI manages save state paths
- Slot 9 is special: auto-resume slot (saved on quit, loaded on launch)
- Slots 0-8 are user-accessible save slots
-4. **Fast-Forward**: MinUI implements fast-forward by calling `retro_run()` multiple times per frame
+4. **Fast-Forward**: LessUI implements fast-forward by calling `retro_run()` multiple times per frame
- Skips video refresh callback for intermediate frames
- Plays audio at accelerated rate
@@ -775,9 +775,9 @@ static bool environment_callback(unsigned cmd, void* data) {
| `workspace//platform/platform.h` | Hardware constants (buttons, screen size) |
| `workspace/all/common/defines.h` | Derived path constants |
-## Adding a Core to MinUI
+## Adding a Core to LessUI
-Quick steps for adding a new core to the official MinUI distribution:
+Quick steps for adding a new core to the official LessUI distribution:
1. **Decide placement** - Stock (base install) or extras (optional download)
2. **Add to platform makefiles** - Edit `workspace//cores/makefile`
@@ -795,7 +795,7 @@ Quick steps for adding a new core to the official MinUI distribution:
6. **Test on hardware** - Verify save states, auto-resume, and in-game menu work correctly
7. **Repeat for other platforms** - Each platform needs patches and paks
-Core quality matters: Cores should reliably support save states, have acceptable performance, and integrate cleanly with MinUI's features (auto-resume, in-game menu, consistent behavior).
+Core quality matters: Cores should reliably support save states, have acceptable performance, and integrate cleanly with LessUI's features (auto-resume, in-game menu, consistent behavior).
## Potential Improvements
@@ -830,7 +830,7 @@ Some areas that could be simplified or improved:
## Resources
-- [Architecture Guide](ARCHITECTURE.md) - How MinUI works internally
+- [Architecture Guide](ARCHITECTURE.md) - How LessUI works internally
- [Development Guide](DEVELOPMENT.md) - Building and testing
- [Pak Development](PAKS.md) - Creating custom emulator paks
- [CLAUDE.md](../CLAUDE.md) - Comprehensive technical reference
diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md
index d79e5e2c..dabadd2a 100644
--- a/docs/DEVELOPMENT.md
+++ b/docs/DEVELOPMENT.md
@@ -1,10 +1,10 @@
-# MinUI Development Guide
+# LessUI Development Guide
-This guide covers building MinUI, running tests, and contributing code.
+This guide covers building LessUI, running tests, and contributing code.
-## Building MinUI
+## Building LessUI
-MinUI uses Docker to cross-compile for ARM devices. You don't need the actual hardware to build.
+LessUI uses Docker to cross-compile for ARM devices. You don't need the actual hardware to build.
### Prerequisites
@@ -26,6 +26,43 @@ make PLATFORM=miyoomini
Available platforms: `miyoomini`, `my282`, `my355`, `trimuismart`, `rg35xx`, `rg35xxplus`, `rgb30`, `tg5040`, `m17`, `gkdpixel`, `magicmini`, `zero28`
+### macOS Native Development (Fastest Workflow)
+
+For rapid UI development on macOS, build and run natively without Docker:
+
+```bash
+# First-time setup: Install SDL2 libraries
+brew install sdl2 sdl2_image sdl2_ttf
+
+# Build and run minui
+make dev-run
+```
+
+This gives you:
+- **Instant builds** (native compiler, no Docker overhead)
+- **Live debugging** with AddressSanitizer
+- **Visual testing** in SDL2 window (640×480 or 854×480)
+- **Keyboard controls**: Arrow keys (D-pad), A/S/W/Q (buttons), Enter (Start), Space (Menu)
+- **Quit**: Hold Backspace/Delete
+
+The fake SD card lives at `workspace/macos/FAKESD/`. Add test ROMs there:
+```bash
+mkdir -p workspace/macos/FAKESD/Roms/GB
+cp ~/Downloads/game.gb workspace/macos/FAKESD/Roms/GB/
+```
+
+**Development commands:**
+```bash
+make dev # Build minui for macOS
+make dev-run # Build and run minui
+make dev-clean # Clean macOS build artifacts
+```
+
+**Limitations:**
+- macOS platform is for **launcher (minui) development only**
+- Cannot test libretro cores (minarch) - use actual hardware
+- Hardware features stubbed (brightness, volume, power)
+
### Platform Shell (for development)
Drop into a build environment for interactive development:
@@ -60,7 +97,7 @@ This runs `cppcheck` on `workspace/all/` which contains all the platform-indepen
### Unit Tests
-MinUI uses Unity for testing:
+LessUI uses Unity for testing:
```bash
make test
```
@@ -94,7 +131,7 @@ Run tests: `make test`
### Code Formatting
-MinUI uses `clang-format` with tabs and K&R-style braces:
+LessUI uses `clang-format` with tabs and K&R-style braces:
```bash
make format # Format all code
make format-check # Check without changing
@@ -116,7 +153,7 @@ make lint-shell
## Project Structure
```
-MinUI/
+LessUI/
├── workspace/
│ ├── all/ # Platform-independent code
│ │ ├── minui/ # Launcher
@@ -140,7 +177,7 @@ MinUI/
## Platform Architecture
-MinUI uses a **platform abstraction layer** so one codebase supports 20+ devices:
+LessUI uses a **platform abstraction layer** so one codebase supports 20+ devices:
**Common code** (`workspace/all/`) calls abstract APIs like:
- `GFX_clear()` - Clear screen
@@ -235,7 +272,7 @@ Note: Some platforms share cores (e.g., my282 copies cores from rg35xx due to sa
### Updating Assets
-MinUI uses a **source + generated** asset system for easy maintenance.
+LessUI uses a **source + generated** asset system for easy maintenance.
**Source assets** live in `skeleton/SYSTEM/res-src/`:
- `assets.png` - UI sprite sheet (512×512)
@@ -293,7 +330,7 @@ Then check logs on device.
## Resources
-- [Architecture Guide](ARCHITECTURE.md) - How MinUI works internally
+- [Architecture Guide](ARCHITECTURE.md) - How LessUI works internally
- [Cores Guide](CORES.md) - How libretro cores work
- [Pak Development](PAKS.md) - Creating custom emulator paks
- [Platform READMEs](../workspace/) - Platform-specific docs
diff --git a/docs/PAKS.md b/docs/PAKS.md
index c4a5a056..2fa3cda4 100644
--- a/docs/PAKS.md
+++ b/docs/PAKS.md
@@ -1,32 +1,32 @@
-# About MinUI paks
+# About LessUI paks
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 MinUI.
+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 LessUI.
Paks are platform specific. Inside the Emus and Tools folders you will find (or need to create) platform folders. Some platform folders are named after the target device (eg. "rgb30" for the Powkiddy RGB30), others use the device's internal name (eg. "tg5040" for the Trimui Smart Pro), other use an arbitrary shortname (eg. "trimui" for the Trimui Model S), all are completely lowercase. See the extras bundle for up-to-date supported platform folder names.
-Some platforms have multiple devices with unique qualities. MinUI differentiates these devices from the base platform with the `DEVICE` envar. eg. the "rg35xxplus" platform has two unique devices "cube" for the RG CubeXX, and "wide" for the RG34xx. It also supports "hdmi" for when outputting to HDMI. A pak can choose to use or ignore this envar.
+Some platforms have multiple devices with unique qualities. LessUI differentiates these devices from the base platform with the `DEVICE` envar. eg. the "rg35xxplus" platform has two unique devices "cube" for the RG CubeXX, and "wide" for the RG34xx. It also supports "hdmi" for when outputting to HDMI. A pak can choose to use or ignore this envar.
# The types of emulator pak
-There are three basic types of emulator paks, which you chose depends on your goals and your desired level of MinUI integration. See [CORES.md](CORES.md) for details on how libretro cores work in MinUI.
+There are three basic types of emulator paks, which you chose depends on your goals and your desired level of LessUI integration. See [CORES.md](CORES.md) for details on how libretro cores work in LessUI.
-The first type reuses a libretro core included with a base MinUI install. This takes advantage of a known working core but allows customizing the default options and separating user configs. An example of this type is the extra GG.pak which uses the default picodrive core.
+The first type reuses a libretro core included with a base LessUI install. This takes advantage of a known working core but allows customizing the default options and separating user configs. An example of this type is the extra GG.pak which uses the default picodrive core.
-The second type includes its own libretro core. This allows you to support completely new systems while still taking advantage of MinUI's standard features like resume from menu, quicksave and auto-resume, and consistent in-game menus, behaviors, and options. An example of this type is the extra MGBA.pak which bundles its own mgba core.
+The second type includes its own libretro core. This allows you to support completely new systems while still taking advantage of LessUI's standard features like resume from menu, quicksave and auto-resume, and consistent in-game menus, behaviors, and options. An example of this type is the extra MGBA.pak which bundles its own mgba core.
-The third type launches a bundled standalone emulator. This may allow you to squeeze more performance out of a piece of hardware than a libretro core could. The downside of this type is no integration with MinUI. No resume from menu, no quicksave and auto-resume, no consistent in-game menus, behaviors, or options. In some cases the MENU (and if available, POWER) button may not function as expected, if at all. This type of pak should be a last resort. An example of this type is the community developed NDS.pak which is available for a handful of platforms MinUI supports.
+The third type launches a bundled standalone emulator. This may allow you to squeeze more performance out of a piece of hardware than a libretro core could. The downside of this type is no integration with LessUI. No resume from menu, no quicksave and auto-resume, no consistent in-game menus, behaviors, or options. In some cases the MENU (and if available, POWER) button may not function as expected, if at all. This type of pak should be a last resort. An example of this type is the community developed NDS.pak which is available for a handful of platforms LessUI supports.
-In all cases please make clear to your users that I (@shauninman) can't support third-party paks. If I've excluded a console or core from MinUI's base or extra bundles it's usually for good reason, either the core's integration wasn't up to snuff (eg. arcade cores expect roms to have specific, arcane file names with only certain rom sets working with certain cores), has too many bugs (eg. unable to reliably resume from a save state), has poor performance on a given device, or is just a console I have no familiarity with or interest in.
+In all cases please make clear to your users that I (@shauninman) can't support third-party paks. If I've excluded a console or core from LessUI's base or extra bundles it's usually for good reason, either the core's integration wasn't up to snuff (eg. arcade cores expect roms to have specific, arcane file names with only certain rom sets working with certain cores), has too many bugs (eg. unable to reliably resume from a save state), has poor performance on a given device, or is just a console I have no familiarity with or interest in.
# Naming your emulator pak
-MinUI maps roms to paks based on the tag in parentheses at the end the name of the rom's parent folder (eg. "/Roms/Game Boy (GB)/Dr. Mario (World).gb" will launch the "GB.pak"). A tag should be all uppercase. When choosing a tag, start with common abbreviations used by other emulation frontends like Retroarch or EmulationStation (eg. FC for Famicom/Nintendo or MD for MegaDrive/Genesis). If that tag is already being used by another pak, use the core name if short (eg. MGBA) or an abbreviation (eg. PKM for pokemini) or truncation (eg. SUPA for mednafen_supafaust) of the core name.
+LessUI maps roms to paks based on the tag in parentheses at the end the name of the rom's parent folder (eg. "/Roms/Game Boy (GB)/Dr. Mario (World).gb" will launch the "GB.pak"). A tag should be all uppercase. When choosing a tag, start with common abbreviations used by other emulation frontends like Retroarch or EmulationStation (eg. FC for Famicom/Nintendo or MD for MegaDrive/Genesis). If that tag is already being used by another pak, use the core name if short (eg. MGBA) or an abbreviation (eg. PKM for pokemini) or truncation (eg. SUPA for mednafen_supafaust) of the core name.
# Environment variables
-MinUI sets up these variables before launching your pak:
+LessUI sets up these variables before launching your pak:
- `PLATFORM` - Platform identifier (e.g., "miyoomini", "rg35xxplus")
- `DEVICE` - Device variant (e.g., "cube" for RG CubeXX, "wide" for RG34XX)
@@ -57,7 +57,7 @@ Here's an example "launch.sh":
cd "$HOME"
minarch.elf "$CORES_PATH/${EMU_EXE}_libretro.so" "$ROM" &> "$LOGS_PATH/$EMU_TAG.txt"
-This will open the requested rom using the "picodrive\_libretro.so" core included with the base MinUI install. To use a different core just change the value of `EMU_EXE` to another core name (minus the "_libretro.so"). If that core is bundled in your pak add the following after the `EMU_EXE` line:
+This will open the requested rom using the "picodrive\_libretro.so" core included with the base LessUI install. To use a different core just change the value of `EMU_EXE` to another core name (minus the "_libretro.so"). If that core is bundled in your pak add the following after the `EMU_EXE` line:
CORES_PATH=$(dirname "$0")
@@ -69,7 +69,7 @@ Some platforms may require `nice -20` before `minarch.elf` for proper CPU priori
# 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. MinUI 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. LessUI 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":
@@ -100,7 +100,7 @@ to
# Brightness and Volume
-Some binaries insist on resetting brightness (eg. DinguxCommander on the 40xxH stock firmware) or volume (eg. ppssppSDL everywhere) on every launch. To keep this in sync with MinUI's global settings there's syncsettings.elf. It waits one second then restores MinUI's current brightness and volume settings. In most cases you can just launch it as a daemon before launching the binary:
+Some binaries insist on resetting brightness (eg. DinguxCommander on the 40xxH stock firmware) or volume (eg. ppssppSDL everywhere) on every launch. To keep this in sync with LessUI's global settings there's syncsettings.elf. It waits one second then restores LessUI's current brightness and volume settings. In most cases you can just launch it as a daemon before launching the binary:
syncsettings.elf &
./DinguxCommander
@@ -118,11 +118,11 @@ But if a binary takes more than one second to initialize you might need to just
# Caveats
-MinUI 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 MinUI's minarch to run certain cores but that is left as an exercise for the reader.
+LessUI 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 LessUI's minarch to run certain cores but that is left as an exercise for the reader.
## Resources
-- [Architecture Guide](ARCHITECTURE.md) - How MinUI works internally
+- [Architecture Guide](ARCHITECTURE.md) - How LessUI works internally
- [Cores Guide](CORES.md) - How libretro cores work
- [Development Guide](DEVELOPMENT.md) - Building and testing
- [Main Project Docs](../CLAUDE.md) - Comprehensive reference
\ No newline at end of file
diff --git a/github/README.md b/github/README.md
index 9c1970a5..3d260834 100644
--- a/github/README.md
+++ b/github/README.md
@@ -1,3 +1,3 @@
-# MinUI screenshots
+# LessUI screenshots
diff --git a/github/generate_screenshots.sh b/github/generate_screenshots.sh
index 4861cd50..3583174b 100755
--- a/github/generate_screenshots.sh
+++ b/github/generate_screenshots.sh
@@ -3,7 +3,7 @@
pushd "$(dirname "$0")" >> /dev/null
files=$(ls *.png)
-screenshotText="# MinUI screenshots\n\n"
+screenshotText="# LessUI screenshots\n\n"
for file in $files; do
screenshotText+="
"
diff --git a/makefile b/makefile
index 454f669a..b14425a0 100644
--- a/makefile
+++ b/makefile
@@ -1,4 +1,4 @@
-# MinUI Build System
+# LessUI Build System
# Main makefile for orchestrating multi-platform builds
#
# This makefile runs on the HOST system (macOS/Linux), not in Docker.
@@ -9,6 +9,8 @@
# make test - Run unit tests (uses Docker)
# make lint - Run static analysis
# make format - Format code with clang-format
+# make dev - Build minui for macOS (native, for development)
+# make dev-run - Build and run minui on macOS
# make all - Build all platforms (creates release ZIPs)
#
# Platform-specific build:
@@ -36,14 +38,14 @@ endif
BUILD_HASH:=$(shell git rev-parse --short HEAD)
RELEASE_TIME:=$(shell TZ=GMT date +%Y%m%d)
RELEASE_BETA=
-RELEASE_BASE=MinUI-$(RELEASE_TIME)$(RELEASE_BETA)
+RELEASE_BASE=LessUI-$(RELEASE_TIME)$(RELEASE_BETA)
RELEASE_DOT:=$(shell find -E ./releases/. -regex ".*/${RELEASE_BASE}-[0-9]+-base\.zip" | wc -l | sed 's/ //g')
RELEASE_NAME=$(RELEASE_BASE)-$(RELEASE_DOT)
###########################################################
# Build configuration
-.PHONY: build test lint format all shell name clean setup done
+.PHONY: build test lint format dev dev-run dev-run-4x3 dev-run-16x9 dev-clean all shell name clean setup done
export MAKEFLAGS=--no-print-directory
@@ -68,6 +70,22 @@ lint:
format:
@make -f makefile.qa format
+# macOS development targets (forward to makefile.dev)
+dev:
+ @make -f makefile.dev dev
+
+dev-run:
+ @make -f makefile.dev dev-run
+
+dev-clean:
+ @make -f makefile.dev dev-clean
+
+dev-run-4x3:
+ @make -f makefile.dev dev-run-4x3
+
+dev-run-16x9:
+ @make -f makefile.dev dev-run-16x9
+
# Build all components for a specific platform (in Docker)
build:
# ----------------------------------------------------
@@ -221,11 +239,11 @@ package: tidy
mv ./build/SYSTEM ./build/PAYLOAD/.system
cp -R ./build/BOOT/.tmp_update ./build/PAYLOAD/
- cd ./build/PAYLOAD && zip -r MinUI.zip .system .tmp_update
- mv ./build/PAYLOAD/MinUI.zip ./build/BASE
+ cd ./build/PAYLOAD && zip -r LessUI.zip .system .tmp_update
+ mv ./build/PAYLOAD/LessUI.zip ./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 miyoo285 em_ui.sh MinUI.zip README.txt
+ cd ./build/BASE && zip -r ../../releases/$(RELEASE_NAME)-base.zip Bios Roms Saves miyoo miyoo354 trimui rg35xx rg35xxplus gkdpixel miyoo355 magicx miyoo285 em_ui.sh LessUI.zip README.txt
cd ./build/EXTRAS && zip -r ../../releases/$(RELEASE_NAME)-extras.zip Bios Emus Roms Saves Tools README.txt
echo "$(RELEASE_NAME)" > ./build/latest.txt
diff --git a/makefile.dev b/makefile.dev
new file mode 100644
index 00000000..9d75ced9
--- /dev/null
+++ b/makefile.dev
@@ -0,0 +1,119 @@
+# LessUI macOS Development Build
+# Native compilation for rapid development and testing
+#
+# This makefile provides native macOS builds for development:
+# make dev - Build minui for macOS
+# make dev-run - Build and run minui
+# make dev-clean - Clean macOS build artifacts
+#
+# Prerequisites:
+# brew install sdl2 sdl2_image sdl2_ttf
+#
+# The main makefile forwards to this file for dev/dev-run targets.
+
+.PHONY: help dev dev-run dev-run-4x3 dev-run-16x9 dev-clean check-sdl
+
+help:
+ @echo "LessUI macOS Development Tools"
+ @echo ""
+ @echo "Quick commands:"
+ @echo " make dev - Build minui for macOS (4:3, 640×480)"
+ @echo " make dev-run - Build and run minui"
+ @echo " make dev-clean - Clean macOS build artifacts"
+ @echo ""
+ @echo "Aspect ratio variants:"
+ @echo " make dev-run-4x3 - Run in 4:3 aspect ratio (640×480) - default"
+ @echo " make dev-run-16x9 - Run in 16:9 aspect ratio (854×480)"
+ @echo " ASPECT_RATIO=16x9 make dev-run - Custom aspect ratio"
+ @echo ""
+ @echo "Prerequisites:"
+ @echo " brew install sdl2 sdl2_image sdl2_ttf"
+
+# macOS native build configuration
+PLATFORM = macos
+SDL_INCLUDES = -I/opt/homebrew/include
+SDL_LIBS = -L/opt/homebrew/lib
+FAKESD_PATH = $(shell pwd)/workspace/macos/FAKESD
+
+# Aspect ratio configuration (4x3 or 16x9)
+# Can be overridden: ASPECT_RATIO=16x9 make dev-run
+ASPECT_RATIO ?= 4x3
+
+ifneq (,$(filter $(ASPECT_RATIO),16x9 16:9))
+ SCREEN_WIDTH = 854
+ SCREEN_HEIGHT = 480
+else
+ SCREEN_WIDTH = 640
+ SCREEN_HEIGHT = 480
+endif
+
+# Compiler and flags (native macOS)
+CC = gcc
+INCDIR = -I workspace/all/minui -I workspace/all/common -I workspace/macos/platform $(SDL_INCLUDES)
+CFLAGS = -fomit-frame-pointer -DPLATFORM=\"$(PLATFORM)\" -DUSE_SDL2 -Ofast -std=gnu99
+CFLAGS += -DDEV_SCREEN_WIDTH=$(SCREEN_WIDTH) -DDEV_SCREEN_HEIGHT=$(SCREEN_HEIGHT)
+CFLAGS += -fsanitize=address -fno-common
+CFLAGS += -Wno-tautological-constant-out-of-range-compare -Wno-asm-operand-widths
+LDFLAGS = -ldl -flto $(SDL_LIBS) -lSDL2 -lSDL2_image -lSDL2_ttf -lpthread -lm -lz -fsanitize=address
+
+# Source files (from workspace/all/minui/makefile)
+MINUI_SOURCE = workspace/all/minui/minui.c \
+ workspace/all/common/scaler.c \
+ workspace/all/common/utils.c \
+ workspace/all/common/api.c \
+ workspace/all/common/collections.c \
+ workspace/all/common/pad.c \
+ workspace/all/common/gfx_text.c \
+ workspace/macos/platform/platform.c
+
+# Build output
+BUILD_DIR = workspace/all/minui/build/macos
+MINUI_BIN = $(BUILD_DIR)/minui
+
+# Check if SDL2 is installed and sync resources
+check-sdl:
+ @if [ ! -d /opt/homebrew/include/SDL2 ] && [ ! -d /usr/local/include/SDL2 ]; then \
+ echo "Error: SDL2 not found. Please install:"; \
+ echo " brew install sdl2 sdl2_image sdl2_ttf"; \
+ exit 1; \
+ fi
+ @if [ ! -d "$(FAKESD_PATH)" ]; then \
+ echo "Warning: FAKESD directory not found at $(FAKESD_PATH)"; \
+ echo "Creating directory structure..."; \
+ mkdir -p "$(FAKESD_PATH)/Roms"; \
+ mkdir -p "$(FAKESD_PATH)/.userdata"; \
+ mkdir -p "$(FAKESD_PATH)/.system"; \
+ echo "FAKESD structure created. Add ROMs to $(FAKESD_PATH)/Roms/"; \
+ fi
+ @mkdir -p "$(FAKESD_PATH)/.system/res"
+ @rsync -a --delete skeleton/SYSTEM/res/ "$(FAKESD_PATH)/.system/res/"
+
+# Build minui for macOS
+dev: check-sdl
+ @echo "Building minui for macOS (native)..."
+ @mkdir -p $(BUILD_DIR)
+ $(CC) $(MINUI_SOURCE) -o $(MINUI_BIN) $(INCDIR) $(CFLAGS) $(LDFLAGS)
+ @echo "✓ Build complete: $(MINUI_BIN)"
+ @echo ""
+ @echo "Run with: make dev-run"
+ @echo "Or directly: $(MINUI_BIN)"
+
+# Build and run minui
+dev-run: dev
+ @echo "Launching minui..."
+ @echo "FAKESD path: $(FAKESD_PATH)"
+ @echo ""
+ @cd workspace/all/minui && ./build/macos/minui
+
+# Clean build artifacts
+dev-clean:
+ @echo "Cleaning macOS build artifacts..."
+ @rm -rf $(BUILD_DIR)
+ @echo "✓ Clean complete"
+
+# Convenience targets for specific aspect ratios
+dev-run-4x3:
+ @$(MAKE) -f makefile.dev dev-run ASPECT_RATIO=4x3
+
+dev-run-16x9:
+ @$(MAKE) -f makefile.dev dev-run ASPECT_RATIO=16x9
diff --git a/makefile.qa b/makefile.qa
index dc576a9d..75394fc0 100644
--- a/makefile.qa
+++ b/makefile.qa
@@ -1,7 +1,7 @@
-# MinUI Quality Assurance
+# LessUI Quality Assurance
# Static analysis, testing, and code formatting
#
-# This makefile provides quality assurance tools for the MinUI codebase:
+# This makefile provides quality assurance tools for the LessUI codebase:
# - Unit tests (Docker-based, using Debian Buster + GCC 8.3.0)
# - Static analysis (cppcheck for C code, shellcheck for scripts)
# - Code formatting (clang-format with project style)
@@ -17,7 +17,7 @@
.PHONY: help lint lint-code lint-full lint-shell test test-native format format-check clean-qa docker-build docker-test docker-shell
help:
- @echo "MinUI Quality Assurance Tools"
+ @echo "LessUI Quality Assurance Tools"
@echo ""
@echo "Main targets (use these):"
@echo " make test - Run unit tests (Docker, recommended)"
@@ -152,9 +152,9 @@ tests/minarch_paths_test: tests/unit/all/common/test_minarch_paths.c workspace/a
@echo "Building MinArch path generation tests..."
@$(CC) -o $@ $^ $(TEST_INCLUDES) $(TEST_CFLAGS)
-# Build MinUI launcher utility tests (pure string logic)
+# Build LessUI launcher utility tests (pure string logic)
tests/minui_utils_test: tests/unit/all/common/test_minui_utils.c workspace/all/common/minui_utils.c workspace/all/common/utils.c $(TEST_UNITY)
- @echo "Building MinUI launcher utility tests..."
+ @echo "Building LessUI launcher utility tests..."
@$(CC) -o $@ $^ $(TEST_INCLUDES) $(TEST_CFLAGS)
# Build M3U parser tests (uses file mocking with GCC --wrap, Docker-only)
@@ -162,9 +162,9 @@ tests/m3u_parser_test: tests/unit/all/common/test_m3u_parser.c workspace/all/com
@echo "Building M3U parser tests..."
@$(CC) -o $@ $^ $(TEST_INCLUDES) $(TEST_CFLAGS) -D_POSIX_C_SOURCE=200809L -Wl,--wrap=exists -Wl,--wrap=fopen -Wl,--wrap=fclose -Wl,--wrap=fgets
-# Build MinUI file utility tests (uses file mocking with GCC --wrap, Docker-only)
+# Build LessUI file utility tests (uses file mocking with GCC --wrap, Docker-only)
tests/minui_file_utils_test: tests/unit/all/common/test_minui_file_utils.c workspace/all/common/minui_file_utils.c workspace/all/common/utils.c tests/support/fs_mocks.c $(TEST_UNITY)
- @echo "Building MinUI file utility tests..."
+ @echo "Building LessUI file utility tests..."
@$(CC) -o $@ $^ $(TEST_INCLUDES) $(TEST_CFLAGS) -Wl,--wrap=exists -Wl,--wrap=fopen -Wl,--wrap=fclose -Wl,--wrap=fgets
# Build map.txt parser tests (uses file mocking with GCC --wrap, Docker-only)
diff --git a/makefile.toolchain b/makefile.toolchain
index 47d0deff..0c694d53 100644
--- a/makefile.toolchain
+++ b/makefile.toolchain
@@ -1,10 +1,10 @@
-# MinUI Docker Toolchain Manager
+# LessUI Docker Toolchain Manager
# Manages platform-specific cross-compilation toolchains
#
# This makefile is called by the main makefile to:
# 1. Clone platform-specific toolchain repositories (from union-* repos)
# 2. Build Docker images with ARM cross-compilers
-# 3. Launch Docker containers for building MinUI components
+# 3. Launch Docker containers for building LessUI components
#
# Toolchains are cloned to: toolchains/-toolchain/
# Each toolchain contains a Dockerfile with the cross-compiler setup.
diff --git a/scripts/generate-assets.sh b/scripts/generate-assets.sh
index 4b825fa1..307395a1 100755
--- a/scripts/generate-assets.sh
+++ b/scripts/generate-assets.sh
@@ -28,15 +28,8 @@ if ! command -v magick &> /dev/null && ! command -v convert &> /dev/null; then
exit 1
fi
-# Check for pngquant (optional but recommended)
-if ! command -v pngquant &> /dev/null; then
- echo "WARNING: pngquant not found - PNG files will not be compressed"
- echo "Install with: brew install pngquant"
- echo ""
- HAS_PNGQUANT=false
-else
- HAS_PNGQUANT=true
-fi
+# pngquant removed - caused color degradation on boot screens
+# PNG files are small enough without compression
# Use magick if available (v7+), fallback to convert (v6)
if command -v magick &> /dev/null; then
@@ -50,10 +43,11 @@ for ASSET in installing updating bootlogo charging; do
echo "Processing $ASSET..."
# PNG variants (for show.elf platforms - simple scaling, maintain 4:3)
+ # IMPORTANT: png:color-type=2 forces RGB (no palette), prevents indexed color
echo " Generating PNG variants..."
- $MAGICK $SRC/$ASSET.png -resize 320x240! $OUT/$ASSET@1x.png
- $MAGICK $SRC/$ASSET.png -resize 640x480! $OUT/$ASSET@2x.png
- $MAGICK $SRC/$ASSET.png -resize 960x720! $OUT/$ASSET@3x.png
+ $MAGICK $SRC/$ASSET.png -resize 320x240! -define png:color-type=2 $OUT/$ASSET@1x.png
+ $MAGICK $SRC/$ASSET.png -resize 640x480! -define png:color-type=2 $OUT/$ASSET@2x.png
+ $MAGICK $SRC/$ASSET.png -resize 960x720! -define png:color-type=2 $OUT/$ASSET@3x.png
# BMP variants (for dd platforms - 24-bit, standard 54-byte header)
echo " Generating BMP variants..."
@@ -107,30 +101,6 @@ $MAGICK $SRC/assets.png -resize 512x512! $OUT/assets@4x.png
echo " ✓ Generated all variants for assets"
echo ""
-# Compress PNG files with pngquant
-if [ "$HAS_PNGQUANT" = true ]; then
- echo "Compressing PNG files with pngquant..."
-
- # Get sizes before compression
- BEFORE=$(du -sk $OUT/*@*.png | awk '{sum+=$1} END {print sum}')
-
- # Compress all generated PNGs (not source files!)
- # --quality=85-95: High quality, minimal visual loss
- # --skip-if-larger: Only replace if compressed version is smaller
- # --force: Overwrite existing files
- # --ext .png: Replace original files
- pngquant --quality=85-95 --skip-if-larger --force --ext .png $OUT/*@*.png
-
- # Get sizes after compression
- AFTER=$(du -sk $OUT/*@*.png | awk '{sum+=$1} END {print sum}')
- SAVED=$((BEFORE - AFTER))
- PERCENT=$((SAVED * 100 / BEFORE))
-
- echo " ✓ PNG compression complete"
- echo " Before: ${BEFORE}KB, After: ${AFTER}KB, Saved: ${SAVED}KB (${PERCENT}%)"
- echo ""
-fi
-
echo "All assets generated successfully!"
echo ""
echo "Generated variants:"
diff --git a/skeleton/BASE/README.md b/skeleton/BASE/README.md
index 42898720..e55f5558 100644
--- a/skeleton/BASE/README.md
+++ b/skeleton/BASE/README.md
@@ -1,15 +1,15 @@
-# MinUI
+# LessUI
-MinUI is a focused, custom launcher and libretro frontend for retro handheld devices. One SD card works across 20+ different handhelds from multiple manufacturers.
+LessUI is a focused, custom launcher and libretro frontend for retro handheld devices. One SD card works across 20+ different handhelds from multiple manufacturers.
-**Source:** https://github.com/shauninman/minui
+**Source:** https://github.com/nchapman/LessUI
---
## What's Included
This package contains:
-- MinUI launcher and emulator frontend
+- LessUI launcher and emulator frontend
- Base emulator cores (GB, GBC, GBA, NES, SNES, Genesis, PlayStation)
- Installation files for supported devices
- Sample ROM and BIOS folders
@@ -23,7 +23,7 @@ This package contains:
**SD Card Setup:**
- Use a reputable brand SD card
- Format as FAT32 (MBR partition table)
-- For dual-SD devices: Install MinUI on the **second card** (TF2)
+- For dual-SD devices: Install LessUI on the **second card** (TF2)
**Important:** Some devices require one-time NAND or TF1 modifications. Follow your device's specific instructions below.
@@ -34,7 +34,7 @@ This package contains:
**Setup:**
1. Use stock Anbernic firmware on TF1 (quality is fine, no userdata stored there)
2. Copy `rg35xxplus/dmenu.bin` to root of TF1's "NO NAME" partition (has "anbernic" folder)
-3. Copy `MinUI.zip` to root of TF2 card
+3. Copy `LessUI.zip` to root of TF2 card
4. Insert both cards and boot
**Note:** Different stock TF1 versions for different models (Plus/H/2024/SP vs 28XX/40XXH). Don't mix them.
@@ -44,19 +44,19 @@ This package contains:
**Setup:**
1. Use stock Anbernic firmware on TF1
2. Copy `rg35xx/dmenu.bin` to root of MISC partition on TF1
-3. Copy `MinUI.zip` to root of TF2 card
+3. Copy `LessUI.zip` to root of TF2 card
4. Insert both cards and boot
### Miyoo Mini / Miyoo Mini Plus
**Standard Mini:**
1. Copy `miyoo` folder to SD card root
-2. Copy `MinUI.zip` to SD card root
+2. Copy `LessUI.zip` to SD card root
3. Boot device
**Mini Plus:**
1. Copy `miyoo354` folder to SD card root
-2. Copy `MinUI.zip` to SD card root
+2. Copy `LessUI.zip` to SD card root
3. Boot device
4. Optional: Enable RTC by creating empty file `/.userdata/miyoomini/enable-rtc`
@@ -64,21 +64,21 @@ This package contains:
**Setup:**
1. Copy `miyoo` folder to SD card root
-2. Copy `MinUI.zip` to SD card root
+2. Copy `LessUI.zip` to SD card root
3. Boot device
### Miyoo Mini Flip
**Setup:**
1. Copy `miyoo285` folder to SD card root
-2. Copy `MinUI.zip` to SD card root
+2. Copy `LessUI.zip` to SD card root
3. Boot device
### Miyoo Flip
**Setup:**
1. Copy `miyoo355` folder to SD card root
-2. Copy `MinUI.zip` to SD card root
+2. Copy `LessUI.zip` to SD card root
3. Insert SD card in **right slot** (beneath power button)
4. Boot device
@@ -86,14 +86,14 @@ This package contains:
**Setup:**
1. Copy `trimui` folder to SD card root
-2. Copy `MinUI.zip` to SD card root
+2. Copy `LessUI.zip` to SD card root
3. Boot device
### Powkiddy RGB30
**Setup:**
1. Download and flash Moss to **left slot** (TF-OS): https://github.com/shauninman/Moss/releases
-2. Copy `MinUI.zip` to root of **right slot** (TFGAME) SD card
+2. Copy `LessUI.zip` to root of **right slot** (TFGAME) SD card
3. Boot device
### MagicX Mini Zero 28
@@ -101,31 +101,31 @@ This package contains:
**Setup:**
1. Download and flash Moss to **left slot** (TF1/INT): https://github.com/shauninman/Moss-zero28/releases
2. Copy `magicx` folder to root of **right slot** (TF2/EXT) SD card
-3. Copy `MinUI.zip` to root of TF2/EXT SD card
+3. Copy `LessUI.zip` to root of TF2/EXT SD card
4. Boot device
### MagicX XU Mini M (Deprecated)
**Setup:**
1. Download and flash modified stock to **left slot** (TF1/INT): https://github.com/shauninman/Moss-magicmini/releases
-2. Copy `MinUI.zip` to root of **right slot** (TF2/EXT) SD card
+2. Copy `LessUI.zip` to root of **right slot** (TF2/EXT) SD card
3. Boot device
### M17 (Deprecated)
**Setup:**
1. Copy `em_ui.sh` to SD card root
-2. Copy `MinUI.zip` to SD card root
+2. Copy `LessUI.zip` to SD card root
3. Boot device
### GKD Pixel / GKD Mini (Deprecated)
-**Important:** Not cross-compatible with other MinUI devices. Firmware lives on SD card.
+**Important:** Not cross-compatible with other LessUI devices. Firmware lives on SD card.
**Setup:**
1. Backup entire stock SD card (or copy everything to "stock" folder on ROMS partition)
2. Copy `gkdpixel` folder to root of ROMS partition
-3. Copy `MinUI.zip` to root of ROMS partition
+3. Copy `LessUI.zip` to root of ROMS partition
4. Boot stock firmware
5. Navigate to APP folder, launch "file manager"
6. Navigate to `/media/roms/gkdpixel`
@@ -133,13 +133,13 @@ This package contains:
---
-## Updating MinUI
+## Updating LessUI
-Copy `MinUI.zip` to the root of your SD card (the one with your Roms folder). Reboot. MinUI will detect the ZIP and auto-update.
+Copy `LessUI.zip` to the root of your SD card (the one with your Roms folder). Reboot. LessUI will detect the ZIP and auto-update.
---
-## Using MinUI
+## Using LessUI
### Controls
@@ -172,7 +172,7 @@ Copy `MinUI.zip` to the root of your SD card (the one with your Roms folder). Re
### Save States and Auto-Resume
-**Quicksave:** MinUI automatically saves when you power off in-game. Next time you boot, it resumes exactly where you left off.
+**Quicksave:** LessUI automatically saves when you power off in-game. Next time you boot, it resumes exactly where you left off.
**Manual Save States:** Press MENU in-game to access 9 save state slots (0-8).
@@ -191,7 +191,7 @@ Copy `MinUI.zip` to the root of your SD card (the one with your Roms folder). Re
### ROM Folders
-MinUI maps ROM folders to emulators using **tags in parentheses**:
+LessUI maps ROM folders to emulators using **tags in parentheses**:
```
Roms/
@@ -227,7 +227,7 @@ Harmful Park (English v1.0)/
└── Harmful Park (English v1.0).cue
```
-MinUI launches the .cue file when you select the folder.
+LessUI launches the .cue file when you select the folder.
**Multi-disc games:**
```
diff --git a/skeleton/EXTRAS/README.md b/skeleton/EXTRAS/README.md
index d5e32c46..b797c9a7 100644
--- a/skeleton/EXTRAS/README.md
+++ b/skeleton/EXTRAS/README.md
@@ -1,8 +1,8 @@
-# MinUI Extras
+# LessUI Extras
-Optional emulator cores and tools for MinUI. These supplement the base installation with additional systems and utilities.
+Optional emulator cores and tools for LessUI. These supplement the base installation with additional systems and utilities.
-**Source:** https://github.com/shauninman/minui
+**Source:** https://github.com/nchapman/LessUI
---
@@ -27,7 +27,7 @@ Optional emulator cores and tools for MinUI. These supplement the base installat
## Installation
-Copy the desired folders from this archive to the corresponding locations on your MinUI SD card:
+Copy the desired folders from this archive to the corresponding locations on your LessUI SD card:
- `Emus//` → `/Emus//` (emulator paks)
- `Tools//` → `/Tools//` (tool paks)
@@ -66,7 +66,7 @@ Some extra cores require BIOS files. Place them in `Bios//`:
- **PKM** (Pokémon mini): `bios.min`
- **SGB** (Super Game Boy): `sgb.bios`
-**Note:** Filenames are case-sensitive. MinUI is strictly BYOB (bring your own BIOS).
+**Note:** Filenames are case-sensitive. LessUI is strictly BYOB (bring your own BIOS).
---
@@ -88,7 +88,7 @@ Run official PICO-8 natively (faster than libretro core).
- **Exit P8-NATIVE**: Press START → select "SHUTDOWN"
- **Exit Splore**: Press START (in-game) → "EXIT TO SPLORE" → (in splore) START → "OPTIONS" → "SHUTDOWN PICO-8"
-**Limitations:** No MinUI features (in-game menu, save states, auto-resume, sleep).
+**Limitations:** No LessUI features (in-game menu, save states, auto-resume, sleep).
#### Wi-Fi.pak
@@ -113,7 +113,7 @@ Enable WiFi for Splore and other network features.
#### Remove Loading.pak
-Removes "LOADING" text between boot logo and MinUI.
+Removes "LOADING" text between boot logo and LessUI.
**Warning:** Patches NAND memory (read-only root filesystem). Takes ~5 minutes. Stay connected to power. Do not power off during operation.
@@ -137,21 +137,21 @@ Swaps MENU and SELECT buttons system-wide (makes MENU more accessible).
## Creating Your Own Paks
-Want to add more systems or tools? Check out the [Pak Development Guide](https://github.com/shauninman/minui/blob/main/docs/PAKS.md) to learn how to create custom emulator and tool paks for MinUI.
+Want to add more systems or tools? Check out the [Pak Development Guide](https://github.com/shauninman/minui/blob/main/docs/PAKS.md) to learn how to create custom emulator and tool paks for LessUI.
**Pak types:**
1. **Reuse existing cores** - Customize options for bundled cores
2. **Bundle new cores** - Add new libretro cores
-3. **Standalone emulators** - Maximum performance (no MinUI integration)
+3. **Standalone emulators** - Maximum performance (no LessUI integration)
---
## Support
-**Important:** Third-party paks are not officially supported. If a console or core isn't included in MinUI's base or extras, there's usually a good reason:
+**Important:** Third-party paks are not officially supported. If a console or core isn't included in LessUI's base or extras, there's usually a good reason:
- Poor libretro integration
- Unreliable save states
- Performance issues
- Complexity (arcade cores with arcane ROM requirements)
-For help with MinUI itself, check the GitHub repository.
+For help with LessUI itself, check the GitHub repository.
diff --git a/skeleton/SYSTEM/res-src/README.md b/skeleton/SYSTEM/res-src/README.md
index fb535f8f..ead9a60b 100644
--- a/skeleton/SYSTEM/res-src/README.md
+++ b/skeleton/SYSTEM/res-src/README.md
@@ -1,6 +1,6 @@
# Source Assets
-This directory contains the master source files for all MinUI visual assets. These high-resolution sources are used to generate all variants (PNG and BMP) at different scales and aspect ratios.
+This directory contains the master source files for all LessUI visual assets. These high-resolution sources are used to generate all variants (PNG and BMP) at different scales and aspect ratios.
## Source Files
@@ -13,9 +13,9 @@ This directory contains the master source files for all MinUI visual assets. The
### Boot Screens
These 4:3 images are displayed during system operations:
-- **`installing.png`** - "Installing MinUI" boot screen
-- **`updating.png`** - "Updating MinUI" boot screen
-- **`bootlogo.png`** - MinUI splash screen/logo
+- **`installing.png`** - "Installing LessUI" boot screen
+- **`updating.png`** - "Updating LessUI" boot screen
+- **`bootlogo.png`** - LessUI splash screen/logo
- **`charging.png`** - Battery charging indicator
**Ideal resolution:** 960×720 (4:3 aspect ratio, RGB)
diff --git a/skeleton/SYSTEM/res-src/assets.png b/skeleton/SYSTEM/res-src/assets.png
index 5133e9d8..fd08ae04 100644
Binary files a/skeleton/SYSTEM/res-src/assets.png and b/skeleton/SYSTEM/res-src/assets.png differ
diff --git a/skeleton/SYSTEM/res-src/bootlogo.png b/skeleton/SYSTEM/res-src/bootlogo.png
index 303d5976..91a89555 100644
Binary files a/skeleton/SYSTEM/res-src/bootlogo.png and b/skeleton/SYSTEM/res-src/bootlogo.png differ
diff --git a/skeleton/SYSTEM/res-src/charging.png b/skeleton/SYSTEM/res-src/charging.png
index bc8a67d3..5e89827a 100644
Binary files a/skeleton/SYSTEM/res-src/charging.png and b/skeleton/SYSTEM/res-src/charging.png differ
diff --git a/skeleton/SYSTEM/res-src/installing.png b/skeleton/SYSTEM/res-src/installing.png
index acde6255..bb47dd4d 100644
Binary files a/skeleton/SYSTEM/res-src/installing.png and b/skeleton/SYSTEM/res-src/installing.png differ
diff --git a/skeleton/SYSTEM/res-src/updating.png b/skeleton/SYSTEM/res-src/updating.png
index 28f2a690..76ca93b7 100644
Binary files a/skeleton/SYSTEM/res-src/updating.png and b/skeleton/SYSTEM/res-src/updating.png differ
diff --git a/skeleton/SYSTEM/res/BPreplayBold-unhinted.otf b/skeleton/SYSTEM/res/BPreplayBold-unhinted.otf
old mode 100755
new mode 100644
diff --git a/skeleton/SYSTEM/res/assets@1x.png b/skeleton/SYSTEM/res/assets@1x.png
index bce36288..76fd113f 100644
Binary files a/skeleton/SYSTEM/res/assets@1x.png and b/skeleton/SYSTEM/res/assets@1x.png differ
diff --git a/skeleton/SYSTEM/res/assets@2x.png b/skeleton/SYSTEM/res/assets@2x.png
index 708ba1e7..809ef0dc 100644
Binary files a/skeleton/SYSTEM/res/assets@2x.png and b/skeleton/SYSTEM/res/assets@2x.png differ
diff --git a/skeleton/SYSTEM/res/assets@3x.png b/skeleton/SYSTEM/res/assets@3x.png
index 2bfb99aa..1690ed8c 100644
Binary files a/skeleton/SYSTEM/res/assets@3x.png and b/skeleton/SYSTEM/res/assets@3x.png differ
diff --git a/skeleton/SYSTEM/res/assets@4x.png b/skeleton/SYSTEM/res/assets@4x.png
index 0fe66ee3..506a8df7 100644
Binary files a/skeleton/SYSTEM/res/assets@4x.png and b/skeleton/SYSTEM/res/assets@4x.png differ
diff --git a/skeleton/SYSTEM/res/bootlogo@1x-wide.bmp b/skeleton/SYSTEM/res/bootlogo@1x-wide.bmp
index 5d200249..cf5f9b68 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@1x-wide.bmp and b/skeleton/SYSTEM/res/bootlogo@1x-wide.bmp differ
diff --git a/skeleton/SYSTEM/res/bootlogo@1x.bmp b/skeleton/SYSTEM/res/bootlogo@1x.bmp
index e845edb5..5ca30eb6 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@1x.bmp and b/skeleton/SYSTEM/res/bootlogo@1x.bmp differ
diff --git a/skeleton/SYSTEM/res/bootlogo@1x.png b/skeleton/SYSTEM/res/bootlogo@1x.png
index 942db365..c56f910c 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@1x.png and b/skeleton/SYSTEM/res/bootlogo@1x.png differ
diff --git a/skeleton/SYSTEM/res/bootlogo@2x-rotated.bmp b/skeleton/SYSTEM/res/bootlogo@2x-rotated.bmp
index c2168c45..d1bb6623 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@2x-rotated.bmp and b/skeleton/SYSTEM/res/bootlogo@2x-rotated.bmp differ
diff --git a/skeleton/SYSTEM/res/bootlogo@2x-square.bmp b/skeleton/SYSTEM/res/bootlogo@2x-square.bmp
index b78a476f..9a756008 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@2x-square.bmp and b/skeleton/SYSTEM/res/bootlogo@2x-square.bmp differ
diff --git a/skeleton/SYSTEM/res/bootlogo@2x-wide.bmp b/skeleton/SYSTEM/res/bootlogo@2x-wide.bmp
index 14b0ce7e..95efeac0 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@2x-wide.bmp and b/skeleton/SYSTEM/res/bootlogo@2x-wide.bmp differ
diff --git a/skeleton/SYSTEM/res/bootlogo@2x.bmp b/skeleton/SYSTEM/res/bootlogo@2x.bmp
index 606d8239..ef130994 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@2x.bmp and b/skeleton/SYSTEM/res/bootlogo@2x.bmp differ
diff --git a/skeleton/SYSTEM/res/bootlogo@2x.png b/skeleton/SYSTEM/res/bootlogo@2x.png
index 2e46befb..39a03d45 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@2x.png and b/skeleton/SYSTEM/res/bootlogo@2x.png differ
diff --git a/skeleton/SYSTEM/res/bootlogo@3x.png b/skeleton/SYSTEM/res/bootlogo@3x.png
index d29011b9..4b9bf00f 100644
Binary files a/skeleton/SYSTEM/res/bootlogo@3x.png and b/skeleton/SYSTEM/res/bootlogo@3x.png differ
diff --git a/skeleton/SYSTEM/res/charging@1x-wide.bmp b/skeleton/SYSTEM/res/charging@1x-wide.bmp
index 483ad6b3..a37a0590 100644
Binary files a/skeleton/SYSTEM/res/charging@1x-wide.bmp and b/skeleton/SYSTEM/res/charging@1x-wide.bmp differ
diff --git a/skeleton/SYSTEM/res/charging@1x.bmp b/skeleton/SYSTEM/res/charging@1x.bmp
index 680590c5..f41c6369 100644
Binary files a/skeleton/SYSTEM/res/charging@1x.bmp and b/skeleton/SYSTEM/res/charging@1x.bmp differ
diff --git a/skeleton/SYSTEM/res/charging@1x.png b/skeleton/SYSTEM/res/charging@1x.png
index b74c87a2..b5f58187 100644
Binary files a/skeleton/SYSTEM/res/charging@1x.png and b/skeleton/SYSTEM/res/charging@1x.png differ
diff --git a/skeleton/SYSTEM/res/charging@2x-rotated.bmp b/skeleton/SYSTEM/res/charging@2x-rotated.bmp
index 45037275..37bddef8 100644
Binary files a/skeleton/SYSTEM/res/charging@2x-rotated.bmp and b/skeleton/SYSTEM/res/charging@2x-rotated.bmp differ
diff --git a/skeleton/SYSTEM/res/charging@2x-square.bmp b/skeleton/SYSTEM/res/charging@2x-square.bmp
index 9479bb7b..b670a9f1 100644
Binary files a/skeleton/SYSTEM/res/charging@2x-square.bmp and b/skeleton/SYSTEM/res/charging@2x-square.bmp differ
diff --git a/skeleton/SYSTEM/res/charging@2x-wide.bmp b/skeleton/SYSTEM/res/charging@2x-wide.bmp
index 2f608e91..cde9fb41 100644
Binary files a/skeleton/SYSTEM/res/charging@2x-wide.bmp and b/skeleton/SYSTEM/res/charging@2x-wide.bmp differ
diff --git a/skeleton/SYSTEM/res/charging@2x.bmp b/skeleton/SYSTEM/res/charging@2x.bmp
index 856e6df1..6ed04743 100644
Binary files a/skeleton/SYSTEM/res/charging@2x.bmp and b/skeleton/SYSTEM/res/charging@2x.bmp differ
diff --git a/skeleton/SYSTEM/res/charging@2x.png b/skeleton/SYSTEM/res/charging@2x.png
index f34635e8..1657bdf4 100644
Binary files a/skeleton/SYSTEM/res/charging@2x.png and b/skeleton/SYSTEM/res/charging@2x.png differ
diff --git a/skeleton/SYSTEM/res/charging@3x.png b/skeleton/SYSTEM/res/charging@3x.png
index 05eed248..b10686b9 100644
Binary files a/skeleton/SYSTEM/res/charging@3x.png and b/skeleton/SYSTEM/res/charging@3x.png differ
diff --git a/skeleton/SYSTEM/res/installing@1x-wide.bmp b/skeleton/SYSTEM/res/installing@1x-wide.bmp
index 1164783d..52711e5f 100644
Binary files a/skeleton/SYSTEM/res/installing@1x-wide.bmp and b/skeleton/SYSTEM/res/installing@1x-wide.bmp differ
diff --git a/skeleton/SYSTEM/res/installing@1x.bmp b/skeleton/SYSTEM/res/installing@1x.bmp
index 0c818819..f199aaae 100644
Binary files a/skeleton/SYSTEM/res/installing@1x.bmp and b/skeleton/SYSTEM/res/installing@1x.bmp differ
diff --git a/skeleton/SYSTEM/res/installing@1x.png b/skeleton/SYSTEM/res/installing@1x.png
index 2467fa0a..393880f6 100644
Binary files a/skeleton/SYSTEM/res/installing@1x.png and b/skeleton/SYSTEM/res/installing@1x.png differ
diff --git a/skeleton/SYSTEM/res/installing@2x-rotated.bmp b/skeleton/SYSTEM/res/installing@2x-rotated.bmp
index f4d0ef4d..fb9c6aaa 100644
Binary files a/skeleton/SYSTEM/res/installing@2x-rotated.bmp and b/skeleton/SYSTEM/res/installing@2x-rotated.bmp differ
diff --git a/skeleton/SYSTEM/res/installing@2x-square.bmp b/skeleton/SYSTEM/res/installing@2x-square.bmp
index 9c8734e6..bb5ee433 100644
Binary files a/skeleton/SYSTEM/res/installing@2x-square.bmp and b/skeleton/SYSTEM/res/installing@2x-square.bmp differ
diff --git a/skeleton/SYSTEM/res/installing@2x-wide.bmp b/skeleton/SYSTEM/res/installing@2x-wide.bmp
index 077103a0..02ee263a 100644
Binary files a/skeleton/SYSTEM/res/installing@2x-wide.bmp and b/skeleton/SYSTEM/res/installing@2x-wide.bmp differ
diff --git a/skeleton/SYSTEM/res/installing@2x.bmp b/skeleton/SYSTEM/res/installing@2x.bmp
index 79a15944..9b137766 100644
Binary files a/skeleton/SYSTEM/res/installing@2x.bmp and b/skeleton/SYSTEM/res/installing@2x.bmp differ
diff --git a/skeleton/SYSTEM/res/installing@2x.png b/skeleton/SYSTEM/res/installing@2x.png
index 9637d30c..8ace62cf 100644
Binary files a/skeleton/SYSTEM/res/installing@2x.png and b/skeleton/SYSTEM/res/installing@2x.png differ
diff --git a/skeleton/SYSTEM/res/installing@3x.png b/skeleton/SYSTEM/res/installing@3x.png
index 7a949153..25942fe9 100644
Binary files a/skeleton/SYSTEM/res/installing@3x.png and b/skeleton/SYSTEM/res/installing@3x.png differ
diff --git a/skeleton/SYSTEM/res/updating@1x-wide.bmp b/skeleton/SYSTEM/res/updating@1x-wide.bmp
index f431194d..6877ab73 100644
Binary files a/skeleton/SYSTEM/res/updating@1x-wide.bmp and b/skeleton/SYSTEM/res/updating@1x-wide.bmp differ
diff --git a/skeleton/SYSTEM/res/updating@1x.bmp b/skeleton/SYSTEM/res/updating@1x.bmp
index bc711443..6e5250f3 100644
Binary files a/skeleton/SYSTEM/res/updating@1x.bmp and b/skeleton/SYSTEM/res/updating@1x.bmp differ
diff --git a/skeleton/SYSTEM/res/updating@1x.png b/skeleton/SYSTEM/res/updating@1x.png
index ff86f735..991b4d56 100644
Binary files a/skeleton/SYSTEM/res/updating@1x.png and b/skeleton/SYSTEM/res/updating@1x.png differ
diff --git a/skeleton/SYSTEM/res/updating@2x-rotated.bmp b/skeleton/SYSTEM/res/updating@2x-rotated.bmp
index 78d56c79..b267215e 100644
Binary files a/skeleton/SYSTEM/res/updating@2x-rotated.bmp and b/skeleton/SYSTEM/res/updating@2x-rotated.bmp differ
diff --git a/skeleton/SYSTEM/res/updating@2x-square.bmp b/skeleton/SYSTEM/res/updating@2x-square.bmp
index 59f22a1d..821325f2 100644
Binary files a/skeleton/SYSTEM/res/updating@2x-square.bmp and b/skeleton/SYSTEM/res/updating@2x-square.bmp differ
diff --git a/skeleton/SYSTEM/res/updating@2x-wide.bmp b/skeleton/SYSTEM/res/updating@2x-wide.bmp
index 4fdb9b2c..a4b6e2b5 100644
Binary files a/skeleton/SYSTEM/res/updating@2x-wide.bmp and b/skeleton/SYSTEM/res/updating@2x-wide.bmp differ
diff --git a/skeleton/SYSTEM/res/updating@2x.bmp b/skeleton/SYSTEM/res/updating@2x.bmp
index cf433f3a..71e86174 100644
Binary files a/skeleton/SYSTEM/res/updating@2x.bmp and b/skeleton/SYSTEM/res/updating@2x.bmp differ
diff --git a/skeleton/SYSTEM/res/updating@2x.png b/skeleton/SYSTEM/res/updating@2x.png
index ece58e56..c5e8ab8d 100644
Binary files a/skeleton/SYSTEM/res/updating@2x.png and b/skeleton/SYSTEM/res/updating@2x.png differ
diff --git a/skeleton/SYSTEM/res/updating@3x.png b/skeleton/SYSTEM/res/updating@3x.png
index 8af5146d..4754ea8a 100644
Binary files a/skeleton/SYSTEM/res/updating@3x.png and b/skeleton/SYSTEM/res/updating@3x.png differ
diff --git a/tests/Dockerfile b/tests/Dockerfile
index b810912e..8888b35f 100644
--- a/tests/Dockerfile
+++ b/tests/Dockerfile
@@ -1,4 +1,4 @@
-# Lightweight Docker image for running MinUI tests
+# Lightweight Docker image for running LessUI tests
# Uses Debian Buster to match platform toolchains (GCC 8.3.0)
# Note: Uses native platform (AMD64 on CI, ARM64 on Apple Silicon)
FROM debian:buster-slim
diff --git a/tests/README.md b/tests/README.md
index 1af4cc3d..f4ea4f03 100644
--- a/tests/README.md
+++ b/tests/README.md
@@ -1,6 +1,6 @@
-# MinUI Test Suite
+# LessUI Test Suite
-This directory contains the test suite for MinUI, organized to mirror the source code structure.
+This directory contains the test suite for LessUI, organized to mirror the source code structure.
**Current Status: 364 tests, all passing** ✅
@@ -221,7 +221,7 @@ See `support/unity/unity.h` for full list.
## SDL Function Mocking
-MinUI uses SDL extensively for graphics, input, and audio. Testing SDL-dependent code requires **mocking** SDL functions. We use the **Fake Function Framework (fff)** for this.
+LessUI uses SDL extensively for graphics, input, and audio. Testing SDL-dependent code requires **mocking** SDL functions. We use the **Fake Function Framework (fff)** for this.
### Infrastructure Overview
@@ -450,7 +450,7 @@ void test_parse_m3u_file(void) {
#### Available Mock Functions
**Currently wrapped:**
-- `exists(char* path)` - MinUI's file existence check
+- `exists(char* path)` - LessUI's file existence check
- `fopen(const char* path, const char* mode)` - Open files (read mode only)
- `fclose(FILE* stream)` - Close files
- `fgets(char* s, int size, FILE* stream)` - Read lines
@@ -757,11 +757,11 @@ These modules were extracted from large files (api.c, minui.c, minarch.c) to ena
### workspace/all/common/minui_utils.c - ✅ 17 tests
**File:** `tests/unit/all/common/test_minui_utils.c`
-- MinUI_getIndexChar() - Alphabetical indexing for ROM navigation (7 tests)
-- MinUI_isConsoleDir() - Console directory classification (8 tests)
+- LessUI_getIndexChar() - Alphabetical indexing for ROM navigation (7 tests)
+- LessUI_isConsoleDir() - Console directory classification (8 tests)
- Integration tests (2 tests)
-**Coverage:** Complete coverage of MinUI helper utilities.
+**Coverage:** Complete coverage of LessUI helper utilities.
**Note:** Extracted from `minui.c`, pure string logic.
@@ -786,13 +786,13 @@ These modules were extracted from large files (api.c, minui.c, minarch.c) to ena
- `tests/unit/all/common/test_directory_utils.c` (7 tests)
**File existence checking (18 tests):**
-- MinUI_hasEmu() - Emulator availability checking (5 tests)
-- MinUI_hasCue() - CUE file detection for disc games (4 tests)
-- MinUI_hasM3u() - M3U playlist detection (5 tests)
+- LessUI_hasEmu() - Emulator availability checking (5 tests)
+- LessUI_hasCue() - CUE file detection for disc games (4 tests)
+- LessUI_hasM3u() - M3U playlist detection (5 tests)
- Integration tests (multi-disc workflow) (4 tests)
**Directory content checking (7 tests):**
-- MinUI_hasNonHiddenFiles() - Directory content checking
+- LessUI_hasNonHiddenFiles() - Directory content checking
- Empty directory detection
- Hidden file filtering (.dotfiles, .DS_Store, etc.)
- Mixed content (hidden + visible files)
@@ -980,7 +980,7 @@ void test_my_workflow(void) {
Helper functions for creating test data structures:
-- `create_test_minui_structure()` - Creates temp MinUI directory structure
+- `create_test_minui_structure()` - Creates temp LessUI directory structure
- `create_test_rom()` - Creates placeholder ROM file
- `create_test_m3u()` - Creates M3U file with disc entries
- `create_test_map()` - Creates map.txt with ROM aliases
@@ -991,7 +991,7 @@ These utilities make it easy to set up realistic test scenarios.
### Todo
- [ ] Additional api.c GFX rendering functions (mostly SDL pixel operations)
-- [x] Integration tests for MinUI/MinArch workflows (22 tests implemented, all passing)
+- [x] Integration tests for LessUI/MinArch workflows (22 tests implemented, all passing)
## Continuous Integration
diff --git a/workspace/gkdpixel/README.md b/workspace/gkdpixel/README.md
index 177cd67b..47a3923f 100644
--- a/workspace/gkdpixel/README.md
+++ b/workspace/gkdpixel/README.md
@@ -3,11 +3,11 @@
Platform implementation for the GKD Pixel retro handheld device.
> [!WARNING]
-> **This platform is deprecated and will be removed in a future MinUI release.**
+> **This platform is deprecated and will be removed in a future LessUI release.**
>
> **Reason**: Unique chipset (Ingenic X1830) with limited community support value.
>
-> While the platform will continue to work with current MinUI releases, it will not receive new features or platform-specific bug fixes.
+> While the platform will continue to work with current LessUI releases, it will not receive new features or platform-specific bug fixes.
## Hardware Specifications
@@ -164,13 +164,13 @@ make
- **Optimization**: LTO enabled (`-flto`)
- **Toolchain**: GCW0 (same as other OpenDingux devices)
-No external dependencies are cloned - platform uses stock MinUI shared code.
+No external dependencies are cloned - platform uses stock LessUI shared code.
## Installation
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/media/roms/
@@ -181,23 +181,23 @@ MinUI installs to the SD card with the following structure:
│ │ ├── dat/ Platform data files
│ │ │ └── boot.sh Boot handler script
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets.png UI sprite sheet (1x scale)
│ └── BPreplayBold-unhinted.otf
-├── MinUI.zip Update package (if present)
+├── LessUI.zip Update package (if present)
└── log.txt Installation/update log
```
### Stock OS Integration
-MinUI integrates with the stock firmware through system hooks:
+LessUI integrates with the stock firmware through system hooks:
**On system partition** (`/usr`):
```
/usr/
├── sbin/
-│ ├── frontend_start MinUI's boot.sh (copied here)
+│ ├── frontend_start LessUI's boot.sh (copied here)
│ └── frontend_start.original Stock launcher (backed up)
└── share/
└── minui/
@@ -205,23 +205,23 @@ MinUI integrates with the stock firmware through system hooks:
└── updating.bmp Update splash (320x240)
```
-The stock OS calls `/usr/sbin/frontend_start` on boot, which MinUI replaces with its own boot handler.
+The stock OS calls `/usr/sbin/frontend_start` on boot, which LessUI replaces with its own boot handler.
### Boot Process
1. Device boots stock OS
-2. Stock OS runs `/usr/sbin/frontend_start` (MinUI's boot script)
+2. Stock OS runs `/usr/sbin/frontend_start` (LessUI's boot script)
3. Script performs console cleanup:
- Unlocks virtual terminal
- Resets console
- Deactivates console on framebuffer
-4. Script checks for `MinUI.zip` on `/media/roms`
+4. Script checks for `LessUI.zip` on `/media/roms`
5. If ZIP found:
- Display splash to framebuffer (`installing.bmp` or `updating.bmp`)
- Extract ZIP to `/media/roms`
- Delete ZIP file
- Run `.system/gkdpixel/bin/install.sh` to complete setup
-6. Launch MinUI via `.system/gkdpixel/paks/MinUI.pak/launch.sh`
+6. Launch LessUI via `.system/gkdpixel/paks/LessUI.pak/launch.sh`
7. If launcher not found, fallback to stock launcher (`frontend_start.original`)
#### Boot Image Display
@@ -282,7 +282,7 @@ All scalers use:
Uses **shared memory architecture** for settings:
- **Shared Memory Key**: `/SharedSettings`
- **Host**: keymon daemon (creates and manages settings)
-- **Clients**: MinUI, emulators (read/write shared settings)
+- **Clients**: LessUI, emulators (read/write shared settings)
- **Persistence**: Binary file at `$USERDATA_PATH/msettings.bin`
#### Settings Schema
@@ -326,7 +326,7 @@ Simplified battery reporting via sysfs:
## Included Tools
-The following MinUI standard tools are available:
+The following LessUI standard tools are available:
### Clock.pak
System clock/time display
@@ -414,7 +414,7 @@ The utility provides two modes:
## Maintainer Notes
-This platform demonstrates several unique MinUI characteristics:
+This platform demonstrates several unique LessUI characteristics:
### Pure Evdev Input Architecture
- **No SDL keyboard or joystick**: All input via direct kernel event codes
@@ -428,13 +428,13 @@ This platform demonstrates several unique MinUI characteristics:
- **Temporal coherence**: SNES scaler maintains row state for efficiency
### Minimal Dependencies
-- **No external repos**: Uses stock MinUI shared code only
+- **No external repos**: Uses stock LessUI shared code only
- **Small footprint**: Compact platform suitable for resource-constrained device
- **GCW0 toolchain**: Leverages existing OpenDingux infrastructure
### Integration Pattern
- **Stock OS hook**: Replaces frontend_start rather than full OS replacement
-- **Fallback support**: Can return to stock launcher if MinUI not found
+- **Fallback support**: Can return to stock launcher if LessUI not found
- **Clean framebuffer**: Demonstrates proper console management
Changes to this platform should preserve the evdev-only input architecture and maintain the custom scaler optimizations that provide high-quality output on the small 320x240 display.
diff --git a/workspace/gkdpixel/boot/boot.sh b/workspace/gkdpixel/boot/boot.sh
index b63cd4ed..745c9487 100755
--- a/workspace/gkdpixel/boot/boot.sh
+++ b/workspace/gkdpixel/boot/boot.sh
@@ -10,7 +10,7 @@ echo 0 > /sys/devices/virtual/vtconsole/vtcon1/bind
SDCARD_PATH=/media/roms
SYSTEM_PATH=$SDCARD_PATH/.system/gkdpixel
-UPDATE_PATH=$SDCARD_PATH/MinUI.zip
+UPDATE_PATH=$SDCARD_PATH/LessUI.zip
# is there an update available?
if [ -f $UPDATE_PATH ]; then
@@ -18,10 +18,10 @@ if [ -f $UPDATE_PATH ]; then
if [ ! -d $SYSTEM_PATH ]; then
ACTION=installing
- echo "install MinUI" >> $SDCARD_PATH/log.txt
+ echo "install LessUI" >> $SDCARD_PATH/log.txt
else
ACTION=updating
- echo "update MinUI" >> $SDCARD_PATH/log.txt
+ echo "update LessUI" >> $SDCARD_PATH/log.txt
fi
# show action
diff --git a/workspace/m17/README.md b/workspace/m17/README.md
index c87929f2..087848a2 100644
--- a/workspace/m17/README.md
+++ b/workspace/m17/README.md
@@ -3,11 +3,11 @@
Platform implementation for the M17 retro handheld device.
> [!WARNING]
-> **This platform is deprecated and will be removed in a future MinUI release.**
+> **This platform is deprecated and will be removed in a future LessUI release.**
>
> **Reason**: Old/weak Cortex-A7 chipset, ultra-budget outlier with limited performance.
>
-> While the platform will continue to work with current MinUI releases, it will not receive new features or platform-specific bug fixes.
+> While the platform will continue to work with current LessUI releases, it will not receive new features or platform-specific bug fixes.
## Hardware Specifications
@@ -151,7 +151,7 @@ These are automatically extracted from the toolchain during the build process an
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/sdcard/
@@ -162,31 +162,31 @@ MinUI installs to the SD card with the following structure:
│ │ ├── lib/ Additional libraries (extracted from extra-libs.tar)
│ │ ├── dat/ Data files (extra-libs.tar)
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets.png UI sprite sheet (1x scale)
│ └── BPreplayBold-unhinted.otf
-├── em_ui.sh Boot script (MinUI entry point)
+├── em_ui.sh Boot script (LessUI entry point)
├── Roms/ ROM files organized by system
-├── MinUI.zip Update package (if present)
+├── LessUI.zip Update package (if present)
└── log.txt Installation/update log (optional)
```
### Boot Process
-1. Device boots and runs `/sdcard/em_ui.sh` (MinUI's boot.sh)
-2. Script checks for `MinUI.zip` on SD card root
+1. Device boots and runs `/sdcard/em_ui.sh` (LessUI's boot.sh)
+2. Script checks for `LessUI.zip` on SD card root
3. If ZIP found:
- Initialize framebuffer (`/dev/fb0`)
- Extract embedded splash images from boot script using `uudecode`
- Display `installing` (first install) or `updating` (update) to framebuffer
- - Extract `MinUI.zip` to `/sdcard`
+ - Extract `LessUI.zip` to `/sdcard`
- Delete ZIP file
- Run `.system/m17/bin/install.sh` to complete setup:
- Extract `extra-libs.tar` to `.system/m17/lib/`
- Copy updated boot script to `/sdcard/em_ui.sh`
- Clear framebuffer
-4. Launch MinUI via taskset: `taskset 8 /sdcard/.system/m17/paks/MinUI.pak/launch.sh`
+4. Launch LessUI via taskset: `taskset 8 /sdcard/.system/m17/paks/LessUI.pak/launch.sh`
5. Loop: relaunch if launcher exits normally
6. Poweroff if launcher script is deleted (prevents stock OS from interfering)
@@ -202,8 +202,8 @@ This allows splash images to be embedded directly in the boot script without req
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in `/sdcard/` root
+To update LessUI on device:
+1. Place `LessUI.zip` in `/sdcard/` root
2. Reboot device
3. Boot script auto-detects ZIP and performs update
4. ZIP is deleted after successful extraction
@@ -257,9 +257,9 @@ The keymon daemon monitors **four input devices**:
### CPU Affinity
-MinUI launcher runs pinned to CPU core 3:
+LessUI launcher runs pinned to CPU core 3:
```bash
-taskset 8 /sdcard/.system/m17/paks/MinUI.pak/launch.sh
+taskset 8 /sdcard/.system/m17/paks/LessUI.pak/launch.sh
```
This may improve performance on this multi-core device by dedicating a core to the launcher.
@@ -330,7 +330,7 @@ dd conv=notrunc if=/sdcard/logo-h.bmp of=/dev/block/by-name/boot bs=1 seek=40448
## Included Tools
-Standard MinUI tools are available:
+Standard LessUI tools are available:
- **Clock.pak**: System clock/time display
- **Input.pak**: Input configuration utility
diff --git a/workspace/m17/boot/boot.sh b/workspace/m17/boot/boot.sh
index fc7f1fe0..0e7f5245 100755
--- a/workspace/m17/boot/boot.sh
+++ b/workspace/m17/boot/boot.sh
@@ -4,7 +4,7 @@
PLATFORM="m17"
SDCARD_PATH="/sdcard"
-UPDATE_PATH="$SDCARD_PATH/MinUI.zip"
+UPDATE_PATH="$SDCARD_PATH/LessUI.zip"
SYSTEM_PATH="$SDCARD_PATH/.system"
# install/update
@@ -27,7 +27,7 @@ if [ -f "$UPDATE_PATH" ]; then
dd if=/tmp/$ACTION of=/dev/fb0
sync
- # finally unzip MinUI.zip
+ # finally unzip LessUI.zip
unzip -o "$UPDATE_PATH" -d "$SDCARD_PATH"
rm -f "$UPDATE_PATH"
sync
diff --git a/workspace/macos/FAKESD/.gitignore b/workspace/macos/FAKESD/.gitignore
new file mode 100644
index 00000000..2c678861
--- /dev/null
+++ b/workspace/macos/FAKESD/.gitignore
@@ -0,0 +1,20 @@
+# Ignore ROM files and user data, but keep directory structure
+*
+
+# Keep directory structure
+!.gitignore
+!README.md
+!Roms/
+!Roms/.gitkeep
+!.userdata/
+!.userdata/.gitkeep
+!.system/
+!.system/.gitkeep
+!.system/res/
+!.system/res/*.png
+!.system/res/*.otf
+!.system/macos/
+!.system/macos/paks/
+!.system/macos/paks/Emus/
+!.system/macos/paks/Emus/*.pak/
+!.system/macos/paks/Emus/*.pak/launch.sh
diff --git a/workspace/macos/FAKESD/.system/.gitkeep b/workspace/macos/FAKESD/.system/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/workspace/macos/FAKESD/.userdata/.gitkeep b/workspace/macos/FAKESD/.userdata/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/workspace/macos/FAKESD/README.md b/workspace/macos/FAKESD/README.md
new file mode 100644
index 00000000..e760e021
--- /dev/null
+++ b/workspace/macos/FAKESD/README.md
@@ -0,0 +1,61 @@
+# FAKESD - macOS Development SD Card
+
+This directory simulates the SD card structure for LessUI development on macOS.
+
+## Directory Structure
+
+```
+FAKESD/
+├── Roms/ # ROM files organized by console
+│ ├── GB/ # Game Boy ROMs (.gb files)
+│ ├── GBA/ # Game Boy Advance ROMs (.gba files)
+│ ├── NES/ # Nintendo Entertainment System (.nes files)
+│ ├── SNES/ # Super Nintendo (.sfc, .smc files)
+│ └── ... # Add directories for other systems
+│
+├── .userdata/ # User-specific data (auto-created by minui)
+│ └── [saves, states, etc.]
+│
+└── .system/ # System files (auto-created by minui)
+ └── [platform-specific data]
+```
+
+## Setup
+
+1. **Add ROMs**: Create subdirectories in `Roms/` for each console:
+ ```bash
+ mkdir -p Roms/GB Roms/GBA Roms/NES Roms/SNES
+ ```
+
+2. **Copy ROM files**: Add your legally obtained ROM files:
+ ```bash
+ cp ~/Downloads/game.gb Roms/GB/
+ ```
+
+3. **Run minui**: Use the dev build to test:
+ ```bash
+ make dev-run
+ ```
+
+## Supported Console Directories
+
+Common console directory names (case-sensitive):
+- `GB` - Game Boy
+- `GBC` - Game Boy Color
+- `GBA` - Game Boy Advance
+- `NES` - Nintendo Entertainment System
+- `SNES` - Super Nintendo
+- `MD` - Sega Genesis/Mega Drive
+- `GG` - Sega Game Gear
+- `PS` - PlayStation
+- `PCE` - PC Engine/TurboGrafx-16
+- `PICO` - PICO-8
+
+See the main LessUI documentation for a complete list of supported systems.
+
+## Notes
+
+- This directory is ignored by git (except for structure)
+- ROM files are for development/testing only
+- .userdata/ will be populated when you run minui and play games
+- Save states and settings will persist between runs
diff --git a/workspace/macos/FAKESD/Roms/.gitkeep b/workspace/macos/FAKESD/Roms/.gitkeep
new file mode 100644
index 00000000..e69de29b
diff --git a/workspace/macos/notes.txt b/workspace/macos/notes.txt
index c24c9e11..f44e0966 100644
--- a/workspace/macos/notes.txt
+++ b/workspace/macos/notes.txt
@@ -1,8 +1,39 @@
-This is not a full version of MinUI for macOS. It's a dummy platform to allow using more modern tools to compile and find issues in MinUI's source code without the roundtrip to a device.
+macOS Development Platform
+=========================
-BUILD MINUI
+This is a development platform for testing LessUI minui (launcher) on macOS.
+It allows rapid UI development without deploying to physical hardware.
+
+QUICK START
-----------
-cd workspace/all/minui
-mkdir -p build/macos
+From project root:
+
+ make dev-run # Build and run minui (4:3 aspect ratio)
+ make dev-run-16x9 # Build and run minui (16:9 widescreen)
+
+SETUP
+-----
+First time only:
+
+ brew install sdl2 sdl2_image sdl2_ttf
+
+CONTROLS
+--------
+- Arrow keys: D-pad navigation
+- A, S, W, Q: Face buttons (B, A, X, Y)
+- Enter: Start
+- 4: Select
+- Space: Menu
+- Hold Backspace/Delete: Quit
+
+TEST ROMS
+---------
+Add ROMs to workspace/macos/FAKESD/Roms//
+
+Example:
+ cp ~/Downloads/game.gb workspace/macos/FAKESD/Roms/GB/
-gcc minui.c -o build/macos/minui -I. -I../common/ -I../../macos/platform/ -I/opt/homebrew/include -L/opt/homebrew/lib ../common/scaler.c ../common/utils.c ../common/api.c ../../macos/platform/platform.c -fomit-frame-pointer -DPLATFORM=\"macos\" -DUSE_SDL2 -Ofast -std=gnu99 -ldl -flto -lSDL2 -lSDL2_image -lSDL2_ttf -lpthread -lm -lz -fsanitize=address -fno-common -Wno-tautological-constant-out-of-range-compare -Wno-asm-operand-widths && build/macos/minui
\ No newline at end of file
+MORE INFO
+---------
+See docs/DEVELOPMENT.md for full documentation.
+See makefile.dev for build configuration.
diff --git a/workspace/macos/platform/platform.c b/workspace/macos/platform/platform.c
index 51aeb936..040f3f86 100644
--- a/workspace/macos/platform/platform.c
+++ b/workspace/macos/platform/platform.c
@@ -130,15 +130,24 @@ SDL_Surface* PLAT_initVideo(void) {
// LOG_info("- %ix%i (%s)\n", mode.w,mode.h, SDL_GetPixelFormatName(mode.format));
// }
SDL_GetCurrentDisplayMode(0, &mode);
- // Rotate display to simulate vertical handheld
- rotate = 1;
+ // Rotate display to simulate vertical handheld (disabled for macOS)
+ rotate = 0;
LOG_info("Current display mode: %ix%i (%s)\n", mode.w,mode.h, SDL_GetPixelFormatName(mode.format));
- int w = FIXED_WIDTH;
- int h = FIXED_HEIGHT;
- int p = FIXED_PITCH;
- // Create window with swapped dimensions (h,w) for rotated display
- vid.window = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, h,w, SDL_WINDOW_SHOWN);
+ // Use DEV_SCREEN_* if set (for aspect ratio switching), otherwise use FIXED_*
+ #ifdef DEV_SCREEN_WIDTH
+ int w = DEV_SCREEN_WIDTH;
+ #else
+ int w = FIXED_WIDTH;
+ #endif
+ #ifdef DEV_SCREEN_HEIGHT
+ int h = DEV_SCREEN_HEIGHT;
+ #else
+ int h = FIXED_HEIGHT;
+ #endif
+ int p = w * FIXED_BPP; // Calculate pitch from width
+ // Create window with normal dimensions (w,h) - no rotation on macOS
+ vid.window = SDL_CreateWindow("", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, w,h, SDL_WINDOW_SHOWN);
vid.renderer = SDL_CreateRenderer(vid.window,-1,SDL_RENDERER_ACCELERATED|SDL_RENDERER_PRESENTVSYNC);
// SDL_RendererInfo info;
diff --git a/workspace/macos/platform/platform.h b/workspace/macos/platform/platform.h
index 7b72afcf..8f8772f7 100644
--- a/workspace/macos/platform/platform.h
+++ b/workspace/macos/platform/platform.h
@@ -155,7 +155,7 @@
// Platform-Specific Paths and Settings
///////////////////////////////
-#define SDCARD_PATH "/Users/shauninman/Projects/Personal/MinUI/workspace/macos/FAKESD"
+#define SDCARD_PATH "../../macos/FAKESD"
#define MUTE_VOLUME_RAW 63 // Volume scale is inverted: 63 = mute, 0 = max volume
///////////////////////////////
diff --git a/workspace/magicmini/README.md b/workspace/magicmini/README.md
index 153757ae..66fa7c14 100644
--- a/workspace/magicmini/README.md
+++ b/workspace/magicmini/README.md
@@ -3,11 +3,11 @@
Platform implementation for the Magic Mini retro handheld device.
> [!WARNING]
-> **This platform is deprecated and will be removed in a future MinUI release.**
+> **This platform is deprecated and will be removed in a future LessUI release.**
>
> **Reason**: RK3326 chipset scandal and supplier fraud issues affecting device availability and support.
>
-> While the platform will continue to work with current MinUI releases, it will not receive new features or platform-specific bug fixes.
+> While the platform will continue to work with current LessUI releases, it will not receive new features or platform-specific bug fixes.
## Hardware Specifications
@@ -41,15 +41,15 @@ Platform implementation for the Magic Mini retro handheld device.
### Storage
- **Primary SD Card**: `/mnt/SDCARD` (internal/stock OS)
-- **Secondary SD Card**: `/storage/TF2` (MinUI installation location)
+- **Secondary SD Card**: `/storage/TF2` (LessUI installation location)
## Platform Architecture
The Magic Mini uses a unique dual-SD-card setup where:
- **Internal SD** (`/mnt/SDCARD`): Contains stock OS and boot configuration
-- **External SD** (`/storage/TF2`): Contains all MinUI files, ROMs, and data
+- **External SD** (`/storage/TF2`): Contains all LessUI files, ROMs, and data
-This allows MinUI to coexist with the stock firmware by keeping all files on the second card.
+This allows LessUI to coexist with the stock firmware by keeping all files on the second card.
## Directory Structure
@@ -130,7 +130,7 @@ Note: Unlike most platforms, Magic Mini has no SDL dependency in its makefile.
### File System Layout
-MinUI installs to the **secondary SD card** (`/storage/TF2`) with this structure:
+LessUI installs to the **secondary SD card** (`/storage/TF2`) with this structure:
```
/storage/TF2/
@@ -139,18 +139,18 @@ MinUI installs to the **secondary SD card** (`/storage/TF2`) with this structure
│ │ ├── bin/ Utilities (keymon, etc.)
│ │ │ └── install.sh Post-update installation script
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale)
│ └── BPreplayBold-unhinted.otf
├── Roms/ ROM files organized by system
-├── MinUI.zip Update package (if present)
+├── LessUI.zip Update package (if present)
└── log.txt Installation/update log
```
### Stock OS Integration
-MinUI integrates with the stock firmware through boot scripts:
+LessUI integrates with the stock firmware through boot scripts:
**On internal SD** (`/mnt/SDCARD`):
```
@@ -164,19 +164,19 @@ SYSTEM.squashfs/
│ └── updating.bmp # Copied from install/updating.bmp
```
-The `autostart.sh` script runs on device boot and checks for MinUI updates on the secondary card.
+The `autostart.sh` script runs on device boot and checks for LessUI updates on the secondary card.
### Boot Process
1. Device boots stock OS from internal SD
-2. Stock OS runs `/usr/bin/autostart.sh` (MinUI's boot.sh)
-3. Script checks for `MinUI.zip` on `/storage/TF2`
+2. Stock OS runs `/usr/bin/autostart.sh` (LessUI's boot.sh)
+3. Script checks for `LessUI.zip` on `/storage/TF2`
4. If ZIP found:
- Display splash screen to framebuffer (`installing.bmp` or `updating.bmp`)
- Extract ZIP to `/storage/TF2`
- Delete ZIP file
- Run `.system/magicmini/bin/install.sh` to complete setup
-5. Launch MinUI via `.system/magicmini/paks/MinUI.pak/launch.sh`
+5. Launch LessUI via `.system/magicmini/paks/LessUI.pak/launch.sh`
6. If launcher exits, shutdown device (prevents stock OS from interfering)
#### Boot Image Display
@@ -199,12 +199,12 @@ echo 0,0 > /sys/class/graphics/fb0/pan
### Dual SD Card Architecture
The Magic Mini's dual SD card setup provides:
-- **Isolation**: MinUI completely separate from stock OS
-- **Safety**: Stock firmware never touches MinUI data
+- **Isolation**: LessUI completely separate from stock OS
+- **Safety**: Stock firmware never touches LessUI data
- **Flexibility**: Can remove secondary SD to boot stock OS normally
### Direct Framebuffer Access
-Boot images are written directly to `/dev/fb0` using `dd` command rather than using SDL or other graphics libraries. This allows splash screens before MinUI fully initializes.
+Boot images are written directly to `/dev/fb0` using `dd` command rather than using SDL or other graphics libraries. This allows splash screens before LessUI fully initializes.
### Audio Configuration
Custom audio buffer size (`SAMPLES 400`) to reduce audio underruns in fceumm (NES emulator).
@@ -238,8 +238,8 @@ Input configuration utility
## Known Issues / Quirks
### Platform Quirks
-1. **Deprecated Status**: Platform marked as deprecated - newer MinUI features may not be supported
-2. **Dual SD Required**: Requires secondary SD card slot for MinUI installation
+1. **Deprecated Status**: Platform marked as deprecated - newer LessUI features may not be supported
+2. **Dual SD Required**: Requires secondary SD card slot for LessUI installation
3. **Portrait Boot Images**: Boot splash BMPs must be rotated 90 degrees
4. **BMP Header Offset**: Uses `bs=71` instead of `bs=70` to correct color shifting issue
5. **Joystick API Unused**: Despite having joystick indices defined, platform doesn't currently use SDL joystick input
@@ -252,7 +252,7 @@ Input configuration utility
2. **Simplified Input**: No SDL keyboard support, limited evdev codes
3. **MENU Code Difference**: Kernel MENU button code (704) differs from typical SDL codes
4. **Stock OS Dependency**: Requires stock firmware to handle initial boot sequence
-5. **Shutdown on Exit**: Boot script shutdowns device if MinUI exits (safety measure)
+5. **Shutdown on Exit**: Boot script shutdowns device if LessUI exits (safety measure)
### Input Limitations
- Joystick button mappings are defined but **not currently used**
@@ -266,7 +266,7 @@ When testing changes:
2. Test on **secondary SD card** (`/storage/TF2`)
3. Check volume control with PLUS/MINUS buttons
4. Verify brightness control with MENU+PLUS/MINUS
-5. Confirm MinUI launches after update extraction
+5. Confirm LessUI launches after update extraction
6. Test shutdown behavior when launcher exits
## Related Documentation
@@ -280,10 +280,10 @@ When testing changes:
## Maintainer Notes
-This platform represents an **alternative architecture** in MinUI:
-- Dual SD card installation (unique among MinUI platforms)
+This platform represents an **alternative architecture** in LessUI:
+- Dual SD card installation (unique among LessUI platforms)
- Direct framebuffer rendering for boot images
- No SDL keyboard input (joystick or alternative method)
- Integration with stock firmware rather than replacement
-While deprecated, it demonstrates MinUI's flexibility in adapting to different hardware constraints and installation methods. This approach may be useful reference for future platforms with similar dual-storage architectures.
+While deprecated, it demonstrates LessUI's flexibility in adapting to different hardware constraints and installation methods. This approach may be useful reference for future platforms with similar dual-storage architectures.
diff --git a/workspace/magicmini/install/boot.sh b/workspace/magicmini/install/boot.sh
index 5fecec93..7f16285c 100755
--- a/workspace/magicmini/install/boot.sh
+++ b/workspace/magicmini/install/boot.sh
@@ -4,7 +4,7 @@
SDCARD_PATH=/storage/TF2
SYSTEM_FRAG=/.system/magicmini
-UPDATE_FRAG=/MinUI.zip
+UPDATE_FRAG=/LessUI.zip
SYSTEM_PATH=${SDCARD_PATH}${SYSTEM_FRAG}
UPDATE_PATH=${SDCARD_PATH}${UPDATE_FRAG}
@@ -14,10 +14,10 @@ if [ -f $UPDATE_PATH ]; then
if [ ! -d $SYSTEM_PATH ]; then
ACTION=installing
- echo "install MinUI" >> $SDCARD_PATH/log.txt
+ echo "install LessUI" >> $SDCARD_PATH/log.txt
else
ACTION=updating
- echo "update MinUI" >> $SDCARD_PATH/log.txt
+ echo "update LessUI" >> $SDCARD_PATH/log.txt
fi
# show action
diff --git a/workspace/miyoomini/README.md b/workspace/miyoomini/README.md
index 7cac93c6..e25b88f5 100644
--- a/workspace/miyoomini/README.md
+++ b/workspace/miyoomini/README.md
@@ -133,7 +133,7 @@ The platform automatically clones required dependencies on first build:
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/mnt/SDCARD/
@@ -141,7 +141,7 @@ MinUI installs to the SD card with the following structure:
│ ├── miyoomini/ Platform-specific binaries
│ │ ├── bin/ Utilities (batmon, lumon, overclock, etc.)
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale)
│ └── BPreplayBold-unhinted.otf
@@ -151,26 +151,26 @@ MinUI installs to the SD card with the following structure:
│ ├── installing.png Initial install splash
│ └── updating.png Update splash
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Boot Process
1. Device boots and runs `miyoomini.sh` from `.tmp_update/`
2. Script sets CPU governor to "performance"
-3. If `MinUI.zip` exists:
+3. If `LessUI.zip` exists:
- Initialize backlight (PWM)
- Initialize LCD (trigger `/proc/ls`)
- Display `installing.png` (first install) or `updating.png` (update)
- - Extract `MinUI.zip` to SD card
+ - Extract `LessUI.zip` to SD card
- Run `.system/miyoomini/bin/install.sh` to complete setup
-4. Launch MinUI via `.system/miyoomini/paks/MinUI.pak/launch.sh`
+4. Launch LessUI via `.system/miyoomini/paks/LessUI.pak/launch.sh`
5. If launcher exits, reboot (prevents stock firmware from accessing card)
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in SD card root
+To update LessUI on device:
+1. Place `LessUI.zip` in SD card root
2. Reboot device
3. Boot script auto-detects ZIP and performs update
4. ZIP is deleted after successful extraction
@@ -223,7 +223,7 @@ DinguxCommander-based file manager with:
- File operations (copy, cut, paste, delete, rename)
- Directory navigation
- Image preview support
-- Integrated with MinUI launcher
+- Integrated with LessUI launcher
### Remove Loading.pak
Utility to disable the stock "loading" screen animation that appears before game launch.
@@ -264,7 +264,7 @@ When testing changes:
## Maintainer Notes
-This is one of the most popular MinUI platforms and serves as a reference implementation for:
+This is one of the most popular LessUI platforms and serves as a reference implementation for:
- Multi-variant runtime detection
- Hybrid input handling (SDL + evdev)
- Battery monitoring abstraction (ADC vs I2C)
diff --git a/workspace/miyoomini/install/boot.sh b/workspace/miyoomini/install/boot.sh
index afd6ce55..19f020a7 100755
--- a/workspace/miyoomini/install/boot.sh
+++ b/workspace/miyoomini/install/boot.sh
@@ -3,7 +3,7 @@
PLATFORM="miyoomini"
SDCARD_PATH="/mnt/SDCARD"
-UPDATE_PATH="$SDCARD_PATH/MinUI.zip"
+UPDATE_PATH="$SDCARD_PATH/LessUI.zip"
SYSTEM_PATH="$SDCARD_PATH/.system"
CPU_PATH=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
diff --git a/workspace/my282/README.md b/workspace/my282/README.md
index d9c9807d..9a6be488 100644
--- a/workspace/my282/README.md
+++ b/workspace/my282/README.md
@@ -180,7 +180,7 @@ MY282 shares libretro cores with the rg35xx platform due to similar ARM Cortex-A
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/mnt/SDCARD/
@@ -189,7 +189,7 @@ MinUI installs to the SD card with the following structure:
│ │ ├── bin/ Utilities (keymon, overclock, etc.)
│ │ │ └── install.sh Post-update installation script
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale)
│ └── BPreplayBold-unhinted.otf
@@ -203,32 +203,32 @@ MinUI installs to the SD card with the following structure:
│ └── my282/
│ └── msettings.bin Settings persistence file
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Boot Process
1. Device boots and runs boot script from `.tmp_update/my282.sh`
2. Script sets CPU governor to "performance" for optimal speed
-3. If `MinUI.zip` exists:
+3. If `LessUI.zip` exists:
- Display `installing.png` (first install) or `updating.png` (update)
- Move old update directory to backup location
- - Extract `MinUI.zip` to SD card using unzip utility
+ - Extract `LessUI.zip` to SD card using unzip utility
- Delete ZIP file
- Remove backup directory
- Run `.system/my282/bin/install.sh` to complete setup
-4. Launch MinUI via `.system/my282/paks/MinUI.pak/launch.sh`
+4. Launch LessUI via `.system/my282/paks/LessUI.pak/launch.sh`
5. Keep relaunching while launcher exists (infinite loop)
6. If launcher removed, execute `poweroff` to prevent stock firmware access
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in SD card root (`/mnt/SDCARD/MinUI.zip`)
+To update LessUI on device:
+1. Place `LessUI.zip` in SD card root (`/mnt/SDCARD/LessUI.zip`)
2. Reboot device
3. Boot script auto-detects ZIP and performs update
4. ZIP is deleted after successful extraction
-5. MinUI launches automatically
+5. LessUI launches automatically
## Platform-Specific Features
@@ -292,7 +292,7 @@ void Stick_quit(void);
void Stick_get(int* x, int* y); // Returns -32768 to 32767
```
-This is unique compared to other MinUI platforms which typically only have D-pad input.
+This is unique compared to other LessUI platforms which typically only have D-pad input.
### Display Rotation Support
@@ -326,7 +326,7 @@ DinguxCommander-SDL2 based file manager with:
- Full file operations (copy, cut, paste, delete, rename)
- Directory navigation
- SDL2 graphics rendering
-- Integrated with MinUI launcher
+- Integrated with LessUI launcher
### Clock.pak
System clock/time display tool
@@ -341,12 +341,12 @@ Input configuration utility
2. **MENU Code Variance**: Keymon must handle both code 1 and 354 for MENU button
3. **Shared Cores**: Uses rg35xx cores (same ARM Cortex-A53 architecture)
4. **Infinite Launch Loop**: Boot script loops indefinitely to prevent stock OS access
-5. **Forced Poweroff**: Device powers off if MinUI launcher removed
+5. **Forced Poweroff**: Device powers off if LessUI launcher removed
### Development Notes
1. **No L3/R3**: Platform lacks clickable analog sticks
2. **NEON Support**: HAS_NEON defined - use SIMD optimizations for performance-critical code
-3. **Joystick Input**: Unlike most MinUI platforms which use keyboard, MY282 uses joystick API
+3. **Joystick Input**: Unlike most LessUI platforms which use keyboard, MY282 uses joystick API
4. **Settings Architecture**: Shared memory approach is more complex than simple file-based settings
5. **60Hz Polling**: Keymon runs at 60Hz (16.666ms) for responsive button detection
@@ -371,7 +371,7 @@ When testing changes:
5. Test headphone jack detection and volume switching
6. Verify analog stick input if used by applications
7. Confirm splash screens display correctly during install/update
-8. Test boot process with and without MinUI.zip present
+8. Test boot process with and without LessUI.zip present
## Related Documentation
@@ -386,7 +386,7 @@ When testing changes:
The MY282 platform is notable for several unique characteristics:
### Architectural Distinctions
-1. **Joystick-first input**: One of the few MinUI platforms using SDL joystick API instead of keyboard
+1. **Joystick-first input**: One of the few LessUI platforms using SDL joystick API instead of keyboard
2. **Shared memory settings**: More sophisticated than file-only persistence
3. **Dual input monitoring**: Keymon watches two event devices simultaneously
4. **Analog stick support**: Unique among handheld platforms (via libmstick)
@@ -407,4 +407,4 @@ When modifying platform code, pay attention to:
- Non-linear brightness curve optimized for perceived brightness
- 60Hz polling rate balances responsiveness vs CPU usage
-This platform demonstrates MinUI's flexibility in adapting to diverse input architectures (joystick vs keyboard) while maintaining consistent user experience across all supported devices.
+This platform demonstrates LessUI's flexibility in adapting to diverse input architectures (joystick vs keyboard) while maintaining consistent user experience across all supported devices.
diff --git a/workspace/my282/install/boot.sh b/workspace/my282/install/boot.sh
index abe65215..e382034e 100755
--- a/workspace/my282/install/boot.sh
+++ b/workspace/my282/install/boot.sh
@@ -3,7 +3,7 @@
PLATFORM="my282"
SDCARD_PATH="/mnt/SDCARD"
-UPDATE_PATH="$SDCARD_PATH/MinUI.zip"
+UPDATE_PATH="$SDCARD_PATH/LessUI.zip"
SYSTEM_PATH="$SDCARD_PATH/.system"
CPU_PATH=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
diff --git a/workspace/my355/README.md b/workspace/my355/README.md
index def971b3..5b7ea378 100644
--- a/workspace/my355/README.md
+++ b/workspace/my355/README.md
@@ -57,7 +57,7 @@ Platform implementation for the Miyoo Flip retro handheld device.
## Platform Architecture
-The MY355 (Miyoo Flip) is unique in MinUI's platform lineup due to:
+The MY355 (Miyoo Flip) is unique in LessUI's platform lineup due to:
1. **Clamshell Design**: Features hall sensor for lid detection, enabling automatic sleep when closed
2. **Dual Display Support**: Seamlessly switches between built-in 640x480 screen and 720p HDMI output
@@ -81,7 +81,7 @@ my355/
├── show/ Boot splash screen display utility
│ └── show.c SDL2-based PNG image display (with rotation)
├── init/ Initial device setup (first install only)
-│ └── init.sh Rootfs modification script for MinUI integration
+│ └── init.sh Rootfs modification script for LessUI integration
├── install/ Installation assets and boot script
│ ├── boot.sh Boot/update handler
│ ├── installing.png Boot splash for fresh install (640x480)
@@ -183,7 +183,7 @@ These are automatically cloned and built on first run.
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/mnt/SDCARD/
@@ -192,7 +192,7 @@ MinUI installs to the SD card with the following structure:
│ │ ├── bin/ Utilities (keymon, etc.)
│ │ │ └── install.sh Post-update installation script
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale)
│ ├── line-*.png Scanline overlay effects (various scales)
@@ -204,19 +204,19 @@ MinUI installs to the SD card with the following structure:
│ ├── installing.png Initial install splash
│ └── updating.png Update splash
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Initial Installation
-The MY355 requires a **one-time rootfs modification** to integrate MinUI with the stock system:
+The MY355 requires a **one-time rootfs modification** to integrate LessUI with the stock system:
1. Place installation files in `/miyoo355/app/355/` directory
2. Run `init.sh` script which:
- Extracts current rootfs from `/dev/mtd3ro`
- Unpacks squashfs filesystem
- Backs up original `runmiyoo.sh` to `runmiyoo-original.sh`
- - Injects MinUI launcher hook
+ - Injects LessUI launcher hook
- Repacks and flashes modified rootfs to `/dev/mtd3`
- Reboots device
@@ -228,19 +228,19 @@ After initialization, device boots as follows:
1. Stock system runs modified `runmiyoo.sh` boot script
2. Script sets CPU governor to "performance" mode
-3. If `MinUI.zip` exists on SD card:
+3. If `LessUI.zip` exists on SD card:
- Display `installing.png` (first install) or `updating.png` (update)
- Extract ZIP to SD card root
- Delete ZIP file
- Run `.system/my355/bin/install.sh` to complete setup
-4. Launch MinUI via `.system/my355/paks/MinUI.pak/launch.sh`
+4. Launch LessUI via `.system/my355/paks/LessUI.pak/launch.sh`
5. Loop: if launcher exits, relaunch (prevents stock firmware access)
6. On critical failure: power off device
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in SD card root (`/mnt/SDCARD/`)
+To update LessUI on device:
+1. Place `LessUI.zip` in SD card root (`/mnt/SDCARD/`)
2. Reboot device
3. Boot script auto-detects ZIP and performs update
4. ZIP is deleted after successful extraction
@@ -436,7 +436,7 @@ DinguxCommander-SDL2 based file manager with:
- File operations (copy, cut, paste, delete, rename)
- Directory navigation
- Image preview support
-- Integrated with MinUI launcher
+- Integrated with LessUI launcher
## Known Issues / Quirks
@@ -496,10 +496,10 @@ When testing changes:
## Maintainer Notes
-The MY355 (Miyoo Flip) represents one of the most **feature-complete** implementations in MinUI:
+The MY355 (Miyoo Flip) represents one of the most **feature-complete** implementations in LessUI:
### Advanced Features
-- Hall sensor lid detection (unique among MinUI platforms)
+- Hall sensor lid detection (unique among LessUI platforms)
- Runtime HDMI hotplug with automatic reconfiguration
- Multi-pass rendering for crisp pixel scaling
- Overlay effects system (scanlines/grids)
@@ -529,4 +529,4 @@ Changes to this platform should be thoroughly tested across all feature combinat
- Video pipeline performance with overlay effects
- Lid detection reliability
-This platform showcases MinUI's ability to support sophisticated hardware features while maintaining the project's core philosophy of simplicity and cross-platform consistency.
+This platform showcases LessUI's ability to support sophisticated hardware features while maintaining the project's core philosophy of simplicity and cross-platform consistency.
diff --git a/workspace/my355/install/boot.sh b/workspace/my355/install/boot.sh
index 6e315770..924f8b3b 100755
--- a/workspace/my355/install/boot.sh
+++ b/workspace/my355/install/boot.sh
@@ -6,7 +6,7 @@ cat /dev/zero > /dev/fb0
PLATFORM="my355"
SDCARD_PATH="/mnt/SDCARD"
-UPDATE_PATH="$SDCARD_PATH/MinUI.zip"
+UPDATE_PATH="$SDCARD_PATH/LessUI.zip"
SYSTEM_PATH="$SDCARD_PATH/.system"
CPU_PATH=/sys/devices/system/cpu/cpufreq/policy0/scaling_governor
diff --git a/workspace/rg35xx/README.md b/workspace/rg35xx/README.md
index 35bec2c7..89ffaa4f 100644
--- a/workspace/rg35xx/README.md
+++ b/workspace/rg35xx/README.md
@@ -72,13 +72,13 @@ The RG35XX uses a flexible dual-partition approach:
- **TF1** (`/mnt/mmc`): Primary ROMS partition
- **TF2** (`/mnt/sdcard`): Optional secondary partition
-Boot script detects which partition contains MinUI (`.system/rg35xx` or `MinUI.zip`) and creates symlinks accordingly. This allows MinUI to work with single or dual TF card setups.
+Boot script detects which partition contains LessUI (`.system/rg35xx` or `LessUI.zip`) and creates symlinks accordingly. This allows LessUI to work with single or dual TF card setups.
### Boot Firmware Integration
-MinUI runs through a custom ramdisk (`ramdisk.img`) and boot script (`dmenu.bin`) installed in the `/misc` partition:
+LessUI runs through a custom ramdisk (`ramdisk.img`) and boot script (`dmenu.bin`) installed in the `/misc` partition:
- Ramdisk provides chroot environment with ext2 filesystem (`rootfs.ext2`)
-- Boot script mounts SD cards and launches MinUI
-- Falls back to stock `dmenu.bin` if MinUI is not installed
+- Boot script mounts SD cards and launches LessUI
+- Falls back to stock `dmenu.bin` if LessUI is not installed
## Directory Structure
@@ -166,7 +166,7 @@ The platform automatically clones required dependencies on first build:
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/mnt/sdcard/ (or /mnt/mmc if single partition)
@@ -174,55 +174,55 @@ MinUI installs to the SD card with the following structure:
│ ├── rg35xx/ Platform-specific binaries
│ │ ├── bin/ Utilities (keymon, overclock, install.sh)
│ │ ├── paks/ Applications and emulators
-│ │ │ └── MinUI.pak/ Main launcher
+│ │ │ └── LessUI.pak/ Main launcher
│ │ ├── dat/ Boot partition files (ramdisk.img, dmenu.bin)
│ │ └── rootfs.ext2 Chroot filesystem image
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale)
│ └── BPreplayBold-unhinted.otf
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Boot Partition Layout (`/misc`)
-MinUI modifies the `/misc` partition during installation:
+LessUI modifies the `/misc` partition during installation:
```
/misc/
-├── dmenu.bin MinUI boot script (boot.sh)
-├── ramdisk.img Custom ramdisk with MinUI environment
+├── dmenu.bin LessUI boot script (boot.sh)
+├── ramdisk.img Custom ramdisk with LessUI environment
├── boot_logo.bmp.gz Boot splash (only installed, never updated)
├── charging.png Custom charging graphic (only installed, never updated)
-└── .minstalled Flag file indicating MinUI is installed
+└── .minstalled Flag file indicating LessUI is installed
```
### Boot Process
-1. Stock firmware boots and runs `/misc/dmenu.bin` (MinUI's boot.sh)
+1. Stock firmware boots and runs `/misc/dmenu.bin` (LessUI's boot.sh)
2. Script mounts SD card partitions (TF1 at `/mnt/mmc`, TF2 at `/mnt/sdcard`)
-3. Detects which partition contains MinUI by checking for `.system/rg35xx` or `MinUI.zip`
+3. Detects which partition contains LessUI by checking for `.system/rg35xx` or `LessUI.zip`
4. Creates symlink if needed to unify partition access
-5. If `MinUI.zip` exists:
+5. If `LessUI.zip` exists:
- Display splash screen based on install state (installing.bmp or updating.bmp)
- Set framebuffer to 640x480x16
- Extract splash images from uuencoded data in boot script
- Display appropriate splash to `/dev/fb0`
- - Extract `MinUI.zip` to SD card
+ - Extract `LessUI.zip` to SD card
- Delete ZIP file
- Run `.system/rg35xx/bin/install.sh` to update `/misc` partition
- Reboot device
-6. Check for `rootfs.ext2` (required for MinUI)
+6. Check for `rootfs.ext2` (required for LessUI)
7. If missing, fall back to stock `dmenu.bin`
8. Setup loopback device and mount rootfs as chroot environment
9. Bind mount system directories (`/dev`, `/proc`, `/sys`, etc.)
-10. `chroot` into rootfs and launch MinUI via `launch.sh`
+10. `chroot` into rootfs and launch LessUI via `launch.sh`
11. On exit: unmount, detach loopback, reboot device
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in SD card root
+To update LessUI on device:
+1. Place `LessUI.zip` in SD card root
2. Reboot device
3. Boot script auto-detects ZIP and performs update
4. Install script checks MD5 checksums of `/misc` files
@@ -280,11 +280,11 @@ The overclock utility provides direct CMU register manipulation:
Voltage formula: `((volts - 700000) / 25000) << 7 | 0xe04e`
### Chroot Environment
-MinUI runs in a chroot environment from `rootfs.ext2`:
+LessUI runs in a chroot environment from `rootfs.ext2`:
- Loopback mounted at `/cfw` via `/dev/block/loop7`
- Provides isolated userspace with necessary libraries
- System directories bind-mounted from host (`/dev`, `/proc`, `/sys`)
-- Allows MinUI to use different library versions than stock OS
+- Allows LessUI to use different library versions than stock OS
### Custom Charging Screen
The ramdisk is patched to use a custom charging graphic:
@@ -299,15 +299,15 @@ DinguxCommander-based file manager with:
- File operations (copy, cut, paste, delete, rename)
- Directory navigation
- Image preview support
-- Integrated with MinUI launcher
+- Integrated with LessUI launcher
## Known Issues / Quirks
### Hardware Quirks
1. **Japanese Key Mappings**: SDL buttons use unusual Japanese input key codes (Katakana, Hiragana, etc.)
2. **Dual Partition Detection**: Complex boot logic to support single or dual TF card configurations
-3. **Chroot Requirement**: MinUI requires `rootfs.ext2` and cannot run directly on stock firmware
-4. **Reboot on Exit**: Boot script forces reboot if MinUI exits to prevent system instability
+3. **Chroot Requirement**: LessUI requires `rootfs.ext2` and cannot run directly on stock firmware
+4. **Reboot on Exit**: Boot script forces reboot if LessUI exits to prevent system instability
### Development Notes
1. **No L3/R3**: Platform lacks clickable analog sticks
@@ -357,7 +357,7 @@ When testing changes:
## Maintainer Notes
-This platform demonstrates several **unique architectural patterns** in MinUI:
+This platform demonstrates several **unique architectural patterns** in LessUI:
1. **Chroot-based execution**: Only platform that runs entirely in a chrooted environment
2. **Boot partition modification**: Directly modifies `/misc` partition for firmware integration
diff --git a/workspace/rg35xx/boot/boot.sh b/workspace/rg35xx/boot/boot.sh
index 47c90170..a9d16226 100755
--- a/workspace/rg35xx/boot/boot.sh
+++ b/workspace/rg35xx/boot/boot.sh
@@ -7,7 +7,7 @@ TF2_PATH=/mnt/sdcard
SDCARD_PATH=$TF1_PATH
SYSTEM_DIR=/.system
SYSTEM_FRAG=$SYSTEM_DIR/rg35xx
-UPDATE_FRAG=/MinUI.zip
+UPDATE_FRAG=/LessUI.zip
SYSTEM_PATH=${SDCARD_PATH}${SYSTEM_FRAG}
UPDATE_PATH=${SDCARD_PATH}${UPDATE_FRAG}
diff --git a/workspace/rg35xx/boot/output/dmenu.bin b/workspace/rg35xx/boot/output/dmenu.bin
index bc54a820..fadce9da 100644
--- a/workspace/rg35xx/boot/output/dmenu.bin
+++ b/workspace/rg35xx/boot/output/dmenu.bin
@@ -7,7 +7,7 @@ TF2_PATH=/mnt/sdcard
SDCARD_PATH=$TF1_PATH
SYSTEM_DIR=/.system
SYSTEM_FRAG=$SYSTEM_DIR/rg35xx
-UPDATE_FRAG=/MinUI.zip
+UPDATE_FRAG=/LessUI.zip
SYSTEM_PATH=${SDCARD_PATH}${SYSTEM_FRAG}
UPDATE_PATH=${SDCARD_PATH}${UPDATE_FRAG}
diff --git a/workspace/rg35xxplus/README.md b/workspace/rg35xxplus/README.md
index 52ff51b2..27d75e69 100644
--- a/workspace/rg35xxplus/README.md
+++ b/workspace/rg35xxplus/README.md
@@ -42,7 +42,7 @@ Platform implementation for the Anbernic RG35XX Plus series retro handheld devic
### Storage
- **TF1 (Internal)**: `/mnt/mmc` - Boot partition and stock OS
-- **TF2 (External)**: `/mnt/sdcard` - MinUI and ROMs
+- **TF2 (External)**: `/mnt/sdcard` - LessUI and ROMs
- Automatic fallback: If TF2 is missing or empty, symlink to TF1
## Platform Variants
@@ -202,12 +202,12 @@ The platform automatically clones required dependencies on first build:
### File System Layout
-MinUI installs across two SD cards:
+LessUI installs across two SD cards:
**TF1 (Internal) - `/mnt/mmc`**:
```
/mnt/mmc/
-├── dmenu.bin Updated from MinUI (stock menu binary)
+├── dmenu.bin Updated from LessUI (stock menu binary)
├── .minstalled Flag file (prevents bootlogo reinstall)
└── log.txt Installation/boot log
```
@@ -222,14 +222,14 @@ MinUI installs across two SD cards:
│ │ ├── dat/
│ │ │ └── dmenu.bin Updated stock menu binary
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale)
│ └── BPreplayBold-unhinted.otf
├── .userdata/
│ └── rg35xxplus/ User settings and saves
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Boot Process
@@ -237,8 +237,8 @@ MinUI installs across two SD cards:
1. Stock firmware boots from TF1 (`/mnt/mmc`)
2. Custom boot script runs (`boot.sh` embedded in bootloader)
3. Script mounts TF2 (`/mnt/sdcard`) at `/dev/mmcblk1p1`
-4. If TF2 mount fails or doesn't contain MinUI: symlink `/mnt/sdcard` → `/mnt/mmc`
-5. Check for `MinUI.zip` on TF2:
+4. If TF2 mount fails or doesn't contain LessUI: symlink `/mnt/sdcard` → `/mnt/mmc`
+5. Check for `LessUI.zip` on TF2:
- Detect device variant by reading `/mnt/vendor/bin/dmenu.bin`
- Detect framebuffer orientation from `/sys/class/graphics/fb0/modes`
- Select appropriate boot image suffix:
@@ -247,17 +247,17 @@ MinUI installs across two SD cards:
- `-w`: Widescreen display (RG34xx)
- (none): Standard 640x480
- Display `installing.bmp` (first install) or `updating.bmp` (update)
- - Extract `MinUI.zip` to `/mnt/sdcard`
+ - Extract `LessUI.zip` to `/mnt/sdcard`
- Delete ZIP file
- On first install: Replace stock bootlogo.bmp on boot partition (TF1)
- Run `.system/rg35xxplus/bin/install.sh` to complete setup
-6. Launch MinUI via `.system/rg35xxplus/paks/MinUI.pak/launch.sh`
+6. Launch LessUI via `.system/rg35xxplus/paks/LessUI.pak/launch.sh`
7. If launcher exits, shutdown device (prevents stock firmware from accessing card)
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in TF2 root (`/mnt/sdcard/`)
+To update LessUI on device:
+1. Place `LessUI.zip` in TF2 root (`/mnt/sdcard/`)
2. Reboot device
3. Boot script auto-detects ZIP, determines variant, and performs update
4. ZIP is deleted after successful extraction
@@ -373,7 +373,7 @@ These adjustments maximize visible content while maintaining consistent UI appea
## Included Tools
-Tools are provided via the shared MinUI .pak system:
+Tools are provided via the shared LessUI .pak system:
- **Clock.pak**: System clock/time display
- **Input.pak**: Input configuration utility
- **Files.pak**: File manager (if included in build)
@@ -403,7 +403,7 @@ Tools are provided via the shared MinUI .pak system:
### Boot Process Quirks
1. **dmenu.bin Update**: Install script copies updated `dmenu.bin` to TF1 for stock menu compatibility
2. **Bootlogo One-Time Install**: `.minstalled` flag prevents bootlogo from being reinstalled on updates
-3. **Shutdown on Exit**: Boot script shutdowns device if MinUI exits (safety measure)
+3. **Shutdown on Exit**: Boot script shutdowns device if LessUI exits (safety measure)
4. **Automatic Symlink**: If TF2 is missing/empty, automatically symlinks to TF1 for single-card operation
## Testing
@@ -429,7 +429,7 @@ When testing changes:
## Maintainer Notes
-This platform demonstrates MinUI's **advanced runtime adaptation**:
+This platform demonstrates LessUI's **advanced runtime adaptation**:
- Single binary supporting three distinct hardware variants
- Runtime display resolution and UI layout configuration
- Hot-plug HDMI detection with automatic routing
diff --git a/workspace/rg35xxplus/boot/boot.sh b/workspace/rg35xxplus/boot/boot.sh
index e36646a2..3cad336e 100755
--- a/workspace/rg35xxplus/boot/boot.sh
+++ b/workspace/rg35xxplus/boot/boot.sh
@@ -12,7 +12,7 @@ FLAG_PATH=$TF1_PATH/.minstalled
SDCARD_PATH=$TF1_PATH
SYSTEM_DIR=/.system
SYSTEM_FRAG=$SYSTEM_DIR/rg35xxplus
-UPDATE_FRAG=/MinUI.zip
+UPDATE_FRAG=/LessUI.zip
SYSTEM_PATH=${SDCARD_PATH}${SYSTEM_FRAG}
UPDATE_PATH=${SDCARD_PATH}${UPDATE_FRAG}
@@ -40,7 +40,7 @@ else
fi
if [ -d ${TF1_PATH}${SYSTEM_FRAG} ] || [ -f ${TF1_PATH}${UPDATE_FRAG} ]; then
- echo "found MinUI on TF1" >> $TF1_PATH/log.txt
+ echo "found LessUI on TF1" >> $TF1_PATH/log.txt
if [ ! -h $TF2_PATH ]; then
echo "no system on TF2, unmount and symlink to TF1" >> $TF1_PATH/log.txt
umount $TF2_PATH
@@ -76,10 +76,10 @@ if [ -f $UPDATE_PATH ]; then
if [ ! -d $SYSTEM_PATH ]; then
ACTION=installing
- echo "install MinUI" >> $TF1_PATH/log.txt
+ echo "install LessUI" >> $TF1_PATH/log.txt
else
ACTION=updating
- echo "update MinUI" >> $TF1_PATH/log.txt
+ echo "update LessUI" >> $TF1_PATH/log.txt
fi
# extract tar.gz from this sh file
@@ -119,7 +119,7 @@ if [ -f $UPDATE_PATH ]; then
fi
if [ -f $SYSTEM_PATH/paks/MinUI.pak/launch.sh ]; then
- echo "launch MinUI" >> $TF1_PATH/log.txt
+ echo "launch LessUI" >> $TF1_PATH/log.txt
$SYSTEM_PATH/paks/MinUI.pak/launch.sh
else
echo "couldn't find launch.sh" >> $TF1_PATH/log.txt
diff --git a/workspace/rgb30/README.md b/workspace/rgb30/README.md
index f3d4f6b2..1fd66135 100644
--- a/workspace/rgb30/README.md
+++ b/workspace/rgb30/README.md
@@ -153,7 +153,7 @@ Both dependencies use custom toolchain configurations for the RGB30 hardware.
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/storage/roms/
@@ -161,7 +161,7 @@ MinUI installs to the SD card with the following structure:
│ ├── rgb30/ Platform-specific binaries
│ │ ├── bin/ Utilities (keymon, show, etc.)
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale)
│ └── BPreplayBold-unhinted.otf
@@ -169,7 +169,7 @@ MinUI installs to the SD card with the following structure:
│ └── rgb30/ Platform-specific settings
│ └── msettings.bin Volume/brightness preferences
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Settings Management
@@ -280,7 +280,7 @@ DinguxCommander-based file manager (custom RGB30 build):
- Full file operations (copy, cut, paste, delete, rename)
- Directory navigation
- Image preview support
-- Integrated with MinUI launcher
+- Integrated with LessUI launcher
## Known Issues / Quirks
@@ -327,10 +327,10 @@ When testing changes:
## Maintainer Notes
-This platform demonstrates several advanced MinUI features:
+This platform demonstrates several advanced LessUI features:
**Unique Characteristics**:
-- Square display (720x720) - unique aspect ratio among MinUI platforms
+- Square display (720x720) - unique aspect ratio among LessUI platforms
- HDMI output support with automatic switching
- Dual menu modifier buttons (L3/R3)
- Hybrid input system (joystick + keyboard + evdev)
diff --git a/workspace/tg5040/README.md b/workspace/tg5040/README.md
index 1069470f..b2fb0984 100644
--- a/workspace/tg5040/README.md
+++ b/workspace/tg5040/README.md
@@ -214,7 +214,7 @@ The platform automatically clones required dependencies on first build:
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/mnt/SDCARD/
@@ -224,7 +224,7 @@ MinUI installs to the SD card with the following structure:
│ │ │ └── install.sh Post-update script
│ │ ├── dat/ Data files (runtrimui.sh)
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale - standard)
│ ├── assets@3x.png UI sprite sheet (3x scale - Brick)
@@ -241,7 +241,7 @@ MinUI installs to the SD card with the following structure:
├── .userdata/ User settings and saves
│ └── tg5040/ Platform-specific settings
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Boot Process
@@ -250,21 +250,21 @@ MinUI installs to the SD card with the following structure:
2. Script remounts SD cards as read-write (Brick has `/mnt/UDISK` too)
3. Sets CPU governor to "userspace" and frequency to 2.0 GHz
4. Detects variant by checking MainUI binary for "Trimui Brick" string
-5. If `MinUI.zip` exists:
+5. If `LessUI.zip` exists:
- Disables LED animations (standard + Brick-specific LEDs if applicable)
- Displays variant-appropriate splash screen:
- Standard: `installing.png` or `updating.png` (1280x720)
- Brick: `brick/installing.png` or `brick/updating.png` (1024x768)
- - Extracts `MinUI.zip` to SD card
+ - Extracts `LessUI.zip` to SD card
- Deletes ZIP file
- Runs `.system/tg5040/bin/install.sh` to complete setup
- Reboots if fresh install
-6. Launches MinUI via `.system/tg5040/paks/MinUI.pak/launch.sh`
+6. Launches LessUI via `.system/tg5040/paks/LessUI.pak/launch.sh`
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in SD card root (`/mnt/SDCARD/`)
+To update LessUI on device:
+1. Place `LessUI.zip` in SD card root (`/mnt/SDCARD/`)
2. Reboot device
3. Boot script auto-detects ZIP and performs update
4. Displays variant-appropriate update splash
@@ -400,7 +400,7 @@ DinguxCommander-sdl2 file manager with:
- Full file operations (copy, cut, paste, delete, rename)
- Directory navigation
- Image preview support
-- Integrated with MinUI launcher
+- Integrated with LessUI launcher
### evtest
Hardware input testing utility:
@@ -424,7 +424,7 @@ Joystick testing utility:
5. **GPIO Polling**: Mute switch requires constant GPIO polling (no interrupt support)
6. **Headphone Boot State**: Cannot detect headphone jack state at boot, only detects change events (separate speaker/headphone volumes less useful)
7. **WiFi Limitations**: Stock `wget` lacks SSL support; Splore.pak cannot download carts from BBS (workaround: use `curl` instead)
-8. **PSP/NDS Setup**: Requires copying assets from stock firmware (not included with MinUI)
+8. **PSP/NDS Setup**: Requires copying assets from stock firmware (not included with LessUI)
### Platform Differences
- **L3/R3 Support**: Only Brick variant has clickable analog sticks
diff --git a/workspace/tg5040/install/boot.sh b/workspace/tg5040/install/boot.sh
index 953396fd..ecbd1dd1 100755
--- a/workspace/tg5040/install/boot.sh
+++ b/workspace/tg5040/install/boot.sh
@@ -3,7 +3,7 @@
PLATFORM="tg5040"
SDCARD_PATH="/mnt/SDCARD"
-UPDATE_PATH="$SDCARD_PATH/MinUI.zip"
+UPDATE_PATH="$SDCARD_PATH/LessUI.zip"
SYSTEM_PATH="$SDCARD_PATH/.system"
# for Brick
diff --git a/workspace/trimuismart/README.md b/workspace/trimuismart/README.md
index 83e1f779..31d61a2b 100644
--- a/workspace/trimuismart/README.md
+++ b/workspace/trimuismart/README.md
@@ -10,7 +10,7 @@ Platform implementation for the Trimui Smart retro handheld device.
- **UI Scale**: 1x (uses `assets.png`)
- **Display Engine**: Allwinner Display Engine 2.0 (DE2) with hardware layer composition
- **Rotation**: Software 90-degree rotation for portrait-to-landscape conversion
-- **Orientation**: Physical screen is landscape, MinUI renders portrait (then rotates)
+- **Orientation**: Physical screen is landscape, LessUI renders portrait (then rotates)
### SoC & Architecture
- **SoC**: Allwinner F1C100s
@@ -160,7 +160,7 @@ Note: Unlike most platforms, Trimui Smart has no SDL dependency in its platform
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/mnt/SDCARD/
@@ -169,7 +169,7 @@ MinUI installs to the SD card with the following structure:
│ │ ├── bin/ Utilities (keymon, etc.)
│ │ │ └── install.sh Post-update installation script
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets.png UI sprite sheet (1x scale, 320x240)
│ └── BPreplayBold-unhinted.otf
@@ -181,26 +181,26 @@ MinUI installs to the SD card with the following structure:
│ ├── unzip Update extraction utility
│ └── leds_off LED control utility
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Boot Process
1. Device boots and runs `trimuismart.sh` from `.tmp_update/`
2. Script sets CPU governor to "performance" mode
-3. If `MinUI.zip` exists:
+3. If `LessUI.zip` exists:
- Turn off LEDs (`leds_off`)
- Display `installing.png` (first install) or `updating.png` (update)
- - Extract `MinUI.zip` to SD card using custom `unzip` utility
- - Delete `MinUI.zip` after successful extraction
+ - Extract `LessUI.zip` to SD card using custom `unzip` utility
+ - Delete `LessUI.zip` after successful extraction
- Run `.system/trimuismart/bin/install.sh` to complete setup
-4. Launch MinUI via `.system/trimuismart/paks/MinUI.pak/launch.sh`
+4. Launch LessUI via `.system/trimuismart/paks/LessUI.pak/launch.sh`
5. If launcher exits, poweroff device (prevents stock firmware from accessing card)
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in SD card root
+To update LessUI on device:
+1. Place `LessUI.zip` in SD card root
2. Reboot device
3. Boot script auto-detects ZIP and performs update
4. ZIP is deleted after successful extraction
@@ -212,7 +212,7 @@ To update MinUI on device:
The Trimui Smart uses Allwinner's advanced Display Engine 2.0 with multi-layer composition:
**Hardware Layers**:
-- **Channel 0 (FB_CH)**: Stock framebuffer layer (disabled by MinUI)
+- **Channel 0 (FB_CH)**: Stock framebuffer layer (disabled by LessUI)
- **Channel 1 (SCALER_CH)**: Main game display with rotation and scaling
- **Channel 2 (OVERLAY_CH)**: UI overlay with alpha blending (currently unused)
@@ -242,7 +242,7 @@ Software performs 90-degree rotation before hardware scaling:
rotate_16bpp(src_buffer, dst_buffer, width, height);
```
-**Reason**: MinUI renders in portrait orientation for UI consistency across devices, but the Trimui Smart physical screen is landscape. Rotation happens in the render pipeline.
+**Reason**: LessUI renders in portrait orientation for UI consistency across devices, but the Trimui Smart physical screen is landscape. Rotation happens in the render pipeline.
### CPU Performance
@@ -347,7 +347,7 @@ The Trimui Smart supports 12 libretro cores:
### Hardware Quirks
1. **No L2/R2 Buttons**: Hardware only has L1 and R1 shoulder buttons
-2. **Compact Screen**: 320x240 is the smallest resolution among MinUI platforms
+2. **Compact Screen**: 320x240 is the smallest resolution among LessUI platforms
3. **1x UI Scale**: No scaling applied to UI assets (uses base `assets.png`)
4. **No Dedicated Power Button**: POWER button not accessible in platform.h
5. **No Battery Monitor**: Unlike other platforms, no battery overlay daemon
@@ -363,7 +363,7 @@ The Trimui Smart supports 12 libretro cores:
1. **No L3/R3**: Platform lacks clickable analog sticks
2. **NEON Optimizations**: Platform supports ARM NEON SIMD - use `HAS_NEON` define
3. **Simple Keymon**: Simpler than other platforms (no jack detection, no HDMI, no power monitoring)
-4. **Shutdown on Exit**: Boot script forces poweroff if MinUI exits (prevents stock firmware access)
+4. **Shutdown on Exit**: Boot script forces poweroff if LessUI exits (prevents stock firmware access)
5. **SDL Pre-installed**: Stock firmware provides SDL libraries (no SDL build needed)
### Input Limitations
@@ -401,7 +401,7 @@ When testing changes:
## Maintainer Notes
-This platform represents a **compact, low-resolution** implementation in MinUI:
+This platform represents a **compact, low-resolution** implementation in LessUI:
- Smallest screen resolution (320x240) among active platforms
- 1x UI scaling (no @2x assets)
- Advanced display architecture (Allwinner DE2) vs simple framebuffer
diff --git a/workspace/trimuismart/install/boot.sh b/workspace/trimuismart/install/boot.sh
index 889e695d..c1e45951 100755
--- a/workspace/trimuismart/install/boot.sh
+++ b/workspace/trimuismart/install/boot.sh
@@ -3,7 +3,7 @@
PLATFORM="trimuismart"
SDCARD_PATH="/mnt/SDCARD"
-UPDATE_PATH="$SDCARD_PATH/MinUI.zip"
+UPDATE_PATH="$SDCARD_PATH/LessUI.zip"
SYSTEM_PATH="$SDCARD_PATH/.system"
CPU_PATH=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
diff --git a/workspace/zero28/README.md b/workspace/zero28/README.md
index 4674bc83..7bb657cf 100644
--- a/workspace/zero28/README.md
+++ b/workspace/zero28/README.md
@@ -63,7 +63,7 @@ Platform implementation for the Mini Zero 28 retro handheld device.
The Zero 28 platform uses several unique features:
### SDL2 Joystick Input
-Unlike many MinUI platforms that use SDL keyboard events, the Zero28 uses SDL_Joystick API for all gamepad input. The D-pad uses joystick HAT events rather than discrete button events.
+Unlike many LessUI platforms that use SDL keyboard events, the Zero28 uses SDL_Joystick API for all gamepad input. The D-pad uses joystick HAT events rather than discrete button events.
### Hardware-Accelerated Rendering
The platform leverages SDL2's hardware-accelerated renderer with support for:
@@ -162,13 +162,13 @@ make
The platform automatically clones required dependencies on first build:
- **DinguxCommander-sdl2**: `github.com/shauninman/DinguxCommander-sdl2.git` (SDL2 fork of file manager)
-Note: The Zero28 uses SDL2 (unlike many MinUI platforms that use SDL 1.2).
+Note: The Zero28 uses SDL2 (unlike many LessUI platforms that use SDL 1.2).
## Installation
### File System Layout
-MinUI installs to the SD card with the following structure:
+LessUI installs to the SD card with the following structure:
```
/mnt/SDCARD/
@@ -177,7 +177,7 @@ MinUI installs to the SD card with the following structure:
│ │ ├── bin/ Utilities (keymon, bl_enable, bl_disable, etc.)
│ │ │ └── install.sh Post-update installation script (no-op)
│ │ └── paks/ Applications and emulators
-│ │ └── MinUI.pak/ Main launcher
+│ │ └── LessUI.pak/ Main launcher
│ └── res/ Shared UI assets
│ ├── assets@2x.png UI sprite sheet (2x scale)
│ ├── line-*.png Line effect overlays (2-8px)
@@ -189,26 +189,26 @@ MinUI installs to the SD card with the following structure:
│ ├── installing.png Initial install splash
│ └── updating.png Update splash
├── Roms/ ROM files organized by system
-└── MinUI.zip Update package (if present)
+└── LessUI.zip Update package (if present)
```
### Boot Process
1. Device boots and runs `zero28.sh` (from `.tmp_update/`)
2. Script sets CPU governor to "performance" (600 MHz)
-3. If `MinUI.zip` exists:
+3. If `LessUI.zip` exists:
- Display `installing.png` (first install) or `updating.png` (update)
- Rename `.tmp_update` to `.tmp_update-old`
- - Extract `MinUI.zip` to SD card
+ - Extract `LessUI.zip` to SD card
- Delete ZIP and old update directory
- Run `.system/zero28/bin/install.sh` to complete setup
-4. Launch MinUI via `.system/zero28/paks/MinUI.pak/launch.sh`
+4. Launch LessUI via `.system/zero28/paks/LessUI.pak/launch.sh`
5. If launcher exits, power off device (prevents stock firmware from accessing card)
### Update Process
-To update MinUI on device:
-1. Place `MinUI.zip` in SD card root
+To update LessUI on device:
+1. Place `LessUI.zip` in SD card root
2. Reboot device
3. Boot script auto-detects ZIP and performs update
4. ZIP is deleted after successful extraction
@@ -289,7 +289,7 @@ DinguxCommander-based file manager (SDL2 fork) with:
- File operations (copy, cut, paste, delete, rename)
- Directory navigation
- Image preview support
-- Integrated with MinUI launcher
+- Integrated with LessUI launcher
### Clock.pak
System clock/time display tool
@@ -304,10 +304,10 @@ Input configuration utility
2. **Inverted Volume**: Volume scale is inverted (63 = mute, 0 = max) unlike most platforms
3. **Joystick-Only**: No SDL keyboard support - all input via joystick API
4. **HAT D-Pad**: D-pad uses HAT events instead of discrete button events
-6. **Power-Off on Exit**: Boot script powers off if MinUI exits (prevents stock firmware access)
+6. **Power-Off on Exit**: Boot script powers off if LessUI exits (prevents stock firmware access)
### Development Notes
-1. **SDL2 Platform**: Uses SDL2 (not SDL 1.2 like many MinUI platforms)
+1. **SDL2 Platform**: Uses SDL2 (not SDL 1.2 like many LessUI platforms)
2. **Hardware Rendering**: Leverages SDL2 hardware-accelerated renderer with texture targets
3. **Effect System**: Sophisticated overlay system with multiple effect types and scales
4. **Dual Input Devices**: Monitors two separate `/dev/input/event*` devices for complete input
@@ -352,15 +352,15 @@ When testing changes:
## Maintainer Notes
-This platform represents several **unique characteristics** in MinUI:
+This platform represents several **unique characteristics** in LessUI:
- **SDL2 adoption**: One of few platforms using SDL2 instead of SDL 1.2
- **Hardware rendering**: Leverages GPU-accelerated rendering with texture targets
-- **Effects system**: Most sophisticated visual effects implementation in MinUI
+- **Effects system**: Most sophisticated visual effects implementation in LessUI
- **Joystick-centric**: Pure joystick input (no keyboard fallback)
- **AXP2202 PMIC**: Different battery monitoring IC than most platforms
- **Display rotation**: Automatic portrait mode detection and rotation
-This platform demonstrates MinUI's flexibility in adapting to:
+This platform demonstrates LessUI's flexibility in adapting to:
- Modern SDL2 graphics stack
- Joystick-based input systems
- Advanced rendering features (effects, crisp mode, rotation)
diff --git a/workspace/zero28/install/boot.sh b/workspace/zero28/install/boot.sh
index 1388a1b1..28046c42 100755
--- a/workspace/zero28/install/boot.sh
+++ b/workspace/zero28/install/boot.sh
@@ -3,7 +3,7 @@
PLATFORM="zero28"
SDCARD_PATH="/mnt/SDCARD"
-UPDATE_PATH="$SDCARD_PATH/MinUI.zip"
+UPDATE_PATH="$SDCARD_PATH/LessUI.zip"
SYSTEM_PATH="$SDCARD_PATH/.system"
CPU_PATH=/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor