mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
avgdvg.cpp : Updates
Remove hardcoded tags, Runtime tag lookups, Simplify handlers, Reduce unnecessary lines, Fix spacings, Some code styles, Namings, Use shorter / correct type values
This commit is contained in:
parent
7ddcd88dae
commit
53b58377b0
@ -332,7 +332,7 @@ void asteroid_state::asteroid_map(address_map &map)
|
||||
map(0x3a00, 0x3a00).w(FUNC(asteroid_state::asteroid_thump_w));
|
||||
map(0x3c00, 0x3c07).w("audiolatch", FUNC(ls259_device::write_d7));
|
||||
map(0x3e00, 0x3e00).w(FUNC(asteroid_state::asteroid_noise_reset_w));
|
||||
map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000);
|
||||
map(0x4000, 0x47ff).ram().share("dvg:vectorram").region("maincpu", 0x4000);
|
||||
map(0x5000, 0x57ff).rom(); /* vector rom */
|
||||
map(0x6800, 0x7fff).rom();
|
||||
}
|
||||
@ -356,7 +356,7 @@ void asteroid_state::astdelux_map(address_map &map)
|
||||
map(0x3a00, 0x3a00).w(FUNC(asteroid_state::earom_control_w));
|
||||
map(0x3c00, 0x3c07).w("audiolatch", FUNC(ls259_device::write_d7));
|
||||
map(0x3e00, 0x3e00).w(FUNC(asteroid_state::asteroid_noise_reset_w));
|
||||
map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000);
|
||||
map(0x4000, 0x47ff).ram().share("dvg:vectorram").region("maincpu", 0x4000);
|
||||
map(0x4800, 0x57ff).rom(); /* vector rom */
|
||||
map(0x6000, 0x7fff).rom();
|
||||
}
|
||||
@ -375,7 +375,7 @@ void asteroid_state::llander_map(address_map &map)
|
||||
map(0x3400, 0x3400).w("watchdog", FUNC(watchdog_timer_device::reset_w));
|
||||
map(0x3c00, 0x3c00).w(FUNC(asteroid_state::llander_sounds_w));
|
||||
map(0x3e00, 0x3e00).w(FUNC(asteroid_state::llander_snd_reset_w));
|
||||
map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000);
|
||||
map(0x4000, 0x47ff).ram().share("dvg:vectorram").region("maincpu", 0x4000);
|
||||
map(0x4800, 0x5fff).rom(); /* vector rom */
|
||||
map(0x5800, 0x5800).nopw(); // INC access?
|
||||
map(0x6000, 0x7fff).rom();
|
||||
@ -853,7 +853,7 @@ ROM_START( asteroid )
|
||||
ROM_LOAD( "035127-02.np3", 0x5000, 0x0800, CRC(8b71fd9e) SHA1(8cd5005e531eafa361d6b7e9eed159d164776c70) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -866,7 +866,7 @@ ROM_START( asteroid2 )
|
||||
ROM_LOAD( "035127-02.np3", 0x5000, 0x0800, CRC(8b71fd9e) SHA1(8cd5005e531eafa361d6b7e9eed159d164776c70) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -879,7 +879,7 @@ ROM_START( asteroid1 )
|
||||
ROM_LOAD( "035127-01.np3", 0x5000, 0x0800, CRC(99699366) SHA1(9b2828fc1cef7727f65fa65e1e11e309b7c98792) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -892,7 +892,7 @@ ROM_START( asteroidb )
|
||||
ROM_LOAD( "035127-02.np3", 0x5000, 0x0800, CRC(8b71fd9e) SHA1(8cd5005e531eafa361d6b7e9eed159d164776c70) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -909,7 +909,7 @@ ROM_START( spcrocks )
|
||||
ROM_LOAD( "e.bin", 0x5000, 0x0800, CRC(148ef465) SHA1(4b1158112364bc55b8aab4127949f9238c36b238) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, BAD_DUMP CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) ) // still undumped.
|
||||
ROM_END
|
||||
|
||||
@ -922,7 +922,7 @@ ROM_START( aerolitos )
|
||||
ROM_LOAD( "2716_3n.bin", 0x5000, 0x0800, CRC(32e69e66) SHA1(a4cce36bc781443b430003280ef4185a4a04de96) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -939,7 +939,7 @@ ROM_START( asterock )
|
||||
ROM_LOAD( "10505.1", 0x5400, 0x0400, CRC(231ce201) SHA1(710f4c19864d725ba1c9ea447a97e84001a679f7) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -956,7 +956,7 @@ ROM_START( asterockv )
|
||||
ROM_LOAD( "10505.1", 0x5400, 0x0400, CRC(231ce201) SHA1(710f4c19864d725ba1c9ea447a97e84001a679f7) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -973,7 +973,7 @@ ROM_START( meteorite )
|
||||
ROM_LOAD( "1", 0x5400, 0x0400, CRC(d62b2887) SHA1(8832953c7166d2f0ed1067c43ebf369db4a4aa70) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "meteorites_bprom.bin", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -986,7 +986,7 @@ ROM_START( meteorts )
|
||||
ROM_LOAD( "mv_np3.bin", 0x5000, 0x0800, CRC(11d1c4ae) SHA1(433c2c05b92094bbe102c356d7f1a907db13da67) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -1003,7 +1003,7 @@ ROM_START( meteorho )
|
||||
ROM_LOAD( "b.bin", 0x5400, 0x0400, CRC(d62b2887) SHA1(8832953c7166d2f0ed1067c43ebf369db4a4aa70) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "prom.bin", 0x0000, 0x0100, CRC(9e237193) SHA1(f663e12d5db0fa50ea49d03591475ae0a7168bc0) )
|
||||
ROM_END
|
||||
|
||||
@ -1016,7 +1016,7 @@ ROM_START( hyperspc )
|
||||
ROM_LOAD( "035127-01.bin", 0x5000, 0x0800, CRC(7dec48bd) SHA1(8bc926a763ff80b101b2e1c24d45615c3daf67d5) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -1031,7 +1031,7 @@ ROM_START( astdelux )
|
||||
ROM_LOAD( "036799-01.np2", 0x5000, 0x0800, CRC(7d511572) SHA1(1956a12bccb5d3a84ce0c1cc10c6ad7f64e30b40) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
|
||||
ROM_REGION( 0x40, "earom", ROMREGION_ERASE00 ) // default to zero fill to suppress invalid high score display
|
||||
@ -1048,7 +1048,7 @@ ROM_START( astdelux2 )
|
||||
ROM_LOAD( "036799-01.np2", 0x5000, 0x0800, CRC(7d511572) SHA1(1956a12bccb5d3a84ce0c1cc10c6ad7f64e30b40) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
|
||||
ROM_REGION( 0x40, "earom", ROMREGION_ERASE00 ) // default to zero fill to suppress invalid high score display
|
||||
@ -1103,7 +1103,7 @@ ROM_START( astdelux1 )
|
||||
ROM_LOAD( "036799-01.np2", 0x5000, 0x0800, CRC(7d511572) SHA1(1956a12bccb5d3a84ce0c1cc10c6ad7f64e30b40) )
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
|
||||
ROM_REGION( 0x40, "earom", ROMREGION_ERASE00 ) // default to zero fill to suppress invalid high score display
|
||||
@ -1121,7 +1121,7 @@ ROM_START( llander )
|
||||
ROM_LOAD( "034597-01.m3", 0x5800, 0x0800, CRC(ebb744f2) SHA1(e685b094c1261a351e4e82dfb487462163f136a4) ) /* built from original Atari source code */
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -1137,7 +1137,7 @@ ROM_START( llander1 )
|
||||
ROM_LOAD( "034597-01.m3", 0x5800, 0x0800, CRC(ebb744f2) SHA1(e685b094c1261a351e4e82dfb487462163f136a4) ) /* built from original Atari source code */
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) )
|
||||
ROM_END
|
||||
|
||||
@ -1153,7 +1153,7 @@ ROM_START( llandert )
|
||||
ROM_LOAD( "llvrom2.m3", 0x5800, 0x0800, CRC(56c38219) SHA1(714878c0b24c9657c972a2ba25e790a4d3b81d64) ) // unused, filled with garbage? (it is not the language rom)
|
||||
|
||||
/* DVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "034602-01.c8", 0x0000, 0x0100, CRC(97953db8) SHA1(8cbded64d1dd35b18c4d5cece00f77e7b2cab2ad) ) // taken from parent
|
||||
ROM_END
|
||||
|
||||
|
@ -407,7 +407,7 @@ WRITE8_MEMBER(bwidow_state::irq_ack_w)
|
||||
void bwidow_state::bwidow_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x07ff).ram();
|
||||
map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000);
|
||||
map(0x2000, 0x27ff).ram().share("avg:vectorram").region("maincpu", 0x2000);
|
||||
map(0x2800, 0x5fff).rom();
|
||||
map(0x6000, 0x67ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
|
||||
map(0x6800, 0x6fff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
|
||||
@ -436,7 +436,7 @@ void bwidow_state::bwidowp_map(address_map &map)
|
||||
map(0x2800, 0x2800).w("avg", FUNC(avg_device::reset_w));
|
||||
map(0x3000, 0x3000).w("watchdog", FUNC(watchdog_timer_device::reset_w));
|
||||
map(0x3800, 0x3800).w(FUNC(bwidow_state::bwidow_misc_w)); /* coin counters, leds */
|
||||
map(0x4000, 0x47ff).ram().share("vectorram").region("maincpu", 0x4000);
|
||||
map(0x4000, 0x47ff).ram().share("avg:vectorram").region("maincpu", 0x4000);
|
||||
map(0x4800, 0x6fff).rom();
|
||||
map(0x6000, 0x6000).w(FUNC(bwidow_state::irq_ack_w)); /* interrupt acknowledge */
|
||||
map(0x8000, 0x803f).w(FUNC(bwidow_state::earom_write));
|
||||
@ -462,7 +462,7 @@ void bwidow_state::spacduel_map(address_map &map)
|
||||
map(0x0f00, 0x0f3f).w(FUNC(bwidow_state::earom_write));
|
||||
map(0x1000, 0x10ff).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write));
|
||||
map(0x1400, 0x14ff).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write));
|
||||
map(0x2000, 0x27ff).ram().share("vectorram").region("maincpu", 0x2000);
|
||||
map(0x2000, 0x27ff).ram().share("avg:vectorram").region("maincpu", 0x2000);
|
||||
map(0x2800, 0x3fff).rom();
|
||||
map(0x4000, 0xffff).rom();
|
||||
}
|
||||
@ -858,7 +858,7 @@ ROM_START( bwidow )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
@ -877,7 +877,7 @@ ROM_START( bwidowp )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "avgsmr", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Proms */
|
||||
@ -903,7 +903,7 @@ ROM_START( gravitar )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Address decoding */
|
||||
@ -929,7 +929,7 @@ ROM_START( gravitar2 )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Address decoding */
|
||||
@ -955,7 +955,7 @@ ROM_START( gravitar1 )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Address decoding */
|
||||
@ -980,7 +980,7 @@ ROM_START( lunarbat )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Address decoding */
|
||||
@ -1009,7 +1009,7 @@ ROM_START( lunarba1 )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Address decoding */
|
||||
@ -1038,7 +1038,7 @@ ROM_START( spacduel )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
@ -1062,7 +1062,7 @@ ROM_START( spacduel1 )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
@ -1086,7 +1086,7 @@ ROM_START( spacduel0 )
|
||||
ROM_RELOAD( 0xf000, 0x1000 ) /* for reset/interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.n4", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
|
@ -348,7 +348,7 @@ void bzone_state::bzone_map(address_map &map)
|
||||
map(0x1820, 0x182f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
|
||||
map(0x1840, 0x1840).w(FUNC(bzone_state::bzone_sounds_w));
|
||||
map(0x1860, 0x187f).w(m_mathbox, FUNC(mathbox_device::go_w));
|
||||
map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000);
|
||||
map(0x2000, 0x2fff).ram().share("avg:vectorram").region("maincpu", 0x2000);
|
||||
map(0x3000, 0x7fff).rom();
|
||||
}
|
||||
|
||||
@ -373,7 +373,7 @@ void redbaron_state::redbaron_map(address_map &map)
|
||||
map(0x1810, 0x181f).rw("pokey", FUNC(pokey_device::read), FUNC(pokey_device::write));
|
||||
map(0x1820, 0x185f).rw(FUNC(redbaron_state::earom_read), FUNC(redbaron_state::earom_write));
|
||||
map(0x1860, 0x187f).w("mathbox", FUNC(mathbox_device::go_w));
|
||||
map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000);
|
||||
map(0x2000, 0x2fff).ram().share("avg:vectorram").region("maincpu", 0x2000);
|
||||
map(0x3000, 0x7fff).rom();
|
||||
}
|
||||
|
||||
@ -666,7 +666,7 @@ ROM_START( bzone ) /* Analog Vec Gen A035742-02 */
|
||||
ROM_LOAD( "036421-01.a3", 0x3800, 0x0800, CRC(8ea8f939) SHA1(b71e0ab0e220c3e64dc2b094c701fb1a960b64e4) ) // 036421-01e.a3 same contents
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.k7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -696,7 +696,7 @@ ROM_START( bzonea ) /* Analog Vec Gen A035742-02 */
|
||||
ROM_LOAD( "036421-01.a3", 0x3800, 0x0800, CRC(8ea8f939) SHA1(b71e0ab0e220c3e64dc2b094c701fb1a960b64e4) ) // 036421-01e.a3 same contents
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.k7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -727,7 +727,7 @@ ROM_START( bzonec ) /* cocktail version */
|
||||
ROM_LOAD( "bz3b3800", 0x3800, 0x0800, CRC(76cf57f6) SHA1(1b8f3fcd664ed04ce60d94fdf27e56b20d52bdbd) )
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.k7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -759,7 +759,7 @@ ROM_START( bradley )
|
||||
ROM_LOAD( "bta3.bin", 0x3800, 0x0800, CRC(d669d796) SHA1(ad606882320cd13612c7962d4718680fe5a35dd3) )
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.k7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -813,7 +813,7 @@ ROM_START( redbaron ) /* Analog Vec Gen A035742-02 Rev. C+ */
|
||||
ROM_LOAD( "037007-01.a3", 0x3800, 0x0800, CRC(60250ede) SHA1(9c48952bd69863bee0c6dce09f3613149e0151ef) )
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.k7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) ) /* 74S287N or compatible bprom like the 82S129 */
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -847,7 +847,7 @@ ROM_START( redbarona ) /* Analog Vec Gen A035742-02 */
|
||||
ROM_LOAD( "037007-01e.a3", 0x3800, 0x0800, CRC(60250ede) SHA1(9c48952bd69863bee0c6dce09f3613149e0151ef) )
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.k7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) ) /* 74S287N or compatible bprom like the 82S129 */
|
||||
|
||||
/* Mathbox PROMs */
|
||||
|
@ -272,7 +272,7 @@ void mhavoc_state::alpha_map(address_map &map)
|
||||
map(0x0a00, 0x0fff).bankrw("bank1").share("zram1");
|
||||
map(0x1000, 0x1000).r(FUNC(mhavoc_state::mhavoc_gamma_r)); /* Gamma Read Port */
|
||||
map(0x1200, 0x1200).portr("IN0").nopw(); /* Alpha Input Port 0 */
|
||||
map(0x1400, 0x141f).ram().share("colorram"); /* ColorRAM */
|
||||
map(0x1400, 0x141f).ram().share("avg:colorram"); /* ColorRAM */
|
||||
map(0x1600, 0x1600).w(FUNC(mhavoc_state::mhavoc_out_0_w)); /* Control Signals */
|
||||
map(0x1640, 0x1640).w("avg", FUNC(avg_mhavoc_device::go_w)); /* Vector Generator GO */
|
||||
map(0x1680, 0x1680).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* Watchdog Clear */
|
||||
@ -283,7 +283,7 @@ void mhavoc_state::alpha_map(address_map &map)
|
||||
map(0x17c0, 0x17c0).w(FUNC(mhavoc_state::mhavoc_gamma_w)); /* Gamma Communication Write Port */
|
||||
map(0x1800, 0x1fff).ram(); /* Shared Beta Ram */
|
||||
map(0x2000, 0x3fff).bankr("bank2"); /* Paged Program ROM (32K) */
|
||||
map(0x4000, 0x4fff).ram().share("vectorram").region("alpha", 0x4000); /* Vector Generator RAM */
|
||||
map(0x4000, 0x4fff).ram().share("avg:vectorram").region("alpha", 0x4000); /* Vector Generator RAM */
|
||||
map(0x5000, 0x7fff).rom(); /* Vector ROM */
|
||||
map(0x8000, 0xffff).rom(); /* Program ROM (32K) */
|
||||
}
|
||||
@ -359,10 +359,10 @@ void mhavoc_state::alphaone_map(address_map &map)
|
||||
map(0x10b0, 0x10b0).w(FUNC(mhavoc_state::mhavoc_alpha_irq_ack_w)); /* IRQ ack */
|
||||
map(0x10b4, 0x10b4).w(FUNC(mhavoc_state::mhavoc_rom_banksel_w));
|
||||
map(0x10b8, 0x10b8).w(FUNC(mhavoc_state::mhavoc_ram_banksel_w));
|
||||
map(0x10e0, 0x10ff).nopr().writeonly().share("colorram"); /* ColorRAM */
|
||||
map(0x10e0, 0x10ff).nopr().writeonly().share("avg:colorram"); /* ColorRAM */
|
||||
map(0x1800, 0x18ff).rw("eeprom", FUNC(eeprom_parallel_28xx_device::read), FUNC(eeprom_parallel_28xx_device::write)); /* EEROM */
|
||||
map(0x2000, 0x3fff).bankr("bank2"); /* Paged Program ROM (32K) */
|
||||
map(0x4000, 0x4fff).ram().share("vectorram").region("alpha", 0x4000); /* Vector Generator RAM */
|
||||
map(0x4000, 0x4fff).ram().share("avg:vectorram").region("alpha", 0x4000); /* Vector Generator RAM */
|
||||
map(0x5000, 0x7fff).rom(); /* Vector ROM */
|
||||
map(0x8000, 0xffff).rom(); /* Program ROM (32K) */
|
||||
}
|
||||
@ -631,7 +631,7 @@ ROM_START( mhavoc )
|
||||
ROM_LOAD( "136025.318", 0x14000, 0x4000, CRC(ba935067) SHA1(05ad81e7a1982b9d8fddb48502546f48b5dc21b7) ) /* page 2+3 */
|
||||
|
||||
/* Paged Vector Generator ROM */
|
||||
ROM_REGION( 0x8000, "avgdvg", 0 )
|
||||
ROM_REGION( 0x8000, "avg", 0 )
|
||||
ROM_LOAD( "136025.106", 0x0000, 0x4000, CRC(2ca83c76) SHA1(cc1adca32f70af30c4590e9fd6b056b051ccdb38) ) /* page 0+1 */
|
||||
ROM_LOAD( "136025.107", 0x4000, 0x4000, CRC(5f81c5f3) SHA1(be4055727a2d4536e37ec20150deffdb5af5b01f) ) /* page 2+3 */
|
||||
|
||||
@ -640,7 +640,7 @@ ROM_START( mhavoc )
|
||||
ROM_LOAD( "136025.108", 0x08000, 0x4000, CRC(93faf210) SHA1(7744368a1d520f986d1c4246113a7e24fcdd6d04) ) /* mirrored to c000-ffff for reset+interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.b1", 0x0000, 0x0100, BAD_DUMP CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
@ -660,7 +660,7 @@ ROM_START( mhavoc2 )
|
||||
ROM_LOAD( "136025.109", 0x14000, 0x4000, CRC(4d766827) SHA1(7697bf6f92bff0e62850ed75ff66008a08583ef7) ) /* page 2+3 */
|
||||
|
||||
/* Paged Vector Generator ROM */
|
||||
ROM_REGION( 0x8000, "avgdvg", 0 )
|
||||
ROM_REGION( 0x8000, "avg", 0 )
|
||||
ROM_LOAD( "136025.106", 0x0000, 0x4000, CRC(2ca83c76) SHA1(cc1adca32f70af30c4590e9fd6b056b051ccdb38) ) /* page 0+1 */
|
||||
ROM_LOAD( "136025.107", 0x4000, 0x4000, CRC(5f81c5f3) SHA1(be4055727a2d4536e37ec20150deffdb5af5b01f) ) /* page 2+3 */
|
||||
|
||||
@ -671,7 +671,7 @@ ROM_START( mhavoc2 )
|
||||
ROM_LOAD( "136025.108", 0x08000, 0x4000, CRC(93faf210) SHA1(7744368a1d520f986d1c4246113a7e24fcdd6d04) ) /* mirrored to c000-ffff for reset+interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.b1", 0x0000, 0x0100, BAD_DUMP CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
@ -691,7 +691,7 @@ ROM_START( mhavocrv )
|
||||
ROM_LOAD( "136025.918", 0x14000, 0x4000, CRC(84735445) SHA1(21aacd862ce8911d257c6f48ead119ee5bb0b60d) ) /* page 2+3 */
|
||||
|
||||
/* Paged Vector Generator ROM */
|
||||
ROM_REGION( 0x8000, "avgdvg", 0 )
|
||||
ROM_REGION( 0x8000, "avg", 0 )
|
||||
ROM_LOAD( "136025.106", 0x0000, 0x4000, CRC(2ca83c76) SHA1(cc1adca32f70af30c4590e9fd6b056b051ccdb38) ) /* page 0+1 */
|
||||
ROM_LOAD( "136025.907", 0x4000, 0x4000, CRC(4deea2c9) SHA1(c4107581748a3f2d2084de2a4f120abd67a52189) ) /* page 2+3 */
|
||||
|
||||
@ -702,7 +702,7 @@ ROM_START( mhavocrv )
|
||||
ROM_LOAD( "136025.908", 0x08000, 0x4000, CRC(c52ec664) SHA1(08120a385f71b17ec02a3c2ef856ff835a91773e) ) /* mirrored to c000-ffff for reset+interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.b1", 0x0000, 0x0100, BAD_DUMP CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
@ -722,7 +722,7 @@ ROM_START( mhavocp )
|
||||
ROM_LOAD( "136025.018", 0x14000, 0x4000, CRC(a8c35ccd) SHA1(c243a5407557390a64c6560d857f5031f839973f) )
|
||||
|
||||
/* Paged Vector Generator ROM */
|
||||
ROM_REGION( 0x8000, "avgdvg", 0 )
|
||||
ROM_REGION( 0x8000, "avg", 0 )
|
||||
ROM_LOAD( "136025.006", 0x0000, 0x4000, CRC(e272ed41) SHA1(0de395d1c4300a64da7f45746d7b550779e36a21) )
|
||||
ROM_LOAD( "136025.007", 0x4000, 0x4000, CRC(e152c9d8) SHA1(79d0938fa9ad262c7f28c5a8ad21004a4dec9ed8) )
|
||||
|
||||
@ -733,7 +733,7 @@ ROM_START( mhavocp )
|
||||
ROM_LOAD( "136025.008", 0x8000, 0x4000, CRC(22ea7399) SHA1(eeda8cc40089506063835a62c3273e7dd3918fd5) ) /* mirrored to c000-ffff for reset+interrupt vectors */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.b1", 0x0000, 0x0100, BAD_DUMP CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
@ -754,14 +754,14 @@ ROM_START( alphaone )
|
||||
ROM_LOAD( "page01.tw", 0x10000, 0x4000, CRC(cbf3b05a) SHA1(1dfaf9300a252c9c921f06167160a59cdf329726) )
|
||||
|
||||
/* Paged Vector Generator ROM */
|
||||
ROM_REGION( 0x8000, "avgdvg", 0 )
|
||||
ROM_REGION( 0x8000, "avg", 0 )
|
||||
ROM_LOAD( "vec_pg01.tw", 0x0000, 0x4000, CRC(e392a94d) SHA1(b5843da97d7aa5767c87c29660115efc5ad9ad54) )
|
||||
ROM_LOAD( "vec_pg23.tw", 0x4000, 0x4000, CRC(1ff74292) SHA1(90e61c48544c62d905e207bba5c67ae7694e86a5) )
|
||||
|
||||
/* the last 0x1000 is used for the 2 RAM pages */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "036408-01.b1", 0x0000, 0x0100, BAD_DUMP CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
@ -782,14 +782,14 @@ ROM_START( alphaonea )
|
||||
ROM_LOAD( "page01.tw", 0x10000, 0x4000, CRC(cbf3b05a) SHA1(1dfaf9300a252c9c921f06167160a59cdf329726) )
|
||||
|
||||
/* Paged Vector Generator ROM */
|
||||
ROM_REGION( 0x8000, "avgdvg", 0 )
|
||||
ROM_REGION( 0x8000, "avg", 0 )
|
||||
ROM_LOAD( "vec_pg01.tw", 0x0000, 0x4000, CRC(e392a94d) SHA1(b5843da97d7aa5767c87c29660115efc5ad9ad54) )
|
||||
ROM_LOAD( "vec_pg23.tw", 0x4000, 0x4000, CRC(1ff74292) SHA1(90e61c48544c62d905e207bba5c67ae7694e86a5) )
|
||||
|
||||
/* the last 0x1000 is used for the 2 RAM pages */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.6c", 0x0000, 0x0100, BAD_DUMP CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
ROM_END
|
||||
|
||||
|
@ -274,9 +274,8 @@ private:
|
||||
|
||||
void omegrace_state::machine_reset()
|
||||
{
|
||||
address_space &space = m_maincpu->space(AS_PROGRAM);
|
||||
/* Omega Race expects the vector processor to be ready. */
|
||||
m_dvg->reset_w(space, 0, 0);
|
||||
m_dvg->reset_w();
|
||||
}
|
||||
|
||||
|
||||
@ -289,7 +288,8 @@ void omegrace_state::machine_reset()
|
||||
|
||||
READ8_MEMBER(omegrace_state::omegrace_vg_go_r)
|
||||
{
|
||||
m_dvg->go_w(space, 0, 0);
|
||||
if (!machine().side_effects_disabled())
|
||||
m_dvg->go_w();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -373,7 +373,7 @@ void omegrace_state::main_map(address_map &map)
|
||||
map(0x0000, 0x3fff).rom();
|
||||
map(0x4000, 0x4bff).ram();
|
||||
map(0x5c00, 0x5cff).ram().share("nvram"); /* NVRAM */
|
||||
map(0x8000, 0x8fff).ram().share("vectorram").region("maincpu", 0x8000); /* vector ram */
|
||||
map(0x8000, 0x8fff).ram().share("dvg:vectorram").region("maincpu", 0x8000); /* vector ram */
|
||||
map(0x9000, 0x9fff).rom(); /* vector rom */
|
||||
}
|
||||
|
||||
@ -581,7 +581,7 @@ ROM_START( omegrace )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "sound.k5", 0x0000, 0x0800, CRC(7d426017) SHA1(370f0fb5608819de873c845f6010cbde75a9818e) )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "dvgprom.bin", 0x0000, 0x0100, CRC(d481e958) SHA1(d8790547dc539e25984807573097b61ec3ffe614) )
|
||||
ROM_END
|
||||
|
||||
@ -597,7 +597,7 @@ ROM_START( omegrace2 )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "o.r.r._audio_6-1-81.k5", 0x0000, 0x0800, CRC(7d426017) SHA1(370f0fb5608819de873c845f6010cbde75a9818e) )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "dvgprom.bin", 0x0000, 0x0100, CRC(d481e958) SHA1(d8790547dc539e25984807573097b61ec3ffe614) )
|
||||
ROM_END
|
||||
|
||||
@ -613,7 +613,7 @@ ROM_START( deltrace )
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "sound.k5", 0x0000, 0x0800, CRC(7d426017) SHA1(370f0fb5608819de873c845f6010cbde75a9818e) )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "dvg:prom", 0 )
|
||||
ROM_LOAD( "dvgprom.bin", 0x0000, 0x0100, CRC(d481e958) SHA1(d8790547dc539e25984807573097b61ec3ffe614) )
|
||||
ROM_END
|
||||
|
||||
@ -626,8 +626,8 @@ ROM_END
|
||||
|
||||
void omegrace_state::init_omegrace()
|
||||
{
|
||||
int len = memregion("user1")->bytes();
|
||||
uint8_t *prom = memregion("user1")->base();
|
||||
int len = memregion("dvg:prom")->bytes();
|
||||
uint8_t *prom = memregion("dvg:prom")->base();
|
||||
|
||||
/* Omega Race has two pairs of the state PROM output
|
||||
* lines swapped before going into the decoder.
|
||||
|
@ -141,8 +141,8 @@ WRITE16_MEMBER(quantum_state::led_w)
|
||||
m_leds[1] = BIT(data, 5);
|
||||
|
||||
/* bits 6 and 7 flip screen */
|
||||
m_avg->set_flip_x (data & 0x40);
|
||||
m_avg->set_flip_y (data & 0x80);
|
||||
m_avg->set_flip_x(data & 0x40);
|
||||
m_avg->set_flip_y(data & 0x80);
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,13 +164,13 @@ void quantum_state::main_map(address_map &map)
|
||||
{
|
||||
map(0x000000, 0x013fff).rom();
|
||||
map(0x018000, 0x01cfff).ram();
|
||||
map(0x800000, 0x801fff).ram().share("vectorram");
|
||||
map(0x800000, 0x801fff).ram().share("avg:vectorram");
|
||||
map(0x840000, 0x84001f).rw("pokey1", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff);
|
||||
map(0x840020, 0x84003f).rw("pokey2", FUNC(pokey_device::read), FUNC(pokey_device::write)).umask16(0x00ff);
|
||||
map(0x900000, 0x9001ff).rw("nvram", FUNC(x2212_device::read), FUNC(x2212_device::write)).umask16(0x00ff);
|
||||
map(0x940000, 0x940001).r(FUNC(quantum_state::trackball_r)); /* trackball */
|
||||
map(0x948000, 0x948001).portr("SYSTEM");
|
||||
map(0x950000, 0x95001f).writeonly().share("colorram");
|
||||
map(0x950000, 0x95001f).writeonly().share("avg:colorram");
|
||||
map(0x958000, 0x958001).w(FUNC(quantum_state::led_w));
|
||||
map(0x960000, 0x960001).w(FUNC(quantum_state::nvram_recall_w));
|
||||
map(0x968000, 0x968001).w(m_avg, FUNC(avg_quantum_device::reset_word_w));
|
||||
@ -358,7 +358,7 @@ ROM_START( quantum )
|
||||
ROM_LOAD16_BYTE( "136016.105", 0x010000, 0x002000, CRC(13ec512c) SHA1(22a0395135b83ba47eacb5129f34fc97aa1b70a1) )
|
||||
ROM_LOAD16_BYTE( "136016.110", 0x010001, 0x002000, CRC(acb50363) SHA1(9efa9ca88efdd2d5e212bd537903892b67b4fe53) )
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.6h", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
ROM_REGION( 0x200, "plds", 0 )
|
||||
@ -379,7 +379,7 @@ ROM_START( quantum1 )
|
||||
ROM_LOAD16_BYTE( "136016.105", 0x010000, 0x002000, CRC(13ec512c) SHA1(22a0395135b83ba47eacb5129f34fc97aa1b70a1) )
|
||||
ROM_LOAD16_BYTE( "136016.110", 0x010001, 0x002000, CRC(acb50363) SHA1(9efa9ca88efdd2d5e212bd537903892b67b4fe53) )
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.6h", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
ROM_REGION( 0x200, "plds", 0 )
|
||||
@ -400,7 +400,7 @@ ROM_START( quantump )
|
||||
ROM_LOAD16_BYTE( "quantump.2l", 0x010000, 0x002000, CRC(1285b5e7) SHA1(0e01e361da2d9cf1fac1896f8f44c4c2e75a3061) )
|
||||
ROM_LOAD16_BYTE( "quantump.3l", 0x010001, 0x002000, CRC(e19de844) SHA1(cb4f9d80807b26d6b95405b2d830799984667f54) )
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.6h", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
ROM_REGION( 0x200, "plds", 0 )
|
||||
|
@ -128,7 +128,7 @@ WRITE8_MEMBER(starwars_state::esb_slapstic_w)
|
||||
|
||||
void starwars_state::main_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x2fff).ram().share("vectorram").region("maincpu", 0);
|
||||
map(0x0000, 0x2fff).ram().share("avg:vectorram").region("maincpu", 0);
|
||||
map(0x3000, 0x3fff).rom(); /* vector_rom */
|
||||
map(0x4300, 0x431f).portr("IN0");
|
||||
map(0x4320, 0x433f).portr("IN1");
|
||||
@ -402,7 +402,7 @@ ROM_START( starwars )
|
||||
ROM_LOAD( "136021-208.1h", 0x6000, 0x2000, CRC(e38070a8) SHA1(c858ae1702efdd48615453ab46e488848891d139) ) /* Sound ROM 0 */
|
||||
ROM_RELOAD( 0xe000, 0x2000 )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0)
|
||||
ROM_REGION( 0x100, "avg:prom", 0)
|
||||
ROM_LOAD( "136021-109.4b", 0x0000, 0x0100, CRC(82fc3eb2) SHA1(184231c7baef598294860a7d2b8a23798c5c7da6) ) /* AVG PROM */
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -430,7 +430,7 @@ ROM_START( starwars1 )
|
||||
ROM_LOAD( "136021-208.1h", 0x6000, 0x2000, CRC(e38070a8) SHA1(c858ae1702efdd48615453ab46e488848891d139) ) /* Sound ROM 0 */
|
||||
ROM_RELOAD( 0xe000, 0x2000 )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0)
|
||||
ROM_REGION( 0x100, "avg:prom", 0)
|
||||
ROM_LOAD( "136021-109.4b", 0x0000, 0x0100, CRC(82fc3eb2) SHA1(184231c7baef598294860a7d2b8a23798c5c7da6) ) /* AVG PROM */
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -458,7 +458,7 @@ ROM_START( starwarso )
|
||||
ROM_LOAD( "136021-208.1h", 0x6000, 0x2000, CRC(e38070a8) SHA1(c858ae1702efdd48615453ab46e488848891d139) ) /* Sound ROM 0 */
|
||||
ROM_RELOAD( 0xe000, 0x2000 )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0)
|
||||
ROM_REGION( 0x100, "avg:prom", 0)
|
||||
ROM_LOAD( "136021-109.4b", 0x0000, 0x0100, CRC(82fc3eb2) SHA1(184231c7baef598294860a7d2b8a23798c5c7da6) ) /* AVG PROM */
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -486,7 +486,7 @@ ROM_START( tomcatsw )
|
||||
ROM_LOAD( "136021-208.1h", 0x6000, 0x2000, NO_DUMP ) /* Sound ROM 0 */
|
||||
ROM_RELOAD( 0xe000, 0x2000 )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0)
|
||||
ROM_REGION( 0x100, "avg:prom", 0)
|
||||
ROM_LOAD( "136021-109.4b", 0x0000, 0x0100, CRC(82fc3eb2) SHA1(184231c7baef598294860a7d2b8a23798c5c7da6) ) /* AVG PROM */
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -521,7 +521,7 @@ ROM_START( esb )
|
||||
ROM_LOAD( "136031-112.1h", 0x6000, 0x2000, CRC(ca72d341) SHA1(52de5b82bb85d7c9caad2047e540d0748aa93ba5) ) /* Sound ROM 1 */
|
||||
ROM_CONTINUE( 0xe000, 0x2000 )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0)
|
||||
ROM_REGION( 0x100, "avg:prom", 0)
|
||||
ROM_LOAD( "136021-109.4b", 0x0000, 0x0100, CRC(82fc3eb2) SHA1(184231c7baef598294860a7d2b8a23798c5c7da6) ) /* AVG PROM */
|
||||
|
||||
/* Mathbox PROMs */
|
||||
|
@ -483,11 +483,11 @@ READ8_MEMBER(tempest_state::rom_ae1f_r)
|
||||
void tempest_state::main_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x07ff).ram();
|
||||
map(0x0800, 0x080f).writeonly().share("colorram");
|
||||
map(0x0800, 0x080f).writeonly().share("avg:colorram");
|
||||
map(0x0c00, 0x0c00).portr("IN0");
|
||||
map(0x0d00, 0x0d00).portr("DSW1");
|
||||
map(0x0e00, 0x0e00).portr("DSW2");
|
||||
map(0x2000, 0x2fff).ram().share("vectorram").region("maincpu", 0x2000);
|
||||
map(0x2000, 0x2fff).ram().share("avg:vectorram").region("maincpu", 0x2000);
|
||||
map(0x3000, 0x3fff).rom();
|
||||
map(0x4000, 0x4000).w(FUNC(tempest_state::tempest_coin_w));
|
||||
map(0x4800, 0x4800).w(m_avg, FUNC(avg_tempest_device::go_w));
|
||||
@ -705,7 +705,7 @@ ROM_START( tempest ) /* rev 3 */
|
||||
ROM_LOAD( "136002-138.np3", 0x3000, 0x1000, CRC(9995256d) SHA1(2b725ee1a57d423c7d7377a1744f48412e0f2f69) )
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -735,7 +735,7 @@ ROM_START( tempest1r ) /* rev 1 */
|
||||
ROM_LOAD( "136002-138.np3", 0x3000, 0x1000, CRC(9995256d) SHA1(2b725ee1a57d423c7d7377a1744f48412e0f2f69) )
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -771,7 +771,7 @@ ROM_START( tempest3 ) /* rev 3 */
|
||||
ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -807,7 +807,7 @@ ROM_START( tempest2 ) /* rev 2 */
|
||||
ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -843,7 +843,7 @@ ROM_START( tempest1 ) /* rev 1 */
|
||||
ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
@ -879,7 +879,7 @@ ROM_START( temptube )
|
||||
ROM_LOAD( "136002-124.r3", 0x3800, 0x0800, CRC(c16ec351) SHA1(a30a3662c740810c0f20e3712679606921b8ca06) ) /* May be labeled "136002-112", same data */
|
||||
|
||||
/* AVG PROM */
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136002-125.d7", 0x0000, 0x0100, CRC(5903af03) SHA1(24bc0366f394ad0ec486919212e38be0f08d0239) )
|
||||
|
||||
/* Mathbox PROMs */
|
||||
|
@ -234,7 +234,7 @@ void tomcat_state::tomcat_map(address_map &map)
|
||||
map(0x408000, 0x408001).r(FUNC(tomcat_state::tomcat_inputs2_r)).w("watchdog", FUNC(watchdog_timer_device::reset16_w));
|
||||
map(0x40a000, 0x40a001).rw(FUNC(tomcat_state::tomcat_320bio_r), FUNC(tomcat_state::tomcat_irqclr_w));
|
||||
map(0x40e000, 0x40e01f).w(FUNC(tomcat_state::main_latch_w));
|
||||
map(0x800000, 0x803fff).ram().share("vectorram");
|
||||
map(0x800000, 0x803fff).ram().share("avg:vectorram");
|
||||
map(0xffa000, 0xffbfff).ram().share("shared_ram");
|
||||
map(0xffc000, 0xffcfff).ram();
|
||||
map(0xffd000, 0xffdfff).rw("m48t02", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)).umask16(0xff00);
|
||||
@ -390,7 +390,7 @@ ROM_START( tomcat )
|
||||
ROM_LOAD16_BYTE( "rom1k.bin", 0x00001, 0x8000, CRC(5535a1ff) SHA1(b9807c749a8e6b5ddec3ff494130abda09f0baab) )
|
||||
ROM_LOAD16_BYTE( "rom2k.bin", 0x00000, 0x8000, CRC(021a01d2) SHA1(01d99aab54ad57a664e8aaa91296bb879fc6e422) )
|
||||
|
||||
ROM_REGION( 0x100, "user1", 0 )
|
||||
ROM_REGION( 0x100, "avg:prom", 0 )
|
||||
ROM_LOAD( "136021-105.1l", 0x0000, 0x0100, CRC(82fc3eb2) SHA1(184231c7baef598294860a7d2b8a23798c5c7da6) ) /* AVG PROM */
|
||||
ROM_END
|
||||
|
||||
|
@ -131,7 +131,7 @@ void asteroid_state::machine_start()
|
||||
|
||||
void asteroid_state::machine_reset()
|
||||
{
|
||||
m_dvg->reset_w(machine().dummy_space(), 0, 0);
|
||||
m_dvg->reset_w();
|
||||
if (m_earom.found())
|
||||
earom_control_w(machine().dummy_space(), 0, 0);
|
||||
|
||||
|
@ -45,10 +45,10 @@
|
||||
|
||||
void avgdvg_device::apply_flipping(int *x, int *y)
|
||||
{
|
||||
if (flip_x)
|
||||
*x += (xcenter - *x) << 1;
|
||||
if (flip_y)
|
||||
*y += (ycenter - *y) << 1;
|
||||
if (m_flip_x)
|
||||
*x += (m_xcenter - *x) << 1;
|
||||
if (m_flip_y)
|
||||
*y += (m_ycenter - *y) << 1;
|
||||
}
|
||||
|
||||
|
||||
@ -63,106 +63,121 @@ void avgdvg_device::vg_flush()
|
||||
int cx0 = 0, cy0 = 0, cx1 = 0x5000000, cy1 = 0x5000000;
|
||||
int i = 0;
|
||||
|
||||
while (vectbuf[i].status == VGCLIP)
|
||||
while (m_vectbuf[i].status == VGCLIP)
|
||||
i++;
|
||||
int xs = vectbuf[i].x;
|
||||
int ys = vectbuf[i].y;
|
||||
int xs = m_vectbuf[i].x;
|
||||
int ys = m_vectbuf[i].y;
|
||||
|
||||
for (i = 0; i < nvect; i++)
|
||||
for (i = 0; i < m_nvect; i++)
|
||||
{
|
||||
if (vectbuf[i].status == VGVECTOR)
|
||||
if (m_vectbuf[i].status == VGVECTOR)
|
||||
{
|
||||
int xe = vectbuf[i].x;
|
||||
int ye = vectbuf[i].y;
|
||||
int xe = m_vectbuf[i].x;
|
||||
int ye = m_vectbuf[i].y;
|
||||
int x0 = xs, y0 = ys, x1 = xe, y1 = ye;
|
||||
|
||||
xs = xe;
|
||||
ys = ye;
|
||||
|
||||
if((x0 < cx0 && x1 < cx0) || (x0 > cx1 && x1 > cx1))
|
||||
if ((x0 < cx0 && x1 < cx0) || (x0 > cx1 && x1 > cx1))
|
||||
continue;
|
||||
|
||||
if(x0 < cx0) {
|
||||
y0 += int64_t(cx0-x0)*int64_t(y1-y0)/(x1-x0);
|
||||
if (x0 < cx0)
|
||||
{
|
||||
y0 += s64(cx0 - x0) * s64(y1 - y0) / (x1 - x0);
|
||||
x0 = cx0;
|
||||
} else if(x0 > cx1) {
|
||||
y0 += int64_t(cx1-x0)*int64_t(y1-y0)/(x1-x0);
|
||||
}
|
||||
else if (x0 > cx1)
|
||||
{
|
||||
y0 += s64(cx1 - x0) * s64(y1 - y0) / (x1 - x0);
|
||||
x0 = cx1;
|
||||
}
|
||||
if(x1 < cx0) {
|
||||
y1 += int64_t(cx0-x1)*int64_t(y1-y0)/(x1-x0);
|
||||
if (x1 < cx0)
|
||||
{
|
||||
y1 += s64(cx0 - x1) * s64(y1 - y0) / (x1 - x0);
|
||||
x1 = cx0;
|
||||
} else if(x1 > cx1) {
|
||||
y1 += int64_t(cx1-x1)*int64_t(y1-y0)/(x1-x0);
|
||||
}
|
||||
else if (x1 > cx1)
|
||||
{
|
||||
y1 += s64(cx1 - x1) * s64(y1 - y0) / (x1 - x0);
|
||||
x1 = cx1;
|
||||
}
|
||||
|
||||
if((y0 < cy0 && y1 < cy0) || (y0 > cy1 && y1 > cy1))
|
||||
if ((y0 < cy0 && y1 < cy0) || (y0 > cy1 && y1 > cy1))
|
||||
continue;
|
||||
|
||||
if(y0 < cy0) {
|
||||
x0 += int64_t(cy0-y0)*int64_t(x1-x0)/(y1-y0);
|
||||
if (y0 < cy0)
|
||||
{
|
||||
x0 += s64(cy0 - y0) * s64(x1 - x0) / (y1 - y0);
|
||||
y0 = cy0;
|
||||
} else if(y0 > cy1) {
|
||||
x0 += int64_t(cy1-y0)*int64_t(x1-x0)/(y1-y0);
|
||||
}
|
||||
else if (y0 > cy1)
|
||||
{
|
||||
x0 += s64(cy1 - y0) * s64(x1 - x0) / (y1 - y0);
|
||||
y0 = cy1;
|
||||
}
|
||||
if(y1 < cy0) {
|
||||
x1 += int64_t(cy0-y1)*int64_t(x1-x0)/(y1-y0);
|
||||
if (y1 < cy0)
|
||||
{
|
||||
x1 += s64(cy0 - y1) * s64(x1 - x0) / (y1 - y0);
|
||||
y1 = cy0;
|
||||
} else if(y1 > cy1) {
|
||||
x1 += int64_t(cy1-y1)*int64_t(x1-x0)/(y1-y0);
|
||||
}
|
||||
else if (y1 > cy1)
|
||||
{
|
||||
x1 += s64(cy1 - y1) * s64(x1 - x0) / (y1 - y0);
|
||||
y1 = cy1;
|
||||
}
|
||||
|
||||
m_vector->add_point(x0, y0, vectbuf[i].color, 0);
|
||||
m_vector->add_point(x1, y1, vectbuf[i].color, vectbuf[i].intensity);
|
||||
m_vector->add_point(x0, y0, m_vectbuf[i].color, 0);
|
||||
m_vector->add_point(x1, y1, m_vectbuf[i].color, m_vectbuf[i].intensity);
|
||||
}
|
||||
|
||||
if (vectbuf[i].status == VGCLIP) {
|
||||
cx0 = vectbuf[i].x;
|
||||
cy0 = vectbuf[i].y;
|
||||
cx1 = vectbuf[i].arg1;
|
||||
cy1 = vectbuf[i].arg2;
|
||||
if(cx0 > cx1) {
|
||||
int t = cx1;
|
||||
if (m_vectbuf[i].status == VGCLIP)
|
||||
{
|
||||
cx0 = m_vectbuf[i].x;
|
||||
cy0 = m_vectbuf[i].y;
|
||||
cx1 = m_vectbuf[i].arg1;
|
||||
cy1 = m_vectbuf[i].arg2;
|
||||
if (cx0 > cx1)
|
||||
{
|
||||
const int t = cx1;
|
||||
cx1 = cx0;
|
||||
cx0 = t;
|
||||
}
|
||||
if(cy0 > cx1) {
|
||||
int t = cy1;
|
||||
if (cy0 > cx1)
|
||||
{
|
||||
const int t = cy1;
|
||||
cy1 = cy0;
|
||||
cy0 = t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nvect=0;
|
||||
m_nvect = 0;
|
||||
}
|
||||
|
||||
void avgdvg_device::vg_add_point_buf(int x, int y, rgb_t color, int intensity)
|
||||
{
|
||||
if (nvect < MAXVECT)
|
||||
if (m_nvect < MAXVECT)
|
||||
{
|
||||
vectbuf[nvect].status = VGVECTOR;
|
||||
vectbuf[nvect].x = x;
|
||||
vectbuf[nvect].y = y;
|
||||
vectbuf[nvect].color = color;
|
||||
vectbuf[nvect].intensity = intensity;
|
||||
nvect++;
|
||||
m_vectbuf[m_nvect].status = VGVECTOR;
|
||||
m_vectbuf[m_nvect].x = x;
|
||||
m_vectbuf[m_nvect].y = y;
|
||||
m_vectbuf[m_nvect].color = color;
|
||||
m_vectbuf[m_nvect].intensity = intensity;
|
||||
m_nvect++;
|
||||
}
|
||||
}
|
||||
|
||||
void avgdvg_device::vg_add_clip (int xmin, int ymin, int xmax, int ymax)
|
||||
void avgdvg_device::vg_add_clip(int xmin, int ymin, int xmax, int ymax)
|
||||
{
|
||||
if (nvect < MAXVECT)
|
||||
if (m_nvect < MAXVECT)
|
||||
{
|
||||
vectbuf[nvect].status = VGCLIP;
|
||||
vectbuf[nvect].x = xmin;
|
||||
vectbuf[nvect].y = ymin;
|
||||
vectbuf[nvect].arg1 = xmax;
|
||||
vectbuf[nvect].arg2 = ymax;
|
||||
nvect++;
|
||||
m_vectbuf[m_nvect].status = VGCLIP;
|
||||
m_vectbuf[m_nvect].x = xmin;
|
||||
m_vectbuf[m_nvect].y = ymin;
|
||||
m_vectbuf[m_nvect].arg1 = xmax;
|
||||
m_vectbuf[m_nvect].arg2 = ymax;
|
||||
m_nvect++;
|
||||
}
|
||||
}
|
||||
|
||||
@ -178,14 +193,12 @@ void dvg_device::update_databus() // dvg_data
|
||||
/*
|
||||
* DVG uses low bit of state for address
|
||||
*/
|
||||
m_data = avgdvg_vectorram[(m_pc << 1) | (m_state_latch & 1)];
|
||||
m_data = m_vectorram[(m_pc << 1) | (m_state_latch & 1)];
|
||||
}
|
||||
|
||||
uint8_t dvg_device::state_addr() // dvg_state_addr
|
||||
u8 dvg_device::state_addr() // dvg_state_addr
|
||||
{
|
||||
uint8_t addr;
|
||||
|
||||
addr =((((m_state_latch >> 4) ^ 1) & 1) << 7) | (m_state_latch & 0xf);
|
||||
u8 addr = ((((m_state_latch >> 4) ^ 1) & 1) << 7) | (m_state_latch & 0xf);
|
||||
|
||||
if (OP3)
|
||||
addr |= ((m_op & 7) << 4);
|
||||
@ -223,14 +236,14 @@ void dvg_device::dvg_draw_to(int x, int y, int intensity)
|
||||
apply_flipping(&x, &y);
|
||||
|
||||
if (((x | y) & 0x400) == 0)
|
||||
vg_add_point_buf((xmin + x - 512) << 16,
|
||||
(ymin + 512 - y) << 16,
|
||||
vg_add_point_buf((m_xmin + x - 512) << 16,
|
||||
(m_ymin + 512 - y) << 16,
|
||||
vector_device::color111(7), intensity << 4);
|
||||
}
|
||||
|
||||
int dvg_device::handler_2() //dvg_gostrobe
|
||||
{
|
||||
int scale, fin, dx, dy, c, mx, my, countx, county, bit, cycles;
|
||||
int scale;
|
||||
|
||||
if (m_op == 0xf)
|
||||
{
|
||||
@ -247,18 +260,18 @@ int dvg_device::handler_2() //dvg_gostrobe
|
||||
scale = (m_scale + m_op) & 0xf;
|
||||
}
|
||||
|
||||
fin = 0xfff - (((2 << scale) & 0x7ff) ^ 0xfff);
|
||||
int fin = 0xfff - (((2 << scale) & 0x7ff) ^ 0xfff);
|
||||
|
||||
/* Count up or down */
|
||||
dx = (m_dvx & 0x400)? -1: +1;
|
||||
dy = (m_dvy & 0x400)? -1: +1;
|
||||
const int dx = (m_dvx & 0x400) ? -1 : +1;
|
||||
const int dy = (m_dvy & 0x400) ? -1 : +1;
|
||||
|
||||
/* Scale factor for rate multipliers */
|
||||
mx = (m_dvx << 2) & 0xfff;
|
||||
my = (m_dvy << 2) & 0xfff;
|
||||
const int mx = (m_dvx << 2) & 0xfff;
|
||||
const int my = (m_dvy << 2) & 0xfff;
|
||||
|
||||
cycles = 8 * fin;
|
||||
c=0;
|
||||
const int cycles = 8 * fin;
|
||||
int c = 0;
|
||||
|
||||
while (fin--)
|
||||
{
|
||||
@ -275,10 +288,10 @@ int dvg_device::handler_2() //dvg_gostrobe
|
||||
* lines. The DVG has two cascaded 7497s for each coordinate.
|
||||
*/
|
||||
|
||||
countx = 0;
|
||||
county = 0;
|
||||
int countx = 0;
|
||||
int county = 0;
|
||||
|
||||
for (bit = 0; bit < 12; bit++)
|
||||
for (int bit = 0; bit < 12; bit++)
|
||||
{
|
||||
if ((c & ((1 << (bit+1)) - 1)) == ((1 << bit) - 1))
|
||||
{
|
||||
@ -424,7 +437,7 @@ void dvg_device::vgrst() // dvg_vgrst
|
||||
*
|
||||
*******************************************************************/
|
||||
|
||||
uint8_t avg_device::state_addr() // avg_state_addr
|
||||
u8 avg_device::state_addr() // avg_state_addr
|
||||
{
|
||||
return (((m_state_latch >> 4) ^ 1) << 7)
|
||||
| (m_op << 4)
|
||||
@ -434,7 +447,7 @@ uint8_t avg_device::state_addr() // avg_state_addr
|
||||
|
||||
void avg_device::update_databus() // avg_data
|
||||
{
|
||||
m_data = avgdvg_vectorram[m_pc ^ 1];
|
||||
m_data = m_vectorram[m_pc ^ 1];
|
||||
}
|
||||
|
||||
void avg_device::vggo() // avg_vggo
|
||||
@ -462,12 +475,12 @@ int avg_device::handler_0() // avg_latch0
|
||||
|
||||
int avg_device::handler_1() // avg_latch1
|
||||
{
|
||||
m_dvy12 = (m_data >> 4) &1;
|
||||
m_dvy12 = (m_data >> 4) & 1;
|
||||
m_op = m_data >> 5;
|
||||
|
||||
m_int_latch = 0;
|
||||
m_dvy = (m_dvy12 << 12)
|
||||
| ((m_data & 0xf) << 8 );
|
||||
| ((m_data & 0xf) << 8);
|
||||
m_dvx = 0;
|
||||
m_pc++;
|
||||
|
||||
@ -486,7 +499,7 @@ int avg_device::handler_3() // avg_latch3
|
||||
{
|
||||
m_int_latch = m_data >> 4;
|
||||
m_dvx = ((m_int_latch & 1) << 12)
|
||||
| ((m_data & 0xf) << 8 )
|
||||
| ((m_data & 0xf) << 8)
|
||||
| (m_dvx & 0xff);
|
||||
m_pc++;
|
||||
|
||||
@ -495,8 +508,6 @@ int avg_device::handler_3() // avg_latch3
|
||||
|
||||
int avg_device::handler_4() // avg_strobe0
|
||||
{
|
||||
int i;
|
||||
|
||||
if (OP0)
|
||||
{
|
||||
m_stack[m_sp & 3] = m_pc;
|
||||
@ -515,7 +526,7 @@ int avg_device::handler_4() // avg_strobe0
|
||||
* shifting goes on as long as VCTR, SCALE and CNTR are
|
||||
* low. We cut off after 16 shifts.
|
||||
*/
|
||||
i = 0;
|
||||
int i = 0;
|
||||
while ((((m_dvy ^ (m_dvy << 1)) & 0x1000) == 0)
|
||||
&& (((m_dvx ^ (m_dvx << 1)) & 0x1000) == 0)
|
||||
&& (i++ < 16))
|
||||
@ -548,11 +559,9 @@ int avg_device::avg_common_strobe1()
|
||||
|
||||
int avg_device::handler_5() // avg_strobe1
|
||||
{
|
||||
int i;
|
||||
|
||||
if (OP2 == 0)
|
||||
{
|
||||
for (i = m_bin_scale; i > 0; i--)
|
||||
for (int i = m_bin_scale; i > 0; i--)
|
||||
{
|
||||
m_timer >>= 1;
|
||||
m_timer |= 0x4000 | (OP1 << 6);
|
||||
@ -622,12 +631,12 @@ int avg_device::handler_6() // avg_strobe2
|
||||
m_intensity = (m_dvy >> 4) & 0xf;
|
||||
}
|
||||
|
||||
return avg_common_strobe2();
|
||||
return avg_common_strobe2();
|
||||
}
|
||||
|
||||
int avg_device::avg_common_strobe3()
|
||||
{
|
||||
int cycles=0;
|
||||
int cycles = 0;
|
||||
|
||||
m_halt = OP0;
|
||||
|
||||
@ -650,8 +659,8 @@ int avg_device::avg_common_strobe3()
|
||||
{
|
||||
cycles = 0x8000 - m_timer;
|
||||
m_timer = 0;
|
||||
m_xpos = xcenter;
|
||||
m_ypos = ycenter;
|
||||
m_xpos = m_xcenter;
|
||||
m_ypos = m_ycenter;
|
||||
vg_add_point_buf(m_xpos, m_ypos, 0, 0);
|
||||
}
|
||||
|
||||
@ -660,9 +669,7 @@ int avg_device::avg_common_strobe3()
|
||||
|
||||
int avg_device::handler_7() // avg_strobe3
|
||||
{
|
||||
int cycles;
|
||||
|
||||
cycles = avg_common_strobe3();
|
||||
const int cycles = avg_common_strobe3();
|
||||
|
||||
if ((m_op & 5) == 0)
|
||||
{
|
||||
@ -691,35 +698,32 @@ int avg_tempest_device::handler_6() // tempest_strobe2
|
||||
m_intensity = (m_dvy >> 4) & 0xf;
|
||||
}
|
||||
|
||||
return avg_common_strobe2();
|
||||
return avg_common_strobe2();
|
||||
}
|
||||
|
||||
int avg_tempest_device::handler_7() // tempest_strobe3
|
||||
{
|
||||
int cycles, r, g, b, bit0, bit1, bit2, bit3, x, y;
|
||||
uint8_t data;
|
||||
|
||||
cycles = avg_common_strobe3();
|
||||
const int cycles = avg_common_strobe3();
|
||||
|
||||
if ((m_op & 5) == 0)
|
||||
{
|
||||
data = avgdvg_colorram[m_color];
|
||||
bit3 = (~data >> 3) & 1;
|
||||
bit2 = (~data >> 2) & 1;
|
||||
bit1 = (~data >> 1) & 1;
|
||||
bit0 = (~data >> 0) & 1;
|
||||
const u8 data = m_colorram[m_color];
|
||||
const u8 bit3 = (~data >> 3) & 1;
|
||||
const u8 bit2 = (~data >> 2) & 1;
|
||||
const u8 bit1 = (~data >> 1) & 1;
|
||||
const u8 bit0 = (~data >> 0) & 1;
|
||||
|
||||
r = bit1 * 0xf3 + bit0 * 0x0c;
|
||||
g = bit3 * 0xf3;
|
||||
b = bit2 * 0xf3;
|
||||
const u8 r = bit1 * 0xf3 + bit0 * 0x0c;
|
||||
const u8 g = bit3 * 0xf3;
|
||||
const u8 b = bit2 * 0xf3;
|
||||
|
||||
x = m_xpos;
|
||||
y = m_ypos;
|
||||
int x = m_xpos;
|
||||
int y = m_ypos;
|
||||
|
||||
apply_flipping(&x, &y);
|
||||
|
||||
vg_add_point_buf(y - ycenter + xcenter,
|
||||
x - xcenter + ycenter, rgb_t(r, g, b),
|
||||
vg_add_point_buf(y - m_ycenter + m_xcenter,
|
||||
x - m_xcenter + m_ycenter, rgb_t(r, g, b),
|
||||
(((m_int_latch >> 1) == 1)? m_intensity: m_int_latch & 0xe) << 4);
|
||||
}
|
||||
|
||||
@ -737,15 +741,15 @@ void avg_tempest_device::vggo() // tempest_vggo
|
||||
* avg_common_strobe2). If we don't discard all vectors in the
|
||||
* current buffer at this point, the screen starts flickering.
|
||||
*/
|
||||
nvect = 0;
|
||||
m_nvect = 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Mhavoc handler functions
|
||||
*
|
||||
*************************************/
|
||||
/*************************************
|
||||
*
|
||||
* Mhavoc handler functions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
int avg_mhavoc_device::handler_1() // mhavoc_latch1
|
||||
{
|
||||
@ -755,7 +759,7 @@ int avg_mhavoc_device::handler_1() // mhavoc_latch1
|
||||
|
||||
if (m_lst == 0)
|
||||
{
|
||||
vg_add_clip(0, m_ypos, xmax << 16, ymax << 16);
|
||||
vg_add_clip(0, m_ypos, m_xmax << 16, m_ymax << 16);
|
||||
}
|
||||
m_lst = 1;
|
||||
|
||||
@ -799,17 +803,13 @@ int avg_mhavoc_device::handler_6() // mhavoc_strobe2
|
||||
}
|
||||
}
|
||||
|
||||
return avg_common_strobe2();
|
||||
return avg_common_strobe2();
|
||||
}
|
||||
|
||||
int avg_mhavoc_device::handler_7() // mhavoc_strobe3
|
||||
{
|
||||
int cycles, r, g, b, bit0, bit1, bit2, bit3, dx, dy, i;
|
||||
|
||||
uint8_t data;
|
||||
|
||||
m_halt = OP0;
|
||||
cycles = 0;
|
||||
int cycles = 0;
|
||||
|
||||
if ((m_op & 5) == 0)
|
||||
{
|
||||
@ -822,34 +822,33 @@ int avg_mhavoc_device::handler_7() // mhavoc_strobe3
|
||||
cycles = 0x8000 - m_timer;
|
||||
}
|
||||
m_timer = 0;
|
||||
dx = ((((m_dvx >> 3) ^ m_xdac_xor) - 0x200) * (m_scale ^ 0xff));
|
||||
dy = ((((m_dvy >> 3) ^ m_ydac_xor) - 0x200) * (m_scale ^ 0xff));
|
||||
|
||||
const int dx = ((((m_dvx >> 3) ^ m_xdac_xor) - 0x200) * (m_scale ^ 0xff));
|
||||
const int dy = ((((m_dvy >> 3) ^ m_ydac_xor) - 0x200) * (m_scale ^ 0xff));
|
||||
|
||||
if (m_enspkl)
|
||||
{
|
||||
for (i=0; i<cycles/8; i++)
|
||||
for (int i = 0; i < cycles / 8; i++)
|
||||
{
|
||||
m_xpos += dx/2;
|
||||
m_ypos -= dy/2;
|
||||
data = avgdvg_colorram[0xf +
|
||||
m_xpos += dx / 2;
|
||||
m_ypos -= dy / 2;
|
||||
const u8 data = m_colorram[0xf +
|
||||
(((m_spkl_shift & 1) << 3)
|
||||
| (m_spkl_shift & 4)
|
||||
| ((m_spkl_shift & 0x10) >> 3)
|
||||
| ((m_spkl_shift & 0x40) >> 6))];
|
||||
bit3 = (~data >> 3) & 1;
|
||||
bit2 = (~data >> 2) & 1;
|
||||
bit1 = (~data >> 1) & 1;
|
||||
bit0 = (~data >> 0) & 1;
|
||||
r = bit3 * 0xcb + bit2 * 0x34;
|
||||
g = bit1 * 0xcb;
|
||||
b = bit0 * 0xcb;
|
||||
const u8 bit3 = (~data >> 3) & 1;
|
||||
const u8 bit2 = (~data >> 2) & 1;
|
||||
const u8 bit1 = (~data >> 1) & 1;
|
||||
const u8 bit0 = (~data >> 0) & 1;
|
||||
const u8 r = bit3 * 0xcb + bit2 * 0x34;
|
||||
const u8 g = bit1 * 0xcb;
|
||||
const u8 b = bit0 * 0xcb;
|
||||
|
||||
vg_add_point_buf(m_xpos, m_ypos, rgb_t(r, g, b),
|
||||
(((m_int_latch >> 1) == 1)? m_intensity: m_int_latch & 0xe) << 4);
|
||||
m_spkl_shift = (((m_spkl_shift & 0x40) >> 6)
|
||||
^ ((m_spkl_shift & 0x20) >> 5)
|
||||
^ 1 )
|
||||
^ 1)
|
||||
| (m_spkl_shift << 1);
|
||||
|
||||
if ((m_spkl_shift & 0x7f) == 0x7f)
|
||||
@ -860,15 +859,15 @@ int avg_mhavoc_device::handler_7() // mhavoc_strobe3
|
||||
{
|
||||
m_xpos += (dx * cycles) >> 4;
|
||||
m_ypos -= (dy * cycles) >> 4;
|
||||
data = avgdvg_colorram[m_color];
|
||||
const u8 data = m_colorram[m_color];
|
||||
|
||||
bit3 = (~data >> 3) & 1;
|
||||
bit2 = (~data >> 2) & 1;
|
||||
bit1 = (~data >> 1) & 1;
|
||||
bit0 = (~data >> 0) & 1;
|
||||
r = bit3 * 0xcb + bit2 * 0x34;
|
||||
g = bit1 * 0xcb;
|
||||
b = bit0 * 0xcb;
|
||||
const u8 bit3 = (~data >> 3) & 1;
|
||||
const u8 bit2 = (~data >> 2) & 1;
|
||||
const u8 bit1 = (~data >> 1) & 1;
|
||||
const u8 bit0 = (~data >> 0) & 1;
|
||||
const u8 r = bit3 * 0xcb + bit2 * 0x34;
|
||||
const u8 g = bit1 * 0xcb;
|
||||
const u8 b = bit0 * 0xcb;
|
||||
|
||||
vg_add_point_buf(m_xpos, m_ypos, rgb_t(r, g, b),
|
||||
(((m_int_latch >> 1) == 1)? m_intensity: m_int_latch & 0xe) << 4);
|
||||
@ -878,8 +877,8 @@ int avg_mhavoc_device::handler_7() // mhavoc_strobe3
|
||||
{
|
||||
cycles = 0x8000 - m_timer;
|
||||
m_timer = 0;
|
||||
m_xpos = xcenter;
|
||||
m_ypos = ycenter;
|
||||
m_xpos = m_xcenter;
|
||||
m_ypos = m_ycenter;
|
||||
vg_add_point_buf(m_xpos, m_ypos, 0, 0);
|
||||
}
|
||||
|
||||
@ -888,16 +887,13 @@ int avg_mhavoc_device::handler_7() // mhavoc_strobe3
|
||||
|
||||
void avg_mhavoc_device::update_databus() // mhavoc_data
|
||||
{
|
||||
uint8_t *bank;
|
||||
|
||||
if (m_pc & 0x2000)
|
||||
{
|
||||
bank = &machine().root_device().memregion("avgdvg")->base()[0];
|
||||
m_data = bank[(m_map << 13) | ((m_pc ^ 1) & 0x1fff)];
|
||||
m_data = m_bank_region[(m_map << 13) | ((m_pc ^ 1) & 0x1fff)];
|
||||
}
|
||||
else
|
||||
{
|
||||
m_data = avgdvg_vectorram[m_pc ^ 1];
|
||||
m_data = m_vectorram[m_pc ^ 1];
|
||||
}
|
||||
}
|
||||
|
||||
@ -916,7 +912,7 @@ void avg_mhavoc_device::vgrst() // mhavoc_vgrst
|
||||
|
||||
void avg_starwars_device::update_databus() // starwars_data
|
||||
{
|
||||
m_data = avgdvg_vectorram[m_pc];
|
||||
m_data = m_vectorram[m_pc];
|
||||
}
|
||||
|
||||
|
||||
@ -928,14 +924,12 @@ int avg_starwars_device::handler_6() // starwars_strobe2
|
||||
m_color = (m_dvy >> 8) & 0xf;
|
||||
}
|
||||
|
||||
return avg_common_strobe2();
|
||||
return avg_common_strobe2();
|
||||
}
|
||||
|
||||
int avg_starwars_device::handler_7() // starwars_strobe3
|
||||
{
|
||||
int cycles;
|
||||
|
||||
cycles = avg_common_strobe3();
|
||||
const int cycles = avg_common_strobe3();
|
||||
|
||||
if ((m_op & 5) == 0)
|
||||
{
|
||||
@ -946,14 +940,15 @@ int avg_starwars_device::handler_7() // starwars_strobe3
|
||||
return cycles;
|
||||
}
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Quantum handler functions
|
||||
*
|
||||
*************************************/
|
||||
/*************************************
|
||||
*
|
||||
* Quantum handler functions
|
||||
*
|
||||
*************************************/
|
||||
|
||||
void avg_quantum_device::update_databus() // quantum_data
|
||||
{
|
||||
m_data = ((uint16_t *)avgdvg_vectorram)[m_pc >> 1];
|
||||
m_data = ((u16 *)m_vectorram.target())[m_pc >> 1];
|
||||
}
|
||||
|
||||
void avg_quantum_device::vggo() // tempest_vggo
|
||||
@ -966,7 +961,7 @@ void avg_quantum_device::vggo() // tempest_vggo
|
||||
* avg_common_strobe2). If we don't discard all vectors in the
|
||||
* current buffer at this point, the screen starts flickering.
|
||||
*/
|
||||
nvect = 0;
|
||||
m_nvect = 0;
|
||||
}
|
||||
|
||||
int avg_quantum_device::handler_0() // quantum_st2st3
|
||||
@ -1012,8 +1007,6 @@ int avg_quantum_device::handler_3() // quantum_latch3
|
||||
|
||||
int avg_quantum_device::handler_4() // quantum_strobe0
|
||||
{
|
||||
int i;
|
||||
|
||||
if (OP0)
|
||||
{
|
||||
m_stack[m_sp & 3] = m_pc;
|
||||
@ -1023,7 +1016,7 @@ int avg_quantum_device::handler_4() // quantum_strobe0
|
||||
/*
|
||||
* Quantum normalizes to 12 bit
|
||||
*/
|
||||
i = 0;
|
||||
int i = 0;
|
||||
while ((((m_dvy ^ (m_dvy << 1)) & 0x800) == 0)
|
||||
&& (((m_dvx ^ (m_dvx << 1)) & 0x800) == 0)
|
||||
&& (i++ < 16))
|
||||
@ -1040,11 +1033,9 @@ int avg_quantum_device::handler_4() // quantum_strobe0
|
||||
|
||||
int avg_quantum_device::handler_5() // quantum_strobe1
|
||||
{
|
||||
int i;
|
||||
|
||||
if (OP2 == 0)
|
||||
{
|
||||
for (i = m_bin_scale; i > 0; i--)
|
||||
for (int i = m_bin_scale; i > 0; i--)
|
||||
{
|
||||
m_timer >>= 1;
|
||||
m_timer |= 0x2000;
|
||||
@ -1062,28 +1053,26 @@ int avg_quantum_device::handler_6() // quantum_strobe2
|
||||
m_intensity = (m_dvy >> 4) & 0xf;
|
||||
}
|
||||
|
||||
return avg_common_strobe2();
|
||||
return avg_common_strobe2();
|
||||
}
|
||||
|
||||
int avg_quantum_device::handler_7() // quantum_strobe3
|
||||
{
|
||||
int cycles=0, r, g, b, bit0, bit1, bit2, bit3, x, y;
|
||||
|
||||
uint16_t data;
|
||||
int cycles = 0;
|
||||
|
||||
m_halt = OP0;
|
||||
|
||||
if ((m_op & 5) == 0)
|
||||
{
|
||||
data = ((uint16_t *)avgdvg_colorram)[m_color];
|
||||
bit3 = (~data >> 3) & 1;
|
||||
bit2 = (~data >> 2) & 1;
|
||||
bit1 = (~data >> 1) & 1;
|
||||
bit0 = (~data >> 0) & 1;
|
||||
const u16 data = ((u16 *)m_colorram.target())[m_color];
|
||||
const u8 bit3 = (~data >> 3) & 1;
|
||||
const u8 bit2 = (~data >> 2) & 1;
|
||||
const u8 bit1 = (~data >> 1) & 1;
|
||||
const u8 bit0 = (~data >> 0) & 1;
|
||||
|
||||
g = bit1 * 0xaa + bit0 * 0x54;
|
||||
b = bit2 * 0xce;
|
||||
r = bit3 * 0xce;
|
||||
const u8 g = bit1 * 0xaa + bit0 * 0x54;
|
||||
const u8 b = bit2 * 0xce;
|
||||
const u8 r = bit3 * 0xce;
|
||||
|
||||
cycles = 0x4000 - m_timer;
|
||||
m_timer = 0;
|
||||
@ -1091,32 +1080,32 @@ int avg_quantum_device::handler_7() // quantum_strobe3
|
||||
m_xpos += (((((m_dvx & 0xfff) >> 2) ^ m_xdac_xor) - 0x200) * cycles * (m_scale ^ 0xff)) >> 4;
|
||||
m_ypos -= (((((m_dvy & 0xfff) >> 2) ^ m_ydac_xor) - 0x200) * cycles * (m_scale ^ 0xff)) >> 4;
|
||||
|
||||
x = m_xpos;
|
||||
y = m_ypos;
|
||||
int x = m_xpos;
|
||||
int y = m_ypos;
|
||||
|
||||
apply_flipping(&x, &y);
|
||||
|
||||
vg_add_point_buf(y - ycenter + xcenter,
|
||||
x - xcenter + ycenter, rgb_t(r, g, b),
|
||||
vg_add_point_buf(y - m_ycenter + m_xcenter,
|
||||
x - m_xcenter + m_ycenter, rgb_t(r, g, b),
|
||||
((m_int_latch == 2)? m_intensity: m_int_latch) << 4);
|
||||
}
|
||||
if (OP2)
|
||||
{
|
||||
cycles = 0x4000 - m_timer;
|
||||
m_timer = 0;
|
||||
m_xpos = xcenter;
|
||||
m_ypos = ycenter;
|
||||
m_xpos = m_xcenter;
|
||||
m_ypos = m_ycenter;
|
||||
vg_add_point_buf(m_xpos, m_ypos, 0, 0);
|
||||
}
|
||||
|
||||
return cycles;
|
||||
}
|
||||
|
||||
/*************************************
|
||||
*
|
||||
* Bzone handler functions
|
||||
*
|
||||
*************************************/
|
||||
/*************************************
|
||||
*
|
||||
* Bzone handler functions
|
||||
*
|
||||
*************************************/
|
||||
int avg_bzone_device::handler_1() // bzone_latch1
|
||||
{
|
||||
/*
|
||||
@ -1137,7 +1126,7 @@ int avg_bzone_device::handler_1() // bzone_latch1
|
||||
m_clipy_max = m_ypos;
|
||||
}
|
||||
|
||||
if (m_lst==0 || m_hst==0)
|
||||
if (m_lst == 0 || m_hst == 0)
|
||||
{
|
||||
vg_add_clip(m_clipx_min, m_clipy_min, m_clipx_max, m_clipy_max);
|
||||
}
|
||||
@ -1173,9 +1162,7 @@ int avg_bzone_device::handler_6() // bzone_strobe2
|
||||
int avg_bzone_device::handler_7() // bzone_strobe3
|
||||
{
|
||||
/* Battle Zone is B/W */
|
||||
int cycles;
|
||||
|
||||
cycles = avg_common_strobe3();
|
||||
const int cycles = avg_common_strobe3();
|
||||
|
||||
if ((m_op & 5) == 0)
|
||||
{
|
||||
@ -1200,14 +1187,12 @@ int avg_tomcat_device::handler_6() // starwars_strobe2
|
||||
m_color = (m_dvy >> 8) & 0xf;
|
||||
}
|
||||
|
||||
return avg_common_strobe2();
|
||||
return avg_common_strobe2();
|
||||
}
|
||||
|
||||
int avg_tomcat_device::handler_7() // starwars_strobe3
|
||||
{
|
||||
int cycles;
|
||||
|
||||
cycles = avg_common_strobe3();
|
||||
const int cycles = avg_common_strobe3();
|
||||
|
||||
if ((m_op & 5) == 0)
|
||||
{
|
||||
@ -1231,7 +1216,7 @@ void avgdvg_device::vg_set_halt(int dummy)
|
||||
m_sync_halt = dummy;
|
||||
}
|
||||
|
||||
TIMER_CALLBACK_MEMBER( avgdvg_device::vg_set_halt_callback )
|
||||
TIMER_CALLBACK_MEMBER(avgdvg_device::vg_set_halt_callback)
|
||||
{
|
||||
vg_set_halt(param);
|
||||
}
|
||||
@ -1250,16 +1235,15 @@ TIMER_CALLBACK_MEMBER( avgdvg_device::vg_set_halt_callback )
|
||||
*
|
||||
*******************************************************************/
|
||||
|
||||
TIMER_CALLBACK_MEMBER( avgdvg_device::run_state_machine )
|
||||
TIMER_CALLBACK_MEMBER(avgdvg_device::run_state_machine)
|
||||
{
|
||||
int cycles = 0;
|
||||
uint8_t *state_prom = machine().root_device().memregion("user1")->base();
|
||||
|
||||
while (cycles < VGSLICE)
|
||||
{
|
||||
/* Get next state */
|
||||
m_state_latch = (m_state_latch & 0x10)
|
||||
| (state_prom[state_addr()] & 0xf);
|
||||
| (m_prom[state_addr()] & 0xf);
|
||||
|
||||
if (ST3)
|
||||
{
|
||||
@ -1281,13 +1265,13 @@ TIMER_CALLBACK_MEMBER( avgdvg_device::run_state_machine )
|
||||
|
||||
/* If halt flag was set, let CPU catch up before we make halt visible */
|
||||
if (m_halt && !(m_state_latch & 0x10))
|
||||
vg_halt_timer->adjust(attotime::from_hz(MASTER_CLOCK) * cycles, 1);
|
||||
m_vg_halt_timer->adjust(attotime::from_hz(MASTER_CLOCK) * cycles, 1);
|
||||
|
||||
m_state_latch = (m_halt << 4) | (m_state_latch & 0xf);
|
||||
cycles += 8;
|
||||
}
|
||||
|
||||
vg_run_timer->adjust(attotime::from_hz(MASTER_CLOCK) * cycles);
|
||||
m_vg_run_timer->adjust(attotime::from_hz(MASTER_CLOCK) * cycles);
|
||||
}
|
||||
|
||||
|
||||
@ -1297,16 +1281,16 @@ TIMER_CALLBACK_MEMBER( avgdvg_device::run_state_machine )
|
||||
*
|
||||
************************************/
|
||||
|
||||
CUSTOM_INPUT_MEMBER( avgdvg_device::done_r )
|
||||
CUSTOM_INPUT_MEMBER(avgdvg_device::done_r)
|
||||
{
|
||||
return m_sync_halt ? 0x01 : 0x00;
|
||||
}
|
||||
|
||||
WRITE8_MEMBER( avgdvg_device::go_w )
|
||||
void avgdvg_device::go_w(u8 data)
|
||||
{
|
||||
vggo();
|
||||
|
||||
if (m_sync_halt && (nvect > 10))
|
||||
if (m_sync_halt && (m_nvect > 10))
|
||||
{
|
||||
/*
|
||||
* This is a good time to start a new frame. Major Havoc
|
||||
@ -1318,12 +1302,12 @@ WRITE8_MEMBER( avgdvg_device::go_w )
|
||||
vg_flush();
|
||||
|
||||
vg_set_halt(0);
|
||||
vg_run_timer->adjust(attotime::zero);
|
||||
m_vg_run_timer->adjust(attotime::zero);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( avgdvg_device::go_word_w )
|
||||
void avgdvg_device::go_word_w(u16 data)
|
||||
{
|
||||
go_w(space, offset, data);
|
||||
go_w(data);
|
||||
}
|
||||
|
||||
|
||||
@ -1333,15 +1317,15 @@ WRITE16_MEMBER( avgdvg_device::go_word_w )
|
||||
*
|
||||
************************************/
|
||||
|
||||
WRITE8_MEMBER( avgdvg_device::reset_w )
|
||||
void avgdvg_device::reset_w(u8 data)
|
||||
{
|
||||
vgrst();
|
||||
vg_set_halt(1);
|
||||
}
|
||||
|
||||
WRITE16_MEMBER( avgdvg_device::reset_word_w )
|
||||
void avgdvg_device::reset_word_w(u16 data)
|
||||
{
|
||||
reset_w (space,0,0);
|
||||
reset_w(data);
|
||||
}
|
||||
|
||||
/*************************************
|
||||
@ -1384,39 +1368,29 @@ void avgdvg_device::register_state()
|
||||
save_item(NAME(m_clipx_max));
|
||||
save_item(NAME(m_clipy_max));
|
||||
|
||||
save_item(NAME(flip_x));
|
||||
save_item(NAME(flip_y));
|
||||
save_pointer(NAME(avgdvg_vectorram), avgdvg_vectorram_size);
|
||||
save_item(NAME(m_flip_x));
|
||||
save_item(NAME(m_flip_y));
|
||||
}
|
||||
|
||||
void avg_device::device_start()
|
||||
{
|
||||
if(!m_vector->started())
|
||||
if (!m_vector->started())
|
||||
throw device_missing_dependencies();
|
||||
|
||||
const rectangle &visarea = m_vector->screen().visible_area();
|
||||
|
||||
avgdvg_vectorram = reinterpret_cast<uint8_t *>(machine().root_device().memshare("vectorram")->ptr());
|
||||
avgdvg_vectorram_size = machine().root_device().memshare("vectorram")->bytes();
|
||||
m_xmin = visarea.min_x;
|
||||
m_ymin = visarea.min_y;
|
||||
m_xmax = visarea.max_x;
|
||||
m_ymax = visarea.max_y;
|
||||
|
||||
memory_share *colorram = machine().root_device().memshare("colorram");
|
||||
if (colorram != nullptr)
|
||||
{
|
||||
avgdvg_colorram = reinterpret_cast<uint8_t *>(colorram->ptr());
|
||||
}
|
||||
m_xcenter = ((m_xmax - m_xmin) / 2) << 16;
|
||||
m_ycenter = ((m_ymax - m_ymin) / 2) << 16;
|
||||
|
||||
xmin = visarea.min_x;
|
||||
ymin = visarea.min_y;
|
||||
xmax = visarea.max_x;
|
||||
ymax = visarea.max_y;
|
||||
m_flip_x = m_flip_y = false;
|
||||
|
||||
xcenter = ((xmax - xmin) / 2) << 16;
|
||||
ycenter = ((ymax - ymin) / 2) << 16;
|
||||
|
||||
flip_x = flip_y = 0;
|
||||
|
||||
vg_halt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(avgdvg_device::vg_set_halt_callback),this));
|
||||
vg_run_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(avgdvg_device::run_state_machine),this));
|
||||
m_vg_halt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(avgdvg_device::vg_set_halt_callback),this));
|
||||
m_vg_run_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(avgdvg_device::run_state_machine),this));
|
||||
|
||||
/*
|
||||
* The x and y DACs use 10 bit of the counter values which are in
|
||||
@ -1431,36 +1405,30 @@ void avg_device::device_start()
|
||||
|
||||
void dvg_device::device_start()
|
||||
{
|
||||
if(!m_vector->started())
|
||||
if (!m_vector->started())
|
||||
throw device_missing_dependencies();
|
||||
|
||||
const rectangle &visarea = m_vector->screen().visible_area();
|
||||
|
||||
avgdvg_vectorram = reinterpret_cast<uint8_t *>(machine().root_device().memshare("vectorram")->ptr());
|
||||
avgdvg_vectorram_size = machine().root_device().memshare("vectorram")->bytes();
|
||||
m_xmin = visarea.min_x;
|
||||
m_ymin = visarea.min_y;
|
||||
|
||||
memory_share *colorram = machine().root_device().memshare("colorram");
|
||||
if (colorram != nullptr)
|
||||
{
|
||||
avgdvg_colorram = reinterpret_cast<uint8_t *>(colorram->ptr());
|
||||
}
|
||||
m_xcenter = 512;
|
||||
m_ycenter = 512;
|
||||
|
||||
xmin = visarea.min_x;
|
||||
ymin = visarea.min_y;
|
||||
m_flip_x = m_flip_y = false;
|
||||
|
||||
xcenter = 512;
|
||||
ycenter = 512;
|
||||
|
||||
flip_x = flip_y = 0;
|
||||
|
||||
vg_halt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(avgdvg_device::vg_set_halt_callback),this));
|
||||
vg_run_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(avgdvg_device::run_state_machine),this));
|
||||
m_vg_halt_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(avgdvg_device::vg_set_halt_callback),this));
|
||||
m_vg_run_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(avgdvg_device::run_state_machine),this));
|
||||
|
||||
register_state();
|
||||
}
|
||||
|
||||
avgdvg_device::avgdvg_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, type, tag, owner, clock)
|
||||
, m_vectorram(*this, "vectorram", 0)
|
||||
, m_colorram(*this, "colorram", 0)
|
||||
, m_prom(*this, "prom")
|
||||
, m_vector(*this, finder_base::DUMMY_TAG)
|
||||
{
|
||||
m_pc = 0;
|
||||
@ -1504,15 +1472,15 @@ avgdvg_device::avgdvg_device(const machine_config &mconfig, device_type type, co
|
||||
m_clipx_max = 0;
|
||||
m_clipy_max = 0;
|
||||
|
||||
xmin = 0;
|
||||
xmax = 0;
|
||||
ymin = 0;
|
||||
ymax = 0;
|
||||
xcenter = 0;
|
||||
ycenter = 0;
|
||||
flip_x = 0;
|
||||
flip_y = 0;
|
||||
nvect = 0;
|
||||
m_xmin = 0;
|
||||
m_xmax = 0;
|
||||
m_ymin = 0;
|
||||
m_ymax = 0;
|
||||
m_xcenter = 0;
|
||||
m_ycenter = 0;
|
||||
m_flip_x = false;
|
||||
m_flip_y = false;
|
||||
m_nvect = 0;
|
||||
}
|
||||
|
||||
dvg_device::dvg_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
@ -1536,7 +1504,8 @@ avg_tempest_device::avg_tempest_device(const machine_config &mconfig, const char
|
||||
{
|
||||
}
|
||||
avg_mhavoc_device::avg_mhavoc_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) :
|
||||
avg_device(mconfig, AVG_MHAVOC, tag, owner, clock)
|
||||
avg_device(mconfig, AVG_MHAVOC, tag, owner, clock),
|
||||
m_bank_region(*this, DEVICE_SELF)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -17,15 +17,15 @@ public:
|
||||
template <typename T> void set_vector_tag(T &&tag) { m_vector.set_tag(std::forward<T>(tag)); }
|
||||
|
||||
DECLARE_CUSTOM_INPUT_MEMBER(done_r);
|
||||
DECLARE_WRITE8_MEMBER(go_w);
|
||||
DECLARE_WRITE8_MEMBER(reset_w);
|
||||
void go_w(u8 data = 0);
|
||||
void reset_w(u8 data = 0);
|
||||
|
||||
DECLARE_WRITE16_MEMBER(go_word_w);
|
||||
DECLARE_WRITE16_MEMBER(reset_word_w);
|
||||
void go_word_w(u16 data = 0);
|
||||
void reset_word_w(u16 data = 0);
|
||||
|
||||
/* Tempest and Quantum use this capability */
|
||||
void set_flip_x(int flip) { flip_x = flip; }
|
||||
void set_flip_y(int flip) { flip_y = flip; }
|
||||
void set_flip_x(bool flip) { m_flip_x = flip; }
|
||||
void set_flip_y(bool flip) { m_flip_y = flip; }
|
||||
|
||||
TIMER_CALLBACK_MEMBER(vg_set_halt_callback);
|
||||
TIMER_CALLBACK_MEMBER(run_state_machine);
|
||||
@ -49,64 +49,60 @@ protected:
|
||||
|
||||
void vg_flush();
|
||||
void vg_add_point_buf(int x, int y, rgb_t color, int intensity);
|
||||
void vg_add_clip (int xmin, int ymin, int xmax, int ymax);
|
||||
void vg_add_clip(int xmin, int ymin, int xmax, int ymax);
|
||||
|
||||
void register_state();
|
||||
|
||||
uint8_t *avgdvg_vectorram;
|
||||
size_t avgdvg_vectorram_size;
|
||||
required_shared_ptr<u8> m_vectorram;
|
||||
optional_shared_ptr<u8> m_colorram;
|
||||
required_region_ptr<u8> m_prom;
|
||||
|
||||
uint8_t *avgdvg_colorram;
|
||||
int m_xmin, m_xmax, m_ymin, m_ymax;
|
||||
int m_xcenter, m_ycenter;
|
||||
emu_timer *m_vg_run_timer, *m_vg_halt_timer;
|
||||
|
||||
bool m_flip_x, m_flip_y;
|
||||
|
||||
int xmin, xmax, ymin, ymax;
|
||||
int xcenter, ycenter;
|
||||
emu_timer *vg_run_timer, *vg_halt_timer;
|
||||
int m_nvect;
|
||||
vgvector m_vectbuf[MAXVECT];
|
||||
|
||||
int flip_x, flip_y;
|
||||
u16 m_pc;
|
||||
u8 m_sp;
|
||||
u16 m_dvx;
|
||||
u16 m_dvy;
|
||||
u8 m_dvy12;
|
||||
u16 m_timer;
|
||||
u16 m_stack[4];
|
||||
u16 m_data;
|
||||
|
||||
int nvect;
|
||||
vgvector vectbuf[MAXVECT];
|
||||
u8 m_state_latch;
|
||||
u8 m_int_latch;
|
||||
u8 m_scale;
|
||||
u8 m_bin_scale;
|
||||
u8 m_intensity;
|
||||
u8 m_color;
|
||||
u8 m_enspkl;
|
||||
u8 m_spkl_shift;
|
||||
u8 m_map;
|
||||
|
||||
u16 m_hst;
|
||||
u16 m_lst;
|
||||
u16 m_izblank;
|
||||
|
||||
uint16_t m_pc;
|
||||
uint8_t m_sp;
|
||||
uint16_t m_dvx;
|
||||
uint16_t m_dvy;
|
||||
uint8_t m_dvy12;
|
||||
uint16_t m_timer;
|
||||
uint16_t m_stack[4];
|
||||
uint16_t m_data;
|
||||
u8 m_op;
|
||||
u8 m_halt;
|
||||
u8 m_sync_halt;
|
||||
|
||||
uint8_t m_state_latch;
|
||||
uint8_t m_int_latch;
|
||||
uint8_t m_scale;
|
||||
uint8_t m_bin_scale;
|
||||
uint8_t m_intensity;
|
||||
uint8_t m_color;
|
||||
uint8_t m_enspkl;
|
||||
uint8_t m_spkl_shift;
|
||||
uint8_t m_map;
|
||||
u16 m_xdac_xor;
|
||||
u16 m_ydac_xor;
|
||||
|
||||
uint16_t m_hst;
|
||||
uint16_t m_lst;
|
||||
uint16_t m_izblank;
|
||||
|
||||
uint8_t m_op;
|
||||
uint8_t m_halt;
|
||||
uint8_t m_sync_halt;
|
||||
|
||||
uint16_t m_xdac_xor;
|
||||
uint16_t m_ydac_xor;
|
||||
|
||||
int32_t m_xpos;
|
||||
int32_t m_ypos;
|
||||
|
||||
int32_t m_clipx_min;
|
||||
int32_t m_clipy_min;
|
||||
int32_t m_clipx_max;
|
||||
int32_t m_clipy_max;
|
||||
s32 m_xpos;
|
||||
s32 m_ypos;
|
||||
|
||||
s32 m_clipx_min;
|
||||
s32 m_clipy_min;
|
||||
s32 m_clipx_max;
|
||||
s32 m_clipy_max;
|
||||
|
||||
virtual int handler_0() = 0;
|
||||
virtual int handler_1() = 0;
|
||||
@ -116,7 +112,7 @@ protected:
|
||||
virtual int handler_5() = 0;
|
||||
virtual int handler_6() = 0;
|
||||
virtual int handler_7() = 0;
|
||||
virtual uint8_t state_addr() = 0;
|
||||
virtual u8 state_addr() = 0;
|
||||
virtual void update_databus() = 0;
|
||||
virtual void vggo() = 0;
|
||||
virtual void vgrst() = 0;
|
||||
@ -141,7 +137,7 @@ protected:
|
||||
virtual int handler_5() override;
|
||||
virtual int handler_6() override;
|
||||
virtual int handler_7() override;
|
||||
virtual uint8_t state_addr() override;
|
||||
virtual u8 state_addr() override;
|
||||
virtual void update_databus() override;
|
||||
virtual void vggo() override;
|
||||
virtual void vgrst() override;
|
||||
@ -173,7 +169,7 @@ protected:
|
||||
virtual int handler_5() override;
|
||||
virtual int handler_6() override;
|
||||
virtual int handler_7() override;
|
||||
virtual uint8_t state_addr() override;
|
||||
virtual u8 state_addr() override;
|
||||
virtual void update_databus() override;
|
||||
virtual void vggo() override;
|
||||
virtual void vgrst() override;
|
||||
@ -211,6 +207,9 @@ protected:
|
||||
virtual int handler_7() override;
|
||||
virtual void update_databus() override;
|
||||
virtual void vgrst() override;
|
||||
|
||||
private:
|
||||
required_region_ptr<u8> m_bank_region;
|
||||
};
|
||||
|
||||
// device type definition
|
||||
|
Loading…
Reference in New Issue
Block a user