mirror of
https://github.com/holub/mame
synced 2025-05-24 06:30:04 +03:00
NSS: Don't add the DSP since the currently dumped games can do without. (no whatsnew)
This commit is contained in:
parent
319f170519
commit
d31a55243e
@ -295,7 +295,6 @@ Contra III CONTRA_III_1 TC574000 CONTRA_III_0 TC574000 GAME1_NSSU
|
|||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/z80/z80.h"
|
#include "cpu/z80/z80.h"
|
||||||
#include "cpu/upd7725/upd7725.h"
|
|
||||||
#include "includes/snes.h"
|
#include "includes/snes.h"
|
||||||
|
|
||||||
static ADDRESS_MAP_START( snes_map, ADDRESS_SPACE_PROGRAM, 8)
|
static ADDRESS_MAP_START( snes_map, ADDRESS_SPACE_PROGRAM, 8)
|
||||||
@ -484,14 +483,6 @@ static ADDRESS_MAP_START( bios_io_map, ADDRESS_SPACE_IO, 8 )
|
|||||||
|
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( dsp_prg_map, ADDRESS_SPACE_PROGRAM, 32 )
|
|
||||||
AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("dspprg", 0)
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
|
|
||||||
static ADDRESS_MAP_START( dsp_data_map, ADDRESS_SPACE_PROGRAM, 16 )
|
|
||||||
AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("dspdata", 0)
|
|
||||||
ADDRESS_MAP_END
|
|
||||||
|
|
||||||
static MACHINE_START( nss )
|
static MACHINE_START( nss )
|
||||||
{
|
{
|
||||||
UINT8 *ROM = machine->region("bios")->base();
|
UINT8 *ROM = machine->region("bios")->base();
|
||||||
@ -657,10 +648,6 @@ static MACHINE_CONFIG_START( snes, snes_state )
|
|||||||
MCFG_CPU_ADD("soundcpu", SPC700, 2048000/2) /* 2.048 Mhz, but internal divider */
|
MCFG_CPU_ADD("soundcpu", SPC700, 2048000/2) /* 2.048 Mhz, but internal divider */
|
||||||
MCFG_CPU_PROGRAM_MAP(spc_mem)
|
MCFG_CPU_PROGRAM_MAP(spc_mem)
|
||||||
|
|
||||||
MCFG_CPU_ADD("dsp", UPD7725, 8000000)
|
|
||||||
MCFG_CPU_PROGRAM_MAP(dsp_prg_map)
|
|
||||||
MCFG_CPU_DATA_MAP(dsp_data_map)
|
|
||||||
|
|
||||||
// MCFG_QUANTUM_TIME(HZ(24000))
|
// MCFG_QUANTUM_TIME(HZ(24000))
|
||||||
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
MCFG_QUANTUM_PERFECT_CPU("maincpu")
|
||||||
|
|
||||||
@ -704,7 +691,7 @@ MACHINE_CONFIG_END
|
|||||||
#define NSS_BIOS \
|
#define NSS_BIOS \
|
||||||
ROM_REGION(0x100, "user5", 0) /* IPL ROM */ \
|
ROM_REGION(0x100, "user5", 0) /* IPL ROM */ \
|
||||||
ROM_LOAD("spc700.rom", 0, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) ) \
|
ROM_LOAD("spc700.rom", 0, 0x40, CRC(44bb3a40) SHA1(97e352553e94242ae823547cd853eecda55c20f0) ) \
|
||||||
ROM_REGION(0x10000, "addons", ROMREGION_ERASE00) /* add-on chip ROMs (DSP1 could be needed if we dump smk). the second 0x800 host DSP3 ROM in MESS */\
|
ROM_REGION(0x10000, "addons", ROMREGION_ERASE00) /* add-on chip ROMs (DSP1 will be needed if we dump the NSS version of Super Mario Kart)*/\
|
||||||
ROM_LOAD( "dsp1b.bin", SNES_DSP1B_OFFSET, 0x002800, CRC(453557e0) SHA1(3a218b0e4572a8eba6d0121b17fdac9529609220) ) \
|
ROM_LOAD( "dsp1b.bin", SNES_DSP1B_OFFSET, 0x002800, CRC(453557e0) SHA1(3a218b0e4572a8eba6d0121b17fdac9529609220) ) \
|
||||||
ROM_REGION(0x20000, "bios", 0) /* Bios CPU (what is it?) */ \
|
ROM_REGION(0x20000, "bios", 0) /* Bios CPU (what is it?) */ \
|
||||||
ROM_LOAD("nss-c.dat" , 0x10000, 0x8000, CRC(a8e202b3) SHA1(b7afcfe4f5cf15df53452dc04be81929ced1efb2) ) /* bios */ \
|
ROM_LOAD("nss-c.dat" , 0x10000, 0x8000, CRC(a8e202b3) SHA1(b7afcfe4f5cf15df53452dc04be81929ced1efb2) ) /* bios */ \
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include "streams.h"
|
#include "streams.h"
|
||||||
#include "cpu/spc700/spc700.h"
|
#include "cpu/spc700/spc700.h"
|
||||||
#include "cpu/g65816/g65816.h"
|
#include "cpu/g65816/g65816.h"
|
||||||
|
#include "cpu/upd7725/upd7725.h"
|
||||||
#include "audio/snes_snd.h"
|
#include "audio/snes_snd.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -469,6 +470,7 @@ public:
|
|||||||
spc700_device *soundcpu;
|
spc700_device *soundcpu;
|
||||||
snes_sound_device *spc700;
|
snes_sound_device *spc700;
|
||||||
cpu_device *superfx;
|
cpu_device *superfx;
|
||||||
|
upd7725_device *upd7725;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Special chips, checked at init and used in memory handlers */
|
/* Special chips, checked at init and used in memory handlers */
|
||||||
|
@ -36,6 +36,12 @@ static WRITE8_HANDLER(snes_io_dma_w);
|
|||||||
|
|
||||||
struct snes_cart_info snes_cart;
|
struct snes_cart_info snes_cart;
|
||||||
|
|
||||||
|
// DSP accessors
|
||||||
|
#define dsp_get_sr() state->upd7725->snesdsp_read(false)
|
||||||
|
#define dsp_get_dr() state->upd7725->snesdsp_read(true)
|
||||||
|
#define dsp_set_sr(data) state->upd7725->snesdsp_write(false, data)
|
||||||
|
#define dsp_set_dr(data) state->upd7725->snesdsp_write(true, data)
|
||||||
|
|
||||||
// add-on chip emulators
|
// add-on chip emulators
|
||||||
#include "machine/snesobc1.c"
|
#include "machine/snesobc1.c"
|
||||||
#include "machine/snescx4.c"
|
#include "machine/snescx4.c"
|
||||||
@ -278,40 +284,6 @@ static TIMER_CALLBACK(snes_mult_callback)
|
|||||||
snes_ram[RDMPYH] = (c >> 8) & 0xff;
|
snes_ram[RDMPYH] = (c >> 8) & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
|
||||||
|
|
||||||
DSP I/O
|
|
||||||
|
|
||||||
*************************************/
|
|
||||||
static UINT8 dsp_get_sr(running_machine *machine)
|
|
||||||
{
|
|
||||||
upd7725_device *upd7725 = machine->device<upd7725_device>("dsp");
|
|
||||||
|
|
||||||
return upd7725->snesdsp_read(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
static UINT8 dsp_get_dr(running_machine *machine)
|
|
||||||
{
|
|
||||||
upd7725_device *upd7725 = machine->device<upd7725_device>("dsp");
|
|
||||||
|
|
||||||
return upd7725->snesdsp_read(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dsp_set_sr(running_machine *machine, UINT8 data)
|
|
||||||
{
|
|
||||||
upd7725_device *upd7725 = machine->device<upd7725_device>("dsp");
|
|
||||||
|
|
||||||
upd7725->snesdsp_write(false, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void dsp_set_dr(running_machine *machine, UINT8 data)
|
|
||||||
{
|
|
||||||
upd7725_device *upd7725 = machine->device<upd7725_device>("dsp");
|
|
||||||
|
|
||||||
upd7725->snesdsp_write(true, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
|
|
||||||
Input Handlers
|
Input Handlers
|
||||||
@ -968,7 +940,7 @@ READ8_HANDLER( snes_r_bank1 )
|
|||||||
else if (state->has_addon_chip == HAS_OBC1)
|
else if (state->has_addon_chip == HAS_OBC1)
|
||||||
value = obc1_read(space, offset);
|
value = obc1_read(space, offset);
|
||||||
else if ((state->cart[0].mode == SNES_MODE_21) && (state->has_addon_chip == HAS_DSP1) && (offset < 0x100000))
|
else if ((state->cart[0].mode == SNES_MODE_21) && (state->has_addon_chip == HAS_DSP1) && (offset < 0x100000))
|
||||||
value = (address < 0x7000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0x7000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if (state->has_addon_chip == HAS_CX4)
|
else if (state->has_addon_chip == HAS_CX4)
|
||||||
value = CX4_read(address - 0x6000);
|
value = CX4_read(address - 0x6000);
|
||||||
else if (state->has_addon_chip == HAS_SPC7110 || state->has_addon_chip == HAS_SPC7110_RTC)
|
else if (state->has_addon_chip == HAS_SPC7110 || state->has_addon_chip == HAS_SPC7110_RTC)
|
||||||
@ -983,11 +955,11 @@ READ8_HANDLER( snes_r_bank1 )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1) && (offset >= 0x200000))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1) && (offset >= 0x200000))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2) && (offset >= 0x200000))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2) && (offset >= 0x200000))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if ((state->has_addon_chip == HAS_DSP3) && (offset >= 0x200000))
|
else if ((state->has_addon_chip == HAS_DSP3) && (offset >= 0x200000))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else
|
else
|
||||||
value = snes_ram[offset];
|
value = snes_ram[offset];
|
||||||
|
|
||||||
@ -1047,13 +1019,13 @@ READ8_HANDLER( snes_r_bank2 )
|
|||||||
}
|
}
|
||||||
/* some dsp1 games use these banks 0x30 to 0x3f at address 0x8000 */
|
/* some dsp1 games use these banks 0x30 to 0x3f at address 0x8000 */
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if (state->has_addon_chip == HAS_DSP3)
|
else if (state->has_addon_chip == HAS_DSP3)
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if (state->has_addon_chip == HAS_DSP4)
|
else if (state->has_addon_chip == HAS_DSP4)
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else
|
else
|
||||||
value = snes_ram[0x300000 + offset];
|
value = snes_ram[0x300000 + offset];
|
||||||
|
|
||||||
@ -1130,7 +1102,7 @@ READ8_HANDLER( snes_r_bank4 )
|
|||||||
value = snes_ram[0x600000 + offset];
|
value = snes_ram[0x600000 + offset];
|
||||||
/* some other dsp1 games use these banks 0x60 to 0x6f at address 0x0000 */
|
/* some other dsp1 games use these banks 0x60 to 0x6f at address 0x0000 */
|
||||||
else if (state->has_addon_chip == HAS_DSP1)
|
else if (state->has_addon_chip == HAS_DSP1)
|
||||||
value = (address >= 0x4000) ? dsp_get_sr(space->machine) : dsp_get_dr(space->machine);
|
value = (address >= 0x4000) ? dsp_get_sr() : dsp_get_dr();
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
logerror("(PC=%06x) snes_r_bank4: Unmapped external chip read: %04x\n",cpu_get_pc(space->cpu),address);
|
logerror("(PC=%06x) snes_r_bank4: Unmapped external chip read: %04x\n",cpu_get_pc(space->cpu),address);
|
||||||
@ -1218,13 +1190,13 @@ READ8_HANDLER( snes_r_bank6 )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1) && (offset >= 0x200000))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1) && (offset >= 0x200000))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2) && (offset >= 0x200000))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2) && (offset >= 0x200000))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if ((state->has_addon_chip == HAS_DSP3) && (offset >= 0x200000))
|
else if ((state->has_addon_chip == HAS_DSP3) && (offset >= 0x200000))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else if ((state->has_addon_chip == HAS_DSP4) && (offset >= 0x300000))
|
else if ((state->has_addon_chip == HAS_DSP4) && (offset >= 0x300000))
|
||||||
value = (address < 0xc000) ? dsp_get_dr(space->machine) : dsp_get_sr(space->machine);
|
value = (address < 0xc000) ? dsp_get_dr() : dsp_get_sr();
|
||||||
else
|
else
|
||||||
value = snes_ram[0x800000 + offset];
|
value = snes_ram[0x800000 + offset];
|
||||||
|
|
||||||
@ -1314,7 +1286,7 @@ WRITE8_HANDLER( snes_w_bank1 )
|
|||||||
else if (state->has_addon_chip == HAS_OBC1)
|
else if (state->has_addon_chip == HAS_OBC1)
|
||||||
obc1_write(space, offset, data);
|
obc1_write(space, offset, data);
|
||||||
else if ((state->cart[0].mode == SNES_MODE_21) && (state->has_addon_chip == HAS_DSP1) && (offset < 0x100000))
|
else if ((state->cart[0].mode == SNES_MODE_21) && (state->has_addon_chip == HAS_DSP1) && (offset < 0x100000))
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else if (state->has_addon_chip == HAS_CX4)
|
else if (state->has_addon_chip == HAS_CX4)
|
||||||
CX4_write(space->machine, address - 0x6000, data);
|
CX4_write(space->machine, address - 0x6000, data);
|
||||||
else if (state->has_addon_chip == HAS_SPC7110 || state->has_addon_chip == HAS_SPC7110_RTC)
|
else if (state->has_addon_chip == HAS_SPC7110 || state->has_addon_chip == HAS_SPC7110_RTC)
|
||||||
@ -1326,19 +1298,19 @@ WRITE8_HANDLER( snes_w_bank1 )
|
|||||||
logerror("snes_w_bank1: Attempt to write to reserved address: %x = %02x\n", offset, data);
|
logerror("snes_w_bank1: Attempt to write to reserved address: %x = %02x\n", offset, data);
|
||||||
}
|
}
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1) && (offset >= 0x200000))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1) && (offset >= 0x200000))
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2) && (offset >= 0x200000))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2) && (offset >= 0x200000))
|
||||||
{
|
{
|
||||||
if (address < 0xc000)
|
if (address < 0xc000)
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else
|
else
|
||||||
dsp_set_sr(space->machine, data);
|
dsp_set_sr(data);
|
||||||
}
|
}
|
||||||
else if ((state->has_addon_chip == HAS_DSP3) && (offset >= 0x200000))
|
else if ((state->has_addon_chip == HAS_DSP3) && (offset >= 0x200000))
|
||||||
if (address < 0xc000)
|
if (address < 0xc000)
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else
|
else
|
||||||
dsp_set_sr(space->machine, data);
|
dsp_set_sr(data);
|
||||||
else
|
else
|
||||||
logerror( "(PC=%06x) Attempt to write to ROM address: %X\n",cpu_get_pc(space->cpu),offset );
|
logerror( "(PC=%06x) Attempt to write to ROM address: %X\n",cpu_get_pc(space->cpu),offset );
|
||||||
|
|
||||||
@ -1387,24 +1359,19 @@ WRITE8_HANDLER( snes_w_bank2 )
|
|||||||
}
|
}
|
||||||
/* some dsp1 games use these banks 0x30 to 0x3f at address 0x8000 */
|
/* some dsp1 games use these banks 0x30 to 0x3f at address 0x8000 */
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1))
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2))
|
||||||
{
|
{
|
||||||
if (address < 0xc000)
|
if (address < 0xc000)
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else
|
else
|
||||||
dsp_set_sr(space->machine, data);
|
dsp_set_sr(data);
|
||||||
}
|
}
|
||||||
else if (state->has_addon_chip == HAS_DSP3)
|
else if ((state->has_addon_chip == HAS_DSP3) || (state->has_addon_chip == HAS_DSP4))
|
||||||
if (address < 0xc000)
|
if (address < 0xc000)
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else
|
else
|
||||||
dsp_set_sr(space->machine, data);
|
dsp_set_sr(data);
|
||||||
else if (state->has_addon_chip == HAS_DSP4)
|
|
||||||
if (address < 0xc000)
|
|
||||||
dsp_set_dr(space->machine, data);
|
|
||||||
else
|
|
||||||
dsp_set_sr(space->machine, data);
|
|
||||||
else
|
else
|
||||||
logerror("(PC=%06x) Attempt to write to ROM address: %X\n",cpu_get_pc(space->cpu),offset + 0x300000);
|
logerror("(PC=%06x) Attempt to write to ROM address: %X\n",cpu_get_pc(space->cpu),offset + 0x300000);
|
||||||
|
|
||||||
@ -1429,7 +1396,7 @@ WRITE8_HANDLER( snes_w_bank4 )
|
|||||||
if (address >= 0x8000)
|
if (address >= 0x8000)
|
||||||
logerror("(PC=%06x) Attempt to write to ROM address: %X\n",cpu_get_pc(space->cpu),offset + 0x600000);
|
logerror("(PC=%06x) Attempt to write to ROM address: %X\n",cpu_get_pc(space->cpu),offset + 0x600000);
|
||||||
else if (state->has_addon_chip == HAS_DSP1)
|
else if (state->has_addon_chip == HAS_DSP1)
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else
|
else
|
||||||
logerror("snes_w_bank4: Attempt to write to reserved address: %X = %02x\n", offset + 0x600000, data);
|
logerror("snes_w_bank4: Attempt to write to reserved address: %X = %02x\n", offset + 0x600000, data);
|
||||||
}
|
}
|
||||||
@ -1498,24 +1465,24 @@ WRITE8_HANDLER( snes_w_bank6 )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1) && (offset >= 0x200000))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP1) && (offset >= 0x200000))
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2) && (offset >= 0x200000))
|
else if ((state->cart[0].mode == SNES_MODE_20) && (state->has_addon_chip == HAS_DSP2) && (offset >= 0x200000))
|
||||||
{
|
{
|
||||||
if (address < 0xc000)
|
if (address < 0xc000)
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else
|
else
|
||||||
dsp_set_sr(space->machine, data);
|
dsp_set_sr(data);
|
||||||
}
|
}
|
||||||
else if ((state->has_addon_chip == HAS_DSP3) && (offset >= 0x200000))
|
else if ((state->has_addon_chip == HAS_DSP3) && (offset >= 0x200000))
|
||||||
if (address < 0xc000)
|
if (address < 0xc000)
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else
|
else
|
||||||
dsp_set_sr(space->machine, data);
|
dsp_set_sr(data);
|
||||||
else if ((state->has_addon_chip == HAS_DSP4) && (offset >= 0x300000))
|
else if ((state->has_addon_chip == HAS_DSP4) && (offset >= 0x300000))
|
||||||
if (address < 0xc000)
|
if (address < 0xc000)
|
||||||
dsp_set_dr(space->machine, data);
|
dsp_set_dr(data);
|
||||||
else
|
else
|
||||||
dsp_set_sr(space->machine, data);
|
dsp_set_sr(data);
|
||||||
else
|
else
|
||||||
logerror("(PC=%06x) Attempt to write to ROM address: %X\n",cpu_get_pc(space->cpu),offset + 0x800000);
|
logerror("(PC=%06x) Attempt to write to ROM address: %X\n",cpu_get_pc(space->cpu),offset + 0x800000);
|
||||||
|
|
||||||
@ -1708,8 +1675,14 @@ static void snes_init_ram( running_machine *machine )
|
|||||||
snes_ram[WRIO] = 0xff;
|
snes_ram[WRIO] = 0xff;
|
||||||
snes_ram[VMAIN] = 0x80;
|
snes_ram[VMAIN] = 0x80;
|
||||||
|
|
||||||
// assume no DSP and halt it...
|
// see if there's a uPD7725 DSP in the machine config
|
||||||
cputag_set_input_line(machine, "dsp", INPUT_LINE_RESET, ASSERT_LINE);
|
state->upd7725 = machine->device<upd7725_device>("dsp");
|
||||||
|
|
||||||
|
// if we have a DSP, halt it for the moment
|
||||||
|
if (state->upd7725)
|
||||||
|
{
|
||||||
|
cputag_set_input_line(machine, "dsp", INPUT_LINE_RESET, ASSERT_LINE);
|
||||||
|
}
|
||||||
|
|
||||||
switch (state->has_addon_chip)
|
switch (state->has_addon_chip)
|
||||||
{
|
{
|
||||||
@ -1717,8 +1690,15 @@ static void snes_init_ram( running_machine *machine )
|
|||||||
case HAS_DSP2:
|
case HAS_DSP2:
|
||||||
case HAS_DSP3:
|
case HAS_DSP3:
|
||||||
case HAS_DSP4:
|
case HAS_DSP4:
|
||||||
// we do have a DSP, let 'er rip
|
// cartridge uses the DSP, let 'er rip
|
||||||
cputag_set_input_line(machine, "dsp", INPUT_LINE_RESET, CLEAR_LINE);
|
if (state->upd7725)
|
||||||
|
{
|
||||||
|
cputag_set_input_line(machine, "dsp", INPUT_LINE_RESET, CLEAR_LINE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logerror("SNES: We have a DSP, but the machine driver is missing the uPD7725!\n");
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case HAS_RTC:
|
case HAS_RTC:
|
||||||
|
Loading…
Reference in New Issue
Block a user