pcsx2/fps2bios/kernel/romdir.c

44 lines
1.0 KiB
C

/***************************************************************
* romdir.c, based over Alex Lau (http://alexlau.8k.com) RomDir *
****************************************************************/
#include "romdir.h"
struct romdir *romdirInit() {
u8 *mem;
for (mem=(u8*)0xbfc00000; (u32)mem<0xbfc01000; mem++) {
if (mem[0] == 'R' && mem[1] == 'E' &&
mem[2] == 'S' && mem[3] == 'E' &&
mem[4] == 'T')
break;
}
if ((u32)mem == 0xbfc01000) return NULL;
return (struct romdir*)mem;
}
struct rominfo *romdirGetFile(char *name, struct rominfo *ri) {
struct romdir *rd;
struct romdir *base;
int i;
base = romdirInit();
if (base == NULL) return NULL;
ri->fileOffset = 0;
for (rd = base; rd->fileName[0] != 0; rd++) {
for (i=0; i<10 && name[i] != 0; i++) {
if (rd->fileName[i] != name[i]) break;
}
if (rd->fileName[i] != name[i]) {
ri->fileOffset+= (rd->fileSize + 15) & ~0xF;
continue;
}
ri->fileSize = rd->fileSize;
return ri;
}
return NULL;
}