Maito escribió:Vamos,
Por lo que dices y leo en el spoiler parece que fuerzas psx_inserted al valor que debe tener para discos PSX siempre y cuando se detecte disco. Y ese disco, al leer la region correspondiente con la función get_psx_region_cd(), se corresponda con lo que debería ser para discos PSX.
Si no me equivocado en mi entendimiento, asignar ese flag parecería algo lógico, aunque podría pensarse que pudiera hacerse internamente desde otra función que se estuviera utilizando y ¿haberse pasado por alto?
De todas formas, ahora si que sí, eres un crack y ahora funciona

tanto el original como el backup parcheado a la primera sin necesidad de cambios de disco y reinicios, enhorabuena.
Comento otro problema que he encontrado, a la hora de pasar este nuevo pkg a la ps3 por FTP, utilizando el ftpserver del IrisManager: Parece ser que, cuando borro elementos desde el FileZilla, aparentemente me los borra, pero cuando voy a meter un fichero que se llama igual que los que había antes, me dice que ya existe. Yo le doy a sobreescribir, me avisa el Filezilla de que se escribe bien, pero resulta que me muestra el contenido de la carpeta con ese nuevo fichero con un tamaño de 0 Bytes y que además, ya no puedo borrar.
Igualmente ocurre si no quiero borrar pero si sobreescribir directamente el fichero.
Es un error puñetero que me obliga a desconectar el disco externo de la play y enchufarlo al PC.
Es curioso porque, después del error, cuando desde el pc accedo al disco externo (no por ftp, sino directamente por usb) aparentemente no se ven los ficheros desde el explorador, pero si intento meter los pkg, me dice que no puede porque intento reemplazar un fichero que es "invisible" xD.
Un saludo y sigo tus avances.
En realidad lo que ocurre es lo siguiente: en SDK e incluso en versiones no oficiales de PSL1GHT, existe una función que lo que hace es registrar una callback (función que es invocada) cuando se inserta un disco. Esa función ya te informa del tipo de disco.
Nosotros no hacemos uso de ella, ya que no me lo he planteado para evitar discrepancias en las librerías y por lo tanto, tenemos que utilizar funciones que intenten acceder cada cierto tiempo a los dispositivos para detectar si se conectan o no.
Cada vez que insertas un disco, este, en teoría, es accesible por /dev_bdvd, pero no siempre es el caso. Si lo fuera, mirando el contenido podría tener una pista sobre la región del disco.
Los tres casos que me he encontrado son:
1) Disco de PSX que contiene datos del juego y que se monta permitiendo el acceso a los ficheros.
2) Disco de PSX que contiene pista de audio y que no se monta como disco de datos y no permite el acceso a los ficheros. Este fue el caso de Tekken 2 y lo que me obligó a hacer una lectura alternativa.
3) El caso de Vagrant: disco con solo datos, que se monta en /dev_bdvd, pero que se muestra vacío de contenido.
El caso 1) permite utilizar la detección normal de Iris: buscas la existencia de /dev_bdvd y luego, para diferenciar el contenido, buscas si existen los ficheros PSX.EXE o SYSTEM.CNF.
Siendo disco de PSX, la información Regional se puede obtener del sector 4. Eso por si mismo, discriminaría discos de PS2, pero podrían darse excepciones y por si las moscas, leo el sector 16 para poder recuperar discos que tengan esa información dañada o diferente (si has metido un CD de PS2 y te lo identifica por este motivo como de PSX, no es mi problema, ya que no lanzamos juegos de PS2)
La lectura de sectores se puede hacer en cualquiera de los tres casos, eso no es problema. El problema está en que /dev_bdvd pudiera ser montado en falso o no ser montado, por que interprete que el disco es un CD Audio, provocando con ello la necesidad de buscar en sectores conocidos la información que necesitamos.
Tener la información regional no es de importancia capital: en realidad eso tiene que ver para saber si los juegos funcionan a 50/60 Hz en origen y asi forzar el modo de forma automática, si lo hemos seleccionado de esa forma (576/480) en Iris. Aun así podrías meter juegos que estuvieran parcheados para trabajar a 50Hz que se detectan como de zona NTSC o viceversa y juegos que la dan a elegir y no servir de nada esa autodetección por que se convierta en un obstáculo.
-------
Sobre el tema FTP, filezilla siempre ha dado problemas con los FTP de PS3: yo uso flash FXP sin problemas. Como mucho, pudiera ocurrir que empleara alguna operación paralela que arrebatara los permisos de acceso de la syscall 8 dado que el FTP trabaja en segundo plano y de forma independiente o lo típico de que debas refrescar algún dato que ha cambiado de otra forma desde la sesión anterior, por que esté en caché. Cosas normales, vamos.