Windowed mode still stretches the anamorphic frame to fill 480x272 like
the PSP. In fullscreen the video scales to fit the screen while keeping
its 16:9 display ratio, letterboxing as needed.
Window, menu canvas and video surface are now 480x272 (the PSP screen
size). Video is stretched to fill the screen like the PSP player, rather
than aspect-preserving letterboxing.
- Rejoin whitespace-split program args so ISO paths with spaces work
(Gradle --args splits on spaces, which caused a silent load failure
and a blank white window).
- Black scene background and black video canvas fill; scale video to
fit and center it instead of drawing top-left at native size.
- Playback completion now invokes MoviePlayer.onPlayListEnd so the menu
advances past the anti-piracy warning instead of freezing.
- RcoRenderer implements Display: draws the live RCO object tree onto a
Canvas, decodes PNG textures, handles focus and resource changes
(thread-safe via Platform.runLater).
- PageObject now implements root/children semantics and open/close/display
so opening a page adds its objects to the renderer.
- Object getImage() returns the ImageObject so the UI can decode PNGs.
- PlayerApp wires menu + video: loads the RCO, runs the VSMX script,
executes onAutoPlay, plays video via PlaybackEngine with YUV->ARGB
blitting and PTS pacing, and routes arrow/Enter keys to the controller.
- Runs end-to-end on Batman Begins (window, menu load, playback).
- Playlist.streamForPlayListNumber maps the 1-based playListNumber to the
actual stream entry; stream names are not sequential across discs
(The Dark Knight: 00001/00003/00004; The Day After Tomorrow has
duplicate 00002 names).
- CLI menu playback now resolves the correct .MPS file for every region.
- ui module: JavaFX via org.openjfx.javafxplugin + PlayerApp smoke test
(window verified on this display).
- Validated menus + playback on 4 discs: Batman Begins (USA), Jackass
(Australia), The Dark Knight (Europe), The Day After Tomorrow (Japan).