[Hilo Oficial] uLoader v5.1E (Emulacion saves, DLC, Wiiware)

Mokona Modoki escribió:Y yo del 82. ¿ahora postearemos todos nuestra edad? [+risas]
Hermes escribió:Pero vamos, soy un tipo normal y corriente y de hecho, ni siquiera soy programador de oficio.

Indudablemente no eres un Dios, pero aún sin ser programador de oficio tienes un gran talento, no te subestimes. Decía Hubbard en sus ensayos que "Existe algo mucho más escaso, fino y raro que el talento. Es el talento de reconocer a los talentosos", y es lo que ha hecho Nakar001.
Por cierto, espero que ya estés mejor de salud. [oki]


La modestia es parte de su encanto... un crack nunca reconoce que es un crack...no como cristiano ronaldo jaja

que te mejores... me gusto la historia de porque te llamas hermes

mejorate
Hermes, antes conocido como USB... me encantaba leerte antes y sigue gustándome ahora...

¿Recuerdas esos tiempos? Yo era josete (sin el 2k).. ahora esa cuenta ya está inactiva, lástima.

PD: mi primer modchip serio fue el EOLO!!!
josete2k escribió:Hermes, antes conocido como USB... me encantaba leerte antes y sigue gustándome ahora...

¿Recuerdas esos tiempos?

PD: mi primer modchip serio fue el EOLO!!!


Uff, cuanto tiempo de eso y si te das cuenta, tampoco es que haya cambiado mucho el estado del foro en relación a eso, aunque es cierto que algunos viejos amigos españoles/hispanos han tenido relevancia en otras scenes (cosa que antes no pasaba en consola, pues la info la gestionaban grupos guiris). Pero si que es cierto que la gente se limitaba a "mirar" y "endiosar", en vez de trabajar y es lo que siempre que he podido, he tratado de animar a la peña a hacer (todo siempre parece difícil y de hecho, muchas veces es más difícil de lo que parece, porque requiere trabajo, ingenio y suerte, hasta que lo consigues y entonces parece que fue más fácil de lo que en realidad fue XD)

El nick Hermes nació de mis contactos con ciertos colegas de Paradox y su forma tan particular de considerarse la 'elite' [+risas]

EOLO fue un chip al que le tuve cariño y además, molaba programar para pics en ensamblador llevando la cuenta de ciclos por instrucción y cosas así, desarrollando con los pocos medios que disponía. No se si recordarás que me metí a programar pics, cuando nunca lo había hecho. De hecho el 12c508 me parecía una pequeña maravilla y mis primeros códigos lo hacía en uno de éstos y tenía que diseñar el código con mucho cuidado y preparado para poder corregir si necesitaba probar algo (el 12c508 es programable teóricamente una única vez, pero claro, siempre puedes fundir fusibles y provocar un salto a otra parte, si lo haces bien XD). Luego, con el 16f84, fue mas sencillo [+risas]

El problema es que todas estas cosas y las que luego vinieron, no tienen aplicación real como oficio y no vale mas que para trapichear: por ejemplo, cierto chip usaba código que yo desarrollé, para mediante software, hacer una serie de modificaciones interesantes en PS2. Por ejemplo, era capaz de hacer que un disco DVD fuera región free o tuviera la región que tu quisieras, sin necesidad de crackear el reproductor de DVD: SONY ponía mucho esfuerzo en proteger el reproductor (encriptación, chequeos varios de comprobación, etc) y yo me lo saltaba todo recurriendo a un truco realmente muy sencillo: si modificas los datos, no tienes por qué modificar el programa y yo localicé donde se guardaba el byte con la máscara de la región en un DVD vídeo y procedí a modificar el modulo de lectura de DVD de forma similar a como ahora lo hacemos con dip_plugin en la Wii... [+risas]

También me enfrenté a un problema mas complicado: la posibilidad de activar modo VGA en los juegos, donde la principal complicación era que que ciertos registros de vídeo, eran de solo escritura. Eso significaba que era imposible leerlos obviamente, así que. ¿como coño podía yo hacer que cuando un juego programara dichos registros, yo supiera que es lo que estaba modificando en cuestión de resolución, etc y además, programar dichos registros con los valores para VGA?

Teóricamente, era imposible, pero he aquí la necesidad de contar con la máxima información posible y de utilizar el coco en busca de una solución. Y resultó que había un PDF de un procesador que prácticamente, era el EE en una versión comercial y mirando y mirando, encontré un modo de Debug del procesador que permitía capturar un rango de direcciones de memoria y que obviamente, no era utilizado ni por el kernel, ni por los juegos. Así que fue cuestión de trabajar un poco y de pulir la idea para conseguir "leer lo que no era posible leer" y que trabajase de forma casi transparente a la ejecución del juego para convertir el agua en vino [+risas].

Joder, si hasta los monos que desarrollaron el chip la cagaron con dos cosas que yo les avisé cuando había tiempo de sobra para corregirlo y un fallo que era de hardware, lo pude resolver parcialmente mediante software (cosa que parecía imposible también, pero si eres de ideas claras y trabajas en ello, hasta lo imposible se hace posible de alguna forma. Por ejemplo, el primer problema, requirió inyectar un código en el bus, en tiempo real de ejecución que al ejecutarse, copiaba una rutina en RAM que arreglaba el problema. Si, es de las cosas mas raras que he tenido que hacer [+risas] ). Seguramente a josete le suene el tema, pero me reservaré dar más detalles sobre ello y agradecería que el no destapase mucho más.

Ahora bien, ¿de que sirve poder hacer cosas así?. Pues no lo tengo muy claro: a mí desde luego no me sirve mas que para pasar el rato o para hacer el gamba, por que esto no tiene salida profesional real (mas cuando te descuidas un rato y la maquina que conoces ya está obsoleta, pero sobre todo porque lo único que puedes hacer es trapichear con ello y yo prefiero no hacerlo) aunque supongo que a un ingeniero le puede servir como entrenamiento para ser mas despierto y competente en su trabajo, al tocar algo que para empezar, no se estudia.

Por eso me interesa más que vosotros sepáis estas cosas y ayudaros un poco si queréis tener ésta afición, sobre todo porque esto ya no es como programar en un Spectrum y obviamente, cuesta un poco más entrar en el ajo. Pero a mí a estas alturas, me da igual la programación y no veo mi futuro en ello "ni jarto vino" [+risas]

PD: De salud estoy regular: a veces con dos décimas por debajo y otras con 3 por encima y con cierta sensación física de cansancio, pero vamos saliendo del bache ya (he vivido situaciones peores XD). Sobre una posible versión oficial, pues no se si subiré yo algo o no, ni cuando (de momento, tenéis la de josete y la única diferencia con otra que suba yo, es el tema y las librerías base, así que no tengo ninguna prisa)

Saludos
Podrian hacer un resumen de lo como y que herramientas se utilizan para compilar desde el source?

Muy agradecido..

Saludos
Muchas gracias hermes y josete2k, y a otros que no recuerdo que ayudaron con el parche. NSMW USA funcionando correctamente con la version 3.1B.
alguien sabe si se puede quitar de alguna manera las bandas negras laterales que salen??
¿se puede pasar mis DVD´s al disco duro de alguna manera?
gracias
1saludoT
kinkon escribió:alguien sabe si se puede quitar de alguna manera las bandas negras laterales que salen??
¿se puede pasar mis DVD´s al disco duro de alguna manera?
gracias
1saludoT


Lo de las bandas negras no tengo ni idea porque no tengo el juego.
Lo de copiarlas al disco duro es una opción de uLoader (pulsando el botón de la casa y eligiendo la opción).
Shininchi escribió:
Hermes escribió:Shininchi, fuerza el juego a 60Hz: debería funcionar


Lo he probado forzando a PAL60 pero sigue saliendo en 50 Hz. No importa, probaré a parchear la ISO con la aplicación de Wanin y ya está (total, ya la he parcheado para tener la BSO original, ¿qué más da un parche más?).

Un saludo!


He parcheado el main.dol del Budokai T. 3 PAL con el Video Mode Changer 2.2 de Wanin y, usando el parcheo manual, he cambiado el primer modo (NTSC) por PAL 480p. Después he intentado cargarlo con uLoader usando todas las posibilidades y siempre lo hace a 50 Hz (excepto si le pongo forzar NTSC que da pantallazo verde, normal porque lo quité [tomaaa] ).
Luego he probado el Neogamma R8 beta 7 trasteando con los parches de video. Tiene 2 posibilidades: Force Video (Wii, Disc, PAL 480p, NTSC 480i, ...) y Patch Video (No, Normal, More y All). Todas las combinaciones que he probado dan como resultado que se cargue a 50 Hz, excepto FV = Disc/Wii PV = All que produce un bonito pantallazo verde (a 480p xD) y FV = PAL 480p PV = All que funciona bien activando el progresivo a 60 Hz [beer] . Sólo me faltaría arreglar la falta de panorámico con el zoom de la tele para que sea perfecto [360º] .
Hermes, ¿podrías explicarme en qué se diferencia este parcheo del que haces en uLoader? Lo digo porque me pica la curiosidad [+risas] y por animarme a instalar las librerías para intentar añadirlo al uLoader (ya que, aunque sé de primera mano que el parcheo de vídeo funciona muy bien (sobretodo el AUTO), no tengo esperanzas de que añadas un parcheo similar por temas de complejidad).

Me voy a disfrutar del juego [bye] .

Un saludo!
Buenas:

Antes de nada agradecer a Hermes su inestimable y desinteresada ayuda y alabar su grandisimo trabajo en la scene de la wii. Y ahora tras el peloteo necesario y de rigor, paso al tema.

Vereis, ayer pase de tener una Wii 3.1E con el Dc2Key, a tener una flamante 4.1E, con el Bootmii instalado en el Boot2, el cIos38 rev14, y el Ios36 y Ios60 parcheados con trucha, todo ello gracias a los pedazos de tutoriales de DanielC y Lamateporunyogur.

Me acabo de comprar un WD de 500 Gb, que me veia formateado en fat32, asi que con el Paragon Partition Manager me la he fusilado, y he creado un par de particiones NTFS de 300 y 200.

Y apartir de aqui estoy un poco perdido, no se muy bien por donde seguir, el tema es que tengo que instalar (Corregirme si me equivoco) el Cios222 del maestro Hermes, que no se muy bien si se trata del enlace que el titula "cIOS 202/222/223 Source Code", (¿es simplemente copiar el contenido de la carpeta "apps" a la carpeta "apps" de la SD? ¿O hay que copiar tambien la carpeta que se llama Cios_mload a la raiz de la SD? y ejecutar con el HBC, supongo que no pida nada, yo hize la instalacion offline, vamos que no tengo la wii conectada, ¿no pedira Ios o cosas asi?)

Una vez instalado, y siguiendo el readme ese que viene:

"1) Copy "apps" folder to your SD

2) Launch cIOS 222 Installer aplicaction. Remenber you
it is a different version to use with uLoader. You have the
possibility to install cIOS 202 (homebrew), cIOS 222 (uloader)
and cIOS 223 (uLoader Alternative)

NOTE: Now in the new installer you can select the IOS used
to install the cIOS. Remember you the cIOS is the same from the
uLoader 3.0 ;)

This cIOS don´t includes the ehcmodule or dip_plugin: it is
loaded externally using the new dev/mload method and
uses an IOS 38 base or 37 or 60 modules (merged with IOS 38 base)

3) Plug your USB device on port 0 (port 0 is down, port 1 is
reserved for others USB devices working from OHCI module.
You can use it as power supply for 2.5'' HDDs. (Rockband for
example, needs IOS37 base merged with IOS38)

4) Deletes ehcmodule.elf if you have one in apps/uloader

5) Run uLoader 3.1"



El paso 2 me descoloca, tengo que instalar de nuevo el Cios222? ¿Se sobreescribe sin problemas?

Y el Paso 4 no se que es el ehcmodule.elf, ni para que sirve (Le he descargado por si acaso) ¿Para que es?

Y una vez que arranque el uLoader 3.1, supongo que habra una opcion que detecte el disco duro, y te pida formatearlo a WBFS ¿no? ¿Y con eso ya estaria?

Bueno, gracias por adelantado!
InToTheRaiN escribió:Buenas:
...
El paso 2 me descoloca, tengo que instalar de nuevo el Cios222? ¿Se sobreescribe sin problemas?


Tienes que ejecutar el CIOS_Installer si el que tienes instalado es anterior a la versión 3.0. No pasa nada por reinstalarlo, se copia encima y ya está. En las opciones puedes mezclar el Ios 38 con ninguno, con el 37 (para los instrumentos del Rock Band) o con el 60 (wifi más estable).
Lo recomendable sería 38+60 en el slot 222 y 38+37 en el 223.

InToTheRaiN escribió:Y el Paso 4 no se que es el ehcmodule.elf, ni para que sirve (Le he descargado por si acaso) ¿Para que es?


El ehcmodule.elf es un driver USB 2.0 que se puede usar en caso de que tengas problemas. Es decir, el programa te permite cambiar el driver por defecto sin tener que modificar el .dol; por eso te dice que lo borres si tenías uno copiado, para que uses la última versión incluida en el ejecutable.

InToTheRaiN escribió:Y una vez que arranque el uLoader 3.1, supongo que habra una opcion que detecte el disco duro, y te pida formatearlo a WBFS ¿no? ¿Y con eso ya estaria?

Bueno, gracias por adelantado!


Si conectas el disco duro (en el puerto de abajo con la consola tumbada) te pedirá formatearlo. No obstante, te recomiendo usar la aplicación wbfs_win incluida en el rar. Es una aplicación de PC, sólo tienes que ejecutarla y pulsar la letra de la unidad que quieras formatear. Así te aseguras de formatear la unidad que quieras y, de paso, puedes meter algún juego para probar la aplicación (recuerda que también puedes copiarlo al HDD desde uLoader, sólo que más lentamente).

Un saludo!
Buenas:

Esoy utilizando el uloader para jugar con dvd, pero al iniziarlo me sale:
ERROR:Could not initialize USB subsystem!(ret=-6)
Retries:Del 1 al 9, y vuelvo al homebrew channel

Ley que para iniciarlo habia que pulsar 2, pero lo pulso y no da ningun resultado [buuuaaaa]
Me podrian ayudar, por favor.
Trato de compilar y me sale el siguiente error:

C:\devkitpro\uloader>make
button1.c
button2.c
button3.c
defpng.c
dip_plugin.c
disc.c
ehcmodule.c
files.c
font.c
http.c
icon.c
load_dol.c
lotus3_2.c
mload.c
patchcode.c
pintor.c
remote.c
In file included from c:/devkitpro/uloader/source/remote.h:6,
from c:/devkitpro/uloader/source/remote.c:2:
c:/devkitpro/uloader/source/usbstorage2.h:4:25: error: ogc/disc_io.h: No such fi
le or directory
In file included from c:/devkitpro/uloader/source/remote.h:6,
from c:/devkitpro/uloader/source/remote.c:2:
c:/devkitpro/uloader/source/usbstorage2.h:21: error: expected '=', ',', ';', 'as
m' or '__attribute__' before '__io_usbstorage2'
make[1]: *** [remote.o] Error 1
make: *** [build] Error 2
Shininchi escribió:
InToTheRaiN escribió:Buenas:
...
El paso 2 me descoloca, tengo que instalar de nuevo el Cios222? ¿Se sobreescribe sin problemas?


Tienes que ejecutar el CIOS_Installer si el que tienes instalado es anterior a la versión 3.0. No pasa nada por reinstalarlo, se copia encima y ya está. En las opciones puedes mezclar el Ios 38 con ninguno, con el 37 (para los instrumentos del Rock Band) o con el 60 (wifi más estable).
Lo recomendable sería 38+60 en el slot 222 y 38+37 en el 223.



Gracias, te explico:

Selecciono ios 249 para la instalacion, entonces me la la opcion de instalar el 202, 222 y 223

Selecciono el 222, y alli me da la opcion de elegir el 38, el 38+37 y 38+60, le doy al 38+60, tal y como me recomiendas, y me dice:

"downloading ios38 metadata: .. from internet.. initializing network"

Y claro, no me va, ya que no tengo configurado wifi en el router.

Tengo una coleccion de Ios en la raiz de la SD, (Pq instale la 4.1E con el Pimp My Wii con instalaccion offline), y tengo el "IOS37-64-v3869.wad" y el "IOS60-64-v6174.wad" en la raiz. pero claro, el Cios38, no, ya que lo instale con el rev installer 14, que supongo que sea por eso por lo que no me lo pilla.

Edito:

Acabo de encontrar este tuto:
hilo_tutorial-instalar-cios-en-cualquier-wii-listado-de-cios_1244249

La madre que me pario [tomaaa]

RE-edito:

Oye, esto funciona de lujo!!!! [beer]
djseijin, que versión de devkitpro usas?

Tienes que usar la r16 de devkitppc y la libogc: http://www.mediafire.com/?oxoyzwnoxmg
Shininchi escribió:Hermes, ¿podrías explicarme en qué se diferencia este parcheo del que haces en uLoader? Lo digo porque me pica la curiosidad [+risas] y por animarme a instalar las librerías para intentar añadirlo al uLoader (ya que, aunque sé de primera mano que el parcheo de vídeo funciona muy bien (sobretodo el AUTO), no tengo esperanzas de que añadas un parcheo similar por temas de complejidad).


He estado jugando al juego mediante el parcheo que comenté del Neogamma y me he dado cuenta de que se come un cacho de la parte inferior de la pantalla (supongo que serán los 576-480 = 96 píxeles que sobran). Esto se traduce en que la segunda línea de los diálogos del modo historia no se ven [snif] , por lo que el parcheo que utiliza será bastante bestia y mejor dejarlo como está y jugar a 576i... [buuuaaaa]

InToTheRaiN escribió:Oye, esto funciona de lujo!!!! [beer]

Sí, Hermes ha hecho un gran trabajo con su cIOS y ahora va perfectamente bien [sonrisa]

Un saludo!
EDITO: probad la versión test de 3.1C.... en teoría debería ser capaz de lanzar el DVD PAL/NTSC sin chip

DESCARGA: http://www.mediafire.com/?0o224ybdtwz

Por favor, probadlo y me decís (pero esta vez probadlo eh...)
josete2k escribió:EDITO: probad la versión test de 3.1C.... en teoría debería ser capaz de lanzar el DVD PAL/NTSC sin chip

DESCARGA: http://www.mediafire.com/?0o224ybdtwz

Por favor, probadlo y me decís (pero esta vez probadlo eh...)


Funciona perfectamente, he cargado un backup 1:1 PAL, sin parches ni nada, del NSMB con la opción de DVD de uloader y va perfecto me he pasado el mundo 2 completo sin problemas [360º]

Un saludo y muchísimas gracias josete y hermes!!!
Gracias, ya creía que iba a estar todo el fin de semana sin saber nada!!!


Versión 3.1C compatible con carga de DVD de NSMB:

Original: http://www.mediafire.com/?zmmzyy5zm1h
Menos "agresiva": http://www.mediafire.com/?gozeiwbg0ey







Ahora, al turrón:

El parche es este, a ver si lo hacemos un poco menos complicado:

void __DiscSeek(void *buffer, u32 len)
{
   const   u8 SearchPattern[] =    { 0x38, 0xA0, 0x00, 0xDA, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x11, 0xA0, 0x80, 0x0D, 0xB3, 0x4C, 0x38, 0x80, 0x00, 0xDA, 0x80, 0xAD, 0xB3, 0x64 };
   const   u8 PatchData[] =       { 0x38, 0xA0, 0x00, 0x71, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x11, 0xA0, 0x80, 0x0D, 0xB3, 0x4C, 0x38, 0x80, 0x00, 0x71, 0x80, 0xAD, 0xB3, 0x64 };
int n;

   /* Patch data*/

for(n=0;n<(len-sizeof(SearchPattern));n+=4)
   {
   if (memcmp(buffer+n, (void *) SearchPattern, sizeof(SearchPattern)) == 0)
      {
      memcpy(buffer+n, (void *) PatchData, sizeof(PatchData));
      }
   }

}

void __DiscSeek_NTSC(void *buffer, u32 len)
{
   const   u8 SearchPattern[] =    { 0x38, 0xA0, 0x00, 0xDA, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x10, 0x60, 0x80, 0x0D, 0xB3, 0x6C, 0x38, 0x80, 0x00, 0xDA, 0x80, 0xAD, 0xB3, 0x84 };
   const   u8 PatchData[] =       { 0x38, 0xA0, 0x00, 0x71, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x10, 0x60, 0x80, 0x0D, 0xB3, 0x6C, 0x38, 0x80, 0x00, 0x71, 0x80, 0xAD, 0xB3, 0x84 };
int n;

   /* Patch data*/

for(n=0;n<(len-sizeof(SearchPattern));n+=4)
   {
   if (memcmp(buffer+n, (void *) SearchPattern, sizeof(SearchPattern)) == 0)
      {
      memcpy(buffer+n, (void *) PatchData, sizeof(PatchData));
      }
   }

}


Como se ve, la cadena para NTSC de nuevo varía muy muy poco... total es cambiar DA por 71 en los offsets

1CEE93 y 1CEEAB en la versión PAL
1CED53 y 1CED6B en la NTSC


Imagen



Haciendo una búsqueda las cadenas:

DA 7C A4

DA 80 AD

Sólo se repiten una vez, pero me parece muy poca comprobación para el caso de parcheo... y luego de nuevo hay un par de bytes que hacen de nuevo la tarea más difícil si no se aplican dos parches... la duda es ¿servirá para todos los juegos? O la estamos liando....

Ni idea, por eso compruebo una cadena tan larga..
¿Se implementará en el uLoader el soporte para particiones NTFS en un futuro próximo?
victor_2203 escribió:¿Se implementará en el uLoader el soporte para particiones NTFS en un futuro próximo?


Yo creo no debería implementarse. No es una característica necesaria, ya que el WBFS es mejor.
Muchas gracias Amigos al fin se puede jugar y pasa la pantalla verde lo certifico corre excelente en wii 4.1U, Cios 249 v14, Con los ultimos IOS y todo bien gracias!
He leido por ahi que uLoader se compila con el devkitPPC r16 ...

Pero yo he conseguido compilar el uLoader 3.1 con el devkitPPC r19 ¬_¬

Solo tres cosas, al haber tenido que compilar el mplayer previamente:

- he copiado libtinyftp.a al entorno de desarrollo

- he compilado e instalado en el entorno de desarrollo ciertas librerias (libiconv, fribidi, libntfs) para poder compilar a su vez el mplayer

- instalado el devkitPPC r17, luego sobreescrito con el r18, y posteriormente sobreescrito con el r19 (ya que del r18 en adelante es imposible compilar las librerias descritas con anterioridad)

Todo en Windows mediante el instalador automatico de devkitPro.

Lo unico que se cambiarle al programa es el archivo mod [jaja]

Ni que decir tiene que el dol resultante funciona perfectamente.
Plasma, prueba la carga/busqueda de dol alternativo y los ocarina con tu compilacion por favor...
josete2k escribió:Ahora, al turrón:

El parche es este, a ver si lo hacemos un poco menos complicado:

void __DiscSeek(void *buffer, u32 len)
{
   const   u8 SearchPattern[] =    { 0x38, 0xA0, 0x00, 0xDA, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x11, 0xA0, 0x80, 0x0D, 0xB3, 0x4C, 0x38, 0x80, 0x00, 0xDA, 0x80, 0xAD, 0xB3, 0x64 };
   const   u8 PatchData[] =       { 0x38, 0xA0, 0x00, 0x71, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x11, 0xA0, 0x80, 0x0D, 0xB3, 0x4C, 0x38, 0x80, 0x00, 0x71, 0x80, 0xAD, 0xB3, 0x64 };
int n;

   /* Patch data*/

for(n=0;n<(len-sizeof(SearchPattern));n+=4)
   {
   if (memcmp(buffer+n, (void *) SearchPattern, sizeof(SearchPattern)) == 0)
      {
      memcpy(buffer+n, (void *) PatchData, sizeof(PatchData));
      }
   }

}

void __DiscSeek_NTSC(void *buffer, u32 len)
{
   const   u8 SearchPattern[] =    { 0x38, 0xA0, 0x00, 0xDA, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x10, 0x60, 0x80, 0x0D, 0xB3, 0x6C, 0x38, 0x80, 0x00, 0xDA, 0x80, 0xAD, 0xB3, 0x84 };
   const   u8 PatchData[] =       { 0x38, 0xA0, 0x00, 0x71, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x10, 0x60, 0x80, 0x0D, 0xB3, 0x6C, 0x38, 0x80, 0x00, 0x71, 0x80, 0xAD, 0xB3, 0x84 };
int n;

   /* Patch data*/

for(n=0;n<(len-sizeof(SearchPattern));n+=4)
   {
   if (memcmp(buffer+n, (void *) SearchPattern, sizeof(SearchPattern)) == 0)
      {
      memcpy(buffer+n, (void *) PatchData, sizeof(PatchData));
      }
   }

}


Como se ve, la cadena para NTSC de nuevo varía muy muy poco... total es cambiar DA por 71 en los offsets

1CEE93 y 1CEEAB en la versión PAL
1CED53 y 1CED6B en la NTSC


Imagen



Haciendo una búsqueda las cadenas:

DA 7C A4

DA 80 AD

Sólo se repiten una vez, pero me parece muy poca comprobación para el caso de parcheo... y luego de nuevo hay un par de bytes que hacen de nuevo la tarea más difícil si no se aplican dos parches... la duda es ¿servirá para todos los juegos? O la estamos liando....

Ni idea, por eso compruebo una cadena tan larga..



Yo cuando vi el parche porbe este y no me funciono, sabras decirme porque (por aprender)
void __DVD_NSMB(void *buffer, u32 len)
{
   const u8 viejocode[] = { 0xDA, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x11, 0xA0, 0x80, 0x0D, 0xB3, 0x4C, 0x38, 0x80, 0x00, 0xDA };
   const u8 nuevocode[] = { 0x71, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x11, 0xA0, 0x80, 0x0D, 0xB3, 0x4C, 0x38, 0x80, 0x00, 0x71 };
   u32 cnt;

      

   /* Find code and patch it */
   for (cnt = 0; cnt < (len - sizeof(viejocode)); cnt++) {
      u8 *ptr = buffer + cnt;

      /* Replace code if found */
      if (!memcmp(ptr, viejocode, sizeof(viejocode))) {
         memcpy(ptr, nuevocode, sizeof(nuevocode));
         
      }
   }
}
Bueno, no os preocupéis por el tema del parcheo, que pronto sacaré una versión "oficial" con un nuevo parcheador.

Por ejemplo:

void __Patch_DiscSeek(void *buffer, u32 len)
{
   const   u8 SearchPattern[] =  "38A000DA7CA401AE7C671B787FCAF3783929XXXX800DBXXC388000DA80ADB3XX";
   const   u8 PatchData[] =      "38A00071";
     
   patch_hex_str((u8 *) buffer, (len - (strlen((char *) SearchPattern)>>1)),4 , SearchPattern, 0, PatchData);

}


Como se puede apreciar, se reemplazan los valores hexadecimales por una cadena donde los valores 'X' representan valores comodín en las comprobaciones y en los datos de patch (vamos que se toma el valor en memoria para que la comprobación siempre sea verdadera o a la hora de copiar, se copiaría lo que haya)

La rutina patch_hex_str() incluye un penúltimo parámetro que establece un salto desde el inicio de la comprobación a la hora de parchear (en este caso a 0). El parametro '4' en este caso, le dice a la rutina que debe buscar saltando 4 bytes en cada paso (es lo ideal cuando se trata de comprobar instrucciones maquina)

La única precaución que hay que tener es no meter caracteres diferentes de a 0-9, a-f, A-F, x y X y no descuadrar el numero hexadecimal a formar (que debe ser de 8 bits y por tanto componerse de dos dígitos siempre)
EDIT: solucionado " a mi manera :P" un hurra por el programa
PD: hay algun modo para que me salga en modo texto la lista de juegos de wii? no me gusta demasiado el skin por defecto :P
Pues yo estaba intentado revisar el código de josete2k

Y me había quedado así:

void __DiscSeek(void *buffer, u32 len)
{
    const u8 oldcode1[] = { 0x38, 0xA0, 0x00, 0xDA, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29 };
    const u8 oldcode2[] = { 0x80, 0x0D, 0xB3 }
    const u8 oldcode3[] = { 0x38, 0x80, 0x00, 0xDA, 0x80, 0xAD, 0xB3 };

   const u8 newcode[] = { 0x38, 0xA0, 0x00, 0x71 };
   u32 cnt;

   /* Find code and patch it */
   for (cnt = 0; cnt < (len - sizeof(oldcode1) - sizeof(oldcode2)- sizeof(oldcode3)- 3); cnt++) {
      u8 *ptr = buffer + cnt;

      /* Replace code if found */
      if (!memcmp(ptr, oldcode1, sizeof(oldcode1)) && !memcmp(ptr+sizeof(oldcode1)+2, oldcode2, sizeof(oldcode2)) && !memcmp(ptr+sizeof(oldcode1)+sizeof(oldcode2)+3, oldcode3, sizeof(oldcode3))) {
         memcpy(ptr, newcode, sizeof(newcode));
         
      }
   }

}


Hermes, he seguido tu misma nomenclatura.
Si neceistas ayuda para la rutina "patch_hex_str()", dímelo, me encantaría poder ayudar.
Hermes viendo que es posible que saques una versión nueva por lod el parche de new super mario (auqnue a mi en la 3.1 me funciona eprfecto parcheado), ¿podrian en la futura versión poner el ocarina en opción y que se guarde? es decir que puedas guardar en configuracion si queires usar ocarina en ese juego, y no tener que darle a usar siempre que queiras... por configuracion lo activará o no

saludos
dantemugiwara escribió:Hermes viendo que es posible que saques una versión nueva por lod el parche de new super mario (auqnue a mi en la 3.1 me funciona eprfecto parcheado), ¿podrian en la futura versión poner el ocarina en opción y que se guarde? es decir que puedas guardar en configuracion si queires usar ocarina en ese juego, y no tener que darle a usar siempre que queiras... por configuracion lo activará o no

saludos


Por mi parte no me gusta esa idea: es preferible pulsar un botón más, pues básicamente es eso, a tener que ir a las opciones de configuración (que está petado y no cabe una opción más ya XD), para activar o desactivar truco, sobre todo porque uLoader tiene su propio sistema de trucos en forma de lista txt que requiere pasar por dicha pantalla si quieres activar o desactivar trucos (que esos si que se quedan memorizados y tiene su lógica memorizar dicha selección pues es incómodo tener que seleccionar los trucos uno a uno cada vez que quieras jugar).

Además, eso induce al despiste pues si metes los trucos y luego no te los selecciona, vendrá gente aquí preguntando que coño pasa y al final, para que tu te ahorres un click, tendremos a un montón de usuarios preguntando [+risas]

Saludos
Estoy ansioso por esa nueva versión OFICIAL (no se porque lo pones entre comillas... el programa es tuyo)

Seguramente necesitaremos de nuevas libogc y devkitPPC para compilar... ¿las harás públicas?

El caso es que hasta que no se confirmen estos parches en más juegos, tal vez sería conveniente tener un botón de "Parcheo EXTRA" para este tipo de juegos y si sólo se da en NSMB simplemente detectando la ID del juego en cuestión... ¿no?

SMNE01 New Super Mario Bros. Wii (NTSC-U)
SMNJ01 New Super Mario Bros. Wii (NTSC-J)
SMNP01 New Super Mario Bros. Wii (PAL)


No se si el dol de la versión NTSC-JAP compartirá bytes con el de la NTSC-USA... ¿alguien lo podría confirmar?




Por otro lado, en GBATemp el master de http://www.wiitdb.com me pidió que te hiciera llegar sus deseos de que su base de datos sea utilizada en uLoader para la descarga de carátulas... la verdad es que es la web más actualizada a día de hoy, pero claro, también lo era wiiboxart en su día y mira....




Por cierto, he comprobado que si tienes un USB conectado y formateado pero sin juegos, la opción de lanzar DVD no está activa... la posibilidad de que un usuario se encuentre en esta situación es remota, pero yo te lo comento ;)

Gracias por todo.
Hermes escribió:
dantemugiwara escribió:Hermes viendo que es posible que saques una versión nueva por lod el parche de new super mario (auqnue a mi en la 3.1 me funciona eprfecto parcheado), ¿podrian en la futura versión poner el ocarina en opción y que se guarde? es decir que puedas guardar en configuracion si queires usar ocarina en ese juego, y no tener que darle a usar siempre que queiras... por configuracion lo activará o no

saludos


Por mi parte no me gusta esa idea: es preferible pulsar un botón más, pues básicamente es eso, a tener que ir a las opciones de configuración (que está petado y no cabe una opción más ya XD), para activar o desactivar truco, sobre todo porque uLoader tiene su propio sistema de trucos en forma de lista txt que requiere pasar por dicha pantalla si quieres activar o desactivar trucos (que esos si que se quedan memorizados y tiene su lógica memorizar dicha selección pues es incómodo tener que seleccionar los trucos uno a uno cada vez que quieras jugar).

Además, eso induce al despiste pues si metes los trucos y luego no te los selecciona, vendrá gente aquí preguntando que coño pasa y al final, para que tu te ahorres un click, tendremos a un montón de usuarios preguntando [+risas]

Saludos


Bueno si lo ves muy complicado o engorroso... tendras razón, al fin y al cabo eres el master
josete2k escribió:Por cierto, he comprobado que si tienes un USB conectado y formateado pero sin juegos, la opción de lanzar DVD no está activa... la posibilidad de que un usuario se encuentre en esta situación es remota, pero yo te lo comento ;)


Cuando hay juegos arriba a la derecha aparece DVD. ¿Cuando no hay juegos no aparece?.
Siempre queda la opción de desenchufar el disco duro, y da la opción de pulsar 2.
Nakar001 escribió:
josete2k escribió:Por cierto, he comprobado que si tienes un USB conectado y formateado pero sin juegos, la opción de lanzar DVD no está activa... la posibilidad de que un usuario se encuentre en esta situación es remota, pero yo te lo comento ;)


Cuando hay juegos arriba a la derecha aparece DVD. ¿Cuando no hay juegos no aparece?.
Siempre queda la opción de desenchufar el disco duro, y da la opción de pulsar 2.


Sí, aparece DVD pero si le das al botón el programa no responde... como si no hubiera botón me refiero.
¿Has mirado el codigo que he puesto?.

Creo que hace lo mismo que el tuyo y con un sólo bucle.
He seguido la misma metodología de Hermes, es por lo que se parece tanto al suyo.

De todas formas yo esperaría a ver que se comenta Hermes acerca de la nueva función que ha visto (o va a implementar).
Bueno ahora mismo no estoy en casa para compilar así que probarlo no puedo, justo ahora que tengo la Wii aquí... (qué paradójico, o tengo compilador o tengo Wii :P).


Así que hasta que pueda probar, igual tenemos la nueva versión oficial (supongo que será 3.2 [sonrisa])


EDIT: en la parte del parcheo, la secuencia { 0x38, 0xA0, 0x00, 0x71 } es válida para la primera cadena.

La segunda varía en un byte, concretamente el segundo que toma valor 80 en lugar de A0.



EDIT2: lo mismo para el código de parcheo de Hermes

38A000DA7CA401AE7C671B787FCAF3783929XXXX800DBXXC388000DA80ADB3XX

Por lo que supongo que esos valores en azúl deberán entrar en el juego de las "XX" [looco], en rojo están los bytes a cambiar, en este caso DA por 71.

Así, el parcheo
const   u8 PatchData[] =      "38A00071";

sólo será válido para la primera secuencia, a no ser que la función "patch_hex_str()" tome en cuenta también los valores XX a la hora de realizar el cambio:
const   u8 PatchData[] =      "38XX0071";


¿Esto sería correcto?


EDIT3: Al parecer el parche de DVD entra en conflicto con DriveKey o D2CKey... ya se complica la cosa..., ahora sí, hará falta un botón de parcheos EXTRA... uno para gente sin chip, otro para gente con chip, otro para gente con DriveKey o D2CKey, otro para.... buffffffffff

Bueno, realmente poniendo en disable el parche de DVD para gente con estos chips bastaría :P







Si en algo estoy equivocado por favor hacédmelo saber ;)


PD: de todas formas creo que lo más prudente sería esperar a saber si las nuevas protecciones son generalizadas y se pueden resolver todas igual.... por ahora la versión piratilla 3.1c cumple y no creo que haga falta optimizar mucho ya que, por la longitud de la cadena, es muy poco probable que estos parches entren en conflicto con algún juego.
Hola
Es la primera vez que lo voy a hacer y despues de leer bastantes post no me he aclarado del todo
Lo primero aunque es una pregunta tonta prefiero asegurarme. Despues de descargar del enlace de uloader_v3.1. De ahi solo tengo que copiar la carpeta appz en la sd?? Tengo que copiar alguna de las otras 3 carpetas??

Otra pregunta tengo dos wiis:

Una tiene instalado la rev15 de wanin y me gustaria instalarle el cios de hermes.
Para hacerlo tengo que ejecutar el cios instaler de sD/appz y con conexion a internet o necesito algo mas??

josete2k escribió:
josete2k escribió:
222->38
223->38+37
202->38+60



Lo tengo que instalar como dice josete2k??
El 222 y 223 lo tengo claro pero para que es el 202??

La otra wii no tiene ningun cios.
Que es mejor instalarle el cios 222 de hermes y nada mas, o instalar rev15 de wanin y luego el cios 222??
El cios 222 de hermes es compatible con otros usb loaders?? o solo con uloader.

Muchas gracias
Yo lo tengo tal como dice josete2k y me funciona de maravilla.

También he leido por ahí el 222 como 38+60 y 202 como 38, aunque yo no pretendo cambiarlo a no ser que sea necesario.

Acerca del uso del 202, este cIOS se usa para el reproductor multimedia MPlayerCE (el cual recomiendo), y desde que salió la actualización 4.2 tambien como seguro contra la misma, ya que no lo capa y gracias a el puedes volver a instalar todo lo necesario en caso de actualización.

EDITO:
Y acerca de tu pregunta: "El cios 222 de hermes es compatible con otros usb loaders?? o solo con uloader."

La respuesta es que el que tiene que ser compatible es el cargador con el cIOS y no al revés.
uLoader es compatible con el cIOS 222, 223 y 249.
Otros cargadores lo serán sólo del 249.

Cada cargador será compatible con el que quiera.

Pero ya que estás en el hilo de uLoader te diré que a mi me parece el mejor sin duda alguna, por dos razones, porque lo he oido decir mcuho y porque no he probado otro (ni pienso hacerlo). :P
Despues de instalar los cios de hermes 222 y 223, no me arranca el BootMii, ¿Alguien sabe de que puede ser?
Entonces instalare en las dos consolas en cios222. A mi tambien me convence lo que he leido del uloader.
Por cierto en la que ya tiene la rev15 de wanin, no importa si instalo el cios 222, no?? Si quiero probar algun otro loader tambien me funcionaria verdad??
Solo copio a la sd la carpeta appz que viene con el enlace uloader_v3.1.(cios instaler, uloader) y ejecuto el cios instaler y luego pruebo el uloader.verdad??
Muchas gracias
belakiok escribió:Entonces instalare en las dos consolas en cios222. A mi tambien me convence lo que he leido del uloader.
Por cierto en la que ya tiene la rev15 de wanin, no importa si instalo el cios 222, no?? Si quiero probar algun otro loader tambien me funcionaria verdad??
Solo copio a la sd la carpeta appz que viene con el enlace uloader_v3.1.(cios instaler, uloader) y ejecuto el cios instaler y luego pruebo el uloader.verdad??
Muchas gracias


Puedes tener el rev15 y el cIOS 222.
Cuando ejecutes el cIOS instaler tu usara el cIOS 249 para la instalación.
Te recomiendo que lo instales como hemos visto en mensajes anteriores.

222 = 38
223 = 38 + 37
202 = 38 + 60

Una vez que lo instales prueba el uLoader y debe funcionar.
Si tienes el NewSuperMarioBros original y quieres probar tu copia de seguridad recuerda que necesitas la versión 3.1B o 3.1C, las cuales las tienes unos cuantos mensajes antes que este.

IFdj escribió:Despues de instalar los cios de hermes 222 y 223, no me arranca el BootMii, ¿Alguien sabe de que puede ser?


Asegurate de tener la carpeta BootMii en la SD. Si no la tienes vuelve a preparar la tarjeta y entrando en el HBC te tiene que poner la opción de BootMii.
Que yo sepa los cIOS 222 y 223 no afectan a BootMii.
Es raro porque previamente funcionaba. Tenia instalado el BootMii en boot2 (ademas del Homebrew Channel y cIOS 38 ver14) a traves de HackMii Installer v0.6. La memory que utilicé para ello y que cargaba el BootMii al encender la consola nunca le toque para nada. Hasta aqui cargaba siempre bien. El caso es que hoy actualicé al cIOS 38 ver15 (sin borrar previamente la version anterior, no se si esto influye) y luego tambien instalé por primera vez los cIOS 222 y 223. Despues de esto quise arrancar el bootmii y al encender la wii con la memory de este puesta, no arranca la consola.
Al final tendremos una nueva version de Hermes, para arreglar lo de los juegos que traigan esa nueva proteccion [360º]

En cuanto a lo de los trucos ocarina a mi me gusta tal como esta ahora.

josete2k, he intentado compilar tu source de la version 3.1c por si lo querias probar todavia, pero sinceramente... no se donde colocar este codigo [+risas]

    void __DiscSeek(void *buffer, u32 len)
    {
       const   u8 SearchPattern[] =    { 0x38, 0xA0, 0x00, 0xDA, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x11, 0xA0, 0x80, 0x0D, 0xB3, 0x4C, 0x38, 0x80, 0x00, 0xDA, 0x80, 0xAD, 0xB3, 0x64 };
       const   u8 PatchData[] =       { 0x38, 0xA0, 0x00, 0x71, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x11, 0xA0, 0x80, 0x0D, 0xB3, 0x4C, 0x38, 0x80, 0x00, 0x71, 0x80, 0xAD, 0xB3, 0x64 };
    int n;

       /* Patch data*/

    for(n=0;n<(len-sizeof(SearchPattern));n+=4)
       {
       if (memcmp(buffer+n, (void *) SearchPattern, sizeof(SearchPattern)) == 0)
          {
          memcpy(buffer+n, (void *) PatchData, sizeof(PatchData));
          }
       }

    }

    void __DiscSeek_NTSC(void *buffer, u32 len)
    {
       const   u8 SearchPattern[] =    { 0x38, 0xA0, 0x00, 0xDA, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x10, 0x60, 0x80, 0x0D, 0xB3, 0x6C, 0x38, 0x80, 0x00, 0xDA, 0x80, 0xAD, 0xB3, 0x84 };
       const   u8 PatchData[] =       { 0x38, 0xA0, 0x00, 0x71, 0x7C, 0xA4, 0x01, 0xAE, 0x7C, 0x67, 0x1B, 0x78, 0x7F, 0xCA, 0xF3, 0x78, 0x39, 0x29, 0x10, 0x60, 0x80, 0x0D, 0xB3, 0x6C, 0x38, 0x80, 0x00, 0x71, 0x80, 0xAD, 0xB3, 0x84 };
    int n;

       /* Patch data*/

    for(n=0;n<(len-sizeof(SearchPattern));n+=4)
       {
       if (memcmp(buffer+n, (void *) SearchPattern, sizeof(SearchPattern)) == 0)
          {
          memcpy(buffer+n, (void *) PatchData, sizeof(PatchData));
          }
       }

    }


EDITO: vaya empana que tengo [+risas] si el codigo ya esta puesto en el source [+risas]
Bueno me autorespondo a mi pregunta, perdon si el tema ya estaba hablado pero como hay tantos post, yo por lo menos no lo sabia.

Me acabo de dar cuenta de que cuando instalé el bootmii lo hice con el cable de componentes y la wii configurada en progresivo, y ahora la tengo puesta con el cable RGB, y se ve que el bootmii te guarda la configuracion de la primera vez que lo instalas. Entonces la solucion es configurar el archivo bootmii.ini con la nueva configuracion de video, tal y como se explica en el hilo principal. Pense que el modo de video se configuraria solo al arrancar, mal pensado, lo se.
Aqui esta mi compilacion del uLoader 3.1c de josete2k mediante su propio codigo fuente.

http://www.megaupload.com/?d=GC3HU29H

No recuerdo que pasara esto con wdvd.c al compilar el 3.1 oficial...

$ make
button1.c
button2.c
button3.c
defpng.c
dip_plugin.c
disc.c
ehcmodule.c
files.c
font.c
http.c
icon.c
load_dol.c
lotus3_2.c
mload.c
patchcode.c
pintor.c
remote.c
uloader.c
usbstorage2.c
utils.c
wbfs.c
wdvd.c
c:/devkitPro/msys/home/n/src/source/wdvd.c: In function 'WDVD_Offset':
c:/devkitPro/msys/home/n/src/source/wdvd.c:136: warning: dereferencing pointer '
off' does break strict-aliasing rules
c:/devkitPro/msys/home/n/src/source/wdvd.c:129: note: initialized from here
c:/devkitPro/msys/home/n/src/source/wdvd.c:137: warning: dereferencing pointer '
({anonymous})' does break strict-aliasing rules
c:/devkitPro/msys/home/n/src/source/wdvd.c:137: note: initialized from here
pngu.c
libwbfs.c
rijndael.c
wiidisc.c
wiiscrubber.c
patchhook.S
linking ... src.elf
output ... src.dol


EDITO
Si me da esos errores al compilar la version 3.1 oficial de Hermes.
Pero me funciona perfecta... claro, que yo no uso para nada el DVD [+risas]
A mi no me da errores al compilar mis versiones... por ahora no puedo probarlo porque tu enlace no está disponible...

Ah el parche para DVD lo he hecho yo (por eso hay tanta morralla)


Por otro lado, estoy mirando los sources del neogamma y el fix para SAM and MAX es este:

   // Fix for Sam & Max
   *(vu32*)0x80003184   = 0x80000000;   // Game ID Address


A ver si averiguo como implementar eso a uLoader (recordad que yo de programación "casi" cero)


Hmmmm... habéis visto el sistema de neogamma para aplicar parches mediante archivos Wiip

Ejemplo de contenido de un SMNP.wip (para NSMB):

001AB750: 9421FFD0 4E800020
001CEE93: DA 71
001CEEAB: DA 71


Donde se ven los offsets el valor anterior y el nuevo...

void do_wip_patches()
{
   storage_init();

   static char buf[128];
   FILE *fp = NULL;
   u32 filesize = 0;

   char tempbuffer[8];
   memset(tempbuffer, 0, 7);
   memcpy(tempbuffer, (char*)0x80000000, 6);      
   snprintf(buf, 128, "fat:/NeoGamma/%s.wip", tempbuffer);
   fp = fopen(buf, "rb");
   if (!fp)
   {
      memset(tempbuffer, 0, 7);
      memcpy(tempbuffer, (char*)0x80000000, 4);      
      snprintf(buf, 128, "fat:/NeoGamma/%s.wip", tempbuffer);
      fp = fopen(buf, "rb");
   }

   if (!fp)
   {
      write_font(185, 346, "No patch found");
      wait(3);      
      return;
   }   

   fseek(fp, 0, SEEK_END);
   filesize = ftell(fp);
   fseek(fp, 0, SEEK_SET);

   u8 *buffer = malloc(filesize+1);
   if (buffer == NULL)
   {
      write_font(185, 346, "Out of memory");
      wait(3);      
      fclose(fp);
      return;
   }

   fread(buffer, filesize, 1, fp);
   buffer[filesize] = 0;

   wipparsebuffer(buffer, filesize);
   
   free(buffer);

   fclose(fp);
}


Adjunto el código en c de wiip, parece interesante:

Adjuntos

Hola.

Hoy he estado todo el día fuera y mañana también tengo movida, pero me paso para comentar varias cosas:

- Tema nuevo parcheador hex: está hecho desde ayer, antes de postear como trabajaría, evidentemente.

- Tema incompatibilidad parche DVD con ciertos chips: no es mi problema XD. uLoader es un cargador mediante software diseñado para trabajar mediante dispositivo USB y con un soporte DVD pensado para los que no tienen chip (o tienen un chip simple y no porculero, como mi PIC, pero que necesita ayuda para ciertas protecciones) para probar cosas o para gente que tiene un espacio limitado en el dispositivo USB. Lo que no voy a hacer, es cambiar radicalmente la forma de funcionar del programa porque ciertos señores tengan un chip que da problemas con un parche de un único juego corriendo en un programa que está pensado para funcionar sin chip... como mucho, podría mirar si el disco está trabajando como DVD vídeo y solo parchear en ese caso, pero ya veremos (total, si el juego por USB ocupa un pedo, vaya ganas de complicarse cargando por DVD)

- Tema parcheos particulares de los juegos que estáis comentando: en mi opinión eso habría que hacerlo directamente en la ISO, en vez de transferir el parche al programa (con parches particulares para cada juego) por que al final, resultará mas complicado y engorroso pasar esa responsabilidad al programa que hacerlo en la propia ISO y olvidarse de almacenar ficheritos en la SD que tarde o temprano, se perderán por ahí

Hay un dicho que dice "en la variedad, está el gusto", pero lo que no te dice el dicho, es que también en la variedad, está el disgusto [+risas]. También hay otro que dice que "el que mucho abarca, poco aprieta" y creo que es preferible no tocar ciertos palos mediante el programa de forma directa, cuando son cosas que se deberían trabajar desde el PC o si se pasa a la Wii, habría que hacerlo de forma que todo el asunto se resolviera en la propia Wii con una herramienta especializada.
uLoader es el único que prescinde de la SD si lo instalas como canal (sin usar ocarinas) y eso (además de otras cosas) lo hace "especial"... lo de los parches wiip era sólo por curiosidad.


Sobre el tema de pasar primero la iso por el PC... si la cosa se extiende nos tocará olvidar aquello de instalar un original desde la Wii directamente... lástima.


Sobre el tema de los chips... creo (y digo creo) que es más bien problema de la rev15 de Waninkoko y el reconocimiento de discos.

Por lo visto la gente es propensa a pasar de usar 222... la verdad ¿tanto cuesta usar IOS222?




Lo que sí me gustaría es saber si el FIX de SAM&MAX funciona ya que lo he añadido a

      /* Setup low memory */
      *(vu32 *)0x80000060 = 0x38A00040;
      *(vu32 *)0x800000E4 = 0x80431A80;
      *(vu32 *)0x800000EC = 0x81800000;

      *(vu32 *)0x800000F0 = 0x01800000;       // Simulated Memory Size
                // Fix for Sam & Max
                *(vu32 *)0x80003184 = 0x80000000;   // Game ID Address


Y por lo menos en modo USB tu tía... [+risas]


Por cierto Hermes, gracias de nuevo por estar ahí ;)
josete2k escribió:Sobre el tema de pasar primero la iso por el PC... si la cosa se extiende nos tocará olvidar aquello de instalar un original desde la Wii directamente... lástima.

Pues si. Más si no se tiene lector compatible en la PC o hay que tirar por red para hacer la ISO. [decaio]
En fin, lo que decidas está bien Hermes y gracias como siempre por el soporte y trabajo que le dedicas.
Solo un post (no suelo escribir mucho, pero os leo que no veas!) para agradeceros la ayuda que prestais...
ni con vuestro peso en oro se os paga la labor....
;)
Mokona Modoki escribió:
josete2k escribió:Sobre el tema de pasar primero la iso por el PC... si la cosa se extiende nos tocará olvidar aquello de instalar un original desde la Wii directamente... lástima.

Pues si. Más si no se tiene lector compatible en la PC o hay que tirar por red para hacer la ISO. [decaio]
En fin, lo que decidas está bien Hermes y gracias como siempre por el soporte y trabajo que le dedicas.


Pero mira que sois complicados los dos: primero pasas el DVD al HDD, luego extraes ISO con win_wbfs y luego manipulas lo que sea usando el wiiscrubber y un editor hexadecimal.

Sin embargo, hay una posibilidad mas compleja a la que me he referido de forma vaga, que consistiría en añadir una especie de editor avanzado como utilidad que permitiera crear parches, de forma que usara la SD como apoyo en un único fichero, pero quizá también que permitiera grabar los cambios al HDD (esto sería mas complejo, porque habría que volver a encriptar, obviamente)

Todavía estoy discurriendo como, porque el sistema debería poder crear una especie de ficha para cada juego o al menos una ficha temporal de un juego, teniendo en cuenta posibles dols alternativos y poder combinar una serie de comandos para parchear, combinando busquedas, mascarás, saltos y posibilitando también parcheos por offset (relativo al fichero dol) o por dirección de memoria.

Así que si me pongo con éste tema, la verdad es que tendría su currele XD y no evitaría tener que buscar el código a parchear en el PC (pues obviamente, esto no tendrá un desensamblador), pero de cara al usuario, facilitaría el tema para hacerlo desde la propia Wii y el acceso al fichero de parcheo en la SD (único), se haría al cargar uLoader, lo cual me parece mejor que tener 50 ficheros y depender del PC para introducirlo, etc.

Lo que si me gustaría saber es, antes de tomar cualquier decisión es ¿cuantos juegos habéis observado que necesiten un parcheo particular?
10244 respuestas