git-svn-id: https://pcsxr.svn.codeplex.com/svn/pcsxr@42174 e17a0e51-4ae3-4d35-97c3-1a29b211df97
This commit is contained in:
parent
21574a1700
commit
01c19d7afb
|
@ -1,3 +1,8 @@
|
|||
March 6, 2010 Wei Mingzhi <whistler_wmz@users.sf.net>
|
||||
|
||||
* libpcsxcore/ppf.c: Speeded up the PPF loading routine when the PPF file
|
||||
is "in order".
|
||||
|
||||
February 23, 2010 Wei Mingzhi <whistler_wmz@users.sf.net>
|
||||
|
||||
* plugins/dfinput/analog.c: Confirmed center value should be 127 instead of
|
||||
|
|
|
@ -38,7 +38,7 @@ typedef struct tagPPF_CACHE {
|
|||
} PPF_CACHE;
|
||||
|
||||
static PPF_CACHE *ppfCache = NULL;
|
||||
static PPF_DATA *ppfHead = NULL;
|
||||
static PPF_DATA *ppfHead = NULL, *ppfLast = NULL;
|
||||
static int iPPFNum = 0;
|
||||
|
||||
// using a linked data list, and address array
|
||||
|
@ -86,6 +86,7 @@ void FreePPFCache() {
|
|||
p = (PPF_DATA *)pn;
|
||||
}
|
||||
ppfHead = NULL;
|
||||
ppfLast = NULL;
|
||||
|
||||
if (ppfCache != NULL) free(ppfCache);
|
||||
ppfCache = NULL;
|
||||
|
@ -140,22 +141,30 @@ static void AddToPPF(s32 ladr, s32 pos, s32 anz, unsigned char *ppfmem) {
|
|||
ppfHead->anz = anz;
|
||||
memcpy(ppfHead + 1, ppfmem, anz);
|
||||
iPPFNum = 1;
|
||||
ppfLast = ppfHead;
|
||||
} else {
|
||||
PPF_DATA *p = ppfHead;
|
||||
PPF_DATA *plast = NULL;
|
||||
PPF_DATA *padd;
|
||||
while (p != NULL) {
|
||||
if (ladr < p->addr) break;
|
||||
if (ladr == p->addr) {
|
||||
while (p && ladr == p->addr && pos > p->pos) {
|
||||
plast = p;
|
||||
p = p->pNext;
|
||||
|
||||
if (ladr > ppfLast->addr || (ladr == ppfLast->addr && pos > ppfLast->pos)) {
|
||||
p = NULL;
|
||||
plast = ppfLast;
|
||||
} else {
|
||||
while (p != NULL) {
|
||||
if (ladr < p->addr) break;
|
||||
if (ladr == p->addr) {
|
||||
while (p && ladr == p->addr && pos > p->pos) {
|
||||
plast = p;
|
||||
p = p->pNext;
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
plast = p;
|
||||
p = p->pNext;
|
||||
}
|
||||
plast = p;
|
||||
p = p->pNext;
|
||||
}
|
||||
|
||||
padd = (PPF_DATA *)malloc(sizeof(PPF_DATA) + anz);
|
||||
padd->addr = ladr;
|
||||
padd->pNext = p;
|
||||
|
@ -165,6 +174,8 @@ static void AddToPPF(s32 ladr, s32 pos, s32 anz, unsigned char *ppfmem) {
|
|||
iPPFNum++;
|
||||
if (plast == NULL) ppfHead = padd;
|
||||
else plast->pNext = padd;
|
||||
|
||||
if (padd->pNext == NULL) ppfLast = padd;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue