X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=psp%2Femu.c;h=feab5f56e5939a84eba20101cfcd4376465ca2c6;hb=e99d80480196f551f7e6c06deae3750de19b4c0e;hp=e0e1ca1aca7eaba67bac57c78d35c44a691636b5;hpb=b5bfb86438216d502f1f9ed14b923d3b0107c07d;p=libpicofe.git diff --git a/psp/emu.c b/psp/emu.c index e0e1ca1..feab5f5 100644 --- a/psp/emu.c +++ b/psp/emu.c @@ -89,14 +89,8 @@ void emu_Deinit(void) void pemu_prep_defconfig(void) { - memset(&defaultConfig, 0, sizeof(defaultConfig)); - defaultConfig.EmuOpt = 0x1d | 0x680; // | <- confirm_save, cd_leds, acc rend - defaultConfig.s_PicoOpt = 0x0f | POPT_EN_MCD_PCM|POPT_EN_MCD_CDDA|POPT_EN_MCD_GFX|POPT_ACC_SPRITES; defaultConfig.s_PsndRate = 22050; - defaultConfig.s_PicoRegion = 0; // auto - defaultConfig.s_PicoAutoRgnOrder = 0x184; // US, EU, JP defaultConfig.s_PicoCDBuffers = 64; - defaultConfig.Frameskip = -1; // auto defaultConfig.CPUclock = 333; defaultConfig.KeyBinds[ 4] = 1<<0; // SACB RLDU defaultConfig.KeyBinds[ 6] = 1<<1; @@ -117,7 +111,6 @@ void pemu_prep_defconfig(void) defaultConfig.scale = 1.20; // fullscreen defaultConfig.hscale40 = 1.25; defaultConfig.hscale32 = 1.56; - defaultConfig.turbo_rate = 15; } @@ -261,8 +254,6 @@ static void EmuScanPrepare(void) static int EmuScanSlowBegin(unsigned int num) { - if (!(Pico.video.reg[1]&8)) num += 8; - if (!dynamic_palette) HighCol = (unsigned char *)VRAM_CACHED_STUFF + num * 512 + 8; @@ -271,8 +262,6 @@ static int EmuScanSlowBegin(unsigned int num) static int EmuScanSlowEnd(unsigned int num) { - if (!(Pico.video.reg[1]&8)) num += 8; - if (Pico.m.dirtyPal) { if (!dynamic_palette) { do_slowmode_lines(num); @@ -476,9 +465,8 @@ static void vidResetMode(void) sceGuTexImage(0,512,512,512,(char *)VRAM_STUFF + 16); // slow rend. - PicoDrawSetColorFormat(-1); - PicoScanBegin = EmuScanSlowBegin; - PicoScanEnd = EmuScanSlowEnd; + PicoDrawSetOutFormat(PDF_NONE, 0); + PicoDrawSetCallbacks(EmuScanSlowBegin, EmuScanSlowEnd); localPal[0xe0] = 0; localPal[0xf0] = 0x001f; @@ -649,9 +637,8 @@ static void sound_deinit(void) static void writeSound(int len) { int ret; - if (PicoOpt&8) len<<=1; - PsndOut += len; + PsndOut += len / 2; /*if (PsndOut > sndBuffer_endptr) { memcpy32((int *)(void *)sndBuffer, (int *)endptr, (PsndOut - endptr + 1) / 2); PsndOut = &sndBuffer[PsndOut - endptr]; @@ -663,7 +650,7 @@ static void writeSound(int len) PsndOut = sndBuffer; // signal the snd thread - samples_made += len; + samples_made += len / 2; if (samples_made - samples_done > samples_block*2) { // lprintf("signal, %i/%i\n", samples_done, samples_made); ret = sceKernelSignalSema(sound_sem, 1); @@ -679,13 +666,15 @@ static void SkipFrame(void) PicoSkipFrame=0; } -void pemu_forced_frame(int opts) +void pemu_forced_frame(int no_scale, int do_emu) { int po_old = PicoOpt; int eo_old = currentConfig.EmuOpt; - PicoOpt &= ~0x10; - PicoOpt |= opts|POPT_ACC_SPRITES; + PicoOpt &= ~POPT_ALT_RENDERER; + PicoOpt |= POPT_ACC_SPRITES; + if (!no_scale) + PicoOpt |= POPT_EN_SOFTSCALE; currentConfig.EmuOpt |= 0x80; vidResetMode(); @@ -693,9 +682,8 @@ void pemu_forced_frame(int opts) memset32((int *)VRAM_CACHED_STUFF + 512*232/4, 0xe0e0e0e0, 512*8/4); memset32_uncached((int *)psp_screen + 512*264*2/4, 0, 512*8*2/4); - PicoDrawSetColorFormat(-1); - PicoScanBegin = EmuScanSlowBegin; - PicoScanEnd = EmuScanSlowEnd; + PicoDrawSetOutFormat(PDF_NONE, 0); + PicoDrawSetCallbacks(EmuScanSlowBegin, EmuScanSlowEnd); EmuScanPrepare(); PicoFrameDrawOnly(); blit1();