summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/model2.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/model2.cpp')
-rw-r--r--src/mame/drivers/model2.cpp1173
1 files changed, 560 insertions, 613 deletions
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp
index 624bd2eb24d..e304ab9ed16 100644
--- a/src/mame/drivers/model2.cpp
+++ b/src/mame/drivers/model2.cpp
@@ -11,7 +11,6 @@
TODO:
- z-sort, focal distance, color gamma and Mip Mapping still needs to be properly sorted in the renderer;
- - FIFO needs to be properly emulated in the various CPU cores (we currently rely on some workarounds);
- sound comms still needs some work (sometimes m68k doesn't get some commands or play them with a delay);
- 2C games needs TGPx4 emulation;
- outputs and artwork (for gearbox indicators);
@@ -92,9 +91,6 @@
#include "cpu/i960/i960.h"
#include "cpu/m68000/m68000.h"
-#include "cpu/mb86233/mb86233.h"
-#include "cpu/mb86235/mb86235.h"
-#include "cpu/sharc/sharc.h"
#include "cpu/z80/z80.h"
#include "machine/clock.h"
#include "machine/cxd1095.h"
@@ -107,205 +103,6 @@
#include "speaker.h"
-enum {
- DSP_TYPE_TGP = 1,
- DSP_TYPE_SHARC = 2,
- DSP_TYPE_TGPX4 = 3
-};
-
-
-#define COPRO_FIFOIN_SIZE 32000
-bool model2_state::copro_fifoin_pop(device_t *device, uint32_t *result,uint32_t offset, uint32_t mem_mask)
-{
- uint32_t r;
-
- if (m_copro_fifoin_num == 0)
- {
- if (m_dsp_type == DSP_TYPE_TGP)
- return false;
-
- fatalerror("Copro FIFOIN underflow (at %08X)\n", device->safe_pc());
- }
-
- r = m_copro_fifoin_data[m_copro_fifoin_rpos++];
-
- if (m_copro_fifoin_rpos == COPRO_FIFOIN_SIZE)
- {
- m_copro_fifoin_rpos = 0;
- }
-
- m_copro_fifoin_num--;
- if (m_dsp_type == DSP_TYPE_SHARC)
- {
- if (m_copro_fifoin_num == 0)
- {
- dynamic_cast<adsp21062_device *>(device)->set_flag_input(0, ASSERT_LINE);
- }
- else
- {
- dynamic_cast<adsp21062_device *>(device)->set_flag_input(0, CLEAR_LINE);
- }
- }
-
- *result = r;
-
- return true;
-}
-
-READ_LINE_MEMBER(model2_state::copro_tgp_fifoin_pop_ok)
-{
- if (m_copro_fifoin_num == 0)
- {
- return CLEAR_LINE;
- }
-
- return ASSERT_LINE;
-}
-
-
-READ32_MEMBER(model2_state::copro_tgp_fifoin_pop)
-{
- uint32_t r = m_copro_fifoin_data[m_copro_fifoin_rpos++];
-
-
- if (m_copro_fifoin_rpos == COPRO_FIFOIN_SIZE)
- {
- m_copro_fifoin_rpos = 0;
- }
-
- m_copro_fifoin_num--;
-
- return r;
-}
-
-
-void model2_state::copro_fifoin_push(device_t *device, uint32_t data, uint32_t offset, uint32_t mem_mask)
-{
- if (m_copro_fifoin_num == COPRO_FIFOIN_SIZE)
- {
- fatalerror("Copro FIFOIN overflow (at %08X)\n", device->safe_pc());
- }
-
- //printf("COPRO FIFOIN at %08X, %08X, %f\n", device->safe_pc(), data, *(float*)&data);
-
- m_copro_fifoin_data[m_copro_fifoin_wpos++] = data;
- if (m_copro_fifoin_wpos == COPRO_FIFOIN_SIZE)
- {
- m_copro_fifoin_wpos = 0;
- }
-
- m_copro_fifoin_num++;
-
- // clear FIFO empty flag on SHARC
- if (m_dsp_type == DSP_TYPE_SHARC)
- {
- dynamic_cast<adsp21062_device *>(device)->set_flag_input(0, CLEAR_LINE);
- }
-}
-
-
-#define COPRO_FIFOOUT_SIZE 32000
-uint32_t model2_state::copro_fifoout_pop(address_space &space,uint32_t offset, uint32_t mem_mask)
-{
- uint32_t r;
-
- m_maincpu->i960_noburst();
-
- if (m_copro_fifoout_num == 0)
- {
- /* Reading from empty FIFO causes the i960 to enter wait state */
- m_maincpu->i960_stall();
-
- /* spin the main cpu and let the TGP catch up */
- // TODO: Daytona needs a much shorter spin time (like 25 usecs), but that breaks other games even moreso
- // @seealso http://www.mameworld.info/ubbthreads/showflat.php?Cat=&Number=358069&page=&view=&sb=5&o=&vc=1
- // Update: skytargt needs an ever smaller time otherwise gameplay is too slow.
- m_maincpu->spin_until_time(attotime::from_usec(1));
-
- // fix ld rN, (rN) case, ask desert, pltkids, zerogun ...
- return 0x00884000+offset*4;
- }
-
- r = m_copro_fifoout_data[m_copro_fifoout_rpos++];
-
- if (m_copro_fifoout_rpos == COPRO_FIFOOUT_SIZE)
- {
- m_copro_fifoout_rpos = 0;
- }
-
- m_copro_fifoout_num--;
-
-// logerror("COPRO FIFOOUT POP %08X, %f, %d\n", r, *(float*)&r,m_copro_fifoout_num);
-
- // set SHARC flag 1: 0 if space available, 1 if FIFO full
- if (m_dsp_type == DSP_TYPE_SHARC)
- {
- if (m_copro_fifoout_num == COPRO_FIFOOUT_SIZE)
- {
- machine().device<adsp21062_device>("dsp")->set_flag_input(1, ASSERT_LINE);
- }
- else
- {
- machine().device<adsp21062_device>("dsp")->set_flag_input(1, CLEAR_LINE);
- }
- }
-
- return r;
-}
-
-void model2_state::copro_fifoout_push(device_t *device, uint32_t data,uint32_t offset,uint32_t mem_mask)
-{
- if (m_copro_fifoout_num == COPRO_FIFOOUT_SIZE)
- {
- fatalerror("Copro FIFOOUT overflow (at %08X)\n", device->safe_pc());
- }
-
-// logerror("COPRO FIFOOUT PUSH %08X, %f, %d\n", data, *(float*)&data,m_copro_fifoout_num);
-
- m_copro_fifoout_data[m_copro_fifoout_wpos++] = data;
- if (m_copro_fifoout_wpos == COPRO_FIFOOUT_SIZE)
- {
- m_copro_fifoout_wpos = 0;
- }
-
- m_copro_fifoout_num++;
-
- // set SHARC flag 1: 0 if space available, 1 if FIFO full
- if (m_dsp_type == DSP_TYPE_SHARC)
- {
- if (m_copro_fifoout_num == COPRO_FIFOOUT_SIZE)
- {
- dynamic_cast<adsp21062_device *>(device)->set_flag_input(1, ASSERT_LINE);
-
- //device->execute().set_input_line(SHARC_INPUT_FLAG1, ASSERT_LINE);
- }
- else
- {
- dynamic_cast<adsp21062_device *>(device)->set_flag_input(1, CLEAR_LINE);
-
- //device->execute().set_input_line(SHARC_INPUT_FLAG1, CLEAR_LINE);
- }
- }
-}
-
-WRITE32_MEMBER(model2_state::copro_tgp_fifoout_push)
-{
- if (m_copro_fifoout_num == COPRO_FIFOOUT_SIZE)
- {
- fatalerror("Copro FIFOOUT overflow (at %08X)\n", m_tgp->pc());
- }
-
-// logerror("COPRO FIFOOUT PUSH %08X, %f, %d\n", data, *(float*)&data,m_copro_fifoout_num);
-
- m_copro_fifoout_data[m_copro_fifoout_wpos++] = data;
- if (m_copro_fifoout_wpos == COPRO_FIFOOUT_SIZE)
- {
- m_copro_fifoout_wpos = 0;
- }
-
- m_copro_fifoout_num++;
-}
-
/* Timers - these count down at 25 MHz and pull IRQ2 when they hit 0 */
READ32_MEMBER(model2_state::timers_r)
{
@@ -359,9 +156,6 @@ TIMER_DEVICE_CALLBACK_MEMBER(model2_state::model2_timer_cb)
MACHINE_START_MEMBER(model2_state,model2)
{
- m_copro_fifoin_data = make_unique_clear<uint32_t[]>(COPRO_FIFOIN_SIZE);
- m_copro_fifoout_data = make_unique_clear<uint32_t[]>(COPRO_FIFOOUT_SIZE);
-
m_port_1c00004 = 1;
m_port_1c00006 = 2;
m_port_1c00010 = 0;
@@ -388,20 +182,94 @@ MACHINE_START_MEMBER(model2_state,model2)
save_item(NAME(m_timerrun[2]));
save_item(NAME(m_timerrun[3]));
- save_item(NAME(m_copro_fifoin_rpos));
- save_item(NAME(m_copro_fifoin_wpos));
- save_item(NAME(m_copro_fifoin_num));
- save_item(NAME(m_copro_fifoout_rpos));
- save_item(NAME(m_copro_fifoout_wpos));
- save_item(NAME(m_copro_fifoout_num));
save_item(NAME(m_geo_write_start_address));
save_item(NAME(m_geo_read_start_address));
}
-MACHINE_START_MEMBER(model2_state,srallyc)
+MACHINE_START_MEMBER(model2_tgp_state,model2_tgp)
+{
+ MACHINE_START_CALL_MEMBER(model2);
+
+ m_copro_fifo_in->setup(16,
+ [this]() { m_copro_tgp->stall(); },
+ [this]() { m_copro_tgp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); },
+ [this]() { m_copro_tgp->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); });
+ m_copro_fifo_out->setup(16,
+ [this]() { m_maincpu->i960_stall(); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); },
+ [this]() { m_copro_tgp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); },
+ [this]() { m_copro_tgp->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); });
+}
+
+MACHINE_START_MEMBER(model2b_state,model2b)
{
MACHINE_START_CALL_MEMBER(model2);
+ m_copro_fifo_in->setup(16,
+ [this]() { },
+ [this]() { },
+ [this]() { },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); },
+ [this]() { m_copro_adsp->set_flag_input(0, m_copro_fifo_in->is_empty()); },
+ [this]() { m_copro_adsp->set_flag_input(0, m_copro_fifo_in->is_empty()); });
+ m_copro_fifo_out->setup(16,
+ [this]() { m_maincpu->i960_stall(); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); },
+ [this]() { },
+ [this]() { },
+ [this]() { m_copro_adsp->set_flag_input(1, m_copro_fifo_in->is_full()); },
+ [this]() { m_copro_adsp->set_flag_input(1, m_copro_fifo_in->is_full()); });
+}
+
+MACHINE_START_MEMBER(model2c_state,model2c)
+{
+ MACHINE_START_CALL_MEMBER(model2);
+
+ m_copro_fifo_in->setup(16,
+ [this]() { },
+ [this]() { },
+ [this]() { },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); });
+ m_copro_fifo_out->setup(16,
+ [this]() { m_maincpu->i960_stall(); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE); },
+ [this]() { m_maincpu->set_input_line(INPUT_LINE_HALT, CLEAR_LINE); },
+ [this]() { },
+ [this]() { });
+}
+
+MACHINE_START_MEMBER(model2_tgp_state,srallyc)
+{
+ MACHINE_START_CALL_MEMBER(model2_tgp);
+
+ m_port_1c00004 = 2;
+ m_port_1c00006 = 3;
+ m_port_1c00010 = 0;
+ m_port_1c00012 = 1;
+ m_port_1c00014 = 4;
+}
+
+MACHINE_START_MEMBER(model2b_state,srallyc)
+{
+ MACHINE_START_CALL_MEMBER(model2b);
+
+ m_port_1c00004 = 2;
+ m_port_1c00006 = 3;
+ m_port_1c00010 = 0;
+ m_port_1c00012 = 1;
+ m_port_1c00014 = 4;
+}
+
+MACHINE_START_MEMBER(model2c_state,srallyc)
+{
+ MACHINE_START_CALL_MEMBER(model2c);
+
m_port_1c00004 = 2;
m_port_1c00006 = 3;
m_port_1c00010 = 0;
@@ -443,26 +311,12 @@ MACHINE_RESET_MEMBER(model2_state,model2_common)
for (i=0;i<0x20000/4;i++)
m_bufferram[i] = 0x07800f0f;
- m_copro_fifoin_rpos = 0;
- m_copro_fifoin_wpos = 0;
- m_copro_fifoin_num = 0;
- m_copro_fifoout_rpos = 0;
- m_copro_fifoout_wpos = 0;
- m_copro_fifoout_num = 0;
+ m_copro_fifo_in->clear();
+ m_copro_fifo_out->clear();
m_geo_write_start_address = 0;
m_geo_read_start_address = 0;
}
-MACHINE_RESET_MEMBER(model2_state,model2o)
-{
- MACHINE_RESET_CALL_MEMBER(model2_common);
-
- // hold TGP in halt until we have code
- m_tgp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
-
- m_dsp_type = DSP_TYPE_TGP;
-}
-
MACHINE_RESET_MEMBER(model2_state,model2_scsp)
{
membank("bank4")->set_base(memregion("scsp")->base() + 0x200000);
@@ -474,51 +328,51 @@ MACHINE_RESET_MEMBER(model2_state,model2_scsp)
m_scsp->set_ram_base(m_soundram);
}
-MACHINE_RESET_MEMBER(model2_state,model2)
+MACHINE_RESET_MEMBER(model2_tgp_state,model2_tgp)
{
MACHINE_RESET_CALL_MEMBER(model2_common);
- MACHINE_RESET_CALL_MEMBER(model2_scsp);
// hold TGP in halt until we have code
- m_tgp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_copro_tgp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+}
- m_dsp_type = DSP_TYPE_TGP;
+MACHINE_RESET_MEMBER(model2o_state,model2o)
+{
+ MACHINE_RESET_CALL_MEMBER(model2_tgp);
+}
+
+MACHINE_RESET_MEMBER(model2a_state,model2a)
+{
+ MACHINE_RESET_CALL_MEMBER(model2_tgp);
+ MACHINE_RESET_CALL_MEMBER(model2_scsp);
}
-MACHINE_RESET_MEMBER(model2_state,model2b)
+MACHINE_RESET_MEMBER(model2b_state,model2b)
{
MACHINE_RESET_CALL_MEMBER(model2_common);
MACHINE_RESET_CALL_MEMBER(model2_scsp);
- m_dsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ m_copro_adsp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
// set FIFOIN empty flag on SHARC
- m_dsp->set_input_line(SHARC_INPUT_FLAG0, ASSERT_LINE);
+ m_copro_adsp->set_input_line(SHARC_INPUT_FLAG0, ASSERT_LINE);
// clear FIFOOUT buffer full flag on SHARC
- m_dsp->set_input_line(SHARC_INPUT_FLAG1, CLEAR_LINE);
-
- m_dsp_type = DSP_TYPE_SHARC;
+ m_copro_adsp->set_input_line(SHARC_INPUT_FLAG1, CLEAR_LINE);
}
-MACHINE_RESET_MEMBER(model2_state,model2c)
+MACHINE_RESET_MEMBER(model2c_state,model2c)
{
MACHINE_RESET_CALL_MEMBER(model2_common);
MACHINE_RESET_CALL_MEMBER(model2_scsp);
- m_tgpx4->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
-
- m_dsp_type = DSP_TYPE_TGPX4;
-}
-
-static void chcolor(palette_device &palette, pen_t color, uint16_t data)
-{
- palette.set_pen_color(color, pal5bit(data >> 0), pal5bit(data >> 5), pal5bit(data >> 10));
+ m_copro_tgpx4->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
}
WRITE16_MEMBER(model2_state::palette_w)
{
COMBINE_DATA(&m_palram[offset]);
- chcolor(*m_palette, offset, m_palram[offset]);
+ u16 color = m_palram[offset];
+ m_palette->set_pen_color(offset, pal5bit(color >> 0), pal5bit(color >> 5), pal5bit(color >> 10));
}
READ16_MEMBER(model2_state::palette_r)
@@ -557,7 +411,7 @@ READ32_MEMBER(model2_state::fifo_control_2a_r)
{
uint32_t r = 0;
- if (m_copro_fifoout_num == 0)
+ if (m_copro_fifo_out->is_empty())
{
r |= 1;
}
@@ -779,38 +633,12 @@ WRITE32_MEMBER(model2_state::srallyc_devices_w)
}
}
-/*****************************************************************************/
-/* COPRO */
-
+// Coprocessor - Common
READ32_MEMBER(model2_state::copro_prg_r)
{
return 0xffffffff;
}
-
-WRITE32_MEMBER(model2_state::copro_prg_w)
-{
- if (m_coproctl & 0x80000000)
- {
- logerror("copro_prg_w: %08X: %08X\n", m_coprocnt, data);
- if (m_coprocnt & 1)
- {
- m_tgpx4_program[m_coprocnt / 2] &= 0xffffffffU;
- m_tgpx4_program[m_coprocnt / 2] |= u64(data) << 32;
- }
- else
- {
- m_tgpx4_program[m_coprocnt / 2] &= 0xffffffff00000000U;
- m_tgpx4_program[m_coprocnt / 2] |= data;
- }
- m_coprocnt++;
- }
- else
- {
- //osd_printf_debug("COPRO: push %08X\n", data);
- }
-}
-
READ32_MEMBER(model2_state::copro_ctl1_r)
{
return m_coproctl;
@@ -825,155 +653,259 @@ WRITE32_MEMBER(model2_state::copro_ctl1_w)
{
logerror("Start copro upload\n");
m_coprocnt = 0;
-
- if(m_dsp_type == DSP_TYPE_TGP)
- m_tgp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+ copro_halt();
}
else
{
logerror("Boot copro, %d dwords\n", m_coprocnt);
- switch(m_dsp_type)
- {
- case DSP_TYPE_TGP:
- // Model 2 / 2A games needs to reset TGP when exiting service mode
- m_tgp->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
- m_tgp->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
- break;
- case DSP_TYPE_SHARC:
- m_dsp->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
- break;
- case DSP_TYPE_TGPX4:
- m_tgpx4->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
- break;
- }
+ copro_boot();
}
}
COMBINE_DATA(&m_coproctl);
}
-WRITE32_MEMBER(model2_state::copro_function_port_w)
+
+
+// Coprocessor - TGP
+void model2_tgp_state::copro_tgp_prog_map(address_map &map)
+{
+ map(0x000, 0xfff).ram().share("copro_tgp_program");
+}
+
+void model2_tgp_state::copro_tgp_data_map(address_map &map)
+{
+ map(0x0000, 0x00ff).ram();
+ map(0x0200, 0x03ff).ram();
+}
+
+void model2_tgp_state::copro_tgp_bank_map(address_map &map)
+{
+ map(0x00020, 0x00023).rw(this, FUNC(model2_tgp_state::copro_sincos_r), FUNC(model2_tgp_state::copro_sincos_w));
+ map(0x00024, 0x00027).rw(this, FUNC(model2_tgp_state::copro_atan_r), FUNC(model2_tgp_state::copro_atan_w));
+ map(0x00028, 0x00029).rw(this, FUNC(model2_tgp_state::copro_inv_r), FUNC(model2_tgp_state::copro_inv_w));
+ map(0x0002a, 0x0002b).rw(this, FUNC(model2_tgp_state::copro_isqrt_r), FUNC(model2_tgp_state::copro_isqrt_w));
+
+ map(0x10000, 0x1ffff).rw(this, FUNC(model2_tgp_state::copro_tgp_memory_r), FUNC(model2_tgp_state::copro_tgp_memory_w));
+}
+
+void model2_tgp_state::copro_tgp_io_map(address_map &map)
+{
+ map(0x0000, 0xffff).m(m_copro_tgp_bank, FUNC(address_map_bank_device::amap32));
+}
+
+void model2_tgp_state::copro_tgp_rf_map(address_map &map)
+{
+ map(0x0, 0x0).nopw(); // leds? busy flag?
+ map(0x1, 0x1).r(m_copro_fifo_in, FUNC(generic_fifo_u32_device::read));
+ map(0x2, 0x2).w(m_copro_fifo_out, FUNC(generic_fifo_u32_device::write));
+ map(0x3, 0x3).w(this, FUNC(model2_tgp_state::copro_tgp_bank_w));
+}
+
+READ32_MEMBER(model2_tgp_state::copro_tgp_memory_r)
+{
+ offs_t adr = (m_copro_tgp_bank_reg & 0xff0000) | offset;
+
+ if(adr & 0x800000) {
+ adr &= (m_copro_data->bytes() >> 2) - 1;
+ return m_copro_data->as_u32(adr);
+ }
+
+ if(adr & 0x400000) {
+ adr &= 0x7fff;
+ return m_bufferram[adr];
+ }
+
+ return 0;
+}
+
+WRITE32_MEMBER(model2_tgp_state::copro_tgp_memory_w)
+{
+ offs_t adr = (m_copro_tgp_bank_reg & 0xff0000) | offset;
+ if(adr & 0x400000) {
+ adr &= 0x7fff;
+ COMBINE_DATA(&m_bufferram[adr]);
+ }
+}
+
+WRITE32_MEMBER(model2_tgp_state::copro_tgp_bank_w)
+{
+ COMBINE_DATA(&m_copro_tgp_bank_reg);
+ m_copro_tgp_bank->set_bank(m_copro_tgp_bank_reg & 0xc00000 ? 1 : 0);
+}
+
+WRITE32_MEMBER(model2_tgp_state::copro_sincos_w)
+{
+ COMBINE_DATA(&m_copro_sincos_base);
+}
+
+READ32_MEMBER(model2_tgp_state::copro_sincos_r)
+{
+ offs_t ang = m_copro_sincos_base + offset * 0x4000;
+ offs_t index = ang & 0x3fff;
+ if(ang & 0x4000)
+ index ^= 0x3fff;
+ u32 result = m_copro_tgp_tables[index];
+ if(ang & 0x8000)
+ result ^= 0x80000000;
+ return result;
+}
+
+WRITE32_MEMBER(model2_tgp_state::copro_inv_w)
+{
+ COMBINE_DATA(&m_copro_inv_base);
+}
+
+READ32_MEMBER(model2_tgp_state::copro_inv_r)
+{
+ offs_t index = ((m_copro_inv_base >> 9) & 0x3ffe) | (offset & 1);
+ u32 result = m_copro_tgp_tables[index | 0x8000];
+ u8 bexp = (m_copro_inv_base >> 23) & 0xff;
+ u8 exp = (result >> 23) + (0x7f - bexp);
+ result = (result & 0x807fffff) | (exp << 23);
+ if(m_copro_inv_base & 0x80000000)
+ result ^= 0x80000000;
+ return result;
+}
+
+WRITE32_MEMBER(model2_tgp_state::copro_isqrt_w)
+{
+ COMBINE_DATA(&m_copro_isqrt_base);
+}
+
+READ32_MEMBER(model2_tgp_state::copro_isqrt_r)
+{
+ offs_t index = 0x2000 ^ (((m_copro_isqrt_base>> 10) & 0x3ffe) | (offset & 1));
+ u32 result = m_copro_tgp_tables[index | 0xc000];
+ u8 bexp = (m_copro_isqrt_base >> 24) & 0x7f;
+ u8 exp = (result >> 23) + (0x3f - bexp);
+ result = (result & 0x807fffff) | (exp << 23);
+ if(!(offset & 1))
+ result &= 0x7fffffff;
+ return result;
+}
+
+WRITE32_MEMBER(model2_tgp_state::copro_atan_w)
+{
+ COMBINE_DATA(&m_copro_atan_base[offset]);
+ m_copro_tgp->gpio0_w((m_copro_atan_base[0] & 0x7fffffff) <= (m_copro_atan_base[1] & 0x7fffffff));
+}
+
+READ32_MEMBER(model2_tgp_state::copro_atan_r)
+{
+ u8 ie = 0x88 - (m_copro_atan_base[3] >> 23);
+
+ bool s0 = m_copro_atan_base[0] & 0x80000000;
+ bool s1 = m_copro_atan_base[1] & 0x80000000;
+ bool s2 = (m_copro_atan_base[0] & 0x7fffffff) <= (m_copro_atan_base[1] & 0x7fffffff);
+
+ offs_t im = m_copro_atan_base[3] & 0x7fffff;
+ offs_t index = ie <= 0x17 ? (im | 0x800000) >> ie : 0;
+ if(index == 0x4000)
+ index = 0x3fff;
+
+ u32 result = m_copro_tgp_tables[index | 0x4000];
+
+ if(s0 ^ s1 ^ s2)
+ result >>= 16;
+ if(s2)
+ result += 0x4000;
+ if((s0 && !s2) || (s1 && s2))
+ result += 0x8000;
+
+ return result & 0xffff;
+}
+
+WRITE32_MEMBER(model2_tgp_state::copro_function_port_w)
{
uint32_t d = data & 0x800fffff;
uint32_t a = (offset >> 2) & 0xff;
d |= a << 23;
- //logerror("copro_function_port_w: %08X, %08X, %08X\n", data, offset, mem_mask);
- if (m_dsp_type == DSP_TYPE_SHARC)
- copro_fifoin_push(machine().device("dsp"), d,offset,mem_mask);
- else if (m_dsp_type == DSP_TYPE_TGP)
- copro_fifoin_push(machine().device("tgp"), d,offset,mem_mask);
- else if (m_dsp_type == DSP_TYPE_TGPX4)
- {
- m_maincpu->i960_noburst();
+ m_copro_fifo_in->push(u32(d));
+}
- if (m_tgpx4->is_fifoin_full())
- {
- //fatalerror("model2.cpp: unsupported i960->tgpx4 fifo full");
- /* Writing to full FIFO causes the i960 to enter wait state */
- m_maincpu->i960_stall();
- /* spin the main cpu and let the TGP catch up */
- m_maincpu->spin_until_time(attotime::from_usec(1));
- return;
- }
+void model2_tgp_state::copro_halt()
+{
+ m_copro_tgp->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
+}
- m_tgpx4->fifoin_w(d);
- }
+void model2_tgp_state::copro_boot()
+{
+ m_copro_tgp->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+ m_copro_tgp->set_input_line(INPUT_LINE_RESET, PULSE_LINE);
}
-READ32_MEMBER(model2_state::copro_fifo_r)
+READ32_MEMBER(model2_tgp_state::copro_fifo_r)
{
- //logerror("copro_fifo_r: %08X, %08X\n", offset, mem_mask);
- if (m_dsp_type == DSP_TYPE_SHARC || m_dsp_type == DSP_TYPE_TGP)
+ m_maincpu->i960_noburst();
+ return m_copro_fifo_out->pop();
+}
+
+WRITE32_MEMBER(model2_tgp_state::copro_fifo_w)
+{
+ m_maincpu->i960_noburst();
+ if (m_coproctl & 0x80000000)
{
- return copro_fifoout_pop(space, offset, mem_mask);
+ m_copro_tgp_program[m_coprocnt] = data;
+ m_coprocnt++;
}
else
- {
- // TODO
-// printf("FIFO OUT read\n");
- if (m_tgpx4->is_fifoout0_empty())
- {
- /* Reading from empty FIFO causes the i960 to enter wait state */
- downcast<i960_cpu_device &>(*m_maincpu).i960_stall();
- /* spin the main cpu and let the TGP catch up */
- m_maincpu->spin_until_time(attotime::from_usec(1));
+ m_copro_fifo_in->push(u32(data));
+}
- return 0x00884000+offset*4;
- }
- else
- {
- return (uint32_t)(m_tgpx4->fifoout0_r());
- }
- }
- return 0;
+
+
+// Coprocessor - SHARC
+
+READ32_MEMBER(model2b_state::copro_sharc_buffer_r)
+{
+ return m_bufferram[offset & 0x7fff];
}
-READ32_MEMBER(model2c_state::fifo_control_2c_r)
+WRITE32_MEMBER(model2b_state::copro_sharc_buffer_w)
{
- return (m_tgpx4->is_fifoout0_empty() == true) ? 1 : 0;
+ m_bufferram[offset & 0x7fff] = data;
}
-WRITE32_MEMBER(model2_state::copro_fifo_w)
+void model2b_state::copro_sharc_map(address_map &map)
{
+ map(0x0400000, 0x0bfffff).r(m_copro_fifo_in, FUNC(generic_fifo_u32_device::read));
+ map(0x0c00000, 0x13fffff).w(m_copro_fifo_out, FUNC(generic_fifo_u32_device::write));
+ map(0x1400000, 0x1bfffff).rw(this, FUNC(model2b_state::copro_sharc_buffer_r), FUNC(model2b_state::copro_sharc_buffer_w));
+ map(0x1c00000, 0x1dfffff).rom().region("copro_data", 0);
+}
+
+void model2b_state::copro_halt()
+{
+}
+
+void model2b_state::copro_boot()
+{
+ m_copro_adsp->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+}
+
+READ32_MEMBER(model2b_state::copro_fifo_r)
+{
+ m_maincpu->i960_noburst();
+ return m_copro_fifo_out->pop();
+}
+
+WRITE32_MEMBER(model2b_state::copro_fifo_w)
+{
+ m_maincpu->i960_noburst();
if (m_coproctl & 0x80000000)
{
- if (m_dsp_type == DSP_TYPE_SHARC)
- {
- machine().device<adsp21062_device>("dsp")->external_dma_write(m_coprocnt, data & 0xffff);
- }
- else if (m_dsp_type == DSP_TYPE_TGP)
- {
- m_tgp_program[m_coprocnt] = data;
- }
- else if (m_dsp_type == DSP_TYPE_TGPX4)
- {
- if (m_coprocnt & 1)
- {
- m_tgpx4_program[m_coprocnt / 2] &= 0xffffffffU;
- m_tgpx4_program[m_coprocnt / 2] |= u64(data) << 32;
- }
- else
- {
- m_tgpx4_program[m_coprocnt / 2] &= 0xffffffff00000000U;
- m_tgpx4_program[m_coprocnt / 2] |= data;
- }
- }
-
+ m_copro_adsp->external_dma_write(m_coprocnt, data & 0xffff);
m_coprocnt++;
}
else
{
-// if(m_coprocnt == 0)
-// return;
-
- //osd_printf_debug("copro_fifo_w: %08X, %08X, %08X at %08X\n", data, offset, mem_mask, m_maincpu->pc());
- if (m_dsp_type == DSP_TYPE_SHARC)
- copro_fifoin_push(machine().device("dsp"), data,offset,mem_mask);
- else if (m_dsp_type == DSP_TYPE_TGP)
- copro_fifoin_push(machine().device("tgp"), data,offset,mem_mask);
- else if (m_dsp_type == DSP_TYPE_TGPX4)
- {
- m_maincpu->i960_noburst();
-
- if (m_tgpx4->is_fifoin_full())
- {
- //fatalerror("model2.cpp: unsupported i960->tgpx4 fifo full");
- /* Writing to full FIFO causes the i960 to enter wait state */
- m_maincpu->i960_stall();
- /* spin the main cpu and let the TGP catch up */
- m_maincpu->spin_until_time(attotime::from_usec(1));
- }
- else
- {
-// printf("push %08X at %08X\n", data, m_maincpu->pc());
- m_tgpx4->fifoin_w(data);
- }
- }
+ m_copro_fifo_in->push(u32(data));
}
}
-WRITE32_MEMBER(model2_state::copro_sharc_iop_w)
+WRITE32_MEMBER(model2b_state::copro_sharc_iop_w)
{
/* FIXME: clean this mess */
if ((strcmp(machine().system().name, "schamp" ) == 0) ||
@@ -987,13 +919,13 @@ WRITE32_MEMBER(model2_state::copro_sharc_iop_w)
(strcmp(machine().system().name, "vonj" ) == 0) ||
(strcmp(machine().system().name, "rchase2" ) == 0))
{
- machine().device<adsp21062_device>("dsp")->external_iop_write(offset, data);
+ m_copro_adsp->external_iop_write(offset, data);
}
else
{
if(offset == 0x10/4)
{
- machine().device<adsp21062_device>("dsp")->external_iop_write(offset, data);
+ m_copro_adsp->external_iop_write(offset, data);
return;
}
@@ -1004,14 +936,83 @@ WRITE32_MEMBER(model2_state::copro_sharc_iop_w)
else
{
m_iop_data |= (data & 0xffff) << 16;
- machine().device<adsp21062_device>("dsp")->external_iop_write(offset, m_iop_data);
+ m_copro_adsp->external_iop_write(offset, m_iop_data);
}
m_iop_write_num++;
}
}
+WRITE32_MEMBER(model2b_state::copro_function_port_w)
+{
+ uint32_t d = data & 0x800fffff;
+ uint32_t a = (offset >> 2) & 0xff;
+ d |= a << 23;
+
+ m_copro_fifo_in->push(u32(d));
+}
+
+
+
+// Coprocessor - TGPx4
+void model2c_state::copro_halt()
+{
+}
+
+void model2c_state::copro_boot()
+{
+ m_copro_tgpx4->set_input_line(INPUT_LINE_HALT, CLEAR_LINE);
+}
+
+READ32_MEMBER(model2c_state::copro_fifo_r)
+{
+ m_maincpu->i960_noburst();
+ return m_copro_fifo_out->pop();
+}
+
+WRITE32_MEMBER(model2c_state::copro_fifo_w)
+{
+ m_maincpu->i960_noburst();
+ if (m_coproctl & 0x80000000)
+ {
+ if (m_coprocnt & 1)
+ {
+ m_copro_tgpx4_program[m_coprocnt / 2] &= 0xffffffffU;
+ m_copro_tgpx4_program[m_coprocnt / 2] |= u64(data) << 32;
+ }
+ else
+ {
+ m_copro_tgpx4_program[m_coprocnt / 2] &= 0xffffffff00000000U;
+ m_copro_tgpx4_program[m_coprocnt / 2] |= data;
+ }
+
+ m_coprocnt++;
+ }
+ else
+ {
+ m_copro_fifo_in->push(u32(data));
+ }
+}
+
+WRITE32_MEMBER(model2c_state::copro_function_port_w)
+{
+ uint32_t d = data & 0x800fffff;
+ uint32_t a = (offset >> 2) & 0xff;
+ d |= a << 23;
+
+ m_copro_fifo_in->push(u32(d));
+}
+void model2c_state::copro_tgpx4_map(address_map &map)
+{
+ map(0x00000000, 0x00007fff).ram().share("copro_tgpx4_program");
+}
+void model2c_state::copro_tgpx4_data_map(address_map &map)
+{
+// map(0x00000000, 0x000003ff) internal RAM
+ map(0x00400000, 0x00407fff).ram().share("bufferram").mirror(0x003f8000);
+ map(0x00800000, 0x008fffff).rom().region("copro_data",0); // ROM data
+}
/*****************************************************************************/
@@ -1343,7 +1344,7 @@ WRITE32_MEMBER(model2_state::render_mode_w)
// osd_printf_debug("Mode = %08X\n", data);
}
-WRITE32_MEMBER(model2_state::model2o_tex_w0)
+WRITE32_MEMBER(model2_tgp_state::tex0_w)
{
if ( (offset & 1) == 0 )
{
@@ -1357,7 +1358,7 @@ WRITE32_MEMBER(model2_state::model2o_tex_w0)
}
}
-WRITE32_MEMBER(model2_state::model2o_tex_w1)
+WRITE32_MEMBER(model2_tgp_state::tex1_w)
{
if ( (offset & 1) == 0 )
{
@@ -1513,25 +1514,31 @@ READ8_MEMBER(model2o_state::model2o_in_r)
}
}
+/* model 2/2a common memory map */
+void model2_tgp_state::model2_tgp_mem(address_map &map)
+{
+ model2_base_mem(map);
+
+ map(0x00804000, 0x00807fff).rw(this, FUNC(model2_tgp_state::geo_prg_r), FUNC(model2_tgp_state::geo_prg_w));
+ map(0x00880000, 0x00883fff).w(this, FUNC(model2_tgp_state::copro_function_port_w));
+ map(0x00884000, 0x00887fff).rw(this, FUNC(model2_tgp_state::copro_fifo_r), FUNC(model2_tgp_state::copro_fifo_w));
+
+ map(0x00980000, 0x00980003).rw(this, FUNC(model2_tgp_state::copro_ctl1_r), FUNC(model2_tgp_state::copro_ctl1_w));
+ map(0x00980008, 0x0098000b).w(this, FUNC(model2_tgp_state::geo_ctl1_w));
+ map(0x009c0000, 0x009cffff).rw(this, FUNC(model2_tgp_state::model2_serial_r), FUNC(model2_tgp_state::model2_serial_w));
+
+ map(0x12000000, 0x121fffff).ram().w(this, FUNC(model2o_state::tex0_w)).mirror(0x200000).share("textureram0"); // texture RAM 0
+ map(0x12400000, 0x125fffff).ram().w(this, FUNC(model2o_state::tex1_w)).mirror(0x200000).share("textureram1"); // texture RAM 1
+}
+
/* original Model 2 overrides */
void model2o_state::model2o_mem(address_map &map)
{
- model2_base_mem(map);
+ model2_tgp_mem(map);
map(0x00200000, 0x0021ffff).ram();
map(0x00220000, 0x0023ffff).rom().region("maincpu", 0x20000);
-
- map(0x00804000, 0x00807fff).rw(this, FUNC(model2o_state::geo_prg_r), FUNC(model2o_state::geo_prg_w));
- map(0x00880000, 0x00883fff).w(this, FUNC(model2o_state::copro_function_port_w));
- map(0x00884000, 0x00887fff).rw(this, FUNC(model2o_state::copro_fifo_r), FUNC(model2o_state::copro_fifo_w));
-
- map(0x00980000, 0x00980003).rw(this, FUNC(model2o_state::copro_ctl1_r), FUNC(model2o_state::copro_ctl1_w));
map(0x00980004, 0x00980007).r(this, FUNC(model2o_state::fifo_control_2o_r));
- map(0x00980008, 0x0098000b).w(this, FUNC(model2o_state::geo_ctl1_w));
- map(0x009c0000, 0x009cffff).rw(this, FUNC(model2o_state::model2_serial_r), FUNC(model2o_state::model2_serial_w));
-
- map(0x12000000, 0x121fffff).ram().w(this, FUNC(model2o_state::model2o_tex_w0)).mirror(0x200000).share("textureram0"); // texture RAM 0
- map(0x12400000, 0x125fffff).ram().w(this, FUNC(model2o_state::model2o_tex_w1)).mirror(0x200000).share("textureram1"); // texture RAM 1
map(0x01c00000, 0x01c0001f).r(this, FUNC(model2o_state::model2o_in_r)).umask32(0x00ff00ff);
map(0x01c00040, 0x01c00043).r(this, FUNC(model2o_state::daytona_unk_r));
@@ -1603,10 +1610,11 @@ READ8_MEMBER(model2o_gtx_state::gtx_r)
return ROM[m_gtx_state*0x100000+offset];
}
-ADDRESS_MAP_START(model2o_gtx_state::model2o_gtx_mem)
- AM_IMPORT_FROM(model2o_mem)
- AM_RANGE(0x02c00000,0x02cfffff) AM_READ8(gtx_r,0xffffffff)
-ADDRESS_MAP_END
+void model2o_gtx_state::model2o_gtx_mem(address_map &map)
+{
+ model2o_mem(map);
+ map(0x02c00000,0x02cfffff).r(this, FUNC(model2o_gtx_state::gtx_r));
+}
/* TODO: read by Sonic the Fighters (bit 1), unknown purpose */
READ32_MEMBER(model2_state::copro_status_r)
@@ -1620,22 +1628,10 @@ READ32_MEMBER(model2_state::copro_status_r)
/* 2A-CRX overrides */
void model2a_state::model2a_crx_mem(address_map &map)
{
- model2_base_mem(map);
+ model2_tgp_mem(map);
map(0x00200000, 0x0023ffff).ram();
- map(0x00804000, 0x00807fff).rw(this, FUNC(model2a_state::geo_prg_r), FUNC(model2a_state::geo_prg_w));
- map(0x00880000, 0x00883fff).w(this, FUNC(model2a_state::copro_function_port_w));
- map(0x00884000, 0x00887fff).rw(this, FUNC(model2a_state::copro_fifo_r), FUNC(model2a_state::copro_fifo_w));
-
- map(0x00980000, 0x00980003).rw(this, FUNC(model2a_state::copro_ctl1_r), FUNC(model2a_state::copro_ctl1_w));
- map(0x00980008, 0x0098000b).w(this, FUNC(model2a_state::geo_ctl1_w));
- map(0x00980014, 0x00980017).r(this, FUNC(model2a_state::copro_status_r));
- map(0x009c0000, 0x009cffff).rw(this, FUNC(model2a_state::model2_serial_r), FUNC(model2a_state::model2_serial_w));
-
- map(0x12000000, 0x121fffff).ram().w(this, FUNC(model2a_state::model2o_tex_w0)).mirror(0x200000).share("textureram0"); // texture RAM 0
- map(0x12400000, 0x125fffff).ram().w(this, FUNC(model2a_state::model2o_tex_w1)).mirror(0x200000).share("textureram1"); // texture RAM 1
-
map(0x01c00000, 0x01c0001f).r(this, FUNC(model2a_state::model2_crx_in_r)).umask32(0x00ff00ff);
map(0x01c00000, 0x01c00003).w(this, FUNC(model2a_state::ctrl0_w));
map(0x01c00008, 0x01c0000f).nopw();
@@ -1709,7 +1705,6 @@ void model2c_state::model2c_crx_mem(address_map &map)
map(0x00884000, 0x00887fff).rw(this, FUNC(model2c_state::copro_fifo_r), FUNC(model2c_state::copro_fifo_w));
map(0x00980000, 0x00980003).rw(this, FUNC(model2c_state::copro_ctl1_r), FUNC(model2c_state::copro_ctl1_w));
- map(0x00980004, 0x00980007).r(this, FUNC(model2c_state::fifo_control_2c_r));
map(0x00980008, 0x0098000b).w(this, FUNC(model2c_state::geo_ctl1_w));
map(0x00980014, 0x00980017).r(this, FUNC(model2c_state::copro_status_r));
map(0x009c0000, 0x009cffff).rw(this, FUNC(model2c_state::model2_serial_r), FUNC(model2c_state::model2_serial_w));
@@ -2336,7 +2331,7 @@ WRITE_LINE_MEMBER(model2_state::sound_ready_w)
}
#endif
-TIMER_DEVICE_CALLBACK_MEMBER(model2_state::model2c_interrupt)
+TIMER_DEVICE_CALLBACK_MEMBER(model2c_state::model2c_interrupt)
{
int scanline = param;
@@ -2390,86 +2385,23 @@ WRITE16_MEMBER(model2_state::model2snd_ctrl)
}
}
-ADDRESS_MAP_START(model2_state::model2_snd)
- AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_REGION("audiocpu", 0) AM_SHARE("soundram")
- AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE("scsp", scsp_device, read, write)
- AM_RANGE(0x400000, 0x400001) AM_WRITE(model2snd_ctrl)
- AM_RANGE(0x600000, 0x67ffff) AM_ROM AM_REGION("audiocpu", 0x80000)
- AM_RANGE(0x800000, 0x9fffff) AM_ROM AM_REGION("scsp", 0)
- AM_RANGE(0xa00000, 0xdfffff) AM_ROMBANK("bank4")
- AM_RANGE(0xe00000, 0xffffff) AM_ROMBANK("bank5")
-ADDRESS_MAP_END
-
-
-WRITE8_MEMBER(model2_state::scsp_irq)
+void model2_state::model2_snd(address_map &map)
{
- m_audiocpu->set_input_line(offset, data);
+ map(0x000000, 0x07ffff).ram().region("audiocpu", 0).share("soundram");
+ map(0x100000, 0x100fff).rw(m_scsp, FUNC(scsp_device::read), FUNC(scsp_device::write));
+ map(0x400000, 0x400001).w(this, FUNC(model2_state::model2snd_ctrl));
+ map(0x600000, 0x67ffff).rom().region("audiocpu", 0x80000);
+ map(0x800000, 0x9fffff).rom().region("scsp", 0);
+ map(0xa00000, 0xdfffff).bankr("bank4");
+ map(0xe00000, 0xffffff).bankr("bank5");
}
-/*****************************************************************************/
-// SHARC memory maps
-
-READ32_MEMBER(model2_state::copro_sharc_input_fifo_r)
-{
- uint32_t result = 0;
- bool type;
-
- type = copro_fifoin_pop(machine().device("dsp"), &result,offset,mem_mask);
- if(type == false)
- printf("Read from empty FIFO?\n");
- return result;
-}
-
-WRITE32_MEMBER(model2_state::copro_sharc_output_fifo_w)
-{
- //osd_printf_debug("SHARC FIFOOUT push %08X\n", data);
- copro_fifoout_push(machine().device("dsp"), data,offset,mem_mask);
-}
-
-READ32_MEMBER(model2_state::copro_sharc_buffer_r)
-{
- return m_bufferram[offset & 0x7fff];
-}
-
-WRITE32_MEMBER(model2_state::copro_sharc_buffer_w)
-{
- m_bufferram[offset & 0x7fff] = data;
-}
-
-ADDRESS_MAP_START(model2_state::copro_sharc_map)
- AM_RANGE(0x0400000, 0x0bfffff) AM_READ(copro_sharc_input_fifo_r)
- AM_RANGE(0x0c00000, 0x13fffff) AM_WRITE(copro_sharc_output_fifo_w)
- AM_RANGE(0x1400000, 0x1bfffff) AM_READWRITE(copro_sharc_buffer_r, copro_sharc_buffer_w)
- AM_RANGE(0x1c00000, 0x1dfffff) AM_ROM AM_REGION("copro_data", 0)
-// AM_RANGE(0xffff8000, 0xffffffff) AM_READWRITE(copro_sharc_buffer_r, copro_sharc_buffer_w) // last bronx, cpu core bug?
-ADDRESS_MAP_END
-
-#if 0
-ADDRESS_MAP_START(model2_state::geo_sharc_map)
-ADDRESS_MAP_END
-#endif
-
-/*****************************************************************************/
-/* TGP memory maps */
-
-READ32_MEMBER(model2_state::copro_tgp_buffer_r)
-{
- return m_bufferram[offset & 0x7fff];
-}
-
-WRITE32_MEMBER(model2_state::copro_tgp_buffer_w)
+WRITE8_MEMBER(model2_state::scsp_irq)
{
- m_bufferram[offset&0x7fff] = data;
+ m_audiocpu->set_input_line(offset, data);
}
-ADDRESS_MAP_START(model2_state::copro_tgp_map)
- AM_RANGE(0x00000000, 0x00007fff) AM_RAM AM_SHARE("tgp_program")
- AM_RANGE(0x00400000, 0x00407fff) AM_READWRITE(copro_tgp_buffer_r, copro_tgp_buffer_w)
- AM_RANGE(0x00800000, 0x009fffff) AM_ROM AM_REGION("tgp", 0)
- AM_RANGE(0xff800000, 0xff9fffff) AM_ROM AM_REGION("tgp", 0)
-ADDRESS_MAP_END
-
/*****************************************************************************/
#define VIDEO_CLOCK XTAL(32'000'000)
@@ -2526,15 +2458,25 @@ MACHINE_CONFIG_START(model2o_state::model2o)
MCFG_CPU_PROGRAM_MAP(model2o_mem)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2_state, model2_interrupt, "screen", 0, 1)
- MCFG_CPU_ADD("tgp", MB86233, 16000000)
- MCFG_CPU_PROGRAM_MAP(copro_tgp_map)
- MCFG_MB86233_FIFO_READ_CB(READ32(model2_state,copro_tgp_fifoin_pop))
- MCFG_MB86233_FIFO_READ_OK_CB(READLINE(model2_state,copro_tgp_fifoin_pop_ok))
- MCFG_MB86233_FIFO_WRITE_CB(WRITE32(model2_state,copro_tgp_fifoout_push))
- MCFG_MB86233_TABLE_REGION("copro_data")
-
- MCFG_MACHINE_START_OVERRIDE(model2_state,model2)
- MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2o)
+ MCFG_CPU_ADD("copro_tgp", MB86234, 16000000)
+ MCFG_CPU_PROGRAM_MAP(copro_tgp_prog_map)
+ MCFG_CPU_DATA_MAP(copro_tgp_data_map)
+ MCFG_CPU_IO_MAP(copro_tgp_io_map)
+ MCFG_DEVICE_ADDRESS_MAP(mb86233_device::AS_RF, copro_tgp_rf_map)
+
+ MCFG_DEVICE_ADD("copro_tgp_bank", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(copro_tgp_bank_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(32)
+ MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(17)
+ MCFG_ADDRESS_MAP_BANK_SHIFT(-2)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
+
+ MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
+ MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
+
+ MCFG_MACHINE_START_OVERRIDE(model2_tgp_state,model2_tgp)
+ MCFG_MACHINE_RESET_OVERRIDE(model2o_state,model2o)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_NVRAM_ADD_1FILL("backup1")
@@ -2629,15 +2571,25 @@ MACHINE_CONFIG_START(model2a_state::model2a)
MCFG_CPU_PROGRAM_MAP(model2a_crx_mem)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2_state, model2_interrupt, "screen", 0, 1)
- MCFG_CPU_ADD("tgp", MB86233, 16000000)
- MCFG_CPU_PROGRAM_MAP(copro_tgp_map)
- MCFG_MB86233_FIFO_READ_CB(READ32(model2_state,copro_tgp_fifoin_pop))
- MCFG_MB86233_FIFO_READ_OK_CB(READLINE(model2_state,copro_tgp_fifoin_pop_ok))
- MCFG_MB86233_FIFO_WRITE_CB(WRITE32(model2_state,copro_tgp_fifoout_push))
- MCFG_MB86233_TABLE_REGION("copro_data")
-
- MCFG_MACHINE_START_OVERRIDE(model2_state,model2)
- MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2)
+ MCFG_CPU_ADD("copro_tgp", MB86234, 16000000)
+ MCFG_CPU_PROGRAM_MAP(copro_tgp_prog_map)
+ MCFG_CPU_DATA_MAP(copro_tgp_data_map)
+ MCFG_CPU_IO_MAP(copro_tgp_io_map)
+ MCFG_DEVICE_ADDRESS_MAP(mb86233_device::AS_RF, copro_tgp_rf_map)
+
+ MCFG_DEVICE_ADD("copro_tgp_bank", ADDRESS_MAP_BANK, 0)
+ MCFG_DEVICE_PROGRAM_MAP(copro_tgp_bank_map)
+ MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
+ MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(32)
+ MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(17)
+ MCFG_ADDRESS_MAP_BANK_SHIFT(-2)
+ MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
+
+ MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
+ MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
+
+ MCFG_MACHINE_START_OVERRIDE(model2_tgp_state,model2_tgp)
+ MCFG_MACHINE_RESET_OVERRIDE(model2a_state,model2a)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_NVRAM_ADD_1FILL("backup1")
@@ -2651,7 +2603,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2a_state::manxtt)
model2a(config);
- MCFG_MACHINE_START_OVERRIDE(model2_state,srallyc)
+ MCFG_MACHINE_START_OVERRIDE(model2a_state,srallyc)
MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2a_state::manxttdx) /* Includes a Model 1 Sound board for additional sounds - Deluxe version only */
@@ -2687,7 +2639,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2a_state::srallyc)
model2a(config);
- MCFG_MACHINE_START_OVERRIDE(model2_state,srallyc)
+ MCFG_MACHINE_START_OVERRIDE(model2a_state,srallyc)
sj25_0207_01(config);
MACHINE_CONFIG_END
@@ -2697,7 +2649,7 @@ MACHINE_CONFIG_START(model2b_state::model2b)
MCFG_CPU_PROGRAM_MAP(model2b_crx_mem)
MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2_state, model2_interrupt, "screen", 0, 1)
- MCFG_CPU_ADD("dsp", ADSP21062, 40000000)
+ MCFG_CPU_ADD("copro_adsp", ADSP21062, 40000000)
MCFG_SHARC_BOOT_MODE(BOOT_MODE_HOST)
MCFG_CPU_DATA_MAP(copro_sharc_map)
@@ -2707,8 +2659,11 @@ MACHINE_CONFIG_START(model2b_state::model2b)
MCFG_QUANTUM_TIME(attotime::from_hz(18000))
- MCFG_MACHINE_START_OVERRIDE(model2_state,model2)
- MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2b)
+ MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
+ MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
+
+ MCFG_MACHINE_START_OVERRIDE(model2b_state,model2b)
+ MCFG_MACHINE_RESET_OVERRIDE(model2b_state,model2b)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_NVRAM_ADD_1FILL("backup1")
@@ -2739,7 +2694,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2b_state::indy500)
model2b(config);
- MCFG_MACHINE_START_OVERRIDE(model2_state,srallyc)
+ MCFG_MACHINE_START_OVERRIDE(model2b_state,srallyc)
MACHINE_CONFIG_END
@@ -2764,31 +2719,23 @@ MACHINE_CONFIG_START(model2b_state::rchase2)
MCFG_DEVICE_ADD("ioexp", CXD1095, 0)
MACHINE_CONFIG_END
-
-void model2c_state::copro_tgpx4_map(address_map &map)
-{
- map(0x00000000, 0x00007fff).ram().share("tgpx4_program");
-}
-
-void model2c_state::copro_tgpx4_data_map(address_map &map)
-{
-// map(0x00000000, 0x000003ff) internal RAM
- map(0x00400000, 0x007fffff).rw(this, FUNC(model2_state::copro_tgp_buffer_r),FUNC(model2_state::copro_tgp_buffer_w)); // bufferram
- map(0x00800000, 0x008fffff).rom().region("copro_data",0); // ROM data
-}
-
/* 2C-CRX */
MACHINE_CONFIG_START(model2c_state::model2c)
MCFG_CPU_ADD("maincpu", I960, 25000000)
MCFG_CPU_PROGRAM_MAP(model2c_crx_mem)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2_state, model2c_interrupt, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", model2c_state, model2c_interrupt, "screen", 0, 1)
- MCFG_CPU_ADD("tgpx4", MB86235, 40000000)
+ MCFG_CPU_ADD("copro_tgpx4", MB86235, 40000000)
MCFG_CPU_PROGRAM_MAP(copro_tgpx4_map)
MCFG_CPU_DATA_MAP(copro_tgpx4_data_map)
+ MCFG_MB86235_FIFOIN(":copro_fifo_in")
+ MCFG_MB86235_FIFOOUT0(":copro_fifo_out")
- MCFG_MACHINE_START_OVERRIDE(model2_state,model2)
- MCFG_MACHINE_RESET_OVERRIDE(model2_state,model2c)
+ MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
+ MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
+
+ MCFG_MACHINE_START_OVERRIDE(model2c_state,model2c)
+ MCFG_MACHINE_RESET_OVERRIDE(model2c_state,model2c)
MCFG_EEPROM_SERIAL_93C46_ADD("eeprom")
MCFG_NVRAM_ADD_1FILL("backup1")
@@ -2822,7 +2769,7 @@ MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2c_state::overrev2c)
model2c(config);
- MCFG_MACHINE_START_OVERRIDE(model2_state,srallyc)
+ MCFG_MACHINE_START_OVERRIDE(model2c_state,srallyc)
MACHINE_CONFIG_END
@@ -2842,25 +2789,31 @@ OPR-14747 / Linked to 315-5679B
*/
// TODO: roms 58/59 and 62/63 aren't really used so far, actually they should be 32_word loaded too?
+// the 'a' versions have the atan table fixed compared to model 1
#define MODEL2_CPU_BOARD \
- ROM_REGION( 0xc0000, "copro_data", 0 ) \
+ ROM_REGION32_LE( 0x40000, "copro_tgp_tables", 0 ) \
ROM_LOAD32_WORD("opr-14742a.45", 0x000000, 0x20000, CRC(90c6b117) SHA1(f46429fffcee17d056f56d5fe035a33f1fd6c27e) ) \
ROM_LOAD32_WORD("opr-14743a.46", 0x000002, 0x20000, CRC(ae7f446b) SHA1(5b9f1fc47caf21e061e930c0d72804e4ec8c7bca) ) \
- ROM_LOAD("opr-14744.58", 0x040000, 0x20000, CRC(730ea9e0) SHA1(651f1db4089a400d073b19ada299b4b08b08f372) ) \
- ROM_LOAD("opr-14745.59", 0x060000, 0x20000, CRC(4c934d96) SHA1(e3349ece0e47f684d61ad11bfea4a90602287350) ) \
- ROM_LOAD("opr-14746.62", 0x080000, 0x20000, CRC(2a266cbd) SHA1(34e047a93459406c22acf4c25089d1a4955f94ca) ) \
- ROM_LOAD("opr-14747.63", 0x0a0000, 0x20000, CRC(a4ad5e19) SHA1(7d7ec300eeb9a8de1590011e37108688c092f329) )
+ \
+ ROM_REGION32_LE( 0x80000, "other_data", 0 ) \
+ /* 1/x table */ \
+ ROM_LOAD32_WORD("opr-14744.58", 0x000000, 0x20000, CRC(730ea9e0) SHA1(651f1db4089a400d073b19ada299b4b08b08f372) ) \
+ ROM_LOAD32_WORD("opr-14745.59", 0x000002, 0x20000, CRC(4c934d96) SHA1(e3349ece0e47f684d61ad11bfea4a90602287350) ) \
+ /* 1/sqrt(x) table */ \
+ ROM_LOAD32_WORD("opr-14746.62", 0x040000, 0x20000, CRC(2a266cbd) SHA1(34e047a93459406c22acf4c25089d1a4955f94ca) ) \
+ ROM_LOAD32_WORD("opr-14747.63", 0x040002, 0x20000, CRC(a4ad5e19) SHA1(7d7ec300eeb9a8de1590011e37108688c092f329) )
/*
These are smt ROMs found on Sega Model 2A Video board
They are linked to a QFP208 IC labelled 315-5645
*/
// TODO: are these present on model2o too?
+// 1/(1+x) table, 0.19 input, 1.23 output (bottom 4 bits zero though, and first bit always 1, so 19 real bits)
#define MODEL2A_VID_BOARD \
- ROM_REGION( 0x180000, "video_unk", 0 ) \
- ROM_LOAD("mpr-16310.15", 0x000000, 0x80000, CRC(c078a780) SHA1(0ad5b49774172743e2708b7ca4c061acfe10957a) ) \
- ROM_LOAD("mpr-16311.16", 0x080000, 0x80000, CRC(452a492b) SHA1(88c2f6c2dbfd0c1b39a7bf15c74455fb68c7274e) ) \
- ROM_LOAD("mpr-16312.14", 0x100000, 0x80000, CRC(a25fef5b) SHA1(c6a37856b97f5bc4996cb6b66209f47af392cc38) )
+ ROM_REGION32_LE( 0x200000, "video_unk", ROMREGION_ERASE00 ) \
+ ROM_LOAD32_BYTE("mpr-16310.15", 0x000000, 0x80000, CRC(c078a780) SHA1(0ad5b49774172743e2708b7ca4c061acfe10957a) ) \
+ ROM_LOAD32_BYTE("mpr-16311.16", 0x000001, 0x80000, CRC(452a492b) SHA1(88c2f6c2dbfd0c1b39a7bf15c74455fb68c7274e) ) \
+ ROM_LOAD32_BYTE("mpr-16312.14", 0x000002, 0x80000, CRC(a25fef5b) SHA1(c6a37856b97f5bc4996cb6b66209f47af392cc38) )
/* Is there an undumped Zero Gunner with program roms EPR-20292 & EPR-20293? Numbering would suggest so, Japan Model2C or Model2A US? */
ROM_START( zeroguna ) /* Zero Gunner (Export), Model 2A */
@@ -2874,7 +2827,7 @@ ROM_START( zeroguna ) /* Zero Gunner (Export), Model 2A */
ROM_LOAD32_WORD("mpr-20294.9", 0x800000, 0x400000, CRC(a0bd1474) SHA1(c0c032adac69bd545e3aab481878b08f3c3edab8) )
ROM_LOAD32_WORD("mpr-20295.10", 0x800002, 0x400000, CRC(c548cced) SHA1(d34f2fc9b4481c75a6824aa4bdd3f1884188d35b) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_REGION( 0x800000, "polygons", 0 ) // Models
ROM_LOAD32_WORD("mpr-20298.17", 0x000000, 0x400000, CRC(8ab782fc) SHA1(595f6fc2e9c58ce9763d51798ceead8d470f0a33) )
@@ -2909,7 +2862,7 @@ ROM_START( zerogunaj ) /* Zero Gunner (Japan), Model 2A - Sega game ID# 833-1134
ROM_LOAD32_WORD("mpr-20294.9", 0x800000, 0x400000, CRC(a0bd1474) SHA1(c0c032adac69bd545e3aab481878b08f3c3edab8) )
ROM_LOAD32_WORD("mpr-20295.10", 0x800002, 0x400000, CRC(c548cced) SHA1(d34f2fc9b4481c75a6824aa4bdd3f1884188d35b) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x800000, "polygons", 0 ) // Models
ROM_LOAD32_WORD("mpr-20298.17", 0x000000, 0x400000, CRC(8ab782fc) SHA1(595f6fc2e9c58ce9763d51798ceead8d470f0a33) )
@@ -2952,7 +2905,7 @@ ROM_START( zerogun ) /* Zero Gunner (Export), Model 2B */
ROM_LOAD32_WORD("mpr-20301.27", 0x000000, 0x200000, CRC(52010fb2) SHA1(8dce67c6f9e48d749c64b11d4569df413dc40e07) )
ROM_LOAD32_WORD("mpr-20300.25", 0x000002, 0x200000, CRC(6f042792) SHA1(75db68e57ec3fbc7af377342eef81f26fae4e1c4) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-20302.31", 0x080000, 0x80000, CRC(44ff50d2) SHA1(6ffec81042fd5708e8a5df47b63f9809f93bf0f8) )
@@ -2984,7 +2937,7 @@ ROM_START( zerogunj ) /* Zero Gunner (Japan), Model 2B */
ROM_LOAD32_WORD("mpr-20301.27", 0x000000, 0x200000, CRC(52010fb2) SHA1(8dce67c6f9e48d749c64b11d4569df413dc40e07) )
ROM_LOAD32_WORD("mpr-20300.25", 0x000002, 0x200000, CRC(6f042792) SHA1(75db68e57ec3fbc7af377342eef81f26fae4e1c4) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-20302.31", 0x080000, 0x80000, CRC(44ff50d2) SHA1(6ffec81042fd5708e8a5df47b63f9809f93bf0f8) )
@@ -3008,7 +2961,7 @@ ROM_START( gunblade ) /* Gunblade NY Revision A, Model 2B, Sega game ID# 833-125
ROM_LOAD32_WORD("mpr-18976.9", 0x800000, 0x400000, CRC(c95c15eb) SHA1(892063e91b2ed20e0600d4b188da1e9f45a19692) )
ROM_LOAD32_WORD("mpr-18977.10", 0x800002, 0x400000, CRC(db8f5b6f) SHA1(c11d2c9e1e215aa7b2ebb777639c8cd651901f52) )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("mpr-18986.29", 0x000000, 0x400000, CRC(04820f7b) SHA1(5eb6682399b358d77658d82e612b02b724e3f3e1) )
ROM_LOAD32_WORD("mpr-18987.30", 0x000002, 0x400000, CRC(2419367f) SHA1(0a04a1049d2da486dc9dbb97b383bd24259b78c8) )
@@ -3047,7 +3000,7 @@ ROM_START( vf2 ) /* Virtua Fighter 2 Version 2.1, Model 2A */
ROM_LOAD32_WORD( "mpr-17564.4", 0xc00000, 0x200000, CRC(d8062489) SHA1(57666b6937f79bb65c43ed02b04a454882d01e61) )
ROM_LOAD32_WORD( "mpr-17565.5", 0xc00002, 0x200000, CRC(0517c6e9) SHA1(d9ba93998286713758385033119416714674c8d8) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD( "mpr-17554.16", 0x000000, 0x200000, CRC(27896d82) SHA1(c0624e58de2e427465daaa10dbb02ea2a1fd0f1b) )
@@ -3093,7 +3046,7 @@ ROM_START( vf2b ) /* Virtua Fighter 2 Revision B, Model 2A */
ROM_LOAD32_WORD( "mpr-17564.4", 0xc00000, 0x200000, CRC(d8062489) SHA1(57666b6937f79bb65c43ed02b04a454882d01e61) )
ROM_LOAD32_WORD( "mpr-17565.5", 0xc00002, 0x200000, CRC(0517c6e9) SHA1(d9ba93998286713758385033119416714674c8d8) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD( "mpr-17554.16", 0x000000, 0x200000, CRC(27896d82) SHA1(c0624e58de2e427465daaa10dbb02ea2a1fd0f1b) )
@@ -3139,7 +3092,7 @@ ROM_START( vf2a ) /* Virtua Fighter 2 Revision A, Model 2A */
ROM_LOAD32_WORD( "mpr-17564.4", 0xc00000, 0x200000, CRC(d8062489) SHA1(57666b6937f79bb65c43ed02b04a454882d01e61) )
ROM_LOAD32_WORD( "mpr-17565.5", 0xc00002, 0x200000, CRC(0517c6e9) SHA1(d9ba93998286713758385033119416714674c8d8) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD( "mpr-17554.16", 0x000000, 0x200000, CRC(27896d82) SHA1(c0624e58de2e427465daaa10dbb02ea2a1fd0f1b) )
@@ -3185,7 +3138,7 @@ ROM_START( vf2o ) /* Virtua Fighter 2, Model 2A */
ROM_LOAD32_WORD( "mpr-17564.4", 0xc00000, 0x200000, CRC(d8062489) SHA1(57666b6937f79bb65c43ed02b04a454882d01e61) )
ROM_LOAD32_WORD( "mpr-17565.5", 0xc00002, 0x200000, CRC(0517c6e9) SHA1(d9ba93998286713758385033119416714674c8d8) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD( "mpr-17554.16", 0x000000, 0x200000, CRC(27896d82) SHA1(c0624e58de2e427465daaa10dbb02ea2a1fd0f1b) )
@@ -3228,7 +3181,7 @@ ROM_START( srallyc )
ROM_LOAD32_WORD( "mpr-17884.6", 0x800000, 0x200000, CRC(4cfc95e1) SHA1(81d927b8c4f9d0c4c5e29d676b30f30f83751fdc) )
ROM_LOAD32_WORD( "mpr-17885.7", 0x800002, 0x200000, CRC(a08d2467) SHA1(9449ac8f8f9ce8d8e536b05a91e46841fed7f2d0) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) )
ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) )
@@ -3274,7 +3227,7 @@ ROM_START( srallycb ) /* Sega Rally Championship Revision B, Model 2A, Sega game
ROM_LOAD32_WORD( "mpr-17884.6", 0x800000, 0x200000, CRC(4cfc95e1) SHA1(81d927b8c4f9d0c4c5e29d676b30f30f83751fdc) )
ROM_LOAD32_WORD( "mpr-17885.7", 0x800002, 0x200000, CRC(a08d2467) SHA1(9449ac8f8f9ce8d8e536b05a91e46841fed7f2d0) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) )
ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) )
@@ -3320,7 +3273,7 @@ ROM_START( srallycdx ) /* Sega Rally Championship DX Revision A, Model 2A - Sing
ROM_LOAD32_WORD( "mpr-17764a.6", 0x800000, 0x200000, CRC(dcb91e31) SHA1(2725268e97b9f4c14d56c040af38bc82f5020e3e) ) // IC 6 and 7 likely EPROMs
ROM_LOAD32_WORD( "mpr-17765a.7", 0x800002, 0x200000, CRC(b657dc48) SHA1(ae0f1bc6e2479fa51ca36f8be3a1785981c4dfe9) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) )
ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) )
@@ -3370,7 +3323,7 @@ ROM_START( srallycdxa ) // Sega Rally Championship DX, Model 2A? - Single player
ROM_LOAD32_WORD( "epr-17764.6", 0x800000, 0x100000, CRC(68254fcf) SHA1(d90d962b5f81d6598fc9d94c44d9cee71767fc26) ) // NEC D27C8000D EPROM
ROM_LOAD32_WORD( "epr-17765.7", 0x800002, 0x100000, CRC(81112ea5) SHA1(a0251b4f5f18ae2e2d0576087a687dd7c2e49c34) ) // NEC D27C8000D EPROM
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD( "mpr-17754.28", 0x000000, 0x200000, CRC(81a84f67) SHA1(c0a9b690523a529e4015e9af10dc3fb2a1726f08) ) // not present in this rev memory test, why ?
ROM_LOAD32_WORD( "mpr-17755.29", 0x000002, 0x200000, CRC(2a6e7da4) SHA1(e60803ae951489fe47d66731d15c32249ca547b4) ) //
@@ -3468,7 +3421,7 @@ ROM_START( manxtt ) /* Manx TT Superbike Twin Revision D, Model 2A - Can be set
ROM_LOAD32_WORD( "mpr-18755.18", 0x800000, 0x200000, CRC(bf094d9e) SHA1(2cd7130b226a28098191a6caf6fd761bb0bfac7b) )
ROM_LOAD32_WORD( "mpr-18758.22", 0x800002, 0x200000, CRC(1b5473d0) SHA1(658e33503f6990f4d9a954c63efad5f53d15f3a4) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD( "mpr-18761.28", 0x000000, 0x200000, CRC(4e39ec05) SHA1(50696cd320f1a6492e0c193713acbce085d959cd) )
ROM_LOAD32_WORD( "mpr-18762.29", 0x000002, 0x200000, CRC(4ab165d8) SHA1(7ff42a4c7236fec76f94f2d0c5537e503bcc98e5) )
@@ -3528,12 +3481,10 @@ ROM_START( manxttc ) /* Manx TT Superbike Twin Revision C, Model 2A */
ROM_LOAD32_WORD( "mpr-18755.18", 0x800000, 0x200000, CRC(bf094d9e) SHA1(2cd7130b226a28098191a6caf6fd761bb0bfac7b) )
ROM_LOAD32_WORD( "mpr-18758.22", 0x800002, 0x200000, CRC(1b5473d0) SHA1(658e33503f6990f4d9a954c63efad5f53d15f3a4) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD( "mpr-18761.28", 0x000000, 0x200000, CRC(4e39ec05) SHA1(50696cd320f1a6492e0c193713acbce085d959cd) )
ROM_LOAD32_WORD( "mpr-18762.29", 0x000002, 0x200000, CRC(4ab165d8) SHA1(7ff42a4c7236fec76f94f2d0c5537e503bcc98e5) )
- ROM_REGION( 0x800000, "tgpextra", ROMREGION_ERASEFF) // Coprocessor Data ROM
-
ROM_REGION( 0x1000000, "textures", 0 ) // Textures
ROM_LOAD32_WORD( "mpr-18760.25", 0x000000, 0x200000, CRC(4e3a4a89) SHA1(bba6cd2a15b3f963388a3a87880da86b10f6e0a2) )
ROM_LOAD32_WORD( "mpr-18759.24", 0x000002, 0x200000, CRC(278d8742) SHA1(5f285fc8cfe88c00ba2bbe1b509b49abd38e00ec) )
@@ -3587,12 +3538,10 @@ ROM_START( motoraid ) /* Motor Raid, Model 2A, Sega game ID# 833-13232 MOTOR RAI
ROM_LOAD32_WORD( "mpr-20025.18", 0x1000000, 0x400000, CRC(d4ecd0be) SHA1(9df0d1db32b818dad28f9eeab3bc19c56d27ec6d) )
ROM_LOAD32_WORD( "mpr-20028.22", 0x1000002, 0x400000, CRC(3147e0e1) SHA1(9aa0e13c8dc5073a603279a538cc7662531dfd19) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD( "epr-20011.28", 0x000000, 0x100000, CRC(794c026c) SHA1(85abd667491fd019ee18ba256fd580356f4e1fe9) )
ROM_LOAD32_WORD( "epr-20012.29", 0x000002, 0x100000, CRC(f53db4e3) SHA1(4474610eed52248e5e36be438eff5d39f076b134) )
- ROM_REGION( 0x800000, "tgpextra", ROMREGION_ERASEFF) // Coprocessor Data ROM
-
ROM_REGION( 0x1000000, "textures", 0 ) // Textures
ROM_LOAD32_WORD( "mpr-20022.25", 0x000000, 0x400000, CRC(9e47b3c2) SHA1(c73279e837f56c0417c07ba3c642af28fe9a24fa) )
ROM_LOAD32_WORD( "mpr-20021.24", 0x000002, 0x400000, CRC(3cbf36cb) SHA1(059cea17f9d6f5960d9fd869c36ffb6fcf230c1a) )
@@ -3640,12 +3589,10 @@ ROM_START( motoraiddx ) /* Motor Raid DX, Model 2A, Sega ROM board ID# 834-13231
ROM_LOAD32_WORD( "mpr-20025.18", 0x1000000, 0x400000, CRC(d4ecd0be) SHA1(9df0d1db32b818dad28f9eeab3bc19c56d27ec6d) )
ROM_LOAD32_WORD( "mpr-20028.22", 0x1000002, 0x400000, CRC(3147e0e1) SHA1(9aa0e13c8dc5073a603279a538cc7662531dfd19) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD( "epr-20011.28", 0x000000, 0x100000, CRC(794c026c) SHA1(85abd667491fd019ee18ba256fd580356f4e1fe9) )
ROM_LOAD32_WORD( "epr-20012.29", 0x000002, 0x100000, CRC(f53db4e3) SHA1(4474610eed52248e5e36be438eff5d39f076b134) )
- ROM_REGION( 0x800000, "tgpextra", ROMREGION_ERASEFF) // Coprocessor Data ROM
-
ROM_REGION( 0x1000000, "textures", 0 ) // Textures
ROM_LOAD32_WORD( "mpr-20022.25", 0x000000, 0x400000, CRC(9e47b3c2) SHA1(c73279e837f56c0417c07ba3c642af28fe9a24fa) )
ROM_LOAD32_WORD( "mpr-20021.24", 0x000002, 0x400000, CRC(3cbf36cb) SHA1(059cea17f9d6f5960d9fd869c36ffb6fcf230c1a) )
@@ -3694,7 +3641,7 @@ ROM_START( skytargt ) /* Sky Target, Model 2A */
ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD( "mpr-18420.28", 0x000000, 0x200000, CRC(92b87817) SHA1(b6949b745d0bedeecd6d0240f8911cb345c16d8d) )
ROM_LOAD32_WORD( "mpr-18419.29", 0x000002, 0x200000, CRC(74542d87) SHA1(37230e96dd526fb47fcbde5778e5466d8955a969) )
@@ -3741,7 +3688,7 @@ ROM_START( vcop2 ) /* Virtua Cop 2, Model 2A, Sega Game ID# 833-12266, ROM board
ROM_COPY( "main_data", 0xc00000, 0xe00000, 0x100000 )
ROM_COPY( "main_data", 0xc00000, 0xf00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD( "mpr-18513.16", 0x000000, 0x200000, CRC(777a3633) SHA1(edc2798c4d88975ce67b54fc0db008e7d24db6ef) )
@@ -3809,7 +3756,7 @@ ROM_START( dynamcop ) /* Dynamite Cop (Export), Model 2A, Sega Game ID# 833-1134
ROM_LOAD32_WORD("mpr-20791.4", 0x1800000, 0x400000, CRC(4883d0df) SHA1(b98af63e81f6c1b2766d7e96acbd1821bba000d4) )
ROM_LOAD32_WORD("mpr-20792.5", 0x1800002, 0x400000, CRC(47becfa2) SHA1(a333885872a64b322f3cb464a70352d73654b1b3) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD("mpr-20799.16", 0x0000000, 0x400000, CRC(424571bf) SHA1(18a4e8d0e968fff3b645b59a0023b0ef38d51924) )
@@ -3860,7 +3807,7 @@ ROM_START( dyndeka2 ) /* Dynamite Deka 2 (Japan), Model 2A */
ROM_LOAD32_WORD("mpr-20791.4", 0x1800000, 0x400000, CRC(4883d0df) SHA1(b98af63e81f6c1b2766d7e96acbd1821bba000d4) )
ROM_LOAD32_WORD("mpr-20792.5", 0x1800002, 0x400000, CRC(47becfa2) SHA1(a333885872a64b322f3cb464a70352d73654b1b3) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD("mpr-20799.16", 0x0000000, 0x400000, CRC(424571bf) SHA1(18a4e8d0e968fff3b645b59a0023b0ef38d51924) )
@@ -3927,7 +3874,7 @@ ROM_START( dynamcopb ) /* Dynamite Cop (Export), Model 2B */
ROM_LOAD32_WORD("mpr-20810.27", 0x0800000, 0x400000, CRC(838a10a7) SHA1(a658f1864829058b1d419e7c001e47cd0ab06a20) )
ROM_LOAD32_WORD("mpr-20808.26", 0x0800002, 0x400000, CRC(706bd495) SHA1(f857b303afda6301b19d97dfe5c313126261716e) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-20811.30", 0x080000, 0x80000, CRC(a154b83e) SHA1(2640c6b6966f4a888329e583b6b713bd0e779b6b) )
@@ -3975,7 +3922,7 @@ ROM_START( dyndeka2b ) /* Dynamite Deka 2 (Japan), Model 2B */
ROM_LOAD32_WORD("mpr-20810.27", 0x0800000, 0x400000, CRC(838a10a7) SHA1(a658f1864829058b1d419e7c001e47cd0ab06a20) )
ROM_LOAD32_WORD("mpr-20808.26", 0x0800002, 0x400000, CRC(706bd495) SHA1(f857b303afda6301b19d97dfe5c313126261716e) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-20811.30", 0x080000, 0x80000, CRC(a154b83e) SHA1(2640c6b6966f4a888329e583b6b713bd0e779b6b) )
@@ -4066,7 +4013,7 @@ ROM_START( schamp ) /* Sonic Championship, Model 2B - Sega ROM board ID# 834-127
ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("mpr-19015.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) )
ROM_LOAD32_WORD("mpr-19016.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) )
@@ -4120,7 +4067,7 @@ ROM_START( sfight ) /* Sonic The Fighters, Model 2B */
ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("mpr-19015.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) )
ROM_LOAD32_WORD("mpr-19016.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) )
@@ -4499,7 +4446,7 @@ ROM_START( lastbrnx ) /* Last Bronx Revision A (Export), Model 2B */
ROM_LOAD32_WORD("mpr-19055.27", 0x000000, 0x200000, CRC(85a57d49) SHA1(99c49fe135dc46fa861337b5bac654ae8478778a) )
ROM_LOAD32_WORD("mpr-19054.25", 0x000002, 0x200000, CRC(05366277) SHA1(f618e2b9b26a1f7eccebfc8f8e17ef8ad9029be8) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("mpr-19056.31", 0x080000, 0x80000, CRC(22a22918) SHA1(baa039cd86650b6cd81f295916c4d256e60cb29c) )
@@ -4528,7 +4475,7 @@ ROM_START( lastbrnxu ) /* Last Bronx Revision A (USA), Model 2B - Sega ROM board
ROM_LOAD32_WORD("mpr-19055.27", 0x000000, 0x200000, CRC(85a57d49) SHA1(99c49fe135dc46fa861337b5bac654ae8478778a) )
ROM_LOAD32_WORD("mpr-19054.25", 0x000002, 0x200000, CRC(05366277) SHA1(f618e2b9b26a1f7eccebfc8f8e17ef8ad9029be8) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("mpr-19056.31", 0x080000, 0x80000, CRC(22a22918) SHA1(baa039cd86650b6cd81f295916c4d256e60cb29c) )
@@ -4557,7 +4504,7 @@ ROM_START( lastbrnxj ) /* Last Bronx Revision A (Japan), Model 2B */
ROM_LOAD32_WORD("mpr-19055.27", 0x000000, 0x200000, CRC(85a57d49) SHA1(99c49fe135dc46fa861337b5bac654ae8478778a) )
ROM_LOAD32_WORD("mpr-19054.25", 0x000002, 0x200000, CRC(05366277) SHA1(f618e2b9b26a1f7eccebfc8f8e17ef8ad9029be8) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("mpr-19056.31", 0x080000, 0x80000, CRC(22a22918) SHA1(baa039cd86650b6cd81f295916c4d256e60cb29c) )
@@ -4576,7 +4523,7 @@ ROM_START( pltkidsa ) /* Pilot Kids, Model 2A */
ROM_LOAD32_WORD("mpr-21262.da0", 0x000000, 0x400000, CRC(aa71353e) SHA1(6eb5e8284734f01beec1dbbee049b6b7672e2504) )
ROM_LOAD32_WORD("mpr-21263.da1", 0x000002, 0x400000, CRC(d55d4509) SHA1(641db6ec3e9266f8265a4b541bcd8c2f7d164cc3) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD("mpr-21264.tp0", 0x0000000, 0x400000, CRC(6b35204d) SHA1(3a07701b140eb3088fad29c8b2d9c1e1e7ef9471) )
@@ -4635,7 +4582,7 @@ ROM_START( pltkids ) /* Pilot Kids Revision A, Model 2B */
ROM_LOAD32_WORD("mpr-21275.tx3", 0x0800000, 0x400000, CRC(c4870b7c) SHA1(feb8a34acb620a36ed5aea92d22622a76d7e1b29) )
ROM_LOAD32_WORD("mpr-21273.tx2", 0x0800002, 0x400000, CRC(722ec8a2) SHA1(1a1dc92488cde6284a96acce80e47a9cceccde76) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-21276.sd0", 0x080000, 0x080000, CRC(8f415bc3) SHA1(4e8e1ccbe025deca42fcf2582f3da46fa34780b7) )
@@ -4678,7 +4625,7 @@ ROM_START( indy500 ) /* Defaults to Twin (Stand Alone) Cab version. 2 credits t
ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("epr-18249.29", 0x000000, 0x080000, CRC(a399f023) SHA1(8b453313c16d935701ed7dbf71c1607c40aede63) )
ROM_LOAD32_WORD("epr-18250.30", 0x000002, 0x080000, CRC(7479ad52) SHA1(d453e25709cd5970cd21bdc8b4785bc8eb5a50d7) )
@@ -4730,7 +4677,7 @@ ROM_START( indy500d ) /* Defaults to Deluxe (Stand Alone) Cab version. 3 credits
ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("epr-18249.29", 0x000000, 0x080000, CRC(a399f023) SHA1(8b453313c16d935701ed7dbf71c1607c40aede63) )
ROM_LOAD32_WORD("epr-18250.30", 0x000002, 0x080000, CRC(7479ad52) SHA1(d453e25709cd5970cd21bdc8b4785bc8eb5a50d7) )
@@ -4782,7 +4729,7 @@ ROM_START( indy500to ) /* Defaults to Twin (Stand Alone) Cab version. 2 credits
ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("epr-18249.29", 0x000000, 0x080000, CRC(a399f023) SHA1(8b453313c16d935701ed7dbf71c1607c40aede63) )
ROM_LOAD32_WORD("epr-18250.30", 0x000002, 0x080000, CRC(7479ad52) SHA1(d453e25709cd5970cd21bdc8b4785bc8eb5a50d7) )
@@ -4834,7 +4781,7 @@ ROM_START( waverunr ) /* Wave Runner Revision A (Japan), Model 2C, Sega Game ID#
ROM_COPY( "main_data", 0x1000000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1000000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("epr-19280.29", 0x000000, 0x080000, CRC(c6b59fb9) SHA1(909663f440d19a34591d1f9707972c313e34f909) )
ROM_LOAD32_WORD("epr-19281.30", 0x000002, 0x080000, CRC(5a6110e7) SHA1(39ba8a35fdcfdd6c88b44ab392ca0e958da44767) )
@@ -4898,7 +4845,7 @@ ROM_START( rchase2 ) /* Rail Chase 2 Revision A, Model 2B. Sega game ID# 833-118
ROM_LOAD32_WORD("mpr-18043.5", 0xc00000, 0x200000, CRC(ff84dfd6) SHA1(82833bf4cb1f367aea5fec6cffb7023cbbd3c8cb) )
ROM_LOAD32_WORD("mpr-18044.6", 0xc00002, 0x200000, CRC(ab9b406d) SHA1(62e95ceea6f71eedbebae59e188aac03e6129e62) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASEFF ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASEFF ) // Copro extra data (collision/height map/etc)
/* empty?? */
ROM_REGION( 0x1000000, "polygons", 0 ) // Models
@@ -5071,7 +5018,7 @@ ROM_START( overrevb ) /* Over Rev Revision B, Model 2B, Sega Game ID# 836-13274,
ROM_LOAD32_WORD( "mpr-19994.9", 0x800000, 0x400000, CRC(e691fbd5) SHA1(b99c2f3f2a682966d792917dfcb8ed8e53bc0b7a) )
ROM_LOAD32_WORD( "mpr-19995.10", 0x800002, 0x400000, CRC(82a7828e) SHA1(4336a12a07a67f94091b4a9b491bab02c375dd15) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x800000, "polygons", 0 ) // Models
ROM_LOAD32_WORD( "mpr-19998.17", 0x000000, 0x200000, CRC(6a834574) SHA1(8be19bf42dbb157d6acde62a2018ef4c0d41aab4) )
@@ -5303,7 +5250,7 @@ ROM_START( doaa ) /* Dead or Alive Revision A, Model 2A, Sega Game ID# 833-11341
ROM_LOAD32_WORD("mpr-19313.6", 0x1800002, 0x200000, CRC(8c63055e) SHA1(9f375b3f4a8884163ffcf364989499f2cd21e18b) )
ROM_COPY("main_data", 0x1800000, 0x1c00000, 0x400000 )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP data (COPRO sockets)
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x2000000, "polygons", ROMREGION_ERASEFF ) // Models
ROM_LOAD32_WORD("mpr-19322.17", 0x0000000, 0x400000, CRC(d0e6ecf0) SHA1(1b87f6337b4286fd738856da899462e7baa92601) )
@@ -5358,7 +5305,7 @@ ROM_START( doa ) /* Dead or Alive Revision B, Model 2B, 837-12880 security board
ROM_LOAD32_WORD("mpr-19321.27", 0x000000, 0x400000, CRC(9c49e845) SHA1(344839640d9814263fa5ed00c2043cd6f18d5cb2) )
ROM_LOAD32_WORD("mpr-19320.25", 0x000002, 0x400000, CRC(190c017f) SHA1(4c3250b9abe39fc5c8fd0fcdb5fb7ea131434516) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-19328.30", 0x080000, 0x80000, CRC(400bdbfb) SHA1(54db969fa54cf3c502d77aa6a6aaeef5d7db9f04) )
@@ -5389,7 +5336,7 @@ ROM_START( sgt24h ) /* Super GT 24h, Model 2B */
ROM_LOAD32_WORD("mpr-19153.27", 0x000000, 0x200000, CRC(136adfd0) SHA1(70ce4e609c8b003ff04518044c18d29089e6a353) )
ROM_LOAD32_WORD("mpr-19152.25", 0x000002, 0x200000, CRC(363769a2) SHA1(51b2f11a01fb72e151025771f8a8496993e605c2) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x20000, "cpu4", 0) // Communication program
ROM_LOAD16_WORD_SWAP("epr-18643a.7", 0x000000, 0x20000, CRC(b5e048ec) SHA1(8182e05a2ffebd590a936c1359c81e60caa79c2a) )
@@ -5414,7 +5361,7 @@ ROM_START( von ) /* Virtual On Cyber Troopers Revision B (US), Model 2B, Sega Ga
ROM_LOAD32_WORD("mpr-18650.9", 0x800000, 0x400000, CRC(89a855b9) SHA1(5096db1da1f7e175000e89fca2a1dd3fd53030ea) )
ROM_LOAD32_WORD("mpr-18651.10", 0x800002, 0x400000, CRC(f4c23107) SHA1(f65984614111b12dd414db80751efe64fcf5ef16) )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("mpr-18662.29", 0x000000, 0x200000, CRC(a33d3335) SHA1(991bbe9dcbef8bfa96682e9d142623fc9b7c0879) )
ROM_LOAD32_WORD("mpr-18663.30", 0x000002, 0x200000, CRC(ea74a641) SHA1(a684e13c0afe2ef3f3108ae9b73389121368fc4e) )
@@ -5454,7 +5401,7 @@ ROM_START( vonj ) /* Virtual On Cyber Troopers Revision B (Japan), Model 2B */
ROM_LOAD32_WORD("mpr-18650.9", 0x800000, 0x400000, CRC(89a855b9) SHA1(5096db1da1f7e175000e89fca2a1dd3fd53030ea) )
ROM_LOAD32_WORD("mpr-18651.10", 0x800002, 0x400000, CRC(f4c23107) SHA1(f65984614111b12dd414db80751efe64fcf5ef16) )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("mpr-18662.29", 0x000000, 0x200000, CRC(a33d3335) SHA1(991bbe9dcbef8bfa96682e9d142623fc9b7c0879) )
ROM_LOAD32_WORD("mpr-18663.30", 0x000002, 0x200000, CRC(ea74a641) SHA1(a684e13c0afe2ef3f3108ae9b73389121368fc4e) )
@@ -5506,7 +5453,7 @@ ROM_START( vstriker ) /* Virtua Striker Revision A, Model 2B */
ROM_LOAD32_WORD("mpr-18062.27", 0x000000, 0x200000, CRC(126e7de3) SHA1(0810364934dee8d5035cef623d01dfbacc64bf2b) )
ROM_LOAD32_WORD("mpr-18061.25", 0x000002, 0x200000, CRC(c37f1c67) SHA1(c917046c2d98af17c59ceb0ea4f89d215cc0ead8) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-18072.31", 0x080000, 0x20000, CRC(73eabb58) SHA1(4f6d70d6e0d7b469c5f2527efb08f208f4aa017e) )
@@ -5542,7 +5489,7 @@ ROM_START( vstrikero ) /* Virtua Striker, Model 2B */
ROM_LOAD32_WORD("mpr-18062.27", 0x000000, 0x200000, CRC(126e7de3) SHA1(0810364934dee8d5035cef623d01dfbacc64bf2b) )
ROM_LOAD32_WORD("mpr-18061.25", 0x000002, 0x200000, CRC(c37f1c67) SHA1(c917046c2d98af17c59ceb0ea4f89d215cc0ead8) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-18072.31", 0x080000, 0x20000, CRC(73eabb58) SHA1(4f6d70d6e0d7b469c5f2527efb08f208f4aa017e) )
@@ -5580,7 +5527,7 @@ ROM_START( dynabb ) /* Dynamite Baseball, Model 2B. Sega game ID# 833-12803 DYNA
ROM_LOAD32_WORD("mpr-19183.27", 0x000000, 0x400000, CRC(5e29074b) SHA1(f4dfa396653aeb649ec170c9584ea1a74377929a) )
ROM_LOAD32_WORD("mpr-19182.25", 0x000002, 0x400000, CRC(c899923d) SHA1(15cc86c885329227d3c19e9837363eaf6c38829b) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-19184.31", 0x080000, 0x80000, CRC(c013a163) SHA1(c564df8295e3c19082ead0eb22478dc651e0b430) )
@@ -5618,7 +5565,7 @@ ROM_START( dynabb97 ) /* Dynamite Baseball 97 Revision A, Model 2B */
ROM_LOAD32_WORD("mpr-19848.27", 0x000000, 0x400000, CRC(4c0526b7) SHA1(e8db7125be8a052e41a00c69cc08ca0d75b3b96f) )
ROM_LOAD32_WORD("mpr-19847.25", 0x000002, 0x400000, CRC(fe55edbd) SHA1(b0b6135b23349d7d6ae007002d8df83748cab7b1) )
- ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 ) // Copro extra data (collision/height map/etc)
ROM_REGION( 0x100000, "audiocpu", 0 ) // Sound program
ROM_LOAD16_WORD_SWAP("epr-19849.31", 0x080000, 0x80000, CRC(b0d5bff0) SHA1(1fb824adaf3ed330a8039be726a87eb85c00abd7) )
@@ -5661,7 +5608,7 @@ ROM_START( fvipers ) /* Fighting Vipers Revision D, Model 2B, Sega Game ID# 833-
ROM_COPY( "main_data", 0x1800000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1800000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("mpr-18622.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) )
ROM_LOAD32_WORD("mpr-18623.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) )
@@ -5720,7 +5667,7 @@ ROM_START( fvipersb ) /* Fighting Vipers Revision B, Model 2B, Sega Game ID# 833
ROM_COPY( "main_data", 0x1800000, 0x1e00000, 0x100000 )
ROM_COPY( "main_data", 0x1800000, 0x1f00000, 0x100000 )
- ROM_REGION( 0x800000, "copro_data", 0 ) // Coprocessor Data ROM
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc)
ROM_LOAD32_WORD("mpr-18622.29", 0x000000, 0x200000, CRC(c74d99e3) SHA1(9914be9925b86af6af670745b5eba3a9e4f24af9) )
ROM_LOAD32_WORD("mpr-18623.30", 0x000002, 0x200000, CRC(746ae931) SHA1(a6f0f589ad174a34493ee24dc0cb509ead3aed70) )
@@ -5768,7 +5715,7 @@ ROM_START( daytona ) /* Daytona USA (Japan, Revision A), Original Model 2 w/Mode
ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 )
ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) )
ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) )
@@ -5832,7 +5779,7 @@ ROM_START( daytonase ) /* Daytona USA (Japan, Revision A), Original Model 2 w/Mo
ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 )
ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) )
ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) )
@@ -5895,7 +5842,7 @@ ROM_START( daytona93 ) /* Daytona USA (Deluxe cabinet, '93 version. There is sai
ROM_COPY( "main_data", 0x900000, 0xe00000, 0x100000 )
ROM_COPY( "main_data", 0x900000, 0xf00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) )
ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) )
@@ -5959,7 +5906,7 @@ ROM_START( daytonas ) /* Daytona USA (With Saturn Adverts) */
ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 )
ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) )
ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) )
@@ -6025,7 +5972,7 @@ ROM_START( daytonat )/* Daytona USA (Japan, Turbo hack) */
ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 )
ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) )
ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) )
@@ -6089,7 +6036,7 @@ ROM_START( daytonata )/* Daytona USA (Japan, Turbo hack) */
ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 )
ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) )
ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) )
@@ -6164,7 +6111,7 @@ ROM_START( daytonam ) /* Daytona USA (Japan, To The MAXX) */
ROM_COPY( "main_data", 0x800000, 0xe00000, 0x100000 )
ROM_COPY( "main_data", 0x800000, 0xf00000, 0x100000 )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) )
ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) )
@@ -6235,7 +6182,7 @@ ROM_START( daytonagtx )
ROM_LOAD32_WORD("bank0.bin", 0x000002, 0x080000, CRC(21b603b4) SHA1(3f8f83fbf2ce5055fa85075c95da617fe2a8738a) )
ROM_LOAD32_WORD("bank1.bin", 0x100002, 0x080000, CRC(c1971f23) SHA1(3db88552ff2166f6eb2a9200e8609b52c1266274) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("mpr-16537.ic28", 0x000000, 0x200000, CRC(36b7c35a) SHA1(b32fd1d3fc8983fb5f2a7b236b665a8c9b52769f) )
ROM_LOAD32_WORD("mpr-16536.ic29", 0x000002, 0x200000, CRC(6d6afed9) SHA1(2018468d7d849854b3d0cfbcd217317e2fc93555) )
@@ -6294,7 +6241,7 @@ ROM_START( vcop ) /* Virtua Cop Revision B, Model 2 */
ROM_LOAD32_WORD( "epr-17168a.6", 0x800000, 0x080000, CRC(59091a37) SHA1(14591c7015aaf126755be584aa94c04e6de222fa) )
ROM_LOAD32_WORD( "epr-17169a.7", 0x800002, 0x080000, CRC(0495808d) SHA1(5b86a9a68c2b52f942aa8d858ee7a491f546a921) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP program
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 )
ROM_REGION( 0x1000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD( "mpr-17159.16", 0x000000, 0x200000, CRC(e218727d) SHA1(1458d01d49936a0b8d497b62ff9ea940ca753b37) )
@@ -6337,7 +6284,7 @@ ROM_START( vcopa ) /* Virtua Cop Revision A, Model 2 */
ROM_LOAD32_WORD( "epr-17168a.6", 0x800000, 0x080000, CRC(59091a37) SHA1(14591c7015aaf126755be584aa94c04e6de222fa) )
ROM_LOAD32_WORD( "epr-17169a.7", 0x800002, 0x080000, CRC(0495808d) SHA1(5b86a9a68c2b52f942aa8d858ee7a491f546a921) )
- ROM_REGION( 0x800000, "tgp", ROMREGION_ERASE00 ) // TGP program
+ ROM_REGION( 0x800000, "copro_data", ROMREGION_ERASE00 )
ROM_REGION( 0x1000000, "polygons", 0 ) // Models
ROM_LOAD32_WORD( "mpr-17159.16", 0x000000, 0x200000, CRC(e218727d) SHA1(1458d01d49936a0b8d497b62ff9ea940ca753b37) )
@@ -6380,7 +6327,7 @@ ROM_START( desert ) /* Desert Tank, Model 2 */
ROM_LOAD32_WORD("epr-16978.6", 0x800000, 0x080000, CRC(38b3e574) SHA1(a1133df608b0fbb9c53bbeb29138650c87845d2c) )
ROM_LOAD32_WORD("epr-16979.7", 0x800002, 0x080000, CRC(c314eb8b) SHA1(0c851dedd5c42b026195faed7d028924698a8b27) )
- ROM_REGION( 0x800000, "tgp", 0 ) // TGP program? (COPRO socket)
+ ROM_REGION( 0x800000, "copro_data", 0 ) // Copro extra data (collision/height map/etc) (COPRO socket)
ROM_LOAD32_WORD("epr-16981.28", 0x000000, 0x080000, CRC(ae847571) SHA1(32d0f9e685667ae9fddacea0b9f4ad6fb3a6fdad) )
ROM_LOAD32_WORD("epr-16980.29", 0x000002, 0x080000, CRC(5239b864) SHA1(e889556e0f1ea80de52afff563b0923f87cef7ab) )
@@ -6441,12 +6388,12 @@ DRIVER_INIT_MEMBER(model2_state,doa)
DRIVER_INIT_MEMBER(model2_state,rchase2)
{
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x01c00008, 0x01c0000b, write32_delegate(FUNC(model2_state::rchase2_devices_w),this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x01c00008, 0x01c0000b, write32_delegate(FUNC(model2_state::rchase2_devices_w), this));
}
DRIVER_INIT_MEMBER(model2_state,srallyc)
{
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x01c00008, 0x01c0000b, write32_delegate(FUNC(model2_state::srallyc_devices_w),this));
+ m_maincpu->space(AS_PROGRAM).install_write_handler(0x01c00008, 0x01c0000b, write32_delegate(FUNC(model2_state::srallyc_devices_w), this));
}