Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,7 @@ lng/lang_*.lng
src/lang_internal.c
include/lang_autogen.h
tmp/

# Vendored pre-USBD-rewrite IRX for #1751 (see modules/usb-vendor/README.md)
!modules/usb-vendor/
!modules/usb-vendor/**
8 changes: 5 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,8 @@ modules/isofs/isofs.irx: modules/isofs
$(EE_ASM_DIR)isofs.c: modules/isofs/isofs.irx | $(EE_ASM_DIR)
$(BIN2C) $< $@ $(*F)_irx

$(EE_ASM_DIR)usbd.c: $(PS2SDK)/iop/irx/usbd_mini.irx | $(EE_ASM_DIR)
# usbd: pin pre-USBD-rewrite IRX (see modules/usb-vendor/README.md / OPL#1751)
$(EE_ASM_DIR)usbd.c: modules/usb-vendor/usbd_mini.irx | $(EE_ASM_DIR)
$(BIN2C) $< $@ $(*F)_irx

$(EE_ASM_DIR)libsd.c: $(PS2SDK)/iop/irx/libsd.irx | $(EE_ASM_DIR)
Expand Down Expand Up @@ -551,7 +552,7 @@ $(EE_ASM_DIR)iLinkman.c: $(PS2SDK)/iop/irx/iLinkman.irx | $(EE_ASM_DIR)

ifeq ($(DEBUG),1)
# block device drivers with printf's
$(EE_ASM_DIR)usbmass_bd.c: $(PS2SDK)/iop/irx/usbmass_bd.irx | $(EE_ASM_DIR)
$(EE_ASM_DIR)usbmass_bd.c: modules/usb-vendor/usbmass_bd.irx | $(EE_ASM_DIR)
$(BIN2C) $< $@ $(*F)_irx

$(EE_ASM_DIR)IEEE1394_bd.c: $(PS2SDK)/iop/irx/IEEE1394_bd.irx | $(EE_ASM_DIR)
Expand All @@ -561,7 +562,8 @@ $(EE_ASM_DIR)mx4sio_bd.c: $(PS2SDK)/iop/irx/mx4sio_bd.irx | $(EE_ASM_DIR)
$(BIN2C) $< $@ $(*F)_irx
else
# block device drivers without printf's
$(EE_ASM_DIR)usbmass_bd.c: $(PS2SDK)/iop/irx/usbmass_bd_mini.irx | $(EE_ASM_DIR)
# usbmass: pin pre-USBD-rewrite IRX (see modules/usb-vendor/README.md / OPL#1751)
$(EE_ASM_DIR)usbmass_bd.c: modules/usb-vendor/usbmass_bd_mini.irx | $(EE_ASM_DIR)
$(BIN2C) $< $@ $(*F)_irx

$(EE_ASM_DIR)IEEE1394_bd.c: $(PS2SDK)/iop/irx/IEEE1394_bd_mini.irx | $(EE_ASM_DIR)
Expand Down
20 changes: 20 additions & 0 deletions modules/usb-vendor/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Vendored USB IRX (pre-USBD-rewrite)

These IRX modules are built from ps2sdk commit `2dc6b32f` (last tree
**before** `b1f7ff96` “USBD feature update”, 2024-09-04).

## Why

Crash Bandicoot: Wrath of Cortex (USB) is broken with the post-rewrite
USBD baked into modern OPL builds: multi-minute loads then black screen
on play. Last good OPL Beta-2125; first bad Beta-2127.

Hardware confirmation: Beta-2245 + these IRX works (~10s load, playable);
stock Beta-2245 with current SDK USBD does not.

See: https://github.com/ps2homebrew/Open-PS2-Loader/issues/1751

## Rebuild

From a ps2dev environment, checkout ps2sdk at `2dc6b32f` and build
`iop/usb/usbd` (MINI_DRIVER for usbd_mini) and `iop/usb/usbmass_bd`.
Binary file added modules/usb-vendor/usbd.irx
Binary file not shown.
Binary file added modules/usb-vendor/usbd_mini.irx
Binary file not shown.
Binary file added modules/usb-vendor/usbmass_bd.irx
Binary file not shown.
Binary file added modules/usb-vendor/usbmass_bd_mini.irx
Binary file not shown.