diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp index 7b1c4f4753e..74c80675b90 100644 --- a/src/mame/drivers/model2.cpp +++ b/src/mame/drivers/model2.cpp @@ -2057,6 +2057,30 @@ static INPUT_PORTS_START( vstriker ) PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END +static INPUT_PORTS_START( von ) + PORT_INCLUDE( model2 ) + + PORT_MODIFY("IN1") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) PORT_NAME("P1 Left Shot") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) PORT_NAME("P1 Left Dash") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_DOWN ) PORT_PLAYER(1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_UP ) PORT_PLAYER(1) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_RIGHT ) PORT_PLAYER(1) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICKLEFT_LEFT ) PORT_PLAYER(1) + + PORT_MODIFY("IN2") + PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(1) PORT_NAME("P1 Right Shot") + PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_PLAYER(1) PORT_NAME("P1 Right Dash") + PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_DOWN ) PORT_PLAYER(1) + PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_UP ) PORT_PLAYER(1) + PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_RIGHT ) PORT_PLAYER(1) + PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_JOYSTICKRIGHT_LEFT ) PORT_PLAYER(1) +INPUT_PORTS_END + TIMER_DEVICE_CALLBACK_MEMBER(model2_state::model2_interrupt) { @@ -6171,8 +6195,8 @@ GAME( 1995, gunblade, 0, model2b, model2, model2b_state, 0, GAME( 1995, indy500, 0, indy500, srallyc, model2b_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A, Newer)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, indy500d, indy500, indy500, srallyc, model2b_state, 0, ROT0, "Sega", "INDY 500 Deluxe (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1995, indy500to, indy500, indy500, srallyc, model2b_state, 0, ROT0, "Sega", "INDY 500 Twin (Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, von, 0, model2b, model2, model2b_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (USA, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1995, vonj, von, model2b, model2, model2b_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (Japan, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, von, 0, model2b, von, model2b_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (USA, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) +GAME( 1995, vonj, von, model2b, von, model2b_state, 0, ROT0, "Sega", "Cyber Troopers Virtual-On (Japan, Revision B)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, schamp, 0, model2b, model2, model2b_state, 0, ROT0, "Sega", "Sonic Championship (USA)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, sfight, schamp, model2b, model2, model2b_state, 0, ROT0, "Sega", "Sonic the Fighters (Japan)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) GAME( 1996, lastbrnx, 0, model2b, model2, model2b_state, 0, ROT0, "Sega", "Last Bronx (Export, Revision A)", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS ) diff --git a/src/mame/video/model2.cpp b/src/mame/video/model2.cpp index decc7d18923..c49553d2d0f 100644 --- a/src/mame/video/model2.cpp +++ b/src/mame/video/model2.cpp @@ -1942,6 +1942,11 @@ static uint32_t * geo_object_data( geo_state *geo, uint32_t opcode, uint32_t *in obp = &geo->polygon_ram0[oba & 0x7FFF]; } + // if count == 0 then rolls over to max size + // Virtual On & Gunblade NY + if(obc == 0) + obc = 0xfffff; + switch( geo->mode & 3 ) { /* Normals present, No Specular */