Notes/Credits
- Thanks to SAMUELPV for testing and approving the version, also for testing the MMCE and reporting the bugs, and for testing all 4 games! Thank you also for reporting the black screen issues and other problems; they will all be fixed soon!
- If you have any problems or want any improvements, please open an Issue, fill it out with the PS2 model and a detailed description of the problem if possible, and also include a screenshot.
Highlights
- Rebuilt the storage/SIO2 initialization path for broader Deckard slim
compatibility (SCPH-7700xand later) and reliable IRX residency checks. - Fixed MMCE integration for MemCard PRO 2 and SD2PSX, including real
device probing before exposingmmce0:ormmce1:. - Replaced the menu BGM replay path with libxmp-lite, improving tracker
effects, instruments, pitch, timing, and loops. - Restored ISO BGM without blocking boot or freezing the device-selection
screen. - Stabilized direct packed and unpacked ELF boot, including launchers which do
not provide a usableargv[0]. - Fixed Captain Commando (USA) and the tested Mighty Morphin Power
Rangers titles through general SNES hardware-emulation corrections rather
than per-ROM hacks. - Removed the verbose diagnostic instrumentation used by the test builds.
Boot, IOP, and Deckard models
- Every boot device now follows one IOP reset. The old memory-card-only second
reset, which discarded loaded modules while leaving stale EE-side state, was
removed. - Boot no longer depends on
rom0:EELOADCNF, reducing BIOS/model-specific
behavior. SifLoadFileInit, cache state, and embedded-module runtime state are reset in
a consistent order after the IOP reboot.- The ELF path is copied into owned, always-valid buffers.
host:is used as a
safe fallback when a launcher supplies no executable path. - CD/DVD starts with
SCECdINoD, avoiding a mechanical disc-ready wait during
boot, and the obsolete CDVD RPC path is no longer used. - The changes target direct ELF, ISO, OPL, and wLaunchELF boot paths. They
remove known BIOS assumptions, but broad real-hardware testing is still
required before claiming every physical revision is verified.
MMCE, MX4SIO, and storage
sio2man,mcman,mcserv,padman,mtapman,mmceman, and
mx4sio_bdare pinned as one coherent in-tree IRX set.- The embedded IRX loader now checks the module
_start()result in addition
to the LOADFILE module ID.MODULE_NO_RESIDENT_ENDis correctly treated as
failure. - MMCE support PINGs both physical ports and lists only slots which actually
answer. Save-state destination selection uses the same result. - Menu BGM now discovers
.modand.xmtracks onmmce0:andmmce1:.
Only PING-confirmed slots are accessed, including when MMCE is enabled from
Video Config after the initial music index has already been built. - The internal HDD is also a BGM source. With HDD Support enabled, the
player enumerates main APA/PFS partitions and uses the first one containing
SNESticle/bgmorbgm. - MMCE and MX4SIO are mutually exclusive SIO2 backends. If the opposite driver
is already resident, the UI requests a restart and applies the change after
the next clean IOP boot. - USB keeps the modern multi-device BDM stack with FAT16/FAT32/exFAT and
MBR/GPT support. - Internal-HDD modules remain disabled by default and lazy-loaded on the first
browser or BGM access after the user enables HDD Support. - Essential boot/module import results remain available for failures which
occur before the UI can appear.
Menu music and Issue #16
- Replaced the partial
jar_mod/jar_xmplayers with the PS2 port of
libxmp-lite in core-player mode. - Tracker effects, timing, instruments, pattern changes, and loop points for
.modand.xmfiles are reproduced much more accurately. - Source audio is continuously resampled to the SPU2's 48 kHz output without
accumulating per-frame rounding drift. - The default synthesis rate is now 24 kHz, with 16–48 kHz still available
in Video Config. - Per-frame synthesis is bounded to avoid CPU spikes on heavy modules while
preserving accumulated musical timing. - Playlist advancement follows libxmp's completed-loop state, prevents an
unwanted fragment from the restarted loop, and inserts a clean short gap. - Invalid tracks are removed one per frame so several bad files cannot stall
the menu for a long time. - Local folders are indexed immediately. CD/DVD uses a grace period and
non-blocking readiness polls, andcdfs:/BGMis opened only after stable
ready responses. - BGM subfolders are scanned up to four levels and duplicate paths are ignored.
- A
bgmfolder beside a direct ELF is detected automatically; launcher
cdrom0:paths are normalized tocdfs:. - MMCE searches
mmce0:/SNESticle/bgm,mmce0:/bgm,
mmce1:/SNESticle/bgm, andmmce1:/bgm, including subfolders up to four
levels, with one probe/scan per activation rather than per-frame polling. - HDD playlist entries retain their complete logical
hdd0:/PARTITION/...path and remount the correct PFS partition before each
track load, so browsing or loading a ROM from another partition does not
invalidate already indexed music. make iso ... bgm=/trackspreserves subfolders and fails clearly when the
source contains no.modor.xmfiles.
SNES core compatibility
- A hard 65C816 reset now initializes the stack pointer to
$01FF. Soft
reset retains the low byte while restoring the emulation-mode stack page. - Reserved instruction WDM (
$42) consumes its signature byte and resumes
at the following opcode instead of falling through into STP handling. - ROM mirroring now follows cartridge address-line behavior instead of simple
modulo wrapping, fixing non-power-of-two images such as 12-Mbit/1.5-MiB
LoROM cartridges. - ROM mapping is installed per 8-KiB page, including LoROM, HiROM, and ExLoROM
mirror paths. - Added detection and normalization of Type-1 interleaved ROM images.
- The fixed 21-byte internal ROM title is copied into a sanitized,
NUL-terminated buffer, preventing UI/log reads into adjacent header fields. - CPU/APU communication ports
APUIO0-3($2140-$2143) now mirror correctly
through$217Ffor reads, writes, and queued SPC synchronization.
Confirmed games after the fixes
| Game | Previous symptom | Result |
|---|---|---|
| Captain Commando (USA) | ROM information flashed briefly, followed by a permanent black screen | Boots and renders correctly |
| Mighty Morphin Power Rangers: The Movie | Froze after the Bandai logo | Fixed |
| Mighty Morphin Power Rangers | Froze during startup | Fixed |
| Mighty Morphin Power Rangers: The Fighting Edition | Failed to progress correctly through startup | Fixed |
These are hardware-behavior fixes and may benefit other titles using the same
access patterns; no ROM-name compatibility exceptions were added.
Final release cleanup
- Disabled temporary
SNDBG_LOGtiming/PPU/DMA/S-DD1 instrumentation. - Removed the CPU/APU instruction traces used to locate the Power Rangers wait
loop. - Removed active SuperFX GO/STOP/poll traces, diagnostic pixel counters, ROM
chip-detection dumps, and temporary SRAM-load messages. - Removed verbose BGM scanning, file-browser, and cover-index logging.
PROFILE,DSP4_CAPTURE, and the debug boot screen remain off by default.
Short operational boot/device-import reports are intentionally retained for
failures which happen before the UI exists.
Known limitations
- The storage changes target Deckard consoles and multiple launch paths, but
wider tests are still needed across physical consoles, MMCE revisions,
MemCard PRO 2/SD2PSX firmware versions, and OPL configurations. - libxmp playback is substantially more accurate, but unusual or malformed
tracker modules may still differ. - Save states remain limited to base SNES hardware. Games using DSP, SuperFX,
CX4, OBC1, S-DD1, S-RTC, or Super Game Boy hardware remain blocked until
those coprocessor states are fully serialized.



