sh2 overclock and logging stuff, menu refactoring

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@869 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2010-01-29 17:26:40 +00:00
parent b4db550e41
commit fcdefcf62c
16 changed files with 379 additions and 365 deletions

View file

@ -4,6 +4,9 @@
struct Pico32x Pico32x;
SH2 sh2s[2];
int p32x_msh2_multiplier = MSH2_MULTI_DEFAULT;
int p32x_ssh2_multiplier = SSH2_MULTI_DEFAULT;
static int REGPARM(2) sh2_irq_cb(SH2 *sh2, int level)
{
if (sh2->pending_irl > sh2->pending_int_irq) {
@ -194,6 +197,7 @@ static __inline void run_m68k(int cyc)
{
pprof_start(m68k);
p32x_poll_event(3, 0);
#if defined(EMU_C68K)
PicoCpuCM68k.cycles = cyc;
CycloneRun(&PicoCpuCM68k);
@ -210,7 +214,8 @@ static __inline void run_m68k(int cyc)
// ~1463.8, but due to cache misses and slow mem
// it's much lower than that
//#define SH2_LINE_CYCLES 735
#define CYCLES_M68K2SH2(x) ((x) * 6 / 4)
#define CYCLES_M68K2MSH2(x) (((x) * p32x_msh2_multiplier) >> 10)
#define CYCLES_M68K2SSH2(x) (((x) * p32x_ssh2_multiplier) >> 10)
#define PICO_32X
#define CPUS_RUN_SIMPLE(m68k_cycles,s68k_cycles) \
@ -227,12 +232,12 @@ static __inline void run_m68k(int cyc)
elprintf(EL_32X, "slice %d", slice); \
if (!(Pico32x.emu_flags & (P32XF_SSH2POLL|P32XF_SSH2VPOLL))) { \
pprof_start(ssh2); \
sh2_execute(&ssh2, CYCLES_M68K2SH2(slice)); \
sh2_execute(&ssh2, CYCLES_M68K2SSH2(slice)); \
pprof_end(ssh2); \
} \
if (!(Pico32x.emu_flags & (P32XF_MSH2POLL|P32XF_MSH2VPOLL))) { \
pprof_start(msh2); \
sh2_execute(&msh2, CYCLES_M68K2SH2(slice)); \
sh2_execute(&msh2, CYCLES_M68K2MSH2(slice)); \
pprof_end(msh2); \
} \
pprof_start(dummy); \

View file

@ -209,6 +209,14 @@ extern unsigned char *PicoDraw2FB; // buffer for fast renderer in format (8+32
extern unsigned short *PicoCramHigh; // pointer to CRAM buff (0x40 shorts), converted to native device color (works only with 16bit for now)
extern void (*PicoPrepareCram)(); // prepares PicoCramHigh for renderer to use
// 32x/32x.c
// multipliers against 68k clock
extern int p32x_msh2_multiplier;
extern int p32x_ssh2_multiplier;
#define SH2_MULTI_SHIFT 10
#define MSH2_MULTI_DEFAULT ((1 << SH2_MULTI_SHIFT) * 3 / 2)
#define SSH2_MULTI_DEFAULT ((1 << SH2_MULTI_SHIFT) * 3 / 2)
// 32x/draw.c
void PicoDraw32xSetFrameMode(int is_on, int only_32x);
extern int (*PicoScan32xBegin)(unsigned int num);