josete2k escribió:El original es de Wiipower, el autor de Neogamma. Los parches WIP surgieron a raíz del New Super Mario, puesto que era la forma más rápida de añadir parches al vuelo (aunque el uLoader ya emulaba la BCA)
http://www.mediafire.com/?zjytnnjryyn#include <gccore.h>
#include <string.h>
#include <stdlib.h>
u32 doltableoffset[64];
u32 doltablelength[64];
u32 doltableentries;
void wipreset()
{
doltableentries = 0;
}
void wipregisteroffset(u32 dst, u32 len)
{
doltableoffset[doltableentries] = dst;
doltablelength[doltableentries] = len;
doltableentries++;
}
void patchu8(u32 offset, u8 value)
{
u32 i = 0;
u32 tempoffset = 0;
while ((doltablelength[i] <= offset-tempoffset) && (i+1 < doltableentries))
{
tempoffset+=doltablelength[i];
i++;
}
if (offset-tempoffset < doltablelength[i])
{
*(u8 *)(offset-tempoffset+doltableoffset[i]) = value;
}
}
void wipparsebuffer(u8 *buffer, u32 length)
// The buffer needs a 0 at the end to properly terminate the string functions
{
u32 pos = 0;
u32 offset;
char buf[10];
while (pos < length)
{
if ( *(char *)(buffer + pos) != '#' && *(char *)(buffer + pos) != ';' && *(char *)(buffer + pos) != 10 && *(char *)(buffer + pos) != 13 && *(char *)(buffer + pos) != 32 && *(char *)(buffer + pos) != 0 )
{
memcpy(buf, (char *)(buffer + pos), 8);
buf[8] = 0;
offset = strtol(buf,NULL,16);
pos += (u32)strchr((char *)(buffer + pos), 32)-(u32)(buffer + pos) + 1;
pos += (u32)strchr((char *)(buffer + pos), 32)-(u32)(buffer + pos) + 1;
while (pos < length && *(char *)(buffer + pos) != 10 && *(char *)(buffer + pos) != 13 && *(char *)(buffer + pos) != 0)
{
memcpy(buf, (char *)(buffer + pos), 2);
buf[2] = 0;
patchu8(offset, strtol(buf,NULL,16));
offset++;
pos +=2;
}
}
if (strchr((char *)(buffer + pos), 10) == NULL)
{
return;
} else
{
pos += (u32)strchr((char *)(buffer + pos), 10)-(u32)(buffer + pos) + 1;
}
}
}
Pajariyo escribió:anda que has ido a fijarte en el mejor, el loader de los code dumps la depuración de código no es uno de sus fuertes, yo empecé usando el GX y desde que añadieron soporte NTFS cada revisión significa más code dumps
Pajariyo escribió:la gente quejándose en gbafail de que no funcionan los wip, llegas tú y en "10 minutos" lo solucionas... y aún te pondrán a parir por copiar parte del código, arreglarlo y no pasárselo de vuelta en bandejita de plata y en inglés
en fin, que muchas gracias por todo lo que nos proporcionas Hermes, no solo ya por uLoader, sino por todos los conocimientos y explicaciones que vas dejando en cada post
El otro día cierto señor aprovechaba para meterse con la estructuración de mi código y su legibilidad. Tambien se han metido con que si comento o no comento el fuente y yo en cierto sentido, cayo, pero se nota que el que habla, no tiene ni puñetera idea de lo que es éste mundillo y las dificultades a las que te tienes que enfrentar constantemente y que uno está aquí para hacer un trabajo y no para darselo todo mascado a quien se pierde en cuanto dobla dos esquinas. Y el que se ahoga en un vaso de agua, es que directamente no tiene el nivel para picar ese código y punto.
Para empezar, yo no soy programador profesional, ni he estudiado la carrera: soy autodidacta y lo que me suelo encontrar, son códigos sin comentar (o apenas sin comentar, si tengo suerte), con bugs de todo tipo, incluso a veces, se atragantan al compilador, sin explicación de uso (ejemplo de todo eso: libogc) y que en ocasiones como ayer, tengo que mirar el código por dentro para saber que se pretende hacer por fuera (o sea, si alguien ve 3 líneas sin comentar y ya se ha perdido, yo estoy acostumbrado a ver fuentes mucho mas tochos y en peores condiciones y no solo lo interpreto, si no que lo arreglo lo mejor que puedo).
Eso, cuando no tengo que hacer yo el código que es la mayoría de las ocasiones: a mí el código me brota de forma natural en mi cerebro, no tengo apenas que planificarlo porque las respuestas me vienen de forma natural y dentro del caos que otros puedan ver, yo veo un orden subyacente y en cierto sentido, me pasa como a los médicos, que tienen mala letra y entienden perfectamente la mala letra de los demás (lo cual no quita que uno se cabree al ver que el diagnostico del otro médico está equivocado en numerosas ocasiones y que me toque hacer mi trabajo y el suyo )
Eso si: yo he dedicado cierto esfuerzo a que personas novatas puedan tratar de entrar en éste mundillo con todas las facilidades posibles, pero una cosa es eso y otra cuando estás haciendo un código con cierta complejidad, bebiendo de otras partes a veces y con un trabajo que desborda a cualquiera, como para que encima te pidan que quede "bonito" y "masticao"
Dicho esto, el sistema WIP entero, tiene un defecto de construcción que funciona gracias a unas casualidades y a unos trucos, pero la implementación no es óptima, y no me extraña que el de usbloader gx y otros, se hayan perdido. El tema es que lo que se trata de parchear, es una serie de bytes partiendo de un offset desde el dol.
Digamos que abres un dol con Winhex y buscas unos bytes en una determinada posición y los cambias. Pues eso es lo que se pretende hacer desde WIP, pero para hacerlo, en vez de usar el offset de fichero, se están usando una serie de referencias al segmento final de memoria. Para que esto funcione, te tienes que saltar tres secciones del dol y evidentemente, la longitud de las secciones deben dar lugar a una correspondencia con la posición de los bytes a parchear en el fichero.
O sea, que se obtiene el offset mediante un truco que si no lo comprendes, te llevará a errar, pero incluso comprendiéndolo, podría fallar por el método empleado ya que no usa el método correcto para hacerlo (que sería localizar el offset de inicio de lectura del main.dol e ir haciendo la referencia con respecto al offset de inicio de lectura de cada sección)
Por otro lado, el sistema de parcheo WIP tiene un problema subyacente y es que no se ha pensado correctamente para poder trabajar con dols alternativos. En mi caso (y en el de Neogamma, estoy seguro), se puede producir un doble parcheo en el dol principal y el dol alternativo y evidentemente, si el dol alternativo fuera mas de uno, eso podría dar lugar a resultados no adecuados.
Así que confiemos que no haya que hacer uso de WIP o que si se hace uso, se limite a parchear el main.dol y no otra cosa, por que si no me tocará meterle mano y añadir algo mas de sustancia para que los parches se apliquen de forma condicional (que sería lo lógico: esperar unos bytes y luego parchear)
Como puedes ver, no es solo una cosa de poder hacerlo en 10 minutos, es que además de interpretar lo que hace el código, tienes que interpretar lo que pensaba la persona que programó el código al hacer eso en base a cosas que tu ya sabes por experiencia y los pequeños detalles que vas observando (por experiencia de haber hecho eso infinitas veces ).
Así que cuando alguien te llega y se queja de la tabulación del fuente o de otras chorradas, lo menos que puedes pensar es que estás harto de ver códigos fuentes de otras personas que son muchos peores y se supone que son profesionales o quieren serlo, o incluso código mas "ordenadito" pero que funciona como el culo y que tienes que ir a arreglarlo tu ( y a veces, después de haberte dado una currada que te cagas, el autor original pasa de ti y sigue a los suyo ) y tiene guasa que gente que se pierde con tres líneas, te quieran mirar por encima del hombro como si tu fueras culpable de su ignorancia o yo que se (se nota que no han trabajado desensamblando e interpretando el código... eso si que está en chino y no el C, aunque esté sin comentar )
En fin, que hasta la polla estoy de picar código y pegarme con situaciones absurdas, y evidentemente, no soy perfecto y cometo errores, etc. pero me da un nosequé que los demás tampoco... (y algunos tienen peor excusa que yo)
Hermes escribió:me pasa como a los médicos, que tienen mala letra y entienden perfectamente la mala letra de los demás (lo cual no quita que uno se cabree al ver que el diagnostico del otro médico está equivocado en numerosas ocasiones y que me toque hacer mi trabajo y el suyo )
Dr.wOOx escribió:Ya se que comentas, que no hace falta actualizar a los cIOS 5.1, pero es ver un cIOS nuevo y entrarme las ganas de meterselo a la Wii, pero de momento intentare contenerme.
if (0 == strcmp(message->open.device, DEVICE))
{
if(shadow_mload) result=-6;
else result = message->open.resultfd;
}
else
if (0 == strcmp(message->open.device, DEVICE"/OFF"))
{
shadow_mload=1;
result=-6;
}
else
result = -6;
kkolat escribió:hola como comente antes la emulacion de wiiware se ha estropeado en esta version.He probado con los cios 5.1 nuevos pero tampoco, sigue dando code dump. Así que a la espera de que Hermes nos diga algo o si la emulacion wiiware es importante para ti pues no actualizes a 5.1.
Pajariyo escribió:kkolat escribió:hola como comente antes la emulacion de wiiware se ha estropeado en esta version.He probado con los cios 5.1 nuevos pero tampoco, sigue dando code dump. Así que a la espera de que Hermes nos diga algo o si la emulacion wiiware es importante para ti pues no actualizes a 5.1.
algo has tocado, porque a mí me funciona con ambas versiones 5.1 (uLoader y cIOS)
Pajariyo escribió:pues no eh, tenía la 5.1 a secas, he probado el bit.trip runner y me iba habré tenido suerte simplemente. gracias de todas formas por resolverlo tan rápido
Pajariyo escribió:si es que los bugs los carga el diablo
kkolat escribió:pues si hermes me sigue pasando con la 5.1a, no se como le funciona a pajariyo pero me sigue dando un code dump de la muerte..jeje
Hermes escribió:Por cierto, para que veas como molo: la versión alternativa va de pm: la que falla es la mía (lo cual demuestra que seguro que es un malloc de los cojones o algo asi )
Pajariyo escribió:el virus GX!!!
Hermes escribió:Pajariyo escribió:el virus GX!!!
Pues no te extrañe: este tipo de code dumps se pueden producir por problemas en la gestión del montículo de memoria y yo personalmente, me he topado con este problema varias veces y en distintas ocasiones en Wii , como para no ver demonios por todas partes
En éste caso, a saber que coño será: solo se que muchas asignaciones, las suelo hacer alineadas y mas grandes de lo necesario por si la caché toca los cojones o un puntero se pasa por un pelo, pero si es un problema de por ejemplo, compilador o un fallo en la gestión que hace la newlib, este tipo de bugs (que no son bugs nuestros, si no externos), nos lo comemos igualmente.
A ver como te explicas que haciendo exactamente lo mismo, en la versión alternativa no da problemas y en la normal te comes un code dump como una casa, en el mismo punto siempre, con un par de juegos que estoy probando, mientras que con otros trabaja normalmente .
Lo curioso es que el problema, se produce en una parte que desde luego, está perfecta, porque funcionaba hasta ahora, funciona en la versión alternativa y solo falla en la versión normal, sin que esté bajo su influencia, por así decir
Pajariyo escribió:Hermes escribió:Pajariyo escribió:el virus GX!!!
Pues no te extrañe: este tipo de code dumps se pueden producir por problemas en la gestión del montículo de memoria y yo personalmente, me he topado con este problema varias veces y en distintas ocasiones en Wii , como para no ver demonios por todas partes
En éste caso, a saber que coño será: solo se que muchas asignaciones, las suelo hacer alineadas y mas grandes de lo necesario por si la caché toca los cojones o un puntero se pasa por un pelo, pero si es un problema de por ejemplo, compilador o un fallo en la gestión que hace la newlib, este tipo de bugs (que no son bugs nuestros, si no externos), nos lo comemos igualmente.
A ver como te explicas que haciendo exactamente lo mismo, en la versión alternativa no da problemas y en la normal te comes un code dump como una casa, en el mismo punto siempre, con un par de juegos que estoy probando, mientras que con otros trabaja normalmente .
Lo curioso es que el problema, se produce en una parte que desde luego, está perfecta, porque funcionaba hasta ahora, funciona en la versión alternativa y solo falla en la versión normal, sin que esté bajo su influencia, por así decir
si que es raro sí... pero es coger un trozo de código del GX, por pequeño que sea, y ya empiezan a pasar cosas raras y code dumps
por cierto hablando de code dumps, ya que estás liao con ello, por si tienes tiempo y ganas, me he dado cuenta dándole al botón sin querer que si pulsas A en un recuadro vacío (sin juego) salta un code dump. no es que sea nada importante porque ya ves tú las veces que hacemos click en un cuadro vacío pero por si quieres mirarlo
ánimo y suerte con ese bug raro!!! seguro que al final descubres qué pasa
oxidado escribió:
Que hariamos nosotros sin tus deslices e inmediatas correcciones, si es que es decir que te retiras y te crecen los enanos xDD
kkolat escribió:pues acabo de probar lo q dice pajariyo y es verdad en la version alternativa das a un espacio en blanco sin juego y salta code dump
kkolat escribió:pues acabo de probar lo q dice pajariyo y es verdad en la version alternativa das a un espacio en blanco sin juego y salta code dump
Hermes escribió:kkolat escribió:pues acabo de probar lo q dice pajariyo y es verdad en la version alternativa das a un espacio en blanco sin juego y salta code dump
Pues yo he probado alternativa y no alternativa y no salta na de na .
¿Usais favoritos?
Version 5.1B subiendo: el code dump fantasma, lo dejamos para otro año
Hermes escribió:Pues... en mi caso, he quitado la SD, he bloqueado el acceso a FAT desde USB (simplemente, no monto la partición FAT), pincho en el recuadro blanco de FAT y no hay ningun problema y evidentemente, no pasa nada si pincho en un juego en blanco, ni en el borde, ni si muevo el cursor como un loco tratando de forzar un mensaje equivocado.
¿Soy yo o sois vosotros? ¿o somos ninguno?
La verdad es que es flipante: la única forma de que genere un code dump es que se genere un mensaje válido en sitio incorrecto y yo no lo consigo ni para atrás
EDITO: nada macho, no consigo que me pase lo que a vosotros por mas que lo intento, ni en versión normal, ni en la alternativa, quitando favoritos,s in quitar, simulando la ausencia de FAT o la ausencia de juegos dentro de FAT. Que alguien me lo explique
Pajariyo escribió:Hermes escribió:Pues... en mi caso, he quitado la SD, he bloqueado el acceso a FAT desde USB (simplemente, no monto la partición FAT), pincho en el recuadro blanco de FAT y no hay ningun problema y evidentemente, no pasa nada si pincho en un juego en blanco, ni en el borde, ni si muevo el cursor como un loco tratando de forzar un mensaje equivocado.
¿Soy yo o sois vosotros? ¿o somos ninguno?
La verdad es que es flipante: la única forma de que genere un code dump es que se genere un mensaje válido en sitio incorrecto y yo no lo consigo ni para atrás
EDITO: nada macho, no consigo que me pase lo que a vosotros por mas que lo intento, ni en versión normal, ni en la alternativa, quitando favoritos,s in quitar, simulando la ausencia de FAT o la ausencia de juegos dentro de FAT. Que alguien me lo explique
ahí te dejo el code dump que me da al hacer click en un cuadro vacío, a ver si te ayuda
Pajariyo escribió:Hermes escribió:Si me ayuda, pero ¿estas utilizando la 5.1B alternativa?
Sí
Algo que no todo el mundo sabe, es que estoy mas sordo que una tapia y uso audífonos .
Y hace poco he adquirido unos nuevos que son una maravilla: eso si, entre pitos y flautas, unos 2700 pavos del ala (2 audifonos intrauriculares con lo último en tecnología digital + 1 receptor manos libres que me permite conectar fuentes de sonido+ movil que es una pasada, sobre todo si lo comparo con los antiguos que tampoco eran mancos para la época que lo compré, pero que se me jodieron por muerte accidental uno y natural el otro)
Y no creais que es un lujo, porque los hay muchos mas caros, pero esto es la diferencia entre no oir, oir mal u oir muy bien, pero sobre todo, entre perder el poco oído que tengo en el intento y hacer una vida normal
Saludos
Hermes escribió:Pajariyo escribió:Hermes escribió:Si me ayuda, pero ¿estas utilizando la 5.1B alternativa?
Sí
Pues bajate la 5.1C "direstamente" que ese codedump está curao (ahora, espero que no te de otro en otra parte ) y dime argo
Saludos
PD: Piro un rato fuera a dar un voltio, que hace un rato que he venido de ajustarme los oídos nuevos y quiero probarlos
josete2k escribió:Mi caso... 3 wbfs y una fat, he probado incluso a crear favoritos y no se me presenta el error.
Un video iría bien por si se trata de alguna página de wbfs en concreto, recuerdo que en gbatemp hay algún usuario con problemas parecidos y es porque tiene algún juego corrupto, ya que lo borran y desaparece el error (curiosamente wbfs_win no detecta nada raro al pasar el chequeo)... Se que no es el mismo caso pero...
Probad también la versión ofical leñe!!!!
Otra cosa, recordad que ciertas versiones de uloader creaba un cfg un tanto extraño... ¿Podéis probar también de borrarlo con wbfs_win?
josete2k escribió:Mi caso... 3 wbfs y una fat, he probado incluso a crear favoritos y no se me presenta el error.
Un video iría bien por si se trata de alguna página de wbfs en concreto, recuerdo que en gbatemp hay algún usuario con problemas parecidos y es porque tiene algún juego corrupto, ya que lo borran y desaparece el error (curiosamente wbfs_win no detecta nada raro al pasar el chequeo)... Se que no es el mismo caso pero...
Probad también la versión ofical leñe!!!!
Otra cosa, recordad que ciertas versiones de uloader creaba un cfg un tanto extraño... ¿Podéis probar también de borrarlo con wbfs_win?
En mi caso son unos de gama medio alta, de la casa Phonak (tienen 5 años de garantía ante cualquier defecto que surja ). Se alojan en el conducto auditivo (te tienen que hacer un molde, por que obviamente, son a medida), son digitales y cuentan con dos micrófonos por auricular (y que diferencia oiga!). Los auriculares se alojan dentro del conducto auditivo, pero no muy internamente, cuentan con un botón de selección de programa (en mi caso solo sirven para desconectar, por que con los programas automáticos voy bien servido). Una cosa que me gustan de estos es que me resultan mucho más cómodos que los antiguos: respiran mejor y eso se agradece.
Lo mejor es la conectividad: Disponen de enlace FM con una aparatico llamado "iCom" de la misma casa, que es el que hace de manos libres para el móvil y me permite conectar con fuentes de audio (cuesta el bichejo 220 pavos). Dispone de batería interna y aguanta un buen número de horas de trote y carga rápido (además,si surge algún problema, a tirar de garantía que para eso está y es larga ). Estoy a la espera de su complemento (otros 100E a la hucha), que me permitirá enlazar de forma inalámbrica con la TV (ahora tengo que tirar de cable)
Eso me permite oír la tele por mis auriculares sin molestar a los demás por la noche, ni dañarme el oído, sin quitarme audición externa y encima como digo, en caso de sonar el móvil, con la función manos libres puedes usarlo directamente (pulsando un boton en el pecho, porque se cuelga al cuello el aparato), escuchar la radio o un mp3 en el móvil vía bluetooth. Si tienes un curro que te pringas las manos (como el mío), es bastante útil poder "coger" el telefono sin cogerlo.
Si lo miras desde cierto punto de vista, es relativamente caro, pero si lo miras desde el punto de vista de que tienes unos aparatos excelentes que como poco, te van a durar 5 años y si les pasa algo, te los van a reemplazar por otros nuevos, es que merece mucho la pena... al igual que oír cosas que la gente con un oído mas normal, le cuesta oir y que tu antes no oías ni de coña. Comparado con los antiguos analógicos que tuve, éstos están a años luz.
Si alguna vez estáis en esta tesitura, no vayáis por lo barato solo por que es mas barato y pensad un poco a largo plazo, porque merece la pena gastarse un poco más e invertir en calidad de vida (y en mi caso con el descuento que me han metido en la tienda donde los he comprado, la verdad es que ha sido menos susto)
Hermes escribió:Sobre mi sordera, es congénita (para los curiosos) y en mi familia somos 4 con problemas auditivos, pero esto es como las gafas: cuando yo tenía 4 años, solo 4 gatos llevabamos gafas y ahora las lleva todo el mundo (aunque sean de sol) y lo del oído es igual: cada vez hay mas sordos (demasiada contaminación acústica y cambios de temperatura, que en mi caso no me han beneficiado), mas calvos, mas ciegos... joder, si es que estamos echados a perder
Hermes escribió:Wenas.
Si os da code dump la 5.1c y me pegáis el code dump, puede ser muy útil para resolver el problema
Eso si, especificad si usais la alternativa o no, pues el trazado del code dump precisa del elf resultante para averiguar en que función falló (en el caso anterior, me reportó la función y la línea).
Hermes escribió:Ya teneis la 5.1D para probar (ahora con mas tiempo, he localizado el problema mas gordo y lo he esquivado (es lo que tiene tener que tratar un porrón de cosas en el mismo sitio): debería ir bien ahora)
Saludos
Mokona Modoki escribió:Hermes escribió:Ya teneis la 5.1D para probar (ahora con mas tiempo, he localizado el problema mas gordo y lo he esquivado (es lo que tiene tener que tratar un porrón de cosas en el mismo sitio): debería ir bien ahora)
Saludos
Por mi parte: PERFECTO
Ha quedado solucionado en 5.1D
Mil gracias Hermes