nuvalo escribió:¿Tienes el psyq?
Si, el compilador está muy bien, y por lo menos deja hacer de todo. Otra cosa es que yo sepa hacer todo lo que deja el compilador, porque la verdad, me queda grande. [jaja] [jaja]
He creado un programilla en la posición 0x80010000 que muestra un texto de que es el segundo programa. Lo he pasado a hexdecimal y metido en un array llamado main2, y luego he creado otro en la posición 0x8005F800, con el siguiente código:
void CargaPrograma(struct EXEC *exep){
char hbuf[H_SIZE]; // Buffer for EXE head
struct XF_HDR *head;
memcpy (hbuf, main2,H_SIZE);
head = (struct XF_HDR *)hbuf;
memcpy((void *)exep, (void *)&head->exec, sizeof(struct EXEC));
memcpy((void *)exep->t_addr,&main2[H_SIZE],exep->t_size);
}
Y luego llamo así:
CargaPrograma(&exe);
Exec(&exe,1,0);
Y lo único que he conseguido es que se resetee la consola. Asi que por ahora va mal la cosa.
nuvalo escribió:PD, gracias por el enlace
No hay de que.
Pues parece que he conseguido que me tire, al menos en el emulador. Asi que ya he conseguido un 70% de la aplicación, ahora queda el 30% restante, o sea, todo.
Después de depurar todo el programilla, para poder ver si apuntaba bien el exe.t_addr, que me daba 0xFFFFFFFF80010000 y el exe.t_size, que da el tamaño del exe menos los 2048 bytes de la cabecera y demás chorradas, me dió por mirar, que no mandé apagar el sistema de video ni pad ni demás cosas de secciones criticas, lo que causaba que se reseteara. Asi que, una vez solucionado, consigo cargar el EXE en la posición de memoria 0x80010000.
Si alguien prueba, que se acuerde de colocar el primer programa fuera del intervalo de memoria del segundo, como hice yo.
Ahora queda la rutina que va cogiendo datos de la memcard y los va metiendo a la zona de memoria de donde se quiera ejecutar el EXE.
Donde perderé un poco de tiempo será en hacer el programa que genere un archivo de tipo MEMCARD troceado con el EXE (haré una tool para PC) para poder grabarlo. Aunque siempre podría hacer un programa (en psone) que coja un EXE de un buffer y lo vaya troceando y metiendo en la tarjeta de memoria. Ese programa lo ejecuto en el emulador y automáticamente me genera la memcard pertinente. Las opciones son múltiples, pero el resultado es el mismo.
Es verdad, en el primer mensaje hablaba de que existía software bajo windows para pasar las tarjetas. Aqui dejo el enlace:
http://sstrans.emuxhaven.net/mccs.php
El circuito se diferencia de los anteriores, en que la alimentación de la tarjeta la saca del puerto paralelo (5V) que le pone un diodo para reducir voltaje.
Al final, voy a hacer un programa en la propia psone que transfiera el exe a las tarjetas de memoria (pedirá que metas una detras de otra) para crearlas en el emulata o en la máquina real. Haré una tool que meta el EXE dentro del EXE principal, como si de un ARRAY se tratara. Va a ser más fácil que crear el archivo directamente.