Buenas.
Últimamente ando petado de tiempo por todos los lados y parte de la culpa la tiene la preparación de la nueva versión de uLoader.
La novedad ahora es el soporte de FAT para la SD y para la primera partición FAT que encuentre en el HDD (intenta explorar ambas y crear una lista conjunta de hasta 256 juegos, descartando los repetidos en favor del disco USB que es bastante más rápida la lectura).
Mi soporte es diferente a los visto hasta ahora: se que oggzee está partiendo los ficheros para poder saltar el límite de 2GB, pero yo me niego a usar éste sistema y más teniendo en cuenta que utilizar FAT PENALIZA la lectura, incluso si el fichero aparece como no fragmentado. Es decir, entre WBFS y FAT32, no hay color: gana por goleada WBFS.
¿entonces por qué he metido soporte FAT? Pues por que me ha salido de los cojones
Eso y un par de detalles:
-FAT32 tiene un límite de 4GB, pero LIBFAT (y la newlib que usamos, por tanto) teóricamente no está planteada para leer 4GB... porque carece de fseek64() y además, se utiliza aritmética inadecuada. Por tanto, "otros" solo pueden leer 2GB, pero es relativamente fácil habilitar los 4GB y eso he hecho
(además lo he hecho tirando de fseek y desplazando al byte
(que es lo que ya para empezar, limita a 2GB, pero solo si eres bobo y no asumes que un s32 es lo mismo que u32 si ignoras el signo y éste no se necesita para un SEEK_SET, por lo que haciendo algunos ajustes internos...
)
-El formato .ciso. Técnicamente, si tratas de pasar una ISO de 4GB exactos a una partición FAT32, Windows te manda a paseo, pero claro, CISO es un formato compacto que siempre se ahorra unos sectores (por ejemplo Red Steel mide 3.82GB y así si cabe).
Por lo tanto .ciso hace interesante el poner el soporte FAT puesto que la mayoría de los juegos miden menos de 4GB y ahorramos espacio.
¿Y que pasa con los juegos como Metroid Prime Trilogy que miden mas de 4GB? Pues no pasa nada: para eso tenemos WBFS y el que quiera tirar de FAT32, pues ya sabe las limitaciones (juegos de algo menos de 4GB y mayor lentitud). Yo lo que no voy a hacer, es poner un soporte chapuza solo porque hay güevones que no quieren enterarse de que WBFS es el sistema adecuado, pues cada cluster mide como poco 2MB (en mi HDD de 4MB y supongo que con particiones mayores, mas grandes), con todo diseñado para leer con el mínimo esfuerzo posible.
Por cierto, he estado haciendo arreglos al módulo FAT que había en el git de Waninkoko para optimizar la lectura, lo de los 4GB y algún que otro bug patatero de LIBFAT (hay uno gordo en la comprobación de límite en escritura, que utiliza una variable local sin inicializar, por ejemplo). Con eso, desde mi HDD, tengo una lectura similar a un DVD en Wii, aunque desde SD (HC) tiene una velocidad paupérrima , pero suficiente para pequeños juegos (en realidad la idea de meter FAT partió de ese pensamiento de poder meter algunos juegos pequeños en la SD y ya que estás, metes soporte para el HDD porque es casi gratis).
Bueno, ¿y como va eso de FAT desde uLoader?.
Pues básicamente, se soporta casi todo: se soporta la configuración y las carátulas desde el .ciso, con descarga de internet y tal. Se puede renombrar, solo que el renombre afecta al nombre interno de la "ISO" (no se hasta que punto no es recomendable... pero bueno, el soporte está). La configuración se guarda en la SD (compartiendo con el modo DVD) o en el HDD, se soporta el DOL alternativo, la importación BCA, etc.
Instalar juegos y borrarlos no se soportan. Se pueden utilizar juegos FAT, WBFS (hasta 4 particiones) y modo DVD Wii. El modo DVD USB excluye FAT, puesto que solo sería posible en la SD y hay peculiaridades que lo desaconsejan.
Si el dispositivo USB no está enchufado, pulsando '2' se sale al modo FAT (desde SD, si hay juegos ) y DVD. El nuevo modo automático (uno de los nuevos 'hacks') lanzaría este modo a los 5 segundos de no detectar dispositivo USB.
Los juegos de la SD se obtienen antes de reconocer el dispositivo USB y dependiendo de lo que pase luego, se obtienen de la partición FAT del HDD desde el directorio :/ciso/ (solo obtiene ficheros .ciso, pero me preocupa el tema de que tarde mucho en obtener los ficheros, si hay muchos, porque debe abrirlos y leer algunos datos: tal vez deba poner algo para acelerar las cargas, si hay muchos ficheros en el directorio)
Una cosa que me gusta del nuevo soporte, es que se conecta por mediación de un módulo nuevo que si quieres lo pones o si no lo quitas (deja la memoria disponible en el Starlet para los arrastres..., asi que conviene que sea de quita y pon). El dip_plugin se ha adaptado para que haga de mediador, pasándole el nombre de fichero en plan mochila y ocupándose del dispositivo y de tratar el formato ciso convenientemente. Ah! y antes de que alguien lo pregunte... ¿pondré soporte NTFS? Pues... no (y esto si que lo tengo claro y más cuando está demostrado que lo mejor es WBFS). FAT está bien para ciertas cosas (comodidad con pendrives pequeños, aunque haya un pequeño sacrificio de velocidad y tal. O con una SD para ciertos juegos muy pequeños (Grand Slam tarda... 4 Minutos! en cargar desde mi SDHC, mientras que desde FAT HDD tarda unos 45 segundos, para que os hagáis una idea: es muy preferible una pendrive a una SD)
Y bueno, eso es mas o menos todo (seguro que me dejo algo, pero coño, estoy cansado por hoy y menudo pedazo post
)
Saludos y siento no responder a nadie (no tengo tiempo para todo...)