Mokona Modoki escribió:Y yo del 82. ¿ahora postearemos todos nuestra edad?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.
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!!!
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
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!
InToTheRaiN escribió:Buenas:
...
El paso 2 me descoloca, tengo que instalar de nuevo el Cios222? ¿Se sobreescribe sin problemas?
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?
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!
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.
Shininchi escribió:Hermes, ¿podrías explicarme en qué se diferencia este parcheo del que haces en uLoader? Lo digo porque me pica la curiosidad 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).
InToTheRaiN escribió:Oye, esto funciona de lujo!!!!
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...)
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));
}
}
}
victor_2203 escribió:¿Se implementará en el uLoader el soporte para particiones NTFS en un futuro próximo?
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
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..
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));
}
}
}
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);
}
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));
}
}
}
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
SMNE01 New Super Mario Bros. Wii (NTSC-U)
SMNJ01 New Super Mario Bros. Wii (NTSC-J)
SMNP01 New Super Mario Bros. Wii (PAL)
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 ), 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
Saludos
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
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.
const u8 PatchData[] = "38A00071";
const u8 PatchData[] = "38XX0071";
josete2k escribió:josete2k escribió:
222->38
223->38+37
202->38+60
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
IFdj escribió:Despues de instalar los cios de hermes 222 y 223, no me arranca el BootMii, ¿Alguien sabe de que puede ser?
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));
}
}
}
$ 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
// Fix for Sam & Max
*(vu32*)0x80003184 = 0x80000000; // Game ID Address
001AB750: 9421FFD0 4E800020
001CEE93: DA 71
001CEEAB: DA 71
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);
}
/* 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
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.
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.
En fin, lo que decidas está bien Hermes y gracias como siempre por el soporte y trabajo que le dedicas.
wiip.h