From 58b765f29df31abf6bc3bab2b371e6c47c9fd32b Mon Sep 17 00:00:00 2001 From: Ryan Holtz Date: Mon, 4 Nov 2024 13:04:18 +0100 Subject: [PATCH] New clones marked not working ----------------------------- Crisis Zone (World, CSZO2 Ver. B) [Guru] -namcos23.cpp: Improved texturing in Super System 23 games. [Ryan Holtz] --- src/mame/namco/namcos23.cpp | 373 +++++++++++++++++++++++------------- 1 file changed, 238 insertions(+), 135 deletions(-) diff --git a/src/mame/namco/namcos23.cpp b/src/mame/namco/namcos23.cpp index ed2ae3086ca41..7db7778e849f4 100644 --- a/src/mame/namco/namcos23.cpp +++ b/src/mame/namco/namcos23.cpp @@ -110,20 +110,14 @@ ':maincpu' (801143E0): unmapped program memory write to 0C800010 = 00000000 & 0000FFFF Game status: - rapidrvr,v2c Glitchy graphics. - rapidrvrp Same as above. - finfurl Same as above. - motoxgo(all) Glitchy graphics. - downhill Extremely glitchy graphics. - downhillu Same as above. - timecrs2(all) Glitchy graphics but otherwise playable. - panicprk,j,j2 Glitchy graphics. Coins up. Partly to fully playable depending on mini-game. - gunwars,a Extremely glitchy graphics. + all games: Glitchy graphics. + downhill/u Extremely glitchy graphics. + panicprk/j/j2 Some mini-games are not playable due to Z-sorting issues. + gunwars/a Extremely glitchy graphics. raceon Locks up after POST. - aking Locks up after displaying legal-notice screen or test menu. Inputs unresponsive. - 500gp Extremely glitchy graphics. Partly playable. - finfurl2,j Glitchy graphics. - crszone(all) Glitchy graphics. + aking Inputs unresponsive. + 500gp Occasional lockups. + crszone(all) Input issues. **************************************************************************** @@ -1446,6 +1440,8 @@ struct namcos23_render_entry int type; u16 absolute_priority; u16 model_blend_factor; + u16 camera_power; + u16 camera_ambient; u8 poly_fade_r; u8 poly_fade_g; u8 poly_fade_b; @@ -1665,12 +1661,8 @@ class namcos23_state : public driver_device m_lamps(*this, "lamp%u", 0U) { } - void ss23(machine_config &config); void s23(machine_config &config); void timecrs2(machine_config &config); - void timecrs2v4a(machine_config &config); - void _500gp(machine_config &config); - void aking(machine_config &config); void downhill(machine_config &config); void panicprk(machine_config &config); @@ -1814,6 +1806,8 @@ class namcos23_state : public driver_device void c435_scaling_set(); void c435_model_blend_factor_set(); void c435_absolute_priority_set(); + void c435_camera_power_set(); + void c435_camera_ambient_set(); void c435_render(); void c435_flush(); @@ -1906,6 +1900,8 @@ class namcos23_state : public driver_device u16 m_absolute_priority; u16 m_model_blend_factor; + u16 m_camera_power; + u16 m_camera_ambient; float m_proj_matrix[8*3]; u8 m_proj_matrix_line; @@ -2077,11 +2073,30 @@ class rapidrvr_state : public gorgon_state u16 m_sensor[4]; }; -class namcos23_gmen_state : public namcos23_state +class namcoss23_state : public namcos23_state +{ +public: + namcoss23_state(const machine_config &mconfig, device_type type, const char *tag) : + namcos23_state(mconfig, type, tag) + { } + + void ss23(machine_config &config); + void timecrs2v4a(machine_config &config); + void _500gp(machine_config &config); + void aking(machine_config &config); + +protected: + void mips_map(address_map &map) ATTR_COLD; + +private: + void c435_c361_ack_w(offs_t offset, u32 data); +}; + +class namcoss23_gmen_state : public namcoss23_state { public: - namcos23_gmen_state(const machine_config &mconfig, device_type type, const char *tag) : - namcos23_state(mconfig, type, tag), + namcoss23_gmen_state(const machine_config &mconfig, device_type type, const char *tag) : + namcoss23_state(mconfig, type, tag), m_sh2(*this, "sh2"), m_vpx(*this, "vpx"), m_firewire(*this, "firewire"), @@ -2091,8 +2106,8 @@ class namcos23_gmen_state : public namcos23_state void gmen(machine_config &config); void gunwars(machine_config &config); - void finfurl2(machine_config &config); void raceon(machine_config &config); + void finfurl2(machine_config &config); protected: virtual void machine_start() override ATTR_COLD; @@ -2129,11 +2144,11 @@ class namcos23_gmen_state : public namcos23_state u32 m_sh2_unk; }; -class crszone_state : public namcos23_state +class crszone_state : public namcoss23_state { public: crszone_state(const machine_config &mconfig, device_type type, const char *tag) : - namcos23_state(mconfig, type, tag), + namcoss23_state(mconfig, type, tag), m_acia(*this, "acia") { } @@ -2642,6 +2657,8 @@ void namcos23_state::c435_state_set(u16 type, const u16 *param) re->fade_flags = m_c404.fade_flags; re->absolute_priority = m_absolute_priority; re->model_blend_factor = 0; + re->camera_power = m_camera_power; + re->camera_ambient = m_camera_ambient; if (m_c435.buffer[0] == 0x4f38) { re->immediate.type = param[ 0]; @@ -2719,6 +2736,8 @@ void namcos23_state::c435_state_set(u16 type, const u16 *param) re->type = IMMEDIATE; re->absolute_priority = m_absolute_priority; re->model_blend_factor = 0; + re->camera_power = m_camera_power; + re->camera_ambient = m_camera_ambient; /* 3-e0: 1110 0000, has shade+tex+pos 3-a0: 1010 0000, has tex+pos @@ -2797,6 +2816,8 @@ void namcos23_state::c435_state_set(u16 type, const u16 *param) re->type = IMMEDIATE; re->absolute_priority = m_absolute_priority; re->model_blend_factor = 0; + re->camera_power = m_camera_power; + re->camera_ambient = m_camera_ambient; re->immediate.type = param[ 0]; re->immediate.h = (param[ 1] << 16) | param[ 2]; re->immediate.pal = (param[ 3] << 16) | param[ 4]; @@ -2870,14 +2891,24 @@ void namcos23_state::c435_state_set() // 4.f c435_state_set(m_c435.buffer[1], m_c435.buffer + 2); } +void namcos23_state::c435_absolute_priority_set() // 4.1 +{ + m_absolute_priority = m_c435.buffer[1]; +} + void namcos23_state::c435_model_blend_factor_set() // 4.5 { m_model_blend_factor = m_c435.buffer[1]; } -void namcos23_state::c435_absolute_priority_set() // 4.1 +void namcos23_state::c435_camera_power_set() // 4.7 { - m_absolute_priority = m_c435.buffer[1]; + m_camera_power = m_c435.buffer[1]; +} + +void namcos23_state::c435_camera_ambient_set() // 4.8 +{ + m_camera_ambient = m_c435.buffer[1]; } void namcos23_state::c435_render() // 8 @@ -2907,6 +2938,8 @@ void namcos23_state::c435_render() // 8 re->model.transpose = transpose; re->absolute_priority = m_absolute_priority; re->model_blend_factor = m_model_blend_factor; + re->camera_power = m_camera_power; + re->camera_ambient = m_camera_ambient; re->model.light_vector[0] = m_light_vector[0]; re->model.light_vector[1] = m_light_vector[1]; re->model.light_vector[2] = m_light_vector[2]; @@ -3018,6 +3051,12 @@ void namcos23_state::c435_pio_w(offs_t offset, u16 data) case 0x0500: c435_model_blend_factor_set(); break; + case 0x0700: + c435_camera_power_set(); + break; + case 0x0800: + c435_camera_ambient_set(); + break; case 0x0f00: c435_state_set(); break; @@ -3182,6 +3221,11 @@ u32 namcos23_state::c435_busy_flag_r() return 1; } +void namcoss23_state::c435_c361_ack_w(offs_t offset, u32 data) +{ + irq_update(m_main_irqcause & ~MAIN_C361_IRQ); +} + void namcos23_state::c435_dma_addr_w(offs_t offset, u32 data, u32 mem_mask) { LOGMASKED(LOG_C435_REG, "%s: c435 write address: %08x & %08x\n", machine().describe_context(), data, mem_mask); @@ -3480,8 +3524,8 @@ void namcos23_state::render_direct_poly(const namcos23_render_entry *re) p->rd.shade_enabled = true; p->rd.rgb = 0x00ffffff; p->rd.flags = flags; - p->rd.tbase = (re->direct.d[2] & 0x000f) << 12; - p->rd.cmode = (re->direct.d[2] & 0x00f0) >> 4; + p->rd.tbase = ((re->direct.d[2] & 0x000f) << 12) | (BIT(re->direct.d[2], 7) << 16); + p->rd.cmode = (re->direct.d[2] & 0x0070) >> 4; p->rd.cz_value = (re->direct.d[3] >> 2) & 0x1fff; p->rd.cz_type = re->direct.d[3] & 3; p->rd.prioverchar = ((p->rd.cmode & 7) == 1) ? 7 : 0; @@ -3727,8 +3771,8 @@ void namcos23_state::render_model(const namcos23_render_entry *re) u32 type = data[offs++]; u32 h = data[offs++]; - u32 cmode = (type & 0xf0000000) >> 28; - u32 tbase = ((type & 0x0f000000) >> 24) << 12; + u32 cmode = (type & 0x70000000) >> 29; + u32 tbase = (((type & 0x0f000000) >> 24) << 12) | (BIT(type, 31) << 16); u8 color = (h >> 24) & 0x7f; int lmode = (type >> 19) & 3; int ne = (type >> 8) & 15; @@ -3830,27 +3874,21 @@ void namcos23_state::render_model(const namcos23_render_entry *re) nrz /= length; } - float light_vector[3] = - { - util::sext(re->model.light_vector[0], 24) / 16384.f, - util::sext(re->model.light_vector[1], 24) / 16384.f, - util::sext(re->model.light_vector[2], 24) / 16384.f - }; - - length = sqrtf(light_vector[0] * light_vector[0] + light_vector[1] * light_vector[1] + light_vector[2] * light_vector[2]); + float cx, cy, cz; + render_apply_matrot(re->model.light_vector[0], re->model.light_vector[1], re->model.light_vector[2], re, cx, cy, cz); + length = sqrtf(cx * cx + cy * cy + cz * cz); if (length != 0.0f) { - light_vector[0] /= length; - light_vector[1] /= length; - light_vector[2] /= length; + cx /= length; + cy /= length; + cz /= length; } - float lsi = nrx * light_vector[0] + nry * light_vector[1] + nrz * light_vector[2]; + float lsi = nrx * cx + nry * cy + nrz * cz; if (lsi < 0) lsi = 0; - // Mapping taken out of a hat - pv[i].p[3] = std::clamp(16.f + 96.f * lsi, 0.f, 64.f); + pv[i].p[3] = std::clamp(re->camera_ambient + re->camera_power * lsi, 0.f, 64.f); } break; } } @@ -4455,7 +4493,7 @@ void namcos23_state::mix_text_layer(screen_device &screen, bitmap_rgb32 &bitmap, // apply alpha if (m_c404.alpha_factor && ((pen & 0xf) == m_c404.alpha_mask || (pen >= m_c404.alpha_check12 && pen <= m_c404.alpha_check13))) - rgb.blend(rgbaint_t(dst[x]), 0xff - m_c404.alpha_factor); + rgb.blend(rgbaint_t(*dst), 0xff - m_c404.alpha_factor); *dst = rgb.to_rgba(); } @@ -5043,7 +5081,9 @@ void namcos23_state::apply_text_scroll() // apply current frame x scroll updates to tilemap for (int i = 0; i < 480; i++) + { m_bgtilemap->set_scrollx((i + scroll_y + 4) & 0x3ff, m_c404.rowscroll[i]); + } } void namcos23_state::c361_xscroll_w(offs_t offset, u16 data) @@ -5547,9 +5587,15 @@ void namcos23_state::c404_map(address_map &map, const u32 addr) map(addr + 0x03e, addr + 0x03f).w(FUNC(namcos23_state::c404_layer_flags_w)); } +void namcoss23_state::mips_map(address_map &map) +{ + namcos23_state::mips_map(map); + map(0x0100005c, 0x0100005f).w(FUNC(namcoss23_state::c435_c361_ack_w)); +} + // GMEN interface -u32 namcos23_gmen_state::sh2_trigger_r() +u32 namcoss23_gmen_state::sh2_trigger_r() { LOGMASKED(LOG_SH2, "%s: sh2_trigger_r: booting SH-2\n", machine().describe_context()); m_sh2->set_input_line(INPUT_LINE_RESET, CLEAR_LINE); @@ -5557,81 +5603,81 @@ u32 namcos23_gmen_state::sh2_trigger_r() return 0; } -u32 namcos23_gmen_state::sh2_shared_r(offs_t offset, u32 mem_mask) +u32 namcoss23_gmen_state::sh2_shared_r(offs_t offset, u32 mem_mask) { return m_sh2_shared[offset]; } -void namcos23_gmen_state::sh2_shared_w(offs_t offset, u32 data, u32 mem_mask) +void namcoss23_gmen_state::sh2_shared_w(offs_t offset, u32 data, u32 mem_mask) { COMBINE_DATA(&m_sh2_shared[offset]); } -u32 namcos23_gmen_state::sh2_dsw_r(offs_t offset, u32 mem_mask) +u32 namcoss23_gmen_state::sh2_dsw_r(offs_t offset, u32 mem_mask) { return m_dsw->read() << 24; } -u32 namcos23_gmen_state::mips_sh2_unk_r(offs_t offset, u32 mem_mask) +u32 namcoss23_gmen_state::mips_sh2_unk_r(offs_t offset, u32 mem_mask) { logerror("%s: mips_sh2_unk_r: %08x & %08x\n", machine().describe_context().c_str(), m_sh2_unk, mem_mask); return m_sh2_unk; } -u32 namcos23_gmen_state::sh2_unk_r(offs_t offset, u32 mem_mask) +u32 namcoss23_gmen_state::sh2_unk_r(offs_t offset, u32 mem_mask) { return 0; } -void namcos23_gmen_state::sh2_unk_w(offs_t offset, u32 data, u32 mem_mask) +void namcoss23_gmen_state::sh2_unk_w(offs_t offset, u32 data, u32 mem_mask) { COMBINE_DATA(&m_sh2_unk); } -u32 namcos23_gmen_state::sh2_unk6200000_r(offs_t offset, u32 mem_mask) +u32 namcoss23_gmen_state::sh2_unk6200000_r(offs_t offset, u32 mem_mask) { return 0x04000000; } -void namcos23_gmen_state::vpx_i2c_sdao_w(int state) +void namcoss23_gmen_state::vpx_i2c_sdao_w(int state) { m_vpx_sdao = state; } -u8 namcos23_gmen_state::vpx_i2c_r() { +u8 namcoss23_gmen_state::vpx_i2c_r() { //LOGMASKED(LOG_GMEN, "%s: vpx_i2c_r: %02x\n", machine().describe_context().c_str(), m_vpx_sdao); return m_vpx_sdao; } -void namcos23_gmen_state::vpx_i2c_w(u8 data) { +void namcoss23_gmen_state::vpx_i2c_w(u8 data) { //LOGMASKED(LOG_GMEN, "%s: vpx_i2c_w: %02x\n", machine().describe_context().c_str(), data); m_vpx->sda_write(BIT(data, 0)); m_vpx->scl_write(BIT(data, 1)); } -u32 namcos23_gmen_state::sh2_kludge_r() +u32 namcoss23_gmen_state::sh2_kludge_r() { return 0x22115566; } -void namcos23_gmen_state::mips_map(address_map &map) +void namcoss23_gmen_state::mips_map(address_map &map) { - namcos23_state::mips_map(map); - map(0x0e400000, 0x0e400003).r(FUNC(namcos23_gmen_state::sh2_trigger_r)); - map(0x0e600000, 0x0e600003).r(FUNC(namcos23_gmen_state::mips_sh2_unk_r)); - map(0x0e700000, 0x0e70ffff).rw(FUNC(namcos23_gmen_state::sh2_shared_r), FUNC(namcos23_gmen_state::sh2_shared_w)); - map(0x0e70c000, 0x0e70c003).r(FUNC(namcos23_gmen_state::sh2_kludge_r)); + namcoss23_state::mips_map(map); + map(0x0e400000, 0x0e400003).r(FUNC(namcoss23_gmen_state::sh2_trigger_r)); + map(0x0e600000, 0x0e600003).r(FUNC(namcoss23_gmen_state::mips_sh2_unk_r)); + map(0x0e700000, 0x0e70ffff).rw(FUNC(namcoss23_gmen_state::sh2_shared_r), FUNC(namcoss23_gmen_state::sh2_shared_w)); + map(0x0e70c000, 0x0e70c003).r(FUNC(namcoss23_gmen_state::sh2_kludge_r)); } -void namcos23_gmen_state::sh2_map(address_map &map) +void namcoss23_gmen_state::sh2_map(address_map &map) { - map(0x00000000, 0x0000ffff).mirror(0x01000000).rw(FUNC(namcos23_gmen_state::sh2_shared_r), FUNC(namcos23_gmen_state::sh2_shared_w)); + map(0x00000000, 0x0000ffff).mirror(0x01000000).rw(FUNC(namcoss23_gmen_state::sh2_shared_r), FUNC(namcoss23_gmen_state::sh2_shared_w)); map(0x04000000, 0x043fffff).ram(); // SH-2 main work RAM (SDRAM) map(0x01800000, 0x01bfffff).ram(); - map(0x02800000, 0x02800003).rw(FUNC(namcos23_gmen_state::sh2_unk_r), FUNC(namcos23_gmen_state::sh2_unk_w)); - map(0x03000000, 0x03000003).r(FUNC(namcos23_gmen_state::sh2_dsw_r)); - map(0x06000000, 0x06000003).umask32(0xff000000).rw(FUNC(namcos23_gmen_state::vpx_i2c_r), FUNC(namcos23_gmen_state::vpx_i2c_w)); - map(0x06200000, 0x06200003).r(FUNC(namcos23_gmen_state::sh2_unk6200000_r)); + map(0x02800000, 0x02800003).rw(FUNC(namcoss23_gmen_state::sh2_unk_r), FUNC(namcoss23_gmen_state::sh2_unk_w)); + map(0x03000000, 0x03000003).r(FUNC(namcoss23_gmen_state::sh2_dsw_r)); + map(0x06000000, 0x06000003).umask32(0xff000000).rw(FUNC(namcoss23_gmen_state::vpx_i2c_r), FUNC(namcoss23_gmen_state::vpx_i2c_w)); + map(0x06200000, 0x06200003).r(FUNC(namcoss23_gmen_state::sh2_unk6200000_r)); //map(0x06600000, 0x06600003).nopw(); map(0x00c00000, 0x00c0006b).m(m_firewire, FUNC(md8412b_device::map)); } @@ -5922,6 +5968,8 @@ void namcos23_state::machine_start() save_item(NAME(m_absolute_priority)); save_item(NAME(m_model_blend_factor)); + save_item(NAME(m_camera_power)); + save_item(NAME(m_camera_ambient)); save_item(NAME(m_matrices)); save_item(NAME(m_vectors)); save_item(NAME(m_light_vector)); @@ -6022,15 +6070,15 @@ void gorgon_state::machine_reset() m_subcpu_scanline_off_timer->adjust(attotime::never); } -void namcos23_gmen_state::machine_start() +void namcoss23_gmen_state::machine_start() { namcos23_state::machine_start(); - m_sh2_irq_timer = timer_alloc(FUNC(namcos23_gmen_state::sh2_irq_off), this); + m_sh2_irq_timer = timer_alloc(FUNC(namcoss23_gmen_state::sh2_irq_off), this); save_item(NAME(m_vpx_sdao)); } -void namcos23_gmen_state::machine_reset() +void namcoss23_gmen_state::machine_reset() { namcos23_state::machine_reset(); @@ -6043,7 +6091,7 @@ void namcos23_gmen_state::machine_reset() m_vpx_sdao = 0; } -TIMER_CALLBACK_MEMBER(namcos23_gmen_state::sh2_irq_off) +TIMER_CALLBACK_MEMBER(namcoss23_gmen_state::sh2_irq_off) { m_sh2->set_input_line(m_sh2_irq, CLEAR_LINE); m_sh2_irq = -1; @@ -6263,57 +6311,57 @@ void namcos23_state::timecrs2(machine_config &config) m_jvs->set_default_option("namco_tssio"); } -void namcos23_state::ss23(machine_config &config) +void namcoss23_state::ss23(machine_config &config) { s23(config); } -void namcos23_state::timecrs2v4a(machine_config &config) +void namcoss23_state::timecrs2v4a(machine_config &config) { ss23(config); m_jvs->set_default_option("namco_tssio"); } -void namcos23_state::_500gp(machine_config &config) +void namcoss23_state::_500gp(machine_config &config) { ss23(config); m_jvs->set_default_option("namco_fca10"); } -void namcos23_state::aking(machine_config &config) +void namcoss23_state::aking(machine_config &config) { ss23(config); m_jvs->set_default_option("namco_fca10"); } -void namcos23_gmen_state::gmen(machine_config &config) +void namcoss23_gmen_state::gmen(machine_config &config) { ss23(config); - m_maincpu->set_addrmap(AS_PROGRAM, &namcos23_gmen_state::mips_map); + m_maincpu->set_addrmap(AS_PROGRAM, &namcoss23_gmen_state::mips_map); SH7604(config, m_sh2, XTAL(28'700'000)); - m_sh2->set_addrmap(AS_PROGRAM, &namcos23_gmen_state::sh2_map); + m_sh2->set_addrmap(AS_PROGRAM, &namcoss23_gmen_state::sh2_map); VPX3220A(config, m_vpx, 0); - m_vpx->sda_callback().set(FUNC(namcos23_gmen_state::vpx_i2c_sdao_w)); + m_vpx->sda_callback().set(FUNC(namcoss23_gmen_state::vpx_i2c_sdao_w)); MD8412B(config, m_firewire, 0); } -void namcos23_gmen_state::gunwars(machine_config &config) +void namcoss23_gmen_state::gunwars(machine_config &config) { gmen(config); m_jvs->set_default_option("namco_asca5"); } -void namcos23_gmen_state::raceon(machine_config &config) +void namcoss23_gmen_state::raceon(machine_config &config) { gmen(config); m_jvs->set_default_option("namco_asca5"); } -void namcos23_gmen_state::finfurl2(machine_config &config) +void namcoss23_gmen_state::finfurl2(machine_config &config) { gmen(config); m_jvs->set_default_option("namco_asca3a"); @@ -6350,15 +6398,21 @@ void crszone_state::crszone(machine_config &config) ***************************************************************************/ static INPUT_PORTS_START(s23) - // You can go to the pcb test mode by pressing P1-A, and it doesn't crash anymore somehow + // You can go to the pcb test mode by pressing P1-A in some games. // Use P1-A to select, P1-Sel+P1-A to exit, up/down to navigate PORT_START("P1") + PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_PLAYER(2) PORT_NAME("Dev Service P1-D") + PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_PLAYER(2) PORT_NAME("Dev Service P1-E") + PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_BUTTON7) PORT_PLAYER(2) PORT_NAME("Dev Service P1-F") PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("Dev Service P1-A") + PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_BUTTON8) PORT_PLAYER(2) PORT_NAME("Dev Service P1-G") + PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_BUTTON9) PORT_PLAYER(2) PORT_NAME("Dev Service P1-H") PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) PORT_PLAYER(2) PORT_NAME("Dev Service Down") PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) PORT_PLAYER(2) PORT_NAME("Dev Service Up") PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_START2) PORT_NAME("Dev Service Start") PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) PORT_NAME("Dev Service P1-Sel") - PORT_BIT(0xc37, IP_ACTIVE_LOW, IPT_UNKNOWN) + PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) PORT_NAME("Dev Service P1-B") + PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(2) PORT_NAME("Dev Service P1-C") PORT_START("P2") PORT_BIT(0xfff, IP_ACTIVE_LOW, IPT_UNKNOWN) @@ -7536,14 +7590,14 @@ ROM_START( raceon ) ROM_LOAD( "ro1ccrh.7e", 0x000000, 0x200000, CRC(1c958de2) SHA1(4893350999d5d377e68b9577187828de7a4c77c2) ) ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ - ROM_LOAD32_WORD_SWAP( "ro1pt0h.7a", 0x0000000, 0x400000, CRC(6ef742ab) SHA1(500ce413b2463a555237de7bcc9627d1082c9b52) ) - ROM_LOAD32_WORD_SWAP( "ro1pt0l.7c", 0x0000002, 0x400000, CRC(f4b88bd0) SHA1(cc642d959645730b03ef01e6dbb5d0077bce7163) ) - ROM_LOAD32_WORD_SWAP( "ro1pt1h.5a", 0x0800000, 0x400000, CRC(428bf573) SHA1(6be159e1cf7ef38639610c347fd2322ab9911a70) ) - ROM_LOAD32_WORD_SWAP( "ro1pt1l.5c", 0x0800002, 0x400000, CRC(f3df1d13) SHA1(9f96c99bd3537940a532d3dccb69a1c7d8c6be63) ) - ROM_LOAD32_WORD_SWAP( "ro1pt2h.4a", 0x1000000, 0x400000, CRC(e1abdbc9) SHA1(91827af01cb83f4422d7329c8eea52bb57d7d57e) ) - ROM_LOAD32_WORD_SWAP( "ro1pt2l.4c", 0x1000002, 0x400000, CRC(c64f5cdc) SHA1(e7261f3a56718f304127cc85c08d0b32525dc1cd) ) - ROM_LOAD32_WORD_SWAP( "ro1pt3h.3a", 0x1800000, 0x400000, CRC(ef4685f6) SHA1(930037cac4aae9892278aa322844d03c773c70f7) ) - ROM_LOAD32_WORD_SWAP( "ro1pt3l.3c", 0x1800002, 0x400000, CRC(07d27009) SHA1(770001bee9d7ace337db8a42bf377678b2b5d5fb) ) + ROM_LOAD32_WORD_SWAP( "ro1pt0h.7a", 0x0000000, 0x400000, CRC(b052c0dc) SHA1(ed60e2df68315da02a48a701841cd861e8dd46c2) ) + ROM_LOAD32_WORD_SWAP( "ro1pt0l.7c", 0x0000002, 0x400000, CRC(4f09e946) SHA1(4c0e1edb0e807b580849510aa45313ceb700b8b9) ) + ROM_LOAD32_WORD_SWAP( "ro1pt1h.5a", 0x0800000, 0x400000, CRC(94c6be22) SHA1(27fb80975a3332fe2ec91996d2c74b2f4fb5a2de) ) + ROM_LOAD32_WORD_SWAP( "ro1pt1l.5c", 0x0800002, 0x400000, CRC(307b30f2) SHA1(24e0e5d392751e1e4126a604c7a18f90be1e6771) ) + ROM_LOAD32_WORD_SWAP( "ro1pt2h.4a", 0x1000000, 0x400000, CRC(b77886f2) SHA1(efdeb11c9783dbd7eb776c2a99204fb2e55ecb6d) ) + ROM_LOAD32_WORD_SWAP( "ro1pt2l.4c", 0x1000002, 0x400000, CRC(6eaec66b) SHA1(d96d96d3b11a5109fed07e455e2abc9a8450080c) ) + ROM_LOAD32_WORD_SWAP( "ro1pt3h.3a", 0x1800000, 0x400000, CRC(87b8f7c5) SHA1(51f996199f7fc020f12c4ebd3e47acbc04341ce3) ) + ROM_LOAD32_WORD_SWAP( "ro1pt3l.3c", 0x1800002, 0x400000, CRC(ee1a4d1d) SHA1(4fa71edd26edcb3efc56b71f603fabcafcc2d3f3) ) ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ ROM_LOAD( "ro1wavel.2c", 0x000000, 0x800000, CRC(c6aca840) SHA1(09a021459b6326fe161ffcee36376648a5bf0e00) ) @@ -7587,14 +7641,14 @@ ROM_START( raceonj ) ROM_LOAD( "ro1ccrh.7e", 0x000000, 0x200000, CRC(1c958de2) SHA1(4893350999d5d377e68b9577187828de7a4c77c2) ) ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ - ROM_LOAD32_WORD_SWAP( "ro1pt0h.7a", 0x0000000, 0x400000, CRC(6ef742ab) SHA1(500ce413b2463a555237de7bcc9627d1082c9b52) ) - ROM_LOAD32_WORD_SWAP( "ro1pt0l.7c", 0x0000002, 0x400000, CRC(f4b88bd0) SHA1(cc642d959645730b03ef01e6dbb5d0077bce7163) ) - ROM_LOAD32_WORD_SWAP( "ro1pt1h.5a", 0x0800000, 0x400000, CRC(428bf573) SHA1(6be159e1cf7ef38639610c347fd2322ab9911a70) ) - ROM_LOAD32_WORD_SWAP( "ro1pt1l.5c", 0x0800002, 0x400000, CRC(f3df1d13) SHA1(9f96c99bd3537940a532d3dccb69a1c7d8c6be63) ) - ROM_LOAD32_WORD_SWAP( "ro1pt2h.4a", 0x1000000, 0x400000, CRC(e1abdbc9) SHA1(91827af01cb83f4422d7329c8eea52bb57d7d57e) ) - ROM_LOAD32_WORD_SWAP( "ro1pt2l.4c", 0x1000002, 0x400000, CRC(c64f5cdc) SHA1(e7261f3a56718f304127cc85c08d0b32525dc1cd) ) - ROM_LOAD32_WORD_SWAP( "ro1pt3h.3a", 0x1800000, 0x400000, CRC(ef4685f6) SHA1(930037cac4aae9892278aa322844d03c773c70f7) ) - ROM_LOAD32_WORD_SWAP( "ro1pt3l.3c", 0x1800002, 0x400000, CRC(07d27009) SHA1(770001bee9d7ace337db8a42bf377678b2b5d5fb) ) + ROM_LOAD32_WORD_SWAP( "ro1pt0h.7a", 0x0000000, 0x400000, CRC(b052c0dc) SHA1(ed60e2df68315da02a48a701841cd861e8dd46c2) ) + ROM_LOAD32_WORD_SWAP( "ro1pt0l.7c", 0x0000002, 0x400000, CRC(4f09e946) SHA1(4c0e1edb0e807b580849510aa45313ceb700b8b9) ) + ROM_LOAD32_WORD_SWAP( "ro1pt1h.5a", 0x0800000, 0x400000, CRC(94c6be22) SHA1(27fb80975a3332fe2ec91996d2c74b2f4fb5a2de) ) + ROM_LOAD32_WORD_SWAP( "ro1pt1l.5c", 0x0800002, 0x400000, CRC(307b30f2) SHA1(24e0e5d392751e1e4126a604c7a18f90be1e6771) ) + ROM_LOAD32_WORD_SWAP( "ro1pt2h.4a", 0x1000000, 0x400000, CRC(b77886f2) SHA1(efdeb11c9783dbd7eb776c2a99204fb2e55ecb6d) ) + ROM_LOAD32_WORD_SWAP( "ro1pt2l.4c", 0x1000002, 0x400000, CRC(6eaec66b) SHA1(d96d96d3b11a5109fed07e455e2abc9a8450080c) ) + ROM_LOAD32_WORD_SWAP( "ro1pt3h.3a", 0x1800000, 0x400000, CRC(87b8f7c5) SHA1(51f996199f7fc020f12c4ebd3e47acbc04341ce3) ) + ROM_LOAD32_WORD_SWAP( "ro1pt3l.3c", 0x1800002, 0x400000, CRC(ee1a4d1d) SHA1(4fa71edd26edcb3efc56b71f603fabcafcc2d3f3) ) ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ ROM_LOAD( "ro1wavel.2c", 0x000000, 0x800000, CRC(c6aca840) SHA1(09a021459b6326fe161ffcee36376648a5bf0e00) ) @@ -8306,42 +8360,91 @@ ROM_START( crszonev2a ) ROM_LOAD( "csz1ccrh.7k", 0x000000, 0x200000, CRC(bc2fa03c) SHA1(e63d8e75494a383bf9a213edfa9c472a010f8efe) ) ROM_END +ROM_START( crszonev2b ) + ROM_REGION32_BE( 0x800000, "user1", 0 ) /* 8 megs for main R4650 code */ + ROM_LOAD16_WORD_SWAP( "cszo2verb.ic4", 0x000000, 0x800000, CRC(1426d8d0) SHA1(e8049df1b2db1180f9edf6e5fa9fe8692ae81086) ) + + ROM_REGION( 0x80000, "subcpu", 0 ) /* Hitachi H8/3002 MCU code */ + ROM_LOAD16_WORD_SWAP( "cszo3verb.ic1", 0x000000, 0x080000, CRC(c790743b) SHA1(5fa7b83a7a1b1105a3aa0870b782cf2741b7d11c) ) + + ROM_REGION32_BE( 0x2000000, "data", 0 ) /* data ROMs */ + ROM_LOAD16_BYTE( "csz1mtah.2j", 0x0000000, 0x800000, CRC(66b076ad) SHA1(edd32e0b380f01a9626d32f5eec860f841c8be8a) ) + ROM_LOAD16_BYTE( "csz1mtal.2h", 0x0000001, 0x800000, CRC(38dc639a) SHA1(aa9b5b35174c1b007a57a4bd7a53bc3f479b5b71) ) + ROM_LOAD16_BYTE( "csz1mtbh.2m", 0x1000000, 0x800000, CRC(bdec4188) SHA1(a098651fbd8a69a0afc17f4b6c93350926cacd6b) ) + ROM_LOAD16_BYTE( "csz1mtbl.2f", 0x1000001, 0x800000, CRC(9c8f8d7a) SHA1(f61bcc9763df15428c82931a605ee40334d5ad98) ) + + ROM_REGION( 0x2000000, "textile", 0 ) /* texture tiles */ + ROM_LOAD( "csz1cgll.4m", 0x0000000, 0x800000, CRC(0bcd41f2) SHA1(80b74f9398e8bd074f79a14490d06cfeb875c874) ) + ROM_LOAD( "csz1cglm.4k", 0x0800000, 0x800000, CRC(d4af93d1) SHA1(0df37b793ce8da02d14f714722382786ae5d3ce2) ) + ROM_LOAD( "csz1cgum.4j", 0x1000000, 0x800000, CRC(913c98b5) SHA1(b952dbc19053796077d4f33e8da836893e933b12) ) + ROM_LOAD( "csz1cguu.5f", 0x1800000, 0x800000, CRC(e1d1bf24) SHA1(daf2c68e2d9a8f313d262d221cc990c93dfdf22f) ) + + ROM_REGION16_LE( 0x400000, "textilemapl", 0 ) /* texture tilemap 0-15 */ + ROM_LOAD( "csz1ccrl.7f", 0x000000, 0x400000, CRC(1c20768d) SHA1(6cf4280e26f3625d6f750837bf344163e7e93c3d) ) + + ROM_REGION( 0x200000, "textilemaph", 0 ) /* texture tilemap 16-17 + attr */ + ROM_LOAD( "csz1ccrh.7e", 0x000000, 0x200000, CRC(bc2fa03c) SHA1(e63d8e75494a383bf9a213edfa9c472a010f8efe) ) + + ROM_REGION32_BE( 0x2000000, "pointrom", 0 ) /* 3D model data */ + ROM_LOAD32_WORD_SWAP( "csz1pt0h.7a", 0x0000000, 0x400000, CRC(e82f1abb) SHA1(b1c57152cc27835e06e429fd1659fe0973638142) ) + ROM_LOAD32_WORD_SWAP( "csz1pt0l.7c", 0x0000002, 0x400000, CRC(b0d66afe) SHA1(7cda4eebf1bb1191d17e4b5e616be2fbe4ae9328) ) + ROM_LOAD32_WORD_SWAP( "csz1pt1h.5a", 0x0800000, 0x400000, CRC(e54f80ad) SHA1(3b3fbb3001e630d800b02ec8e653d74878ac5116) ) + ROM_LOAD32_WORD_SWAP( "csz1pt1l.5c", 0x0800002, 0x400000, CRC(527171c8) SHA1(0b2ce3858f40bdedf1543309a6bc28d780415250) ) + ROM_LOAD32_WORD_SWAP( "csz1pt2h.4a", 0x1000000, 0x400000, CRC(e295137a) SHA1(37b18af1b3d9f0e69b45135f89b49a1ceec79127) ) + ROM_LOAD32_WORD_SWAP( "csz1pt2l.4c", 0x1000002, 0x400000, CRC(c87d6dbd) SHA1(686f39073c521d6b21ef8bc1161b41b680697c63) ) + ROM_LOAD32_WORD_SWAP( "csz1pt3h.3a", 0x1800000, 0x400000, CRC(05f65bdf) SHA1(0c349fe5381fe7aeb81f9365a2b44a212f6bd33e) ) + ROM_LOAD32_WORD_SWAP( "csz1pt3l.3c", 0x1800002, 0x400000, CRC(5d077c0f) SHA1(a4fd0167d89bf9417766405726e0334e7c7eaec3) ) + + ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ + ROM_LOAD( "csz1wavel.2c", 0x000000, 0x800000, CRC(d0d74132) SHA1(a293d93bca8e12e388a088a592cfa7bcb9a976f7) ) + ROM_LOAD( "csz1waveh.2a", 0x800000, 0x800000, CRC(de9d14a8) SHA1(e5006861928bb1d29bf80c7304f1a6d044b094fd) ) + + ROM_REGION( 0x800000, "dups", 0 ) /* duplicate ROMs */ + ROM_LOAD( "csz1cguu.4f", 0x000000, 0x800000, CRC(e1d1bf24) SHA1(daf2c68e2d9a8f313d262d221cc990c93dfdf22f) ) + ROM_LOAD( "csz1cgum.5j", 0x000000, 0x800000, CRC(913c98b5) SHA1(b952dbc19053796077d4f33e8da836893e933b12) ) + ROM_LOAD( "csz1cgll.5m", 0x000000, 0x800000, CRC(0bcd41f2) SHA1(80b74f9398e8bd074f79a14490d06cfeb875c874) ) + ROM_LOAD( "csz1cglm.5k", 0x000000, 0x800000, CRC(d4af93d1) SHA1(0df37b793ce8da02d14f714722382786ae5d3ce2) ) + ROM_LOAD( "csz1ccrl.7m", 0x000000, 0x400000, CRC(1c20768d) SHA1(6cf4280e26f3625d6f750837bf344163e7e93c3d) ) + ROM_LOAD( "csz1ccrh.7k", 0x000000, 0x200000, CRC(bc2fa03c) SHA1(e63d8e75494a383bf9a213edfa9c472a010f8efe) ) +ROM_END + } // anonymous namespace /* Games */ #define GAME_FLAGS ( MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) -// YEAR, NAME, PARENT, MACHINE, INPUT, CLASS, INIT, MNTR, COMPANY, FULLNAME, FLAGS -GAME( 1997, rapidrvr, 0, rapidrvr, rapidrvr, rapidrvr_state, empty_init, ROT0, "Namco", "Rapid River (US, RD3 Ver. C)", GAME_FLAGS ) // 97/11/27, USA -GAME( 1997, rapidrvrv2c, rapidrvr, rapidrvr, rapidrvr, rapidrvr_state, empty_init, ROT0, "Namco", "Rapid River (World, RD2 Ver. C)", GAME_FLAGS ) // 97/11/27, Europe -GAME( 1997, rapidrvrp, rapidrvr, rapidrvr, rapidrvrp, rapidrvr_state, empty_init, ROT0, "Namco", "Rapid River (prototype)", GAME_FLAGS ) // 97/11/10, USA -GAME( 1997, finfurl, 0, finfurl, finfurl, gorgon_state, empty_init, ROT0, "Namco", "Final Furlong (World, FF2 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, downhill, 0, downhill, downhill, namcos23_state, empty_init, ROT0, "Namco", "Downhill Bikers (World, DH2 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, downhillu, downhill, downhill, downhill, namcos23_state, empty_init, ROT0, "Namco", "Downhill Bikers (US, DH3 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, motoxgo, 0, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (US, MG3 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, motoxgov2a, motoxgo, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (World, MG2 Ver. A, set 1)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, motoxgov2a2, motoxgo, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (World, MG2 Ver. A, set 2)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, motoxgov1a, motoxgo, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (Japan, MG1 Ver. A, set 1)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, motoxgov1a2, motoxgo, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (Japan, MG1 Ver. A, set 2)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, timecrs2, 0, timecrs2, timecrs2, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (US, TSS3 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, timecrs2v2b, timecrs2, timecrs2, timecrs2, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (World, TSS2 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, timecrs2v1b, timecrs2, timecrs2, timecrs2, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (Japan, TSS1 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, timecrs2v4a, timecrs2, timecrs2v4a, timecrs2, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (World, TSS4 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, timecrs2v5a, timecrs2, timecrs2v4a, timecrs2, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (US, TSS5 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1997, panicprk, 0, panicprk, panicprk, namcos23_state, empty_init, ROT0, "Namco", "Panic Park (World, PNP2 Ver. A)", GAME_FLAGS ) -GAME( 1997, panicprkj, panicprk, panicprk, panicprk, namcos23_state, empty_init, ROT0, "Namco", "Panic Park (Japan, PNP1 Ver. B, set 1)", GAME_FLAGS ) -GAME( 1997, panicprkj2, panicprk, panicprk, panicprk, namcos23_state, empty_init, ROT0, "Namco", "Panic Park (Japan, PNP1 Ver. B, set 2)", GAME_FLAGS ) -GAME( 1998, gunwars, 0, gunwars, gunwars, namcos23_gmen_state, empty_init, ROT0, "Namco", "Gunmen Wars (Japan, GM1 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1998, gunwarsa, gunwars, gunwars, gunwars, namcos23_gmen_state, empty_init, ROT0, "Namco", "Gunmen Wars (Japan, GM1 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1998, raceon, 0, raceon, raceon, namcos23_gmen_state, empty_init, ROT0, "Namco", "Race On! (World, RO2 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1998, raceonj, raceon, raceon, raceon, namcos23_gmen_state, empty_init, ROT0, "Namco", "Race On! (Japan, RO1 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1998, 500gp, 0, _500gp, 500gp, namcos23_state, empty_init, ROT0, "Namco", "500 GP (US, 5GP3 Ver. C)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) -GAME( 1998, aking, 0, aking, aking, namcos23_state, empty_init, ROT0, "Namco", "Angler King (Japan, AG1 Ver. A)", GAME_FLAGS ) -GAME( 1998, finfurl2, 0, finfurl2, finfurl2, namcos23_gmen_state, empty_init, ROT0, "Namco", "Final Furlong 2 (World)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) // 99/02/26 15:08:47 Overseas -GAME( 1998, finfurl2j, finfurl2, finfurl2, finfurl2, namcos23_gmen_state, empty_init, ROT0, "Namco", "Final Furlong 2 (Japan, FFS1 Ver.A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) // 99/02/26 15:03:14 Japanese -GAME( 1999, crszone, 0, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (World, CSZO4 Ver. B)", GAME_FLAGS ) -GAME( 1999, crszonev4a, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (World, CSZO4 Ver. A)", GAME_FLAGS ) -GAME( 1999, crszonev3b, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (US, CSZO3 Ver. B, set 1)", GAME_FLAGS ) -GAME( 1999, crszonev3b2, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (US, CSZO3 Ver. B, set 2)", GAME_FLAGS ) -GAME( 1999, crszonev3a, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (US, CSZO3 Ver. A)", GAME_FLAGS ) -GAME( 1999, crszonev2a, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (World, CSZO2 Ver. A)", GAME_FLAGS ) +// YEAR, NAME, PARENT, MACHINE, INPUT, CLASS, INIT, MNTR, COMPANY, FULLNAME, FLAGS +GAME( 1997, rapidrvr, 0, rapidrvr, rapidrvr, rapidrvr_state, empty_init, ROT0, "Namco", "Rapid River (US, RD3 Ver. C)", GAME_FLAGS ) // 97/11/27, USA +GAME( 1997, rapidrvrv2c, rapidrvr, rapidrvr, rapidrvr, rapidrvr_state, empty_init, ROT0, "Namco", "Rapid River (World, RD2 Ver. C)", GAME_FLAGS ) // 97/11/27, Europe +GAME( 1997, rapidrvrp, rapidrvr, rapidrvr, rapidrvrp, rapidrvr_state, empty_init, ROT0, "Namco", "Rapid River (prototype)", GAME_FLAGS ) // 97/11/10, USA +GAME( 1997, finfurl, 0, finfurl, finfurl, gorgon_state, empty_init, ROT0, "Namco", "Final Furlong (World, FF2 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, downhill, 0, downhill, downhill, namcos23_state, empty_init, ROT0, "Namco", "Downhill Bikers (World, DH2 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, downhillu, downhill, downhill, downhill, namcos23_state, empty_init, ROT0, "Namco", "Downhill Bikers (US, DH3 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, motoxgo, 0, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (US, MG3 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, motoxgov2a, motoxgo, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (World, MG2 Ver. A, set 1)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, motoxgov2a2, motoxgo, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (World, MG2 Ver. A, set 2)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, motoxgov1a, motoxgo, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (Japan, MG1 Ver. A, set 1)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, motoxgov1a2, motoxgo, motoxgo, motoxgo, motoxgo_state, empty_init, ROT0, "Namco", "Motocross Go! (Japan, MG1 Ver. A, set 2)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, timecrs2, 0, timecrs2, timecrs2, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (US, TSS3 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, timecrs2v2b, timecrs2, timecrs2, timecrs2, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (World, TSS2 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, timecrs2v1b, timecrs2, timecrs2, timecrs2, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (Japan, TSS1 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, timecrs2v4a, timecrs2, timecrs2v4a, timecrs2, namcoss23_state, empty_init, ROT0, "Namco", "Time Crisis II (World, TSS4 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, timecrs2v5a, timecrs2, timecrs2v4a, timecrs2, namcoss23_state, empty_init, ROT0, "Namco", "Time Crisis II (US, TSS5 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1997, panicprk, 0, panicprk, panicprk, namcos23_state, empty_init, ROT0, "Namco", "Panic Park (World, PNP2 Ver. A)", GAME_FLAGS ) +GAME( 1997, panicprkj, panicprk, panicprk, panicprk, namcos23_state, empty_init, ROT0, "Namco", "Panic Park (Japan, PNP1 Ver. B, set 1)", GAME_FLAGS ) +GAME( 1997, panicprkj2, panicprk, panicprk, panicprk, namcos23_state, empty_init, ROT0, "Namco", "Panic Park (Japan, PNP1 Ver. B, set 2)", GAME_FLAGS ) +GAME( 1998, gunwars, 0, gunwars, gunwars, namcoss23_gmen_state, empty_init, ROT0, "Namco", "Gunmen Wars (Japan, GM1 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1998, gunwarsa, gunwars, gunwars, gunwars, namcoss23_gmen_state, empty_init, ROT0, "Namco", "Gunmen Wars (Japan, GM1 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1998, raceon, 0, raceon, raceon, namcoss23_gmen_state, empty_init, ROT0, "Namco", "Race On! (World, RO2 Ver. A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1998, raceonj, raceon, raceon, raceon, namcoss23_gmen_state, empty_init, ROT0, "Namco", "Race On! (Japan, RO1 Ver. B)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1998, 500gp, 0, _500gp, 500gp, namcoss23_state, empty_init, ROT0, "Namco", "500 GP (US, 5GP3 Ver. C)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) +GAME( 1998, aking, 0, aking, aking, namcoss23_state, empty_init, ROT0, "Namco", "Angler King (Japan, AG1 Ver. A)", GAME_FLAGS ) +GAME( 1998, finfurl2, 0, finfurl2, finfurl2, namcoss23_gmen_state, empty_init, ROT0, "Namco", "Final Furlong 2 (World)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) // 99/02/26 15:08:47 Overseas +GAME( 1998, finfurl2j, finfurl2, finfurl2, finfurl2, namcoss23_gmen_state, empty_init, ROT0, "Namco", "Final Furlong 2 (Japan, FFS1 Ver.A)", GAME_FLAGS | MACHINE_NODEVICE_LAN ) // 99/02/26 15:03:14 Japanese +GAME( 1999, crszone, 0, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (World, CSZO4 Ver. B)", GAME_FLAGS ) +GAME( 1999, crszonev4a, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (World, CSZO4 Ver. A)", GAME_FLAGS ) +GAME( 1999, crszonev3b, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (US, CSZO3 Ver. B, set 1)", GAME_FLAGS ) +GAME( 1999, crszonev3b2, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (US, CSZO3 Ver. B, set 2)", GAME_FLAGS ) +GAME( 1999, crszonev3a, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (US, CSZO3 Ver. A)", GAME_FLAGS ) +GAME( 1999, crszonev2a, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (World, CSZO2 Ver. A)", GAME_FLAGS ) +GAME( 1999, crszonev2b, crszone, crszone, crszone, crszone_state, empty_init, ROT0, "Namco", "Crisis Zone (World, CSZO2 Ver. B)", GAME_FLAGS )