X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=pcsx_rearmed.git;a=blobdiff_plain;f=libpcsxcore%2Fmisc.c;h=14f68ec85c25b2827609926bb8ab4316ddda1c3b;hp=3ee794bfd0800d9de840354066eddfd1021c435c;hb=e06ee7f47a951fd8abe122969bedeb2983bf8dc2;hpb=496d88d4f697ab13e84bf8c40cdac98369bd6a04 diff --git a/libpcsxcore/misc.c b/libpcsxcore/misc.c index 3ee794bf..14f68ec8 100644 --- a/libpcsxcore/misc.c +++ b/libpcsxcore/misc.c @@ -57,7 +57,8 @@ void mmssdd( char *b, char *p ) { int m, s, d; #if defined(__arm__) - int block = (b[3] << 24) | (b[2] << 16) | (b[1] << 8) | b[0]; + unsigned char *u = (void *)b; + int block = (u[3] << 24) | (u[2] << 16) | (u[1] << 8) | u[0]; #elif defined(__BIGENDIAN__) int block = (b[0] & 0xff) | ((b[1] & 0xff) << 8) | ((b[2] & 0xff) << 16) | (b[3] << 24); #else @@ -108,6 +109,7 @@ void mmssdd( char *b, char *p ) int GetCdromFile(u8 *mdir, u8 *time, char *filename) { struct iso_directory_record *dir; + int retval = -1; u8 ddir[4096]; u8 *buf; int i; @@ -121,7 +123,7 @@ int GetCdromFile(u8 *mdir, u8 *time, char *filename) { if (dir->length[0] == 0) { return -1; } - i += dir->length[0]; + i += (u8)dir->length[0]; if (dir->flags[0] & 0x2) { // it's a dir if (!strnicmp((char *)&dir->name[0], filename, dir->name_len[0])) { @@ -137,11 +139,12 @@ int GetCdromFile(u8 *mdir, u8 *time, char *filename) { } else { if (!strnicmp((char *)&dir->name[0], filename, strlen(filename))) { mmssdd(dir->extent, (char *)time); + retval = 0; break; } } } - return 0; + return retval; } static const unsigned int gpu_ctl_def[] = { @@ -309,7 +312,7 @@ int CheckCdrom() { char *buf; unsigned char mdir[4096]; char exename[256]; - int i, c; + int i, len, c; FreePPFCache(); @@ -319,8 +322,9 @@ int CheckCdrom() { READTRACK(); - CdromLabel[0] = '\0'; - CdromId[0] = '\0'; + memset(CdromLabel, 0, sizeof(CdromLabel)); + memset(CdromId, 0, sizeof(CdromId)); + memset(exename, 0, sizeof(exename)); strncpy(CdromLabel, buf + 52, 32); @@ -360,14 +364,13 @@ int CheckCdrom() { return -1; // SYSTEM.CNF and PSX.EXE not found if (CdromId[0] == '\0') { - i = strlen(exename); - if (i >= 2) { - if (exename[i - 2] == ';') i-= 2; - c = 8; i--; - while (i >= 0 && c >= 0) { - if (isalnum(exename[i])) CdromId[c--] = exename[i]; - i--; - } + len = strlen(exename); + c = 0; + for (i = 0; i < len; ++i) { + if (exename[i] == ';' || c >= sizeof(CdromId) - 1) + break; + if (isalnum(exename[i])) + CdromId[c++] = exename[i]; } } @@ -385,6 +388,7 @@ int CheckCdrom() { } SysPrintf(_("CD-ROM Label: %.32s\n"), CdromLabel); SysPrintf(_("CD-ROM ID: %.9s\n"), CdromId); + SysPrintf(_("CD-ROM EXE Name: %.255s\n"), exename); BuildPPFCache(); @@ -598,11 +602,11 @@ int SaveState(const char *file) { // spu spufP = (SPUFreeze_t *) malloc(16); - SPU_freeze(2, spufP); + SPU_freeze(2, spufP, psxRegs.cycle); Size = spufP->Size; SaveFuncs.write(f, &Size, 4); free(spufP); spufP = (SPUFreeze_t *) malloc(Size); - SPU_freeze(1, spufP); + SPU_freeze(1, spufP, psxRegs.cycle); SaveFuncs.write(f, spufP, Size); free(spufP); @@ -667,7 +671,7 @@ int LoadState(const char *file) { SaveFuncs.read(f, &Size, 4); spufP = (SPUFreeze_t *)malloc(Size); SaveFuncs.read(f, spufP, Size); - SPU_freeze(0, spufP); + SPU_freeze(0, spufP, psxRegs.cycle); free(spufP); sioFreeze(f, 0);