void psxShutdown() { psxMemShutdown(); psxBiosShutdown(); psxCpu->Shutdown(); SPUclose(); }
int psxMemInit() { int i; psxMemRLUT = (u8 **)malloc(0x10000 * sizeof(void *)); psxMemWLUT = (u8 **)malloc(0x10000 * sizeof(void *)); memset(psxMemRLUT, 0, 0x10000 * sizeof(void *)); memset(psxMemWLUT, 0, 0x10000 * sizeof(void *)); psxM = psxMap(0x80000000, 0x00210000, 1, MAP_TAG_RAM); #ifndef RAM_FIXED #ifdef __BLACKBERRY_QNX__ if (psxM == NULL) psxM = psxMap(0x77000000, 0x00210000, 0, MAP_TAG_RAM); #else if (psxM == NULL) psxM = psxMap(0x78000000, 0x00210000, 0, MAP_TAG_RAM); #endif #endif if (psxM == NULL) { SysMessage(_("mapping main RAM failed")); return -1; } psxP = &psxM[0x200000]; psxH = psxMap(0x1f800000, 0x10000, 1, MAP_TAG_OTHER); psxR = psxMap(0x1fc00000, 0x80000, 0, MAP_TAG_OTHER); if (psxMemRLUT == NULL || psxMemWLUT == NULL || psxR == NULL || psxP == NULL || psxH != (void *)0x1f800000) { SysMessage(_("Error allocating memory!")); psxMemShutdown(); return -1; } // MemR for (i = 0; i < 0x80; i++) psxMemRLUT[i + 0x0000] = (u8 *)&psxM[(i & 0x1f) << 16]; memcpy(psxMemRLUT + 0x8000, psxMemRLUT, 0x80 * sizeof(void *)); memcpy(psxMemRLUT + 0xa000, psxMemRLUT, 0x80 * sizeof(void *)); psxMemRLUT[0x1f00] = (u8 *)psxP; psxMemRLUT[0x1f80] = (u8 *)psxH; for (i = 0; i < 0x08; i++) psxMemRLUT[i + 0x1fc0] = (u8 *)&psxR[i << 16]; memcpy(psxMemRLUT + 0x9fc0, psxMemRLUT + 0x1fc0, 0x08 * sizeof(void *)); memcpy(psxMemRLUT + 0xbfc0, psxMemRLUT + 0x1fc0, 0x08 * sizeof(void *)); // MemW for (i = 0; i < 0x80; i++) psxMemWLUT[i + 0x0000] = (u8 *)&psxM[(i & 0x1f) << 16]; memcpy(psxMemWLUT + 0x8000, psxMemWLUT, 0x80 * sizeof(void *)); memcpy(psxMemWLUT + 0xa000, psxMemWLUT, 0x80 * sizeof(void *)); psxMemWLUT[0x1f00] = (u8 *)psxP; psxMemWLUT[0x1f80] = (u8 *)psxH; return 0; }
//#include <android/log.h> void psxShutdown() { //__android_log_print(ANDROID_LOG_VERBOSE, "SexyPSF", "SHUTDOWN"); fprintf(stderr, "SURE"); psxMemShutdown(); psxBiosShutdown(); psxCpu->Shutdown(); SPUclose(); }