Next Generation Emulation banner

1 - 6 of 6 Posts

·
Registered
Joined
·
299 Posts
Discussion Starter #1 (Edited)
Hello Nocash,

I wanted to know if could look at the hle-bios of pcsxr to try and get the memory cards working properly
for the games that work with it. If you can i would like to mention that i had heard that these games memory
cards with do not work the psx bios.

APE ESCAPE
LEGEND OF DRAGOON

I have a compatibility list pcsxr here: PCSXR HLE-Bios Compatibility List
 

·
Premium Member
Joined
·
217 Posts
Hello Nocash,

I wanted to know if could look at the hle-bios of pcsxr to try and get the memory cards working properly
for the games that work with it. If you can i would like to mention that i had heard that these games memory
cards with do not work the psx bios.

APE ESCAPE
LEGEND OF DRAGOON

I have a compatibility list pcsxr here: PCSXR HLE-Bios Compatibility List
This http://pcsxr.codeplex.com/SourceControl/latest#pcsxr/libpcsxcore/psxbios.c ? Don't know if I could help there. Is there anything known which functions are causing problems?

Uhm, and what do you mean by "the games that work with it" and "these games memory
cards with do not work the psx bios"
? Hope that wasn't important ; - )
 

·
Registered
Joined
·
299 Posts
Discussion Starter #3 (Edited)
Hello nocash,

Thx alot :). What i meant was for those 2 games is that the memory card does not work with the real psx bios. What I can say with the HLE-Bios a lot of games can write to the memory card but can't seem to load the file. I don't know if they know what function is causing the problem. I will make a post on pcsxr site to check if they have any clue on what function maybe causing the problem.

BTW: I can see this message just before a trying to save in capcom vs snk.

* MemCardAccept
* 2 : BASCUS-94254PRO-00 = * + BASCUS-94254PRO-00 (match=1)
* Access Denied. : file not open.

As of Fri at 8:45 PM i got one reply from dario86

"Sorry, I have never looked into this specific issue."
 

·
Registered
Joined
·
299 Posts
Discussion Starter #4
Hello Nocash,

There is a problem in the firstfile i believe.
The problem is that it starts reading at memory card block 2
instead of block one.

Code:
char ffile[64], *pfile;
int nfile;

#define bufile(mcd) { \
    while (nfile < 16) { \
        int match=1; \
\
        ptr = Mcd##mcd##Data + 128 * nfile; \
        nfile++; \
        if ((*ptr & 0xF0) != 0x50) continue; \
        ptr+= 0xa; \
        if (pfile[0] == 0) { \
            strncpy(dir->name, ptr, sizeof(dir->name)); \
            dir->name[sizeof(dir->name) - 1] = '\0'; \
        } else for (i=0; i<20; i++) { \
            if (pfile[i] == ptr[i]) { \
                dir->name[i] = ptr[i]; \
                if (ptr[i] == 0) break; else continue; } \
            if (pfile[i] == '?') { \
                dir->name[i] = ptr[i]; continue; } \
            if (pfile[i] == '*') { \
                strcpy(dir->name+i, ptr+i); break; } \
            match = 0; break; \
        } \
        SysPrintf("%d : %s = %s + %s (match=%d)\n", nfile, dir->name, pfile, ptr, match); \
        if (match == 0) continue; \
        dir->size = 8192; \
        v0 = _dir; \
        break; \
    } \
}

/*
*    struct DIRENTRY* firstfile(char *name,struct DIRENTRY *dir);
*/
void psxBios_firstfile() { // 42
    struct DIRENTRY *dir = (struct DIRENTRY *)Ra1;
    u32 _dir = a1;
    char *ptr;
    int i;

#ifdef PSXBIOS_LOG
    PSXBIOS_LOG("psxBios_%s: %s\n", biosB0n[0x42], Ra0);
#endif

    v0 = 0;

    strcpy(ffile, Ra0);
    pfile = ffile+5;
    nfile = 1;
    if (!strncmp(Ra0, "bu00", 4)) {
        bufile(1);
    } else if (!strncmp(Ra0, "bu10", 4)) {
        bufile(2);
    }

    pc0 = ra;
}
And ideas how to fix this?
 

·
Premium Member
Joined
·
217 Posts
That is the pcsxr hle-bios source code? How to fix that... maybe set initial nfile=0 instead of nfile=1.

But I am not absolutely sure that "ptr = Mcd##mcd##Data + 128 * nfile;" is really wrong. If "Mcd##mcd##Data" is the begin of the memory card image, then it does look just fine to start with nfile=1 (since the first 128 bytes at offset 0 or some sort of a header, not a directory entry).
 
1 - 6 of 6 Posts
Top