X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=platform%2Fpsp%2Femu.c;h=8deb7fd32c33721fe5dc2b8475cd5cdab13529fb;hb=ea38612fad50103e224a3d00492d40b7dcff9e94;hp=77b20d1916c1febf43f2128fabe7363667af3f70;hpb=74e1b42b9256870c7e9f70f5b4ca71ed0e8a63d5;p=picodrive.git diff --git a/platform/psp/emu.c b/platform/psp/emu.c index 77b20d1..8deb7fd 100644 --- a/platform/psp/emu.c +++ b/platform/psp/emu.c @@ -1,7 +1,10 @@ -// (c) Copyright 2007 notaz, All rights reserved. -// Free for non-commercial use. - -// For commercial use, separate licencing terms must be obtained. +/* + * PicoDrive + * (C) notaz, 2007,2008 + * + * This work is licensed under the terms of MAME license. + * See COPYING file in the top-level directory. + */ #include #include @@ -33,7 +36,7 @@ int sceAudio_E0727056(int volume, void *buffer); // blocking output int sceAudioOutput2GetRestSample(); -unsigned char *PicoDraw2FB = (unsigned char *)VRAM_CACHED_STUFF + 8; // +8 to be able to skip border with 1 quadword.. +//unsigned char *PicoDraw2FB = (unsigned char *)VRAM_CACHED_STUFF + 8; // +8 to be able to skip border with 1 quadword.. int engineStateSuspend; #define PICO_PEN_ADJUST_X 4 @@ -220,7 +223,7 @@ static void do_pal_update(int allow_sh, int allow_as) localPal[0xe0] = 0; localPal[0xf0] = 0x001f; } - else if (allow_as && (rendstatus & PDRAW_SPR_LO_ON_HI)) + else if (allow_as && (Pico.est.rendstatus & PDRAW_SPR_LO_ON_HI)) { memcpy32((int *)dpal+0x80/2, (void *)localPal, 0x40*2/4); } @@ -247,7 +250,7 @@ static void EmuScanPrepare(void) if (Pico.m.dirtyPal) do_pal_update(1, 1); - if ((rendstatus & PDRAW_SPR_LO_ON_HI) && !(Pico.video.reg[0xC]&8)) + if ((Pico.est.rendstatus & PDRAW_SPR_LO_ON_HI) && !(Pico.video.reg[0xC]&8)) amips_clut_f = amips_clut_6bit; else amips_clut_f = amips_clut; } @@ -466,8 +469,7 @@ static void vidResetMode(void) // slow rend. PicoDrawSetOutFormat(PDF_NONE, 0); - PicoScanBegin = EmuScanSlowBegin; - PicoScanEnd = EmuScanSlowEnd; + PicoDrawSetCallbacks(EmuScanSlowBegin, EmuScanSlowEnd); localPal[0xe0] = 0; localPal[0xf0] = 0x001f; @@ -638,9 +640,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]; @@ -652,7 +653,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); @@ -668,13 +669,15 @@ static void SkipFrame(void) PicoSkipFrame=0; } -void pemu_forced_frame(int opts, int no_scale) +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(); @@ -683,8 +686,7 @@ void pemu_forced_frame(int opts, int no_scale) memset32_uncached((int *)psp_screen + 512*264*2/4, 0, 512*8*2/4); PicoDrawSetOutFormat(PDF_NONE, 0); - PicoScanBegin = EmuScanSlowBegin; - PicoScanEnd = EmuScanSlowEnd; + PicoDrawSetCallbacks(EmuScanSlowBegin, EmuScanSlowEnd); EmuScanPrepare(); PicoFrameDrawOnly(); blit1();