I'm not using windows so I can only use the linker from the open source tool chain
Z_DATA_ERROR is a zlib error. It's caused by the compressed data format not being what zlib expects, or by corrupt data blocks.@bucanero
Do you ever got a Z_DATA_ERROR tiring to start a SELF compiled with new PSL1GHT (gcc 7.2.0) ?
I remember looking quickly at this last year, I saw nothing at all to optimise in the crt0/crt1 code itself to get faster storage reads either, the ppc and the c code didn't look to me like an obvious culprit, as far as I could make out anyway.I don't understand what's broken crt0.S need to be fixed/optimised to get a proper crt0.o ?
the file we install and use is lv2-crt0.o, it's made of crt0 and crt1 with a linker : @$(LD) -r crt0.o crt1.o -o lv2-crt0.o
maybe we need to swap the linker at this step ?
yeah probably, I'm not sure because it use use psl1ght v1.Perhaps this explains why ScummVM loading games from USB is so slow.
yeah probably, I'm not sure because it use use psl1ght v1.
I just noticed something weird. I was doing small app to dumpLV2 (to have small app to test the speed with stdio function in usb), the app wasn't working, it returned to xmb... I investigated and found out lv2peek -syscall #6- function was causing it. When I used the same EBOOT.BIN but as a self (the one generated by psl1ght) and then I launch it, it worked... The capabilities/controls flags are set on both.
I tried another syscall (buzzer) -syscall #392- and it worked on both...
Do you think psl1ght is building a broken EBOOT.BIN ?
Do you think psl1ght is building a broken EBOOT.BIN ?
#define DUMPER_BUFFSIZE 0x10000
FILE* f=NULL;
u64 i, j;
f=fopen("/dev_hdd0/LV2_DUMP.BIN", "wb");
if(f==NULL) return 0;
u64 data[DUMPER_BUFFSIZE];
for(i=0 ; i < 0x800000ULL; i+= 0x8 * DUMPER_BUFFSIZE ) {
//memset(data, 0, DUMPER_BUFFSIZE*8);
for( j = 0; j < DUMPER_BUFFSIZE; j++) {
data[j]=lv2peek(0x8000000000000000ULL + i+j*0x8);
}
fwrite(&data, sizeof(u64), DUMPER_BUFFSIZE, f);
}
fclose(f);
FILE* f=NULL;
u64 i, j;
f=fopen("/dev_hdd0/LV2_DUMP.BIN", "wb");
if(f==NULL) return 0;
u64 data;
for(i=0 ; i < 0x800000ULL; i++ ) {
data=lv2peek(0x8000000000000000ULL + i);
fwrite(&data, sizeof(u64), 1, f);
}
fclose(f);