Namco System 23 texturing improvements + boot fix for aking (#12941)

New clones marked not working
-----------------------------
Crisis Zone (World, CSZO2 Ver. B) [Guru]

-namcos23.cpp: Improved texturing in Super System 23 games. [Ryan Holtz]
* Added missing address-map setter.
This commit is contained in:
MooglyGuy 2024-11-06 16:10:10 +01:00 committed by GitHub
parent 88079a1bf3
commit ae250c58d0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -110,20 +110,14 @@ c8000000:
':maincpu' (801143E0): unmapped program memory write to 0C800010 = 00000000 & 0000FFFF ':maincpu' (801143E0): unmapped program memory write to 0C800010 = 00000000 & 0000FFFF
Game status: Game status:
rapidrvr,v2c Glitchy graphics. all games: Glitchy graphics.
rapidrvrp Same as above. downhill/u Extremely glitchy graphics.
finfurl Same as above. panicprk/j/j2 Some mini-games are not playable due to Z-sorting issues.
motoxgo(all) Glitchy graphics. gunwars/a Extremely 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.
raceon Locks up after POST. raceon Locks up after POST.
aking Locks up after displaying legal-notice screen or test menu. Inputs unresponsive. aking Inputs unresponsive.
500gp Extremely glitchy graphics. Partly playable. 500gp Occasional lockups.
finfurl2,j Glitchy graphics. crszone(all) Input issues.
crszone(all) Glitchy graphics.
**************************************************************************** ****************************************************************************
@ -1446,6 +1440,8 @@ struct namcos23_render_entry
int type; int type;
u16 absolute_priority; u16 absolute_priority;
u16 model_blend_factor; u16 model_blend_factor;
u16 camera_power;
u16 camera_ambient;
u8 poly_fade_r; u8 poly_fade_r;
u8 poly_fade_g; u8 poly_fade_g;
u8 poly_fade_b; u8 poly_fade_b;
@ -1665,12 +1661,8 @@ public:
m_lamps(*this, "lamp%u", 0U) m_lamps(*this, "lamp%u", 0U)
{ } { }
void ss23(machine_config &config);
void s23(machine_config &config); void s23(machine_config &config);
void timecrs2(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 downhill(machine_config &config);
void panicprk(machine_config &config); void panicprk(machine_config &config);
@ -1814,6 +1806,8 @@ protected:
void c435_scaling_set(); void c435_scaling_set();
void c435_model_blend_factor_set(); void c435_model_blend_factor_set();
void c435_absolute_priority_set(); void c435_absolute_priority_set();
void c435_camera_power_set();
void c435_camera_ambient_set();
void c435_render(); void c435_render();
void c435_flush(); void c435_flush();
@ -1906,6 +1900,8 @@ protected:
u16 m_absolute_priority; u16 m_absolute_priority;
u16 m_model_blend_factor; u16 m_model_blend_factor;
u16 m_camera_power;
u16 m_camera_ambient;
float m_proj_matrix[8*3]; float m_proj_matrix[8*3];
u8 m_proj_matrix_line; u8 m_proj_matrix_line;
@ -2077,11 +2073,30 @@ protected:
u16 m_sensor[4]; u16 m_sensor[4];
}; };
class namcos23_gmen_state : public namcos23_state class namcoss23_state : public namcos23_state
{ {
public: public:
namcos23_gmen_state(const machine_config &mconfig, device_type type, const char *tag) : namcoss23_state(const machine_config &mconfig, device_type type, const char *tag) :
namcos23_state(mconfig, type, 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:
namcoss23_gmen_state(const machine_config &mconfig, device_type type, const char *tag) :
namcoss23_state(mconfig, type, tag),
m_sh2(*this, "sh2"), m_sh2(*this, "sh2"),
m_vpx(*this, "vpx"), m_vpx(*this, "vpx"),
m_firewire(*this, "firewire"), m_firewire(*this, "firewire"),
@ -2091,8 +2106,8 @@ public:
void gmen(machine_config &config); void gmen(machine_config &config);
void gunwars(machine_config &config); void gunwars(machine_config &config);
void finfurl2(machine_config &config);
void raceon(machine_config &config); void raceon(machine_config &config);
void finfurl2(machine_config &config);
protected: protected:
virtual void machine_start() override ATTR_COLD; virtual void machine_start() override ATTR_COLD;
@ -2129,11 +2144,11 @@ private:
u32 m_sh2_unk; u32 m_sh2_unk;
}; };
class crszone_state : public namcos23_state class crszone_state : public namcoss23_state
{ {
public: public:
crszone_state(const machine_config &mconfig, device_type type, const char *tag) : 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") 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->fade_flags = m_c404.fade_flags;
re->absolute_priority = m_absolute_priority; re->absolute_priority = m_absolute_priority;
re->model_blend_factor = 0; re->model_blend_factor = 0;
re->camera_power = m_camera_power;
re->camera_ambient = m_camera_ambient;
if (m_c435.buffer[0] == 0x4f38) if (m_c435.buffer[0] == 0x4f38)
{ {
re->immediate.type = param[ 0]; re->immediate.type = param[ 0];
@ -2719,6 +2736,8 @@ void namcos23_state::c435_state_set(u16 type, const u16 *param)
re->type = IMMEDIATE; re->type = IMMEDIATE;
re->absolute_priority = m_absolute_priority; re->absolute_priority = m_absolute_priority;
re->model_blend_factor = 0; 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-e0: 1110 0000, has shade+tex+pos
3-a0: 1010 0000, has 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->type = IMMEDIATE;
re->absolute_priority = m_absolute_priority; re->absolute_priority = m_absolute_priority;
re->model_blend_factor = 0; re->model_blend_factor = 0;
re->camera_power = m_camera_power;
re->camera_ambient = m_camera_ambient;
re->immediate.type = param[ 0]; re->immediate.type = param[ 0];
re->immediate.h = (param[ 1] << 16) | param[ 2]; re->immediate.h = (param[ 1] << 16) | param[ 2];
re->immediate.pal = (param[ 3] << 16) | param[ 4]; 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); 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 void namcos23_state::c435_model_blend_factor_set() // 4.5
{ {
m_model_blend_factor = m_c435.buffer[1]; 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 void namcos23_state::c435_render() // 8
@ -2907,6 +2938,8 @@ void namcos23_state::c435_render() // 8
re->model.transpose = transpose; re->model.transpose = transpose;
re->absolute_priority = m_absolute_priority; re->absolute_priority = m_absolute_priority;
re->model_blend_factor = m_model_blend_factor; 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[0] = m_light_vector[0];
re->model.light_vector[1] = m_light_vector[1]; re->model.light_vector[1] = m_light_vector[1];
re->model.light_vector[2] = m_light_vector[2]; 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: case 0x0500:
c435_model_blend_factor_set(); c435_model_blend_factor_set();
break; break;
case 0x0700:
c435_camera_power_set();
break;
case 0x0800:
c435_camera_ambient_set();
break;
case 0x0f00: case 0x0f00:
c435_state_set(); c435_state_set();
break; break;
@ -3182,6 +3221,11 @@ u32 namcos23_state::c435_busy_flag_r()
return 1; 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) 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); 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.shade_enabled = true;
p->rd.rgb = 0x00ffffff; p->rd.rgb = 0x00ffffff;
p->rd.flags = flags; p->rd.flags = flags;
p->rd.tbase = (re->direct.d[2] & 0x000f) << 12; p->rd.tbase = ((re->direct.d[2] & 0x000f) << 12) | (BIT(re->direct.d[2], 7) << 16);
p->rd.cmode = (re->direct.d[2] & 0x00f0) >> 4; p->rd.cmode = (re->direct.d[2] & 0x0070) >> 4;
p->rd.cz_value = (re->direct.d[3] >> 2) & 0x1fff; p->rd.cz_value = (re->direct.d[3] >> 2) & 0x1fff;
p->rd.cz_type = re->direct.d[3] & 3; p->rd.cz_type = re->direct.d[3] & 3;
p->rd.prioverchar = ((p->rd.cmode & 7) == 1) ? 7 : 0; 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 type = data[offs++];
u32 h = data[offs++]; u32 h = data[offs++];
u32 cmode = (type & 0xf0000000) >> 28; u32 cmode = (type & 0x70000000) >> 29;
u32 tbase = ((type & 0x0f000000) >> 24) << 12; u32 tbase = (((type & 0x0f000000) >> 24) << 12) | (BIT(type, 31) << 16);
u8 color = (h >> 24) & 0x7f; u8 color = (h >> 24) & 0x7f;
int lmode = (type >> 19) & 3; int lmode = (type >> 19) & 3;
int ne = (type >> 8) & 15; int ne = (type >> 8) & 15;
@ -3830,27 +3874,21 @@ void namcos23_state::render_model(const namcos23_render_entry *re)
nrz /= length; nrz /= length;
} }
float light_vector[3] = 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);
util::sext(re->model.light_vector[0], 24) / 16384.f, length = sqrtf(cx * cx + cy * cy + cz * cz);
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]);
if (length != 0.0f) if (length != 0.0f)
{ {
light_vector[0] /= length; cx /= length;
light_vector[1] /= length; cy /= length;
light_vector[2] /= 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) if (lsi < 0)
lsi = 0; lsi = 0;
// Mapping taken out of a hat pv[i].p[3] = std::clamp(re->camera_ambient + re->camera_power * lsi, 0.f, 64.f);
pv[i].p[3] = std::clamp(16.f + 96.f * lsi, 0.f, 64.f);
} break; } break;
} }
} }
@ -4455,7 +4493,7 @@ void namcos23_state::mix_text_layer(screen_device &screen, bitmap_rgb32 &bitmap,
// apply alpha // apply alpha
if (m_c404.alpha_factor && ((pen & 0xf) == m_c404.alpha_mask || (pen >= m_c404.alpha_check12 && pen <= m_c404.alpha_check13))) 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(); *dst = rgb.to_rgba();
} }
@ -5043,7 +5081,9 @@ void namcos23_state::apply_text_scroll()
// apply current frame x scroll updates to tilemap // apply current frame x scroll updates to tilemap
for (int i = 0; i < 480; i++) for (int i = 0; i < 480; i++)
{
m_bgtilemap->set_scrollx((i + scroll_y + 4) & 0x3ff, m_c404.rowscroll[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) 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)); 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 // 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()); LOGMASKED(LOG_SH2, "%s: sh2_trigger_r: booting SH-2\n", machine().describe_context());
m_sh2->set_input_line(INPUT_LINE_RESET, CLEAR_LINE); m_sh2->set_input_line(INPUT_LINE_RESET, CLEAR_LINE);
@ -5557,81 +5603,81 @@ u32 namcos23_gmen_state::sh2_trigger_r()
return 0; 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]; 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]); 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; 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); logerror("%s: mips_sh2_unk_r: %08x & %08x\n", machine().describe_context().c_str(), m_sh2_unk, mem_mask);
return m_sh2_unk; 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; 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); 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; 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; 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); //LOGMASKED(LOG_GMEN, "%s: vpx_i2c_r: %02x\n", machine().describe_context().c_str(), m_vpx_sdao);
return 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); //LOGMASKED(LOG_GMEN, "%s: vpx_i2c_w: %02x\n", machine().describe_context().c_str(), data);
m_vpx->sda_write(BIT(data, 0)); m_vpx->sda_write(BIT(data, 0));
m_vpx->scl_write(BIT(data, 1)); m_vpx->scl_write(BIT(data, 1));
} }
u32 namcos23_gmen_state::sh2_kludge_r() u32 namcoss23_gmen_state::sh2_kludge_r()
{ {
return 0x22115566; 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); namcoss23_state::mips_map(map);
map(0x0e400000, 0x0e400003).r(FUNC(namcos23_gmen_state::sh2_trigger_r)); map(0x0e400000, 0x0e400003).r(FUNC(namcoss23_gmen_state::sh2_trigger_r));
map(0x0e600000, 0x0e600003).r(FUNC(namcos23_gmen_state::mips_sh2_unk_r)); map(0x0e600000, 0x0e600003).r(FUNC(namcoss23_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(0x0e700000, 0x0e70ffff).rw(FUNC(namcoss23_gmen_state::sh2_shared_r), FUNC(namcoss23_gmen_state::sh2_shared_w));
map(0x0e70c000, 0x0e70c003).r(FUNC(namcos23_gmen_state::sh2_kludge_r)); 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(0x04000000, 0x043fffff).ram(); // SH-2 main work RAM (SDRAM)
map(0x01800000, 0x01bfffff).ram(); map(0x01800000, 0x01bfffff).ram();
map(0x02800000, 0x02800003).rw(FUNC(namcos23_gmen_state::sh2_unk_r), FUNC(namcos23_gmen_state::sh2_unk_w)); map(0x02800000, 0x02800003).rw(FUNC(namcoss23_gmen_state::sh2_unk_r), FUNC(namcoss23_gmen_state::sh2_unk_w));
map(0x03000000, 0x03000003).r(FUNC(namcos23_gmen_state::sh2_dsw_r)); map(0x03000000, 0x03000003).r(FUNC(namcoss23_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(0x06000000, 0x06000003).umask32(0xff000000).rw(FUNC(namcoss23_gmen_state::vpx_i2c_r), FUNC(namcoss23_gmen_state::vpx_i2c_w));
map(0x06200000, 0x06200003).r(FUNC(namcos23_gmen_state::sh2_unk6200000_r)); map(0x06200000, 0x06200003).r(FUNC(namcoss23_gmen_state::sh2_unk6200000_r));
//map(0x06600000, 0x06600003).nopw(); //map(0x06600000, 0x06600003).nopw();
map(0x00c00000, 0x00c0006b).m(m_firewire, FUNC(md8412b_device::map)); 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_absolute_priority));
save_item(NAME(m_model_blend_factor)); 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_matrices));
save_item(NAME(m_vectors)); save_item(NAME(m_vectors));
save_item(NAME(m_light_vector)); save_item(NAME(m_light_vector));
@ -6022,15 +6070,15 @@ void gorgon_state::machine_reset()
m_subcpu_scanline_off_timer->adjust(attotime::never); m_subcpu_scanline_off_timer->adjust(attotime::never);
} }
void namcos23_gmen_state::machine_start() void namcoss23_gmen_state::machine_start()
{ {
namcos23_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)); save_item(NAME(m_vpx_sdao));
} }
void namcos23_gmen_state::machine_reset() void namcoss23_gmen_state::machine_reset()
{ {
namcos23_state::machine_reset(); namcos23_state::machine_reset();
@ -6043,7 +6091,7 @@ void namcos23_gmen_state::machine_reset()
m_vpx_sdao = 0; 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->set_input_line(m_sh2_irq, CLEAR_LINE);
m_sh2_irq = -1; m_sh2_irq = -1;
@ -6263,57 +6311,58 @@ void namcos23_state::timecrs2(machine_config &config)
m_jvs->set_default_option("namco_tssio"); m_jvs->set_default_option("namco_tssio");
} }
void namcos23_state::ss23(machine_config &config) void namcoss23_state::ss23(machine_config &config)
{ {
s23(config); s23(config);
m_maincpu->set_addrmap(AS_PROGRAM, &namcoss23_state::mips_map);
} }
void namcos23_state::timecrs2v4a(machine_config &config) void namcoss23_state::timecrs2v4a(machine_config &config)
{ {
ss23(config); ss23(config);
m_jvs->set_default_option("namco_tssio"); m_jvs->set_default_option("namco_tssio");
} }
void namcos23_state::_500gp(machine_config &config) void namcoss23_state::_500gp(machine_config &config)
{ {
ss23(config); ss23(config);
m_jvs->set_default_option("namco_fca10"); m_jvs->set_default_option("namco_fca10");
} }
void namcos23_state::aking(machine_config &config) void namcoss23_state::aking(machine_config &config)
{ {
ss23(config); ss23(config);
m_jvs->set_default_option("namco_fca10"); 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); 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)); 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); 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); MD8412B(config, m_firewire, 0);
} }
void namcos23_gmen_state::gunwars(machine_config &config) void namcoss23_gmen_state::gunwars(machine_config &config)
{ {
gmen(config); gmen(config);
m_jvs->set_default_option("namco_asca5"); 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); gmen(config);
m_jvs->set_default_option("namco_asca5"); 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); gmen(config);
m_jvs->set_default_option("namco_asca3a"); m_jvs->set_default_option("namco_asca3a");
@ -6350,15 +6399,21 @@ void crszone_state::crszone(machine_config &config)
***************************************************************************/ ***************************************************************************/
static INPUT_PORTS_START(s23) 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 // Use P1-A to select, P1-Sel+P1-A to exit, up/down to navigate
PORT_START("P1") 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(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(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(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(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(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_START("P2")
PORT_BIT(0xfff, IP_ACTIVE_LOW, IPT_UNKNOWN) PORT_BIT(0xfff, IP_ACTIVE_LOW, IPT_UNKNOWN)
@ -7536,14 +7591,14 @@ ROM_START( raceon )
ROM_LOAD( "ro1ccrh.7e", 0x000000, 0x200000, CRC(1c958de2) SHA1(4893350999d5d377e68b9577187828de7a4c77c2) ) ROM_LOAD( "ro1ccrh.7e", 0x000000, 0x200000, CRC(1c958de2) SHA1(4893350999d5d377e68b9577187828de7a4c77c2) )
ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ 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( "ro1pt0h.7a", 0x0000000, 0x400000, CRC(b052c0dc) SHA1(ed60e2df68315da02a48a701841cd861e8dd46c2) )
ROM_LOAD32_WORD_SWAP( "ro1pt0l.7c", 0x0000002, 0x400000, CRC(f4b88bd0) SHA1(cc642d959645730b03ef01e6dbb5d0077bce7163) ) ROM_LOAD32_WORD_SWAP( "ro1pt0l.7c", 0x0000002, 0x400000, CRC(4f09e946) SHA1(4c0e1edb0e807b580849510aa45313ceb700b8b9) )
ROM_LOAD32_WORD_SWAP( "ro1pt1h.5a", 0x0800000, 0x400000, CRC(428bf573) SHA1(6be159e1cf7ef38639610c347fd2322ab9911a70) ) ROM_LOAD32_WORD_SWAP( "ro1pt1h.5a", 0x0800000, 0x400000, CRC(94c6be22) SHA1(27fb80975a3332fe2ec91996d2c74b2f4fb5a2de) )
ROM_LOAD32_WORD_SWAP( "ro1pt1l.5c", 0x0800002, 0x400000, CRC(f3df1d13) SHA1(9f96c99bd3537940a532d3dccb69a1c7d8c6be63) ) ROM_LOAD32_WORD_SWAP( "ro1pt1l.5c", 0x0800002, 0x400000, CRC(307b30f2) SHA1(24e0e5d392751e1e4126a604c7a18f90be1e6771) )
ROM_LOAD32_WORD_SWAP( "ro1pt2h.4a", 0x1000000, 0x400000, CRC(e1abdbc9) SHA1(91827af01cb83f4422d7329c8eea52bb57d7d57e) ) ROM_LOAD32_WORD_SWAP( "ro1pt2h.4a", 0x1000000, 0x400000, CRC(b77886f2) SHA1(efdeb11c9783dbd7eb776c2a99204fb2e55ecb6d) )
ROM_LOAD32_WORD_SWAP( "ro1pt2l.4c", 0x1000002, 0x400000, CRC(c64f5cdc) SHA1(e7261f3a56718f304127cc85c08d0b32525dc1cd) ) ROM_LOAD32_WORD_SWAP( "ro1pt2l.4c", 0x1000002, 0x400000, CRC(6eaec66b) SHA1(d96d96d3b11a5109fed07e455e2abc9a8450080c) )
ROM_LOAD32_WORD_SWAP( "ro1pt3h.3a", 0x1800000, 0x400000, CRC(ef4685f6) SHA1(930037cac4aae9892278aa322844d03c773c70f7) ) ROM_LOAD32_WORD_SWAP( "ro1pt3h.3a", 0x1800000, 0x400000, CRC(87b8f7c5) SHA1(51f996199f7fc020f12c4ebd3e47acbc04341ce3) )
ROM_LOAD32_WORD_SWAP( "ro1pt3l.3c", 0x1800002, 0x400000, CRC(07d27009) SHA1(770001bee9d7ace337db8a42bf377678b2b5d5fb) ) ROM_LOAD32_WORD_SWAP( "ro1pt3l.3c", 0x1800002, 0x400000, CRC(ee1a4d1d) SHA1(4fa71edd26edcb3efc56b71f603fabcafcc2d3f3) )
ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */
ROM_LOAD( "ro1wavel.2c", 0x000000, 0x800000, CRC(c6aca840) SHA1(09a021459b6326fe161ffcee36376648a5bf0e00) ) ROM_LOAD( "ro1wavel.2c", 0x000000, 0x800000, CRC(c6aca840) SHA1(09a021459b6326fe161ffcee36376648a5bf0e00) )
@ -7587,14 +7642,14 @@ ROM_START( raceonj )
ROM_LOAD( "ro1ccrh.7e", 0x000000, 0x200000, CRC(1c958de2) SHA1(4893350999d5d377e68b9577187828de7a4c77c2) ) ROM_LOAD( "ro1ccrh.7e", 0x000000, 0x200000, CRC(1c958de2) SHA1(4893350999d5d377e68b9577187828de7a4c77c2) )
ROM_REGION32_LE( 0x2000000, "pointrom", 0 ) /* 3D model data */ 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( "ro1pt0h.7a", 0x0000000, 0x400000, CRC(b052c0dc) SHA1(ed60e2df68315da02a48a701841cd861e8dd46c2) )
ROM_LOAD32_WORD_SWAP( "ro1pt0l.7c", 0x0000002, 0x400000, CRC(f4b88bd0) SHA1(cc642d959645730b03ef01e6dbb5d0077bce7163) ) ROM_LOAD32_WORD_SWAP( "ro1pt0l.7c", 0x0000002, 0x400000, CRC(4f09e946) SHA1(4c0e1edb0e807b580849510aa45313ceb700b8b9) )
ROM_LOAD32_WORD_SWAP( "ro1pt1h.5a", 0x0800000, 0x400000, CRC(428bf573) SHA1(6be159e1cf7ef38639610c347fd2322ab9911a70) ) ROM_LOAD32_WORD_SWAP( "ro1pt1h.5a", 0x0800000, 0x400000, CRC(94c6be22) SHA1(27fb80975a3332fe2ec91996d2c74b2f4fb5a2de) )
ROM_LOAD32_WORD_SWAP( "ro1pt1l.5c", 0x0800002, 0x400000, CRC(f3df1d13) SHA1(9f96c99bd3537940a532d3dccb69a1c7d8c6be63) ) ROM_LOAD32_WORD_SWAP( "ro1pt1l.5c", 0x0800002, 0x400000, CRC(307b30f2) SHA1(24e0e5d392751e1e4126a604c7a18f90be1e6771) )
ROM_LOAD32_WORD_SWAP( "ro1pt2h.4a", 0x1000000, 0x400000, CRC(e1abdbc9) SHA1(91827af01cb83f4422d7329c8eea52bb57d7d57e) ) ROM_LOAD32_WORD_SWAP( "ro1pt2h.4a", 0x1000000, 0x400000, CRC(b77886f2) SHA1(efdeb11c9783dbd7eb776c2a99204fb2e55ecb6d) )
ROM_LOAD32_WORD_SWAP( "ro1pt2l.4c", 0x1000002, 0x400000, CRC(c64f5cdc) SHA1(e7261f3a56718f304127cc85c08d0b32525dc1cd) ) ROM_LOAD32_WORD_SWAP( "ro1pt2l.4c", 0x1000002, 0x400000, CRC(6eaec66b) SHA1(d96d96d3b11a5109fed07e455e2abc9a8450080c) )
ROM_LOAD32_WORD_SWAP( "ro1pt3h.3a", 0x1800000, 0x400000, CRC(ef4685f6) SHA1(930037cac4aae9892278aa322844d03c773c70f7) ) ROM_LOAD32_WORD_SWAP( "ro1pt3h.3a", 0x1800000, 0x400000, CRC(87b8f7c5) SHA1(51f996199f7fc020f12c4ebd3e47acbc04341ce3) )
ROM_LOAD32_WORD_SWAP( "ro1pt3l.3c", 0x1800002, 0x400000, CRC(07d27009) SHA1(770001bee9d7ace337db8a42bf377678b2b5d5fb) ) ROM_LOAD32_WORD_SWAP( "ro1pt3l.3c", 0x1800002, 0x400000, CRC(ee1a4d1d) SHA1(4fa71edd26edcb3efc56b71f603fabcafcc2d3f3) )
ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */ ROM_REGION( 0x1000000, "c352", 0 ) /* C352 PCM samples */
ROM_LOAD( "ro1wavel.2c", 0x000000, 0x800000, CRC(c6aca840) SHA1(09a021459b6326fe161ffcee36376648a5bf0e00) ) ROM_LOAD( "ro1wavel.2c", 0x000000, 0x800000, CRC(c6aca840) SHA1(09a021459b6326fe161ffcee36376648a5bf0e00) )
@ -8306,42 +8361,91 @@ ROM_START( crszonev2a )
ROM_LOAD( "csz1ccrh.7k", 0x000000, 0x200000, CRC(bc2fa03c) SHA1(e63d8e75494a383bf9a213edfa9c472a010f8efe) ) ROM_LOAD( "csz1ccrh.7k", 0x000000, 0x200000, CRC(bc2fa03c) SHA1(e63d8e75494a383bf9a213edfa9c472a010f8efe) )
ROM_END 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 } // anonymous namespace
/* Games */ /* Games */
#define GAME_FLAGS ( MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) #define GAME_FLAGS ( MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE )
// YEAR, NAME, PARENT, MACHINE, INPUT, CLASS, INIT, MNTR, COMPANY, FULLNAME, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, namcos23_state, empty_init, ROT0, "Namco", "Time Crisis II (US, TSS5 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, 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, 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( 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, 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, namcos23_gmen_state, empty_init, ROT0, "Namco", "Gunmen Wars (Japan, GM1 Ver. A)", 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, namcos23_gmen_state, empty_init, ROT0, "Namco", "Race On! (World, RO2 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, namcos23_gmen_state, empty_init, ROT0, "Namco", "Race On! (Japan, RO1 Ver. B)", 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, namcos23_state, empty_init, ROT0, "Namco", "500 GP (US, 5GP3 Ver. C)", 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, namcos23_state, empty_init, ROT0, "Namco", "Angler King (Japan, AG1 Ver. A)", GAME_FLAGS ) 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, 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, 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, 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( 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, 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, 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, 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, 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, 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, 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 )