summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2020-08-22 20:23:41 +0200
committer hap <happppp@users.noreply.github.com>2020-08-22 20:24:09 +0200
commitaf4a5ff1af8bfb56441b900ba2655007681c4cda (patch)
treefc89e29a5c0d54df770b05de0aa008838e61b5dc /src
parent1287663196ae7fe2cfdd96682200644e3cdf940e (diff)
odyssey2: different video xtal for jopac
Diffstat (limited to 'src')
-rw-r--r--src/emu/xtal.cpp1
-rw-r--r--src/mame/drivers/odyssey2.cpp37
2 files changed, 25 insertions, 13 deletions
diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp
index c1d3b9f6467..9a8f5092fe5 100644
--- a/src/emu/xtal.cpp
+++ b/src/emu/xtal.cpp
@@ -92,6 +92,7 @@ const double XTAL::known_xtals[] = {
3'521'280, /* 3.52128_MHz_XTAL RCA COSMAC VIP */
3'546'800, /* 3.5468_MHz_XTAL Atari 400 PAL */
3'547'000, /* 3.547_MHz_XTAL Philips G7200, Philips C7240 */
+ 3'562'500, /* 3.5625_MHz_XTAL Jopac JO7400 */
3'570'000, /* 3.57_MHz_XTAL Telmac TMC-600 */
3'578'640, /* 3.57864_MHz_XTAL Atari Portfolio PCD3311T */
3'579'000, /* 3.579_MHz_XTAL BeebOPL */
diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp
index 820c82a2c27..800005c191b 100644
--- a/src/mame/drivers/odyssey2.cpp
+++ b/src/mame/drivers/odyssey2.cpp
@@ -31,6 +31,7 @@ XTAL notes (differs per model):
- C52/N60: 17.812
- G7200: 5.911MHz + 3.547MHz
- G7400: 5.911MHz + 8.867MHz
+- JO7400: 5.911MHz + 3.5625MHz
TODO:
- backgamm doesn't draw all the chars/sprites, it does multiple screen updates
@@ -149,6 +150,7 @@ public:
{ }
void g7400(machine_config &config);
+ void jo7400(machine_config &config);
void odyssey3(machine_config &config);
protected:
@@ -644,7 +646,7 @@ INPUT_PORTS_END
void odyssey2_state::odyssey2(machine_config &config)
{
/* basic machine hardware */
- I8048(config, m_maincpu, (XTAL(7'159'090) * 3) / 4);
+ I8048(config, m_maincpu, (7.15909_MHz_XTAL * 3) / 4);
m_maincpu->set_addrmap(AS_PROGRAM, &odyssey2_state::odyssey2_mem);
m_maincpu->set_addrmap(AS_IO, &odyssey2_state::odyssey2_io);
m_maincpu->p1_out_cb().set(FUNC(odyssey2_state::p1_write));
@@ -662,7 +664,7 @@ void odyssey2_state::odyssey2(machine_config &config)
PALETTE(config, "palette", FUNC(odyssey2_state::odyssey2_palette), 16);
- I8244(config, m_i8244, XTAL(7'159'090) / 2);
+ I8244(config, m_i8244, 7.15909_MHz_XTAL / 2);
m_i8244->set_screen("screen");
m_i8244->set_screen_size(360, 243);
m_i8244->irq_cb().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
@@ -681,13 +683,13 @@ void odyssey2_state::videopac(machine_config &config)
odyssey2(config);
// PAL video chip
- I8245(config.replace(), m_i8244, XTAL(17'734'476) / 5);
+ I8245(config.replace(), m_i8244, 17.734476_MHz_XTAL / 5);
m_i8244->set_screen("screen");
m_i8244->set_screen_size(360, 243);
m_i8244->irq_cb().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
m_i8244->add_route(ALL_OUTPUTS, "mono", 0.40);
- m_maincpu->set_clock(XTAL(17'734'476) / 3);
+ m_maincpu->set_clock(17.734476_MHz_XTAL / 3);
subdevice<software_list_device>("cart_list")->set_filter("VP");
subdevice<software_list_device>("g7400_list")->set_filter("VP");
@@ -698,15 +700,15 @@ void odyssey2_state::videopacf(machine_config &config)
videopac(config);
// different master XTAL
- m_maincpu->set_clock(XTAL(17'812'000) / 3);
- m_i8244->set_clock(XTAL(17'812'000) / 5);
+ m_maincpu->set_clock(17.812_MHz_XTAL / 3);
+ m_i8244->set_clock(17.812_MHz_XTAL / 5);
}
void g7400_state::g7400(machine_config &config)
{
/* basic machine hardware */
- I8048(config, m_maincpu, XTAL(5'911'000));
+ I8048(config, m_maincpu, 5.911_MHz_XTAL);
m_maincpu->set_addrmap(AS_PROGRAM, &g7400_state::odyssey2_mem);
m_maincpu->set_addrmap(AS_IO, &g7400_state::odyssey2_io);
m_maincpu->p1_out_cb().set(FUNC(g7400_state::p1_write));
@@ -731,12 +733,12 @@ void g7400_state::g7400(machine_config &config)
m_i8243->p6_out_cb().set(FUNC(g7400_state::i8243_port_w<2>));
m_i8243->p7_out_cb().set(FUNC(g7400_state::i8243_port_w<3>));
- EF9340_1(config, m_ef934x, XTAL(8'867'000)/5 * 2, "screen");
+ EF9340_1(config, m_ef934x, (8.867_MHz_XTAL * 2) / 5, "screen");
m_ef934x->set_offsets(15, 5);
m_ef934x->read_exram().set(FUNC(g7400_state::ef934x_extram_r));
m_ef934x->write_exram().set(FUNC(g7400_state::ef934x_extram_w));
- I8245(config, m_i8244, XTAL(8'867'000)/5 * 2);
+ I8245(config, m_i8244, (8.867_MHz_XTAL * 2) / 5);
m_i8244->set_screen("screen");
m_i8244->set_screen_size(360, 243);
m_i8244->irq_cb().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
@@ -750,21 +752,30 @@ void g7400_state::g7400(machine_config &config)
SOFTWARE_LIST(config, "ody2_list").set_compatible("odyssey2").set_filter("VPP");
}
+void g7400_state::jo7400(machine_config &config)
+{
+ g7400(config);
+
+ // different video clock
+ m_i8244->set_clock(3.5625_MHz_XTAL);
+ m_ef934x->set_clock(3.5625_MHz_XTAL);
+}
+
void g7400_state::odyssey3(machine_config &config)
{
g7400(config);
// NTSC video chip
- I8244(config.replace(), m_i8244, XTAL(7'159'090) / 2);
+ I8244(config.replace(), m_i8244, 7.15909_MHz_XTAL / 2);
m_i8244->set_screen("screen");
m_i8244->set_screen_size(360, 243);
m_i8244->irq_cb().set_inputline(m_maincpu, MCS48_INPUT_IRQ);
m_i8244->add_route(ALL_OUTPUTS, "mono", 0.40);
- m_ef934x->set_clock(XTAL(7'159'090) / 2);
+ m_ef934x->set_clock(7.15909_MHz_XTAL / 2);
m_ef934x->set_offsets(15, 15);
- m_maincpu->set_clock((XTAL(7'159'090) * 3) / 4);
+ m_maincpu->set_clock((7.15909_MHz_XTAL * 3) / 4);
// same color encoder as O2 (no RGB port)
PALETTE(config.replace(), "palette", FUNC(odyssey2_state::odyssey2_palette), 16);
@@ -824,5 +835,5 @@ COMP( 1978, videopac, odyssey2, 0, videopac, odyssey2, odyssey2_state, empty_i
COMP( 1979, videopacf, odyssey2, 0, videopacf, odyssey2, odyssey2_state, empty_init, "Philips", "Videopac C52 (France)", MACHINE_SUPPORTS_SAVE )
COMP( 1983, g7400, 0, 0, g7400, g7400, g7400_state, empty_init, "Philips", "Videopac+ G7400 (Europe)", MACHINE_SUPPORTS_SAVE )
-COMP( 1983, jopac, g7400, 0, g7400, g7400, g7400_state, empty_init, "Philips (Brandt license)", "Jopac JO7400 (France)", MACHINE_SUPPORTS_SAVE )
+COMP( 1983, jopac, g7400, 0, jo7400, g7400, g7400_state, empty_init, "Philips (Brandt license)", "Jopac JO7400 (France)", MACHINE_SUPPORTS_SAVE )
COMP( 1983, odyssey3, g7400, 0, odyssey3, g7400, g7400_state, empty_init, "Magnavox", "Odyssey 3 Command Center (US, prototype)", MACHINE_SUPPORTS_SAVE )