allow compiling without 32x and sms code

git-svn-id: file:///home/notaz/opt/svn/PicoDrive@877 be3aeb3a-fb24-0410-a615-afba39da0efa
This commit is contained in:
notaz 2010-06-02 09:44:51 +00:00
parent 46bcb89971
commit f3a57b2d6c
10 changed files with 74 additions and 13 deletions

View file

@ -188,10 +188,11 @@ enum cmd_ret_e {
static int do_print(struct pdb_cpu *cpu, const char *args)
{
int i;
elprintf(EL_STATUS, "cpu %d (%s)", cpu->id, cpu->name);
#ifndef NO_32X
if (cpu->type == PDBCT_SH2) {
SH2 *sh2 = cpu->context;
int i;
printf("PC,SR %08x, %03x\n", sh2->pc, sh2->sr & 0x3ff);
for (i = 0; i < 16/2; i++)
printf("R%d,%2d %08x,%08x\n", i, i + 8, sh2->r[i], sh2->r[i + 8]);
@ -200,6 +201,7 @@ static int do_print(struct pdb_cpu *cpu, const char *args)
Pico32x.sh2irq_mask[sh2->is_slave]);
printf("cycles %d/%d (%d)\n", sh2->cycles_done, sh2->cycles_aim, (signed int)sh2->sr >> 12);
}
#endif
return CMDRET_DONE;
}

View file

@ -4,9 +4,6 @@
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) {

View file

@ -56,6 +56,7 @@ char *PDebugMain(void)
char *PDebug32x(void)
{
#ifndef NO_32X
char *dstrp = dstr;
unsigned short *r;
int i;
@ -85,6 +86,9 @@ char *PDebug32x(void)
sprintf(dstrp, "gb,vb %08x,%08x %08x,%08x\n", sh2_gbr(0), sh2_vbr(0), sh2_gbr(1), sh2_vbr(1)); MVP;
sprintf(dstrp, "IRQs/mask: %02x/%02x %02x/%02x\n",
Pico32x.sh2irqi[0], Pico32x.sh2irq_mask[0], Pico32x.sh2irqi[1], Pico32x.sh2irq_mask[1]); MVP;
#else
dstr[0] = 0;
#endif
return dstr;
}
@ -329,6 +333,7 @@ void PDebugDumpMem(void)
dump_ram_noswab(Pico_mcd->bram, "dumps/bram.bin");
}
#ifndef NO_32X
if (PicoAHW & PAHW_32X)
{
dump_ram(Pico32xMem->sdram, "dumps/sdram.bin");
@ -338,6 +343,7 @@ void PDebugDumpMem(void)
dump_ram(Pico32xMem->data_array[0], "dumps/data_array0.bin");
dump_ram(Pico32xMem->data_array[1], "dumps/data_array1.bin");
}
#endif
}
void PDebugZ80Frame(void)

View file

@ -1058,6 +1058,14 @@ void ym2612_unpack_state(void)
elprintf(EL_YMTIMER, "load: %i/%i, timer_b_next_oflow %i", tbt>>16, tbc>>16, timer_b_next_oflow >> 8);
}
#if defined(NO_32X) && defined(_ASM_MEMORY_C)
// referenced by asm code
u32 PicoRead8_32x(u32 a) { return 0; }
u32 PicoRead16_32x(u32 a) { return 0; }
void PicoWrite8_32x(u32 a, u32 d) {}
void PicoWrite16_32x(u32 a, u32 d) {}
#endif
// -----------------------------------------------------------------
// z80 memhandlers

View file

@ -23,6 +23,9 @@ struct PicoSRAM SRam;
int emustatus; // rapid_ym2612, multi_ym_updates
int scanlines_total;
int p32x_msh2_multiplier = MSH2_MULTI_DEFAULT;
int p32x_ssh2_multiplier = SSH2_MULTI_DEFAULT;
void (*PicoWriteSound)(int len) = NULL; // called at the best time to send sound buffer (PsndOut) to hardware
void (*PicoResetHook)(void) = NULL;
void (*PicoLineHook)(void) = NULL;

View file

@ -101,7 +101,7 @@ extern void (*PicoMCDopenTray)(void);
extern void (*PicoMCDcloseTray)(void);
extern int PicoCDBuffers;
// Pico/Pico.c
// pico.c
#define XPCM_BUFFER_SIZE (320+160)
typedef struct
{
@ -209,7 +209,7 @@ 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
// pico.c (32x)
// multipliers against 68k clock
extern int p32x_msh2_multiplier;
extern int p32x_ssh2_multiplier;

View file

@ -684,14 +684,24 @@ PICO_INTERNAL void PsndGetSamplesMS(void);
extern int PsndDacLine;
// sms.c
#ifndef NO_SMS
void PicoPowerMS(void);
void PicoResetMS(void);
void PicoMemSetupMS(void);
void PicoStateLoadedMS(void);
void PicoFrameMS(void);
void PicoFrameDrawOnlyMS(void);
#else
#define PicoPowerMS()
#define PicoResetMS()
#define PicoMemSetupMS()
#define PicoStateLoadedMS()
#define PicoFrameMS()
#define PicoFrameDrawOnlyMS()
#endif
// 32x/32x.c
#ifndef NO_32X
extern struct Pico32x Pico32x;
void Pico32xInit(void);
void PicoPower32x(void);
@ -731,6 +741,18 @@ void p32x_pwm_update(int *buf32, int length, int stereo);
void p32x_timers_do(int line_call);
void p32x_timers_recalc(void);
extern int pwm_frame_smp_cnt;
#else
#define Pico32xInit()
#define PicoPower32x()
#define PicoReset32x()
#define PicoFrame32x()
#define PicoUnload32x()
#define Pico32xStateLoaded()
#define PicoDraw32xSetFrameMode(...)
#define FinalizeLine32xRGB555 NULL
#define p32x_pwm_update(...)
#define p32x_timers_recalc()
#endif
/* avoid dependency on newer glibc */
static __inline int isspace_(int c)

View file

@ -308,6 +308,7 @@ static int state_save(void *file)
wram_2M_to_1M(Pico_mcd->word_ram2M);
}
#ifndef NO_32X
if (PicoAHW & PAHW_32X)
{
unsigned char cpubuff[SH2_STATE_SIZE];
@ -332,6 +333,7 @@ static int state_save(void *file)
CHECKED_WRITE_BUFF(CHUNK_DRAM, Pico32xMem->dram);
CHECKED_WRITE_BUFF(CHUNK_32XPAL, Pico32xMem->pal);
}
#endif
if (carthw_chunks != NULL)
{
@ -451,6 +453,7 @@ static int state_load(void *file)
case CHUNK_MISC_CD: CHECKED_READ_BUFF(Pico_mcd->m); break;
// 32x stuff
#ifndef NO_32X
case CHUNK_MSH2:
CHECKED_READ_BUFF(buff_sh2);
sh2_unpack(&sh2s[0], buff_sh2);
@ -472,7 +475,7 @@ static int state_load(void *file)
case CHUNK_SDRAM: CHECKED_READ_BUFF(Pico32xMem->sdram); break;
case CHUNK_DRAM: CHECKED_READ_BUFF(Pico32xMem->dram); break;
case CHUNK_32XPAL: CHECKED_READ_BUFF(Pico32xMem->pal); break;
#endif
default:
if (carthw_chunks != NULL)
{
@ -546,6 +549,7 @@ static int state_load_gfx(void *file)
case CHUNK_VSRAM: CHECKED_READ_BUFF(Pico.vsram); found++; break;
case CHUNK_VIDEO: CHECKED_READ_BUFF(Pico.video); found++; break;
#ifndef NO_32X
case CHUNK_DRAM:
if (Pico32xMem != NULL)
CHECKED_READ_BUFF(Pico32xMem->dram);
@ -560,7 +564,7 @@ static int state_load_gfx(void *file)
case CHUNK_32XSYS:
CHECKED_READ_BUFF(Pico32x);
break;
#endif
default:
areaSeek(file, len, SEEK_CUR);
break;
@ -652,11 +656,13 @@ void *PicoTmpStateSave(void)
memcpy(t->vsram, Pico.vsram, sizeof(Pico.vsram));
memcpy(&t->video, &Pico.video, sizeof(Pico.video));
#ifndef NO_32X
if (PicoAHW & PAHW_32X) {
memcpy(&t->t32x.p32x, &Pico32x, sizeof(Pico32x));
memcpy(t->t32x.dram, Pico32xMem->dram, sizeof(Pico32xMem->dram));
memcpy(t->t32x.pal, Pico32xMem->pal, sizeof(Pico32xMem->pal));
}
#endif
return t;
}
@ -673,12 +679,14 @@ void PicoTmpStateRestore(void *data)
memcpy(&Pico.video, &t->video, sizeof(Pico.video));
Pico.m.dirtyPal = 1;
#ifndef NO_32X
if (PicoAHW & PAHW_32X) {
memcpy(&Pico32x, &t->t32x.p32x, sizeof(Pico32x));
memcpy(Pico32xMem->dram, t->t32x.dram, sizeof(Pico32xMem->dram));
memcpy(Pico32xMem->pal, t->t32x.pal, sizeof(Pico32xMem->pal));
Pico32x.dirty_pal = 1;
}
#endif
}
// vim:shiftwidth=2:expandtab

View file

@ -26,14 +26,24 @@ endif
# === Pico core ===
# Pico
OBJS += pico/state.o pico/cart.o pico/memory.o pico/pico.o pico/sek.o pico/z80if.o \
pico/videoport.o pico/draw2.o pico/draw.o pico/mode4.o pico/sms.o \
pico/videoport.o pico/draw2.o pico/draw.o pico/mode4.o \
pico/misc.o pico/eeprom.o pico/patch.o pico/debug.o
# SMS
ifneq "$(no_sms)" "1"
OBJS += pico/sms.o
else
DEFINES += NO_SMS
endif
# CD
OBJS += pico/cd/pico.o pico/cd/memory.o pico/cd/sek.o pico/cd/LC89510.o \
pico/cd/cd_sys.o pico/cd/cd_file.o pico/cd/cue.o pico/cd/gfx_cd.o \
pico/cd/misc.o pico/cd/pcm.o pico/cd/buffering.o
# 32X
ifneq "$(no_32x)" "1"
OBJS += pico/32x/32x.o pico/32x/memory.o pico/32x/draw.o pico/32x/pwm.o
else
DEFINES += NO_32X
endif
# Pico
OBJS += pico/pico/pico.o pico/pico/memory.o pico/pico/xpcm.o
# carthw
@ -73,8 +83,9 @@ OBJS += cpu/cz80/cz80.o
endif
# --- SH2 ---
OBJS += cpu/sh2/sh2.o
OBJS += cpu/drc/cmn.o
ifneq "$(no_32x)" "1"
OBJS += cpu/sh2/sh2.o
#
ifeq "$(use_sh2drc)" "1"
DEFINES += DRC_SH2
@ -89,11 +100,12 @@ ifeq "$(drc_debug_interp)" "1"
DEFINES += DRC_DEBUG_INTERP
use_sh2mame = 1
endif
endif
endif # use_sh2drc
#
ifeq "$(use_sh2mame)" "1"
OBJS += cpu/sh2/mame/sh2pico.o
endif
endif # !no_32x
DIRS += platform platform/common pico pico/cd pico/pico pico/32x pico/sound pico/carthw/svp \

View file

@ -453,11 +453,14 @@ static void shutdown_MCD(void)
static void system_announce(void)
{
const char *sys_name, *tv_standard;
const char *sys_name, *tv_standard, *extra = "";
int fps;
if (PicoAHW & PAHW_SMS) {
sys_name = "Master System";
#ifdef NO_SMS
extra = " [no support]";
#endif
} else if (PicoAHW & PAHW_PICO) {
sys_name = "Pico";
} else if (PicoAHW & PAHW_MCD) {
@ -474,7 +477,7 @@ static void system_announce(void)
tv_standard = Pico.m.pal ? "PAL" : "NTSC";
fps = Pico.m.pal ? 50 : 60;
emu_status_msg("%s %s / %dFPS", tv_standard, sys_name, fps);
emu_status_msg("%s %s / %dFPS%s", tv_standard, sys_name, fps, extra);
}
// note: this function might mangle rom_fname