Buenas a todos,
Quería compartir con la comunidad de Scene PS2 un proyecto en el que he estado trabajando: Silly PS2 Manager.
La idea nació tras lidiar durante años con herramientas clásicas que, aunque funcionales, arrastran interfaces desactualizadas, problemas de permisos o limitaciones de rendimiento al gestionar bibliotecas grandes para Open PS2 Loader (OPL). Para resolver esto, opté por una arquitectura moderna combinando un frontend ágil en React con un backend a bajo nivel en Rust (usando Tauri v2) para garantizar transferencias rápidas, bajo consumo de memoria y ejecución multiplataforma (Linux y Windows).
Les resumo las principales características técnicas y funciones que incluye la suite:
1. Gestión Inteligente de BibliotecaInspección profunda de ISOs: No depende de que el nombre del archivo esté bien escrito. Lee directamente los primeros 4 MB de la cabecera del disco para extraer el Game ID real (SLES, SLUS, SCES, SLPM, etc.).
Limpieza de nombres: Filtra mediante regex los seriales que suelen venir pegados a los títulos para mantener la interfaz limpia y legible.
Soporte híbrido (ISOs y juegos divididos): Escanea carpetas habituales (DVD/, CD/) y lee el índice maestro ul.cfg, mostrando en una única lista unificada tanto imágenes estándar como juegos divididos ya existentes.
Estadísticas en tiempo real: Muestra conteo total y peso discriminado por tipo de formato (DVD, CD y sus variantes divididas).
2. Automatización y MetadatosNormalización OPL: Renombra archivos en un clic bajo la nomenclatura estricta ID.Titulo.iso, sanitizando caracteres ilegales del sistema de archivos.
Descarga y adaptación de carátulas:
Obtiene arte 2D y 3D desde repositorios comunitarios verificados.
Optimización para hardware real: Redimensiona las imágenes mediante la biblioteca image (filtro Lanczos3) a 140×200 píxeles, guardando simultáneamente en .png y .jpg. Esto evita desbordar la ajustada VRAM (4 MB) del Graphics Synthesizer de la consola.
Perfiles CFG y procesamiento en lote: Genera archivos .cfg individuales (modos DMA y compatibilidad) y permite ejecutar renombrado, arte y configuraciones para toda la lista de forma desatendida.
3. Preparador de Unidades USB (USB Setup)Detección segura de medios: Utiliza sysinfo para filtrar estrictamente dispositivos extraíbles por USB, protegiendo las particiones del sistema operativo.
Formateo nativo:
FAT32: Formatea con clústeres de 32 KB (64 sectores), la configuración recomendada para uLaunchELF y OPL clásico.
exFAT: Listo para versiones modernas de OPL con soporte BDM.
Delegación nativa mediante udisksctl (con fallback a pkexec) en Linux para evitar problemas de permisos de root, y powershell (Format-Volume) en Windows.
Estructura automática: Genera al vuelo las carpetas necesarias: DVD/, CD/, ART/, CFG/, CHT/, VMC/ y THM/.
4. Sincronización y Transferencia (Smart Sync)Sincronización diferencial: Compara origen y destino por tamaño de archivo; si el juego ya existe idéntico, lo salta para ahorrar tiempo.
Transferencia sin bloqueos ni falsos 100%:
Hilo asíncrono en Rust con lectura en bloques de 4 MB.
Vaciado forzado al medio físico (sync_data cada 32 MB y sync_all al finalizar). Así se evita que la memoria caché del SO marque una copia completada cuando la memoria flash aún está escribiendo.
5. Interfaz y Experiencia de UsuarioPersistencia: Guarda la última ruta activa; al abrir la app de nuevo, carga la biblioteca previa automáticamente y maneja la desconexión inesperada de unidades sin romperse.
Soporte bilingüe: Selector de idioma en caliente (Español / Inglés).
Diseño cuidado: Interfaz limpia en tema claro, paneles colapsables y notificaciones no invasivas.
📌 Próximos pasos (Roadmap)Para ser totalmente transparente con el estado actual del desarrollo y no generar falsas expectativas, las prioridades inmediatas en las que estoy trabajando son:
División de ISOs >4 GB (Estándar USBUtil): Implementar de forma nativa la división automática de juegos grandes (DVD-9) en partes ul.CRC32... y la escritura correcta en el índice ul.cfg al copiar hacia unidades FAT32.
Soporte para discos duros (HDD): Actualmente la detección y configuración está acotada a memorias USB/extraíbles. El siguiente paso es ampliar el reconocimiento para gestionar unidades HDD internas/externas de forma segura.
Enlaces y capturas:
Repositorio en GitHubGalería de Capturas de PantallaCualquier feedback, reporte de bugs o sugerencia para pulir la herramienta de cara a la comunidad es más que bienvenido. Con un par de mejoras pronto estará la release disponible.
¡Un saludo!