-// (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 <sys/stat.h>
#include <sys/types.h>
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
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);
}
static void EmuScanPrepare(void)
{
- HighCol = (unsigned char *)VRAM_CACHED_STUFF + 8;
- if (!(Pico.video.reg[1]&8)) HighCol += 8*512;
+ Pico.est.HighCol = (unsigned char *)VRAM_CACHED_STUFF + 8;
+ if (!(Pico.video.reg[1]&8)) Pico.est.HighCol += 8*512;
if (dynamic_palette > 0)
dynamic_palette--;
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;
}
static int EmuScanSlowBegin(unsigned int num)
{
if (!dynamic_palette)
- HighCol = (unsigned char *)VRAM_CACHED_STUFF + num * 512 + 8;
+ Pico.est.HighCol = (unsigned char *)VRAM_CACHED_STUFF + num * 512 + 8;
return 0;
}
if (dynamic_palette) {
int line_len = (Pico.video.reg[12]&1) ? 320 : 256;
void *dst = (char *)VRAM_STUFF + 512*240 + 512*2*num;
- amips_clut_f(dst, HighCol + 8, localPal, line_len);
+ amips_clut_f(dst, Pico.est.HighCol + 8, localPal, line_len);
}
return 0;
// slow rend.
PicoDrawSetOutFormat(PDF_NONE, 0);
- PicoScanBegin = EmuScanSlowBegin;
- PicoScanEnd = EmuScanSlowEnd;
+ PicoDrawSetCallbacks(EmuScanSlowBegin, EmuScanSlowEnd);
localPal[0xe0] = 0;
localPal[0xf0] = 0x001f;
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];
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);
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();
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();