mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
made jaguar coexist in mame and mess (no whatsnew)
This commit is contained in:
parent
8bc257d20e
commit
ee97679d8f
@ -262,7 +262,9 @@ void cojag_sound_init(running_machine &machine)
|
||||
}
|
||||
|
||||
#if ENABLE_SPEEDUP_HACKS
|
||||
machine.device("audiocpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0xf1a100, 0xf1a103, FUNC(dsp_flags_w));
|
||||
if (jaguar_hacks_enabled)
|
||||
machine.device("audiocpu")->memory().space(AS_PROGRAM)->install_legacy_write_handler(0xf1a100, 0xf1a103, FUNC(dsp_flags_w));
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -369,18 +371,24 @@ static WRITE32_HANDLER( dsp_flags_w )
|
||||
|
||||
TIMER_DEVICE_CALLBACK( jaguar_serial_callback )
|
||||
{
|
||||
/* assert the A2S IRQ on CPU #2 (DSP) */
|
||||
cputag_set_input_line(timer.machine(), "audiocpu", 1, ASSERT_LINE);
|
||||
jaguar_dsp_resume(timer.machine());
|
||||
if (jaguar_hacks_enabled) {
|
||||
/* assert the A2S IRQ on CPU #2 (DSP) */
|
||||
cputag_set_input_line(timer.machine(), "audiocpu", 1, ASSERT_LINE);
|
||||
jaguar_dsp_resume(timer.machine());
|
||||
|
||||
/* fix flaky code in interrupt handler which thwarts our speedup */
|
||||
if ((jaguar_dsp_ram[0x3e/4] & 0xffff) == 0xbfbc &&
|
||||
(jaguar_dsp_ram[0x42/4] & 0xffff) == 0xe400)
|
||||
{
|
||||
/* move the store r28,(r29) into the branch delay slot, swapping it with */
|
||||
/* the nop that's currently there */
|
||||
jaguar_dsp_ram[0x3e/4] = (jaguar_dsp_ram[0x3e/4] & 0xffff0000) | 0xe400;
|
||||
jaguar_dsp_ram[0x42/4] = (jaguar_dsp_ram[0x42/4] & 0xffff0000) | 0xbfbc;
|
||||
/* fix flaky code in interrupt handler which thwarts our speedup */
|
||||
if ((jaguar_dsp_ram[0x3e/4] & 0xffff) == 0xbfbc &&
|
||||
(jaguar_dsp_ram[0x42/4] & 0xffff) == 0xe400)
|
||||
{
|
||||
/* move the store r28,(r29) into the branch delay slot, swapping it with */
|
||||
/* the nop that's currently there */
|
||||
jaguar_dsp_ram[0x3e/4] = (jaguar_dsp_ram[0x3e/4] & 0xffff0000) | 0xe400;
|
||||
jaguar_dsp_ram[0x42/4] = (jaguar_dsp_ram[0x42/4] & 0xffff0000) | 0xbfbc;
|
||||
}
|
||||
} else {
|
||||
/* assert the A2S IRQ on CPU #2 (DSP) */
|
||||
cputag_set_input_line(timer.machine(), "audiocpu", 1, ASSERT_LINE);
|
||||
jaguar_dsp_resume(timer.machine());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -390,6 +390,7 @@ UINT32 *jaguar_dsp_ram;
|
||||
UINT32 *jaguar_wave_rom;
|
||||
UINT32* high_rom_base;
|
||||
UINT8 cojag_is_r3000;
|
||||
bool jaguar_hacks_enabled;
|
||||
static int is_jaguar;
|
||||
|
||||
|
||||
@ -950,7 +951,7 @@ static READ32_HANDLER( gpu_jump_r )
|
||||
{
|
||||
#if ENABLE_SPEEDUP_HACKS
|
||||
/* spin if we're allowed */
|
||||
jaguar_gpu_suspend(space->machine());
|
||||
if (jaguar_hacks_enabled) jaguar_gpu_suspend(space->machine());
|
||||
#endif
|
||||
|
||||
/* no command is pending */
|
||||
@ -1800,6 +1801,7 @@ static void jaguar_fix_endian( running_machine &machine, UINT32 addr, UINT32 siz
|
||||
|
||||
static DRIVER_INIT( jaguar )
|
||||
{
|
||||
jaguar_hacks_enabled = false;
|
||||
state_save_register_global(machine, joystick_data);
|
||||
using_cart = 0;
|
||||
|
||||
@ -2317,6 +2319,7 @@ static void cojag_common_init(running_machine &machine, UINT16 gpu_jump_offs, UI
|
||||
|
||||
static DRIVER_INIT( area51a )
|
||||
{
|
||||
jaguar_hacks_enabled = true;
|
||||
cojag_common_init(machine, 0x5c4, 0x5a0);
|
||||
|
||||
#if ENABLE_SPEEDUP_HACKS
|
||||
@ -2332,6 +2335,7 @@ static DRIVER_INIT( area51a )
|
||||
|
||||
static DRIVER_INIT( area51 )
|
||||
{
|
||||
jaguar_hacks_enabled = true;
|
||||
cojag_common_init(machine, 0x0c0, 0x09e);
|
||||
|
||||
#if ENABLE_SPEEDUP_HACKS
|
||||
@ -2347,6 +2351,7 @@ static DRIVER_INIT( area51 )
|
||||
|
||||
static DRIVER_INIT( maxforce )
|
||||
{
|
||||
jaguar_hacks_enabled = true;
|
||||
cojag_state *state = machine.driver_data<cojag_state>();
|
||||
cojag_common_init(machine, 0x0c0, 0x09e);
|
||||
|
||||
@ -2363,6 +2368,7 @@ static DRIVER_INIT( maxforce )
|
||||
|
||||
static DRIVER_INIT( area51mx )
|
||||
{
|
||||
jaguar_hacks_enabled = true;
|
||||
cojag_state *state = machine.driver_data<cojag_state>();
|
||||
cojag_common_init(machine, 0x0c0, 0x09e);
|
||||
|
||||
@ -2378,6 +2384,7 @@ static DRIVER_INIT( area51mx )
|
||||
|
||||
static DRIVER_INIT( a51mxr3k )
|
||||
{
|
||||
jaguar_hacks_enabled = true;
|
||||
cojag_state *state = machine.driver_data<cojag_state>();
|
||||
cojag_common_init(machine, 0x0c0, 0x09e);
|
||||
|
||||
@ -2394,6 +2401,7 @@ static DRIVER_INIT( a51mxr3k )
|
||||
|
||||
static DRIVER_INIT( fishfren )
|
||||
{
|
||||
jaguar_hacks_enabled = true;
|
||||
cojag_common_init(machine, 0x578, 0x554);
|
||||
|
||||
#if ENABLE_SPEEDUP_HACKS
|
||||
@ -2425,16 +2433,17 @@ static void init_freeze_common(running_machine &machine, offs_t main_speedup_add
|
||||
#endif
|
||||
}
|
||||
|
||||
static DRIVER_INIT( freezeat ) { init_freeze_common(machine, 0x1001a9f4); }
|
||||
static DRIVER_INIT( freezeat2 ) { init_freeze_common(machine, 0x1001a8c4); }
|
||||
static DRIVER_INIT( freezeat3 ) { init_freeze_common(machine, 0x1001a134); }
|
||||
static DRIVER_INIT( freezeat4 ) { init_freeze_common(machine, 0x1001a134); }
|
||||
static DRIVER_INIT( freezeat5 ) { init_freeze_common(machine, 0x10019b34); }
|
||||
static DRIVER_INIT( freezeat6 ) { init_freeze_common(machine, 0x10019684); }
|
||||
static DRIVER_INIT( freezeat ) { jaguar_hacks_enabled = true; init_freeze_common(machine, 0x1001a9f4); }
|
||||
static DRIVER_INIT( freezeat2 ) { jaguar_hacks_enabled = true; init_freeze_common(machine, 0x1001a8c4); }
|
||||
static DRIVER_INIT( freezeat3 ) { jaguar_hacks_enabled = true; init_freeze_common(machine, 0x1001a134); }
|
||||
static DRIVER_INIT( freezeat4 ) { jaguar_hacks_enabled = true; init_freeze_common(machine, 0x1001a134); }
|
||||
static DRIVER_INIT( freezeat5 ) { jaguar_hacks_enabled = true; init_freeze_common(machine, 0x10019b34); }
|
||||
static DRIVER_INIT( freezeat6 ) { jaguar_hacks_enabled = true; init_freeze_common(machine, 0x10019684); }
|
||||
|
||||
|
||||
static DRIVER_INIT( vcircle )
|
||||
{
|
||||
jaguar_hacks_enabled = true;
|
||||
cojag_common_init(machine, 0x5c0, 0x5a0);
|
||||
|
||||
#if ENABLE_SPEEDUP_HACKS
|
||||
|
@ -5,11 +5,7 @@
|
||||
*************************************************************************/
|
||||
|
||||
#ifndef ENABLE_SPEEDUP_HACKS
|
||||
#ifndef MESS
|
||||
#define ENABLE_SPEEDUP_HACKS 1
|
||||
#else
|
||||
#define ENABLE_SPEEDUP_HACKS 0
|
||||
#endif /* MESS */
|
||||
#endif
|
||||
|
||||
/* CoJag and Jaguar have completely different XTALs, pixel clock in Jaguar is the same as the GPU one */
|
||||
@ -26,6 +22,7 @@ extern UINT32 *jaguar_gpu_ram;
|
||||
extern UINT32 *jaguar_gpu_clut;
|
||||
extern UINT32 *jaguar_dsp_ram;
|
||||
extern UINT32 *jaguar_wave_rom;
|
||||
extern bool jaguar_hacks_enabled;
|
||||
|
||||
/*----------- defined in audio/jaguar.c -----------*/
|
||||
|
||||
|
@ -972,10 +972,8 @@ static UINT32 *process_branch(running_machine &machine, UINT32 *objdata, int vc,
|
||||
UINT32 link = (lower >> 24) | ((upper & 0x7ff) << 8);
|
||||
int taken = 0;
|
||||
|
||||
#ifndef MESS
|
||||
if ((ypos & 1) && ypos != 0x7ff)
|
||||
fprintf(stderr, " branch cc=%d ypos=%X link=%06X - \n", cc, ypos, link << 3);
|
||||
#endif
|
||||
// if ((ypos & 1) && ypos != 0x7ff)
|
||||
// fprintf(stderr, " branch cc=%d ypos=%X link=%06X - \n", cc, ypos, link << 3);
|
||||
|
||||
switch (cc)
|
||||
{
|
||||
@ -1091,9 +1089,7 @@ static void process_object_list(running_machine &machine, int vc, UINT16 *_scanl
|
||||
logerror("stop = %08X-%08X\n", objdata[0], objdata[1]);
|
||||
if (interrupt)
|
||||
{
|
||||
#ifndef MESS
|
||||
fprintf(stderr, "stop int=%d\n", interrupt);
|
||||
#endif
|
||||
// fprintf(stderr, "stop int=%d\n", interrupt);
|
||||
cpu_irq_state |= 4;
|
||||
update_cpu_irq(machine);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user