Files
useless-umd-player/README.md
T
quoije ba21426b77 Stop previous stream when a new one starts; ease animations
Starting a movie now closes the current decode engine and bumps a playback
generation so the stale video/audio threads stop themselves (they were
overlapping the movie's canvas and audio). PlaybackEngine.close is idempotent.
Animation records now honor their accelMode (linear/accel/decel easing).
2026-09-16 12:20:47 -04:00

49 lines
1.2 KiB
Markdown

# useless-umd-player
![grrr](assets/grrr.png)
![AI Generated](https://raw.githubusercontent.com/dotnetdave/ai-usage-badges/refs/heads/main/badges/png/1x/ai-generated.png)
a standalone player for PSP UMD Video ISO images: open a disc, render its real
menu, and play the movie (H.264 video + ATRAC3+ audio) with mouse and
keyboard/media-key controls.
> **Status:** playable. Opens a UMD Video ISO, plays the real RCO menu (rendered
> from the disc), and plays the movie (H.264 video + ATRAC3+ audio).
## Build
Requires JDK 21 (Gradle auto-provisions it).
```sh
./gradlew build
```
## Run the player
```sh
./gradlew ui:run --args="/path/to/disc.iso"
```
Controls:
- **↑ ↓ ← →** — navigate the menu
- **Enter** — select
- **M** — back to the menu
- **S** — skip the current intro/track
- **Space / P** — pause
- **F11** — fullscreen
## CLI
The `cli` module has inspection/debug commands:
```sh
./gradlew cli:run --args="dump /path/to/disc.iso" # metadata + playlist
./gradlew cli:run --args="rco <iso> UMD_VIDEO/RESOURCE/EN100000.RCO" # menu data
./gradlew cli:run --args="play <iso> <streamName>" # headless A/V sync test
```
## License
GPL-3.0-or-later — see [LICENSE](LICENSE).