Files
ARMSX1/CHANGELOG
moonpower b6cdcd06d7 Stop listing the app's own folders as games
We ship resources/patches.zip; .zip counts as bootable and, on an install with no
custom data root, the folder we copy assets into is also a scan root — so every
library showed a phantom game called "patches", even with an empty game folder.
Block the app-managed directories by name, as bios/covers/cache already were.
2026-08-05 22:34:35 +02:00

166 lines
8.0 KiB
Plaintext

ARMSX1 — Changelog
==================
0.1.3
-----
PSP EBOOT (.PBP) games now boot
* A .pbp listed in the library but refused to start. It was rejected before the disc
was ever opened, and two bugs in the reader would have stopped it anyway: sectors
were reported the wrong way round, and the disc was read 150 sectors off. Single
and multi-disc EBOOTs now boot, with their cover art, serial and per-game settings.
* A .pbp inside a .zip is picked as the game to launch.
Crashes
* Fixed the app dying silently when a game was started after another game failed to
boot. A failed boot left the emulator in a state that corrupted the next launch.
* Fixed a game closed and reopened quickly starting up and then immediately quitting
to the library, and a crash in the same window when the previous game was still
shutting down.
Library
* A game called "patches" no longer appears out of nowhere. ARMSX1 ships a patch
archive with its own files, and the library was listing it as a game — so even an
empty game folder showed one entry. The app's own folders are skipped now.
In-game
* Restart in the pause menu closes the menu again, so the reboot is visible instead of
looking like nothing happened.
* Picking a game while another one is still closing now starts the game you picked
instead of restarting the previous one.
Diagnostics
* New: Settings > App > "Generate log file" writes one report — emulator, interpreter
and renderer logs, crashes, and Android's own crash records with function names —
to a file you choose, refreshed every time the app starts. Send that file with a bug
report and the problem can be diagnosed without the device.
0.1.2
-----
Game folders now really use Android's own folder picker
* Folders added through the system picker are scanned directly through Android's
DocumentsProvider, so the library fills without "All files access" — including on
Android 14+ devices (Oppo/Samsung) where even granting it left the library empty.
* Games in those folders launch through a per-session file descriptor instead of a
guessed /storage path, so folders on SD cards and USB drives work under scoped
storage.
* Games in those folders are identified off the disc itself at scan time, so they show
their real cover art and keep per-game settings, play-time tracking and
RetroAchievements identity — .chd, .pbp, cue+bin and multi-disc playlists included.
* "Download cover art" no longer silently skips games living in picker-added folders,
and fetches exactly the art the library grid shows.
* A game that failed to identify once is retried on a later start instead of keeping a
blank tile forever.
* "All files access" is now only about the optional custom data folder; the Play build
does not request it at all.
Rendering
* Fixed rendering breaking when the emulator surface is recreated (rotation, leaving
and re-entering a game): surface callbacks carry an ownership token, so a stale
surface can no longer be presented into.
* The in-game renderer indicator no longer sticks on "Unknown" when it is read before
the renderer finishes starting.
* GPU identification also reads the board properties Android itself reports, which
matters on MediaTek devices whose GL strings omit the model.
Audio
* The default audio buffer is one PAL frame (20 ms) instead of 13 ms, matching the
core's cadence; a hand-edited value that is not on the settings list now falls back
to the native default instead of 5 ms.
0.1.1
-----
Cover art for .chd games
* CHD games now show their real cover art. ARMSX1 could not read the disc's serial
number out of a compressed .chd, and the serial is what cover art is looked up by,
so most CHD libraries showed blank placeholder tiles. The serial is now read using
the same disc reader that plays the game, so a .chd identifies itself exactly like
a .bin or .cue does.
* The same fix gives CHD games everything else the serial unlocks: RetroAchievements
identification, play-time tracking, and per-game settings.
* Use Settings > App > "Download cover art" to fetch art for your whole library at
once, now that CHDs can be matched.
Note for existing CHD users
* A CHD that had no serial in its filename used to store its per-game settings under
that filename. Now that the disc reports its real serial, those settings are stored
under the serial instead, so per-game settings, cheats, custom names, per-game BIOS
and the per-game memory card choice go back to their global values once for those
games. Save states and memory card files are not affected.
0.1.0 — first public release
----------------------------
ARMSX1 is a PlayStation 1 emulator for Android, built on allkern's psxe core with a
completely new Android frontend.
Interface
* Brand-new interface built in Jetpack Compose — fast, modern, and made for phones
and handhelds rather than ported from a desktop menu.
* Library with grid and shelf views, automatic cover art, and folder support.
* Themes, accent colours and custom backgrounds.
* Guided first-run setup for BIOS and game folders.
* On-screen touch layout editor — move, resize and restyle every control.
* Memory card manager, and an in-app keyboard for text entry.
* Live language switching — change language without restarting.
* Detailed on-screen display: FPS, CPU/GPU load, frame timing, DMA, SPU and more.
Graphics
* Hardware rasteriser with internal resolution upscaling up to 8x.
* OpenGL ES and Vulkan presentation paths. GLES is the default.
* PGXP (experimental) to reduce the PlayStation's characteristic polygon wobble.
* Aspect ratio options including a fully custom mode, plus a widescreen hack.
* Texture replacement — load your own upscaled textures.
* Fixed visible seams along polygon edges when upscaling.
Custom GPU drivers
* Load custom Vulkan drivers (Turnip and friends) through adrenotools, for better
performance and compatibility on supported devices.
Shaders
* librashader support — run RetroArch shader presets, including CRT filters.
* Full shader parameter editing with save and load of your own presets.
RetroAchievements
* Sign in and earn achievements, with your profile, stats and unlock notifications
shown in game.
Extras
* Save states with thumbnails, plus a warning when a save state and memory card
have drifted out of sync.
* Cheats (GameShark .cht), per game.
* Full physical controller support with remappable buttons and analogue sticks.
* Skip BIOS for faster boots.
* Fast-forward with its own audio and speed settings.
* Discord Rich Presence.
Emulation accuracy
Many games were fixed by getting the hardware details right:
* Audio now runs on the correct clock — fixes missing or broken sound in Metal Gear
Solid, including the alert and sentry effects.
* Corrected the GPU's drawing-offset readback — fixes clipped and cut-off graphics
in Xenogears battles.
* Five CD-ROM fixes covering seeking, streaming audio and read timing.
* Fixed controller and memory card input dropping out on shared-bus reads
(Spyro and others).
* Corrected unaligned stores, GPU status and GPU register readbacks, video mode
reporting, DMA interrupt handling, and SPU register widths.
* Whole-program optimisation (PGO) for better performance across the board.
Known issues
* The widescreen hack changes the 3D projection, so some games (notably Crash
Bandicoot) stop drawing scenery at the edges of the screen. Turn it off if you
see missing geometry at the left and right edges. It is off by default.
Licence
Moon-owned ARMSX1 material is proprietary. Upstream, contributor-owned and
third-party material retains its existing licenses. See LICENSE and NOTICE.
Credits
allkern (Lisandro Alarcon) Original PlayStation 1 emulator core, psxe.
https://github.com/allkern/psxe
Moonpower Cached interpreter and cross-platform compatibility.
jpolo1224 Everything else.