From 872afd9ee532cecbcc378b52339870660a2fa00a Mon Sep 17 00:00:00 2001 From: AJR Date: Sun, 8 Dec 2024 16:40:06 -0500 Subject: misc/vamphalf.cpp: Add screen raw parameters * xtal.cpp: Add value for later use --- src/emu/xtal.cpp | 1 + src/mame/misc/vamphalf.cpp | 54 ++++++++++++++++++++++++---------------------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp index 15489fcd56c..9d5f4f55a5a 100644 --- a/src/emu/xtal.cpp +++ b/src/emu/xtal.cpp @@ -399,6 +399,7 @@ const double XTAL::known_xtals[] = { 28'224'000, // 28.224_MHz_XTAL Roland JD-800 28'322'000, // 28.322_MHz_XTAL Saitek RISC 2500, Mephisto Montreux 28'375'160, // 28.37516_MHz_XTAL Amiga PAL systems + 28'432'000, // 28.432_MHz_XTAL Fuuki FG-3J MAIN-J PCB 28'475'000, // 28.475_MHz_XTAL CoCo 3 PAL 28'480'000, // 28.48_MHz_XTAL Chromatics CGC-7900 28'636'000, // 28.636_MHz_XTAL Super Kaneko Nova System diff --git a/src/mame/misc/vamphalf.cpp b/src/mame/misc/vamphalf.cpp index 0aa00247d00..58485f7e18e 100644 --- a/src/mame/misc/vamphalf.cpp +++ b/src/mame/misc/vamphalf.cpp @@ -56,6 +56,7 @@ TODO: - boonggab: simulate photo sensors with a "stroke strength" - boonggab: what are sensors bit used for? are they used in the japanese version? - wyvernsg: fails a protection check after ~1 hour of play? +- are CRTC parameters software-configurable? *********************************************************************/ @@ -154,6 +155,13 @@ public: void common_map(address_map &map) ATTR_COLD; void common_32bit_map(address_map &map) ATTR_COLD; + static constexpr u16 HTOTAL = 448; + static constexpr u16 HBEND = 31; + static constexpr u16 HBSTART = 351; + static constexpr u16 VTOTAL = 264; + static constexpr u16 VBEND = 16; + static constexpr u16 VBSTART = 252; + protected: virtual void video_start() override ATTR_COLD; @@ -1161,7 +1169,7 @@ GFXDECODE_END void vamphalf_state::common(machine_config &config) { - E116T(config, m_maincpu, 50000000); /* 50 MHz */ + E116T(config, m_maincpu, 50_MHz_XTAL); // 50 MHz m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_state::common_map); m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold)); @@ -1172,11 +1180,7 @@ void vamphalf_state::common(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - // 28MHz - screen.set_refresh_hz(59); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(512, 256); - screen.set_visarea(31, 350, 16, 251); + screen.set_raw(28_MHz_XTAL / 4, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); screen.set_screen_update(FUNC(vamphalf_state::screen_update_common)); screen.set_palette(m_palette); @@ -1189,9 +1193,9 @@ void vamphalf_state::sound_ym_oki(machine_config &config) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - YM2151(config, "ymsnd", XTAL(28'000'000)/8).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.5MHz */ + YM2151(config, "ymsnd", 28_MHz_XTAL / 8).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); // 3.5MHz - okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(28'000'000)/16 , okim6295_device::PIN7_HIGH)); /* 1.75MHz */ + okim6295_device &oki1(OKIM6295(config, "oki1", 28_MHz_XTAL / 16 , okim6295_device::PIN7_HIGH)); // 1.75MHz oki1.add_route(ALL_OUTPUTS, "lspeaker", 1.0); oki1.add_route(ALL_OUTPUTS, "rspeaker", 1.0); } @@ -1207,9 +1211,9 @@ void vamphalf_state::sound_suplup(machine_config &config) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - YM2151(config, "ymsnd", XTAL(14'318'181)/4).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); /* 3.579545 MHz */ + YM2151(config, "ymsnd", 14.318181_MHz_XTAL / 4).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); // 3.579545 MHz - okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(14'318'181)/8, okim6295_device::PIN7_HIGH)); /* 1.75MHz */ + okim6295_device &oki1(OKIM6295(config, "oki1", 14.318181_MHz_XTAL / 8, okim6295_device::PIN7_HIGH)); // 1.75MHz oki1.add_route(ALL_OUTPUTS, "lspeaker", 1.0); oki1.add_route(ALL_OUTPUTS, "rspeaker", 1.0); } @@ -1224,7 +1228,7 @@ void vamphalf_state::sound_qs1000(machine_config &config) m_soundlatch->data_pending_callback().set("qs1000", FUNC(qs1000_device::set_irq)); m_soundlatch->set_separate_acknowledge(true); - qs1000_device &qs1000(QS1000(config, "qs1000", XTAL(24'000'000))); + qs1000_device &qs1000(QS1000(config, "qs1000", 24_MHz_XTAL)); qs1000.set_external_rom(true); qs1000.p1_in().set("soundlatch", FUNC(generic_latch_8_device::read)); qs1000.p3_out().set(FUNC(vamphalf_state::qs1000_p3_w)); @@ -1243,7 +1247,7 @@ void vamphalf_state::vamphalf(machine_config &config) void vamphalf_qdsp_state::misncrft(machine_config &config) { common(config); - GMS30C2116(config.replace(), m_maincpu, XTAL(50'000'000)); /* 50 MHz */ + GMS30C2116(config.replace(), m_maincpu, 50_MHz_XTAL); // 50 MHz m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_qdsp_state::common_map); m_maincpu->set_addrmap(AS_IO, &vamphalf_qdsp_state::misncrft_io); m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold)); @@ -1273,6 +1277,7 @@ void vamphalf_state::suplup(machine_config &config) m_maincpu->set_addrmap(AS_IO, &vamphalf_state::suplup_io); // 14.31818MHz instead 28MHz + subdevice("screen")->set_raw(14.318181_MHz_XTAL / 2, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); sound_suplup(config); } @@ -1311,7 +1316,7 @@ void vamphalf_state::worldadv(machine_config &config) void vamphalf_state::mrdig(machine_config &config) { common(config); - GMS30C2116(config.replace(), m_maincpu, XTAL(50'000'000)); /* 50 MHz */ + GMS30C2116(config.replace(), m_maincpu, 50_MHz_XTAL); // 50 MHz m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_state::common_map); m_maincpu->set_addrmap(AS_IO, &vamphalf_state::mrdig_io); m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold)); @@ -1322,7 +1327,7 @@ void vamphalf_state::mrdig(machine_config &config) void vamphalf_qdsp_state::wyvernwg(machine_config &config) { common(config); - E132T(config.replace(), m_maincpu, XTAL(50'000'000)); /* 50 MHz */ + E132T(config.replace(), m_maincpu, 50_MHz_XTAL); // 50 MHz m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_qdsp_state::common_32bit_map); m_maincpu->set_addrmap(AS_IO, &vamphalf_qdsp_state::wyvernwg_io); m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold)); @@ -1333,7 +1338,7 @@ void vamphalf_qdsp_state::wyvernwg(machine_config &config) void vamphalf_nvram_state::finalgdr(machine_config &config) { common(config); - E132T(config.replace(), m_maincpu, XTAL(50'000'000)); /* 50 MHz */ + E132T(config.replace(), m_maincpu, 50_MHz_XTAL); // 50 MHz m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_nvram_state::common_32bit_map); m_maincpu->set_addrmap(AS_IO, &vamphalf_nvram_state::finalgdr_io); m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold)); @@ -1346,7 +1351,7 @@ void vamphalf_nvram_state::finalgdr(machine_config &config) void vamphalf_nvram_state::mrkickera(machine_config &config) { common(config); - E132T(config.replace(), m_maincpu, XTAL(50'000'000)); /* 50 MHz */ + E132T(config.replace(), m_maincpu, 50_MHz_XTAL); // 50 MHz m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_nvram_state::common_32bit_map); m_maincpu->set_addrmap(AS_IO, &vamphalf_nvram_state::mrkickera_io); m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold)); @@ -1358,7 +1363,7 @@ void vamphalf_nvram_state::mrkickera(machine_config &config) void vamphalf_state::aoh(machine_config &config) { - E132XN(config, m_maincpu, XTAL(20'000'000) * 4); /* 4x internal multiplier */ + E132XN(config, m_maincpu, 20_MHz_XTAL * 4); // 4x internal multiplier m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_state::aoh_map); m_maincpu->set_addrmap(AS_IO, &vamphalf_state::aoh_io); m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq1_line_hold)); @@ -1367,11 +1372,7 @@ void vamphalf_state::aoh(machine_config &config) /* video hardware */ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - // 32MHz - screen.set_refresh_hz(59.185); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(512, 512); - screen.set_visarea(64, 511-64, 16, 255-16); + screen.set_raw(32_MHz_XTAL / 4, 512, 64, 448, 264, 16, 240); screen.set_screen_update(FUNC(vamphalf_state::screen_update_aoh)); screen.set_palette(m_palette); @@ -1382,13 +1383,13 @@ void vamphalf_state::aoh(machine_config &config) SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - YM2151(config, "ymsnd", XTAL(3'579'545)).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); + YM2151(config, "ymsnd", 3.579545_MHz_XTAL).add_route(0, "lspeaker", 1.0).add_route(1, "rspeaker", 1.0); - okim6295_device &oki1(OKIM6295(config, "oki1", XTAL(32'000'000)/8, okim6295_device::PIN7_HIGH)); /* 4MHz */ + okim6295_device &oki1(OKIM6295(config, "oki1", 32_MHz_XTAL / 8, okim6295_device::PIN7_HIGH)); // 4MHz oki1.add_route(ALL_OUTPUTS, "lspeaker", 1.0); oki1.add_route(ALL_OUTPUTS, "rspeaker", 1.0); - okim6295_device &oki2(OKIM6295(config, "oki2", XTAL(32'000'000)/32, okim6295_device::PIN7_HIGH)); /* 1MHz */ + okim6295_device &oki2(OKIM6295(config, "oki2", 32_MHz_XTAL / 32, okim6295_device::PIN7_HIGH)); // 1MHz oki2.set_addrmap(0, &vamphalf_state::banked_oki_map); oki2.add_route(ALL_OUTPUTS, "lspeaker", 1.0); oki2.add_route(ALL_OUTPUTS, "rspeaker", 1.0); @@ -1405,12 +1406,13 @@ void vamphalf_state::boonggab(machine_config &config) void vamphalf_qdsp_state::yorijori(machine_config &config) { common(config); - E132T(config.replace(), m_maincpu, XTAL(50'000'000)); /* 50 MHz */ + E132T(config.replace(), m_maincpu, 50_MHz_XTAL); // 50 MHz m_maincpu->set_addrmap(AS_PROGRAM, &vamphalf_qdsp_state::yorijori_32bit_map); m_maincpu->set_addrmap(AS_IO, &vamphalf_qdsp_state::yorijori_io); m_maincpu->set_vblank_int("screen", FUNC(vamphalf_state::irq2_line_hold)); // 27MHz instead 28MHz + subdevice("screen")->set_raw(27_MHz_XTAL / 4, HTOTAL, HBEND, HBSTART, VTOTAL, VBEND, VBSTART); sound_qs1000(config); } -- cgit v1.2.3