summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/freekick.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/freekick.cpp')
-rw-r--r--src/mame/drivers/freekick.cpp323
1 files changed, 118 insertions, 205 deletions
diff --git a/src/mame/drivers/freekick.cpp b/src/mame/drivers/freekick.cpp
index e39596ebe03..3d891327045 100644
--- a/src/mame/drivers/freekick.cpp
+++ b/src/mame/drivers/freekick.cpp
@@ -42,68 +42,6 @@ TODO:
To enter Test Mode - press Button1 durning RESET (code at $79d)
-****************************************************************************
-
- Perfect Billiard/Gigas Omega
- ---------------------- -----
-
- GND A1 B1 GND GND 1A 1B GND
- GND A2 B2 GND GND 2A 2B GND
- +5V A3 B3 +5V +5V 3A 3B GND
- +5V A4 B4 +5V +5V 4A 4B GND
- +12V A5 B5 +12V +12V 5A 5B GND
- SPEAKER(+) A6 B6 SPEAKER(-) SPEAKER(+) 6A 6B SPEAKER(-)
- COIN METER 1 A7 B7 COIN METER 2 COIN A 7A 7B COUNTER B
- COIN SW1 A8 B8 COIN SW2 COUNTER A 8A 8B COIN B
- 1P START A9 B9 2P START 1P START 9A 9B 2P START
- 1P UP A10 B10 2P UP COIN EMPTY SW 10A 10B
- 1P DOWN A11 B11 2P DOWN 11A 11B
- 1P LEFT A12 B12 2P LEFT 12A 12B
- 1P RIGHT A13 B13 2P RIGHT 13A 13B
- 1P SHOOT A14 B14 2P SHOOT 1P SHOOT 14A 14B 2P SHOOT
- A15 B15 15A 15B
- RED A16 B16 BLUE RED 16A 16B BLUE
- GREEN A17 B17 SYNC GREEN 17A 17B SYNC
- GND A18 B18 GND GND 18A 18B GND
- 1P L 19A 19B 2P L
- 1P R 20A 20B 2P R
- +5V 21A 21B GND
- AC IN 22A 22B AC OUT
-
- Counter Run/Free Kick
- ---------------------
-
- GND 1B 1A GND
- GND 2B 2A GND
- +5V 3B 3A +5V
- +5V 4B 4A +5V
- 5B 5A
- +12V 6B 6A +12V
- INPUT PREVENTION KEY 7B 7A INPUT PREVENTION KEY
- COUNTER B 8B 8A COUNTER A
- 9B 9A
- SPEAKER(-) 10B 10A SPEAKER(+)
- 11B 11A
- GREEN 12B 12A RED
- SYNC 13B 13A BLUE
- 14B 14A GND
- 15B 15A
- COIN B(SERVICE) 16B 16A COIN A
- 2P START 17B 17A 1P START
- 2P UP 18B 18A 1P UP
- 2P DOWN 19B 19A 1P DOWN
- 2P LEFT 20B 20A 1P LEFT
- 2P RIGHT 21B 21A 1P RIGHT
- 2P PUSH 1 22B 22A 1P PUSH 1
- 2P PUSH 2 23B 23A 1P PUSH 2
- 24B 24A
- 2PL (Sensor Dial) 25B 25A 1PL (Sensor Dial)
- 2PR (Sensor Dial) 26B 26A 1PR (Sensor Dial)
- GND 27B 27A GND
- GND 28B 28A GND
-
-****************************************************************************
-
*/
#include "emu.h"
@@ -268,10 +206,10 @@ void freekick_state::omega_map(address_map &map)
map(0xe800, 0xe800).portr("IN1");
map(0xf000, 0xf000).portr("DSW1").nopw(); //bankswitch ?
map(0xf800, 0xf800).portr("DSW2");
- map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write));
- map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write));
- map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write));
- map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write));
+ map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::command_w));
}
void freekick_state::pbillrd_map(address_map &map)
@@ -287,10 +225,10 @@ void freekick_state::pbillrd_map(address_map &map)
map(0xe800, 0xe800).portr("IN1");
map(0xf000, 0xf000).portr("DSW1").w(FUNC(freekick_state::pbillrd_bankswitch_w));
map(0xf800, 0xf800).portr("DSW2");
- map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write));
- map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write));
- map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write));
- map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write));
+ map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::command_w));
}
void freekick_state::decrypted_opcodes_map(address_map &map)
@@ -312,10 +250,10 @@ void freekick_state::freekick_map(address_map &map)
map(0xf802, 0xf802).nopr(); //MUST return bit 0 = 0, otherwise game resets
map(0xf803, 0xf803).r(FUNC(freekick_state::spinner_r));
map(0xf800, 0xf807).w(m_outlatch, FUNC(ls259_device::write_d0));
- map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write));
- map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write));
- map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write));
- map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write));
+ map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::command_w));
}
void freekick_state::gigas_map(address_map &map)
@@ -330,10 +268,10 @@ void freekick_state::gigas_map(address_map &map)
map(0xe800, 0xe800).portr("IN1");
map(0xf000, 0xf000).portr("DSW1").nopw(); //bankswitch ?
map(0xf800, 0xf800).portr("DSW2");
- map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::write));
- map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::write));
- map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::write));
- map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::write));
+ map(0xfc00, 0xfc00).w("sn1", FUNC(sn76489a_device::command_w));
+ map(0xfc01, 0xfc01).w("sn2", FUNC(sn76489a_device::command_w));
+ map(0xfc02, 0xfc02).w("sn3", FUNC(sn76489a_device::command_w));
+ map(0xfc03, 0xfc03).w("sn4", FUNC(sn76489a_device::command_w));
}
void freekick_state::omega_io_map(address_map &map)
@@ -792,13 +730,12 @@ MACHINE_RESET_MEMBER(freekick_state,oigas)
m_cnt = 0;
}
-void freekick_state::omega(machine_config &config)
-{
- MC8123(config, m_maincpu, XTAL(18'432'000)/6); // unknown divisor
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::omega_map);
- m_maincpu->set_addrmap(AS_IO, &freekick_state::omega_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &freekick_state::decrypted_opcodes_map);
- m_maincpu->set_periodic_int(FUNC(freekick_state::irq0_line_hold), attotime::from_hz(120)); // measured on PCB
+MACHINE_CONFIG_START(freekick_state::omega)
+ MCFG_DEVICE_ADD("maincpu", MC8123, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_DEVICE_PROGRAM_MAP(omega_map)
+ MCFG_DEVICE_IO_MAP(omega_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB
LS259(config, m_outlatch); // 3M
m_outlatch->q_out_cb<0>().set(FUNC(freekick_state::flipscreen_w));
@@ -808,33 +745,37 @@ void freekick_state::omega(machine_config &config)
m_outlatch->q_out_cb<5>().set_nop(); // ???
// video hardware
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(18'432'000)/3, 768/2, 0, 512/2, 263, 0+16, 224+16); // unknown divisor
- screen.set_screen_update(FUNC(freekick_state::screen_update_gigas));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(freekick_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(18'432'000)/3, 768/2, 0, 512/2, 263, 0+16, 224+16) // unknown divisor
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, freekick_state, vblank_irq))
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_freekick);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_freekick)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x200);
// sound hardware
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn1", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divisor
+ MCFG_DEVICE_ADD("sn1", SN76489A, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn2", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divisor
+ MCFG_DEVICE_ADD("sn2", SN76489A, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn3", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divisor
+ MCFG_DEVICE_ADD("sn3", SN76489A, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn4", XTAL(18'432'000)/6).add_route(ALL_OUTPUTS, "mono", 0.50); // unknown divisor
-}
+ MCFG_DEVICE_ADD("sn4", SN76489A, XTAL(18'432'000)/6) // unknown divisor
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
+
+MACHINE_CONFIG_START(freekick_state::base)
-void freekick_state::base(machine_config &config)
-{
/* basic machine hardware */
- Z80(config, m_maincpu, XTAL(12'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::pbillrd_map);
- m_maincpu->set_periodic_int(FUNC(freekick_state::irq0_line_hold), attotime::from_hz(120)); // measured on PCB
+ MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(pbillrd_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB
LS259(config, m_outlatch);
m_outlatch->q_out_cb<2>().set(FUNC(freekick_state::coin1_w));
@@ -842,26 +783,30 @@ void freekick_state::base(machine_config &config)
m_outlatch->q_out_cb<4>().set(FUNC(freekick_state::nmi_enable_w));
/* video hardware */
- screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
- screen.set_raw(XTAL(12'000'000)/2, 768/2, 0, 512/2, 263, 0+16, 224+16);
- screen.set_screen_update(FUNC(freekick_state::screen_update_pbillrd));
- screen.set_palette(m_palette);
- screen.screen_vblank().set(FUNC(freekick_state::vblank_irq));
+ MCFG_SCREEN_ADD("screen", RASTER)
+ MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2, 768/2, 0, 512/2, 263, 0+16, 224+16)
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_pbillrd)
+ MCFG_SCREEN_PALETTE(m_palette)
+ MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, freekick_state, vblank_irq))
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_freekick);
+ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_freekick)
PALETTE(config, m_palette, palette_device::RGB_444_PROMS, "proms", 0x200);
/* sound hardware */
SPEAKER(config, "mono").front_center();
- SN76489A(config, "sn1", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn1", SN76489A, XTAL(12'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn2", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn2", SN76489A, XTAL(12'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn3", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50);
+ MCFG_DEVICE_ADD("sn3", SN76489A, XTAL(12'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
- SN76489A(config, "sn4", XTAL(12'000'000)/4).add_route(ALL_OUTPUTS, "mono", 0.50);
-}
+ MCFG_DEVICE_ADD("sn4", SN76489A, XTAL(12'000'000)/4)
+ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
+MACHINE_CONFIG_END
void freekick_state::pbillrd(machine_config &config)
{
@@ -876,22 +821,21 @@ void freekick_state::pbillrd(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick)
}
-void freekick_state::pbillrdm(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::pbillrdm)
pbillrd(config);
- MC8123(config.replace(), m_maincpu, XTAL(12'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::pbillrd_map);
- m_maincpu->set_addrmap(AS_OPCODES, &freekick_state::decrypted_opcodes_map);
- m_maincpu->set_periodic_int(FUNC(freekick_state::irq0_line_hold), attotime::from_hz(120)); // measured on PCB
-}
+ MCFG_DEVICE_REPLACE("maincpu", MC8123, XTAL(12'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(pbillrd_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB
+MACHINE_CONFIG_END
-void freekick_state::freekick(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::freekick)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::freekick_map);
- m_maincpu->set_addrmap(AS_IO, &freekick_state::freekick_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(freekick_map)
+ MCFG_DEVICE_IO_MAP(freekick_io_map)
// 5C
m_outlatch->q_out_cb<0>().set(FUNC(freekick_state::flipscreen_w));
@@ -911,17 +855,18 @@ void freekick_state::freekick(machine_config &config)
ppi1.in_pc_callback().set_ioport("DSW3");
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(freekick_state::screen_update_freekick));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_freekick)
+MACHINE_CONFIG_END
-void freekick_state::gigas(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::gigas)
base(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::gigas_map);
- m_maincpu->set_addrmap(AS_IO, &freekick_state::gigas_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &freekick_state::decrypted_opcodes_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_PROGRAM_MAP(gigas_map)
+ MCFG_DEVICE_IO_MAP(gigas_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
m_outlatch->q_out_cb<0>().set(FUNC(freekick_state::flipscreen_w));
m_outlatch->q_out_cb<5>().set_nop(); // ???
@@ -930,19 +875,19 @@ void freekick_state::gigas(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(freekick_state::screen_update_gigas));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas)
+MACHINE_CONFIG_END
-void freekick_state::gigasm(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::gigasm)
base(config);
/* basic machine hardware */
- MC8123(config.replace(), m_maincpu, XTAL(12'000'000)/4);
- m_maincpu->set_addrmap(AS_PROGRAM, &freekick_state::gigas_map);
- m_maincpu->set_addrmap(AS_IO, &freekick_state::gigas_io_map);
- m_maincpu->set_addrmap(AS_OPCODES, &freekick_state::decrypted_opcodes_map);
- m_maincpu->set_periodic_int(FUNC(freekick_state::irq0_line_hold), attotime::from_hz(120)); // measured on PCB
+ MCFG_DEVICE_REPLACE("maincpu", MC8123, XTAL(12'000'000)/4)
+ MCFG_DEVICE_PROGRAM_MAP(gigas_map)
+ MCFG_DEVICE_IO_MAP(gigas_io_map)
+ MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map)
+ MCFG_DEVICE_PERIODIC_INT_DRIVER(freekick_state, irq0_line_hold, 120) // measured on PCB
m_outlatch->q_out_cb<0>().set(FUNC(freekick_state::flipscreen_w));
m_outlatch->q_out_cb<5>().set_nop(); // ???
@@ -951,19 +896,20 @@ void freekick_state::gigasm(machine_config &config)
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,freekick)
/* video hardware */
- subdevice<screen_device>("screen")->set_screen_update(FUNC(freekick_state::screen_update_gigas));
-}
+ MCFG_SCREEN_MODIFY("screen")
+ MCFG_SCREEN_UPDATE_DRIVER(freekick_state, screen_update_gigas)
+MACHINE_CONFIG_END
-void freekick_state::oigas(machine_config &config)
-{
+MACHINE_CONFIG_START(freekick_state::oigas)
gigas(config);
/* basic machine hardware */
- m_maincpu->set_addrmap(AS_IO, &freekick_state::oigas_io_map);
+ MCFG_DEVICE_MODIFY("maincpu")
+ MCFG_DEVICE_IO_MAP(oigas_io_map)
MCFG_MACHINE_START_OVERRIDE(freekick_state,oigas)
MCFG_MACHINE_RESET_OVERRIDE(freekick_state,oigas)
-}
+MACHINE_CONFIG_END
@@ -1342,20 +1288,20 @@ Note: MCU dump (in oigas?) has fixed bits, but read is good. If not correct, it'
*/
ROM_START( gigasb )
ROM_REGION( 2*0xc000, "maincpu", 0 )
- ROM_LOAD( "g-7.r8", 0x0c000, 0x4000, CRC(daf4e88d) SHA1(391dff914ce8e9b7975fc8827c066d7db16c4171) )
- ROM_CONTINUE( 0x00000, 0x4000 )
- ROM_LOAD( "g-8.t8", 0x10000, 0x8000, CRC(4ab4c1f1) SHA1(63d8f489c7a8271e99a66d97e6eb0eb252cb2b67) )
- ROM_CONTINUE( 0x04000, 0x8000 )
+ ROM_LOAD( "g-7", 0x0c000, 0x4000, CRC(daf4e88d) SHA1(391dff914ce8e9b7975fc8827c066d7db16c4171) )
+ ROM_CONTINUE( 0x00000, 0x4000 )
+ ROM_LOAD( "g-8", 0x10000, 0x8000, CRC(4ab4c1f1) SHA1(63d8f489c7a8271e99a66d97e6eb0eb252cb2b67) )
+ ROM_CONTINUE( 0x04000, 0x8000 )
ROM_REGION( 0xc000, "gfx1", 0 ) /* GFX */
- ROM_LOAD( "g-4.3l", 0x00000, 0x04000, CRC(8ed78981) SHA1(1f2c0584fcc6d04b042638c7b9a7e21fc560ca3d) )
- ROM_LOAD( "g-5.3k", 0x04000, 0x04000, CRC(0645ec2d) SHA1(ecf8b1ce98f845b5b32e7fc959cea7679a149d74) )
- ROM_LOAD( "g-6.3fh", 0x08000, 0x04000, CRC(99e9cb27) SHA1(d141d6caa077e3cd182eb64cf803613ac17e7d09) )
+ ROM_LOAD( "g-4", 0x00000, 0x04000, CRC(8ed78981) SHA1(1f2c0584fcc6d04b042638c7b9a7e21fc560ca3d) )
+ ROM_LOAD( "g-5", 0x04000, 0x04000, CRC(0645ec2d) SHA1(ecf8b1ce98f845b5b32e7fc959cea7679a149d74) )
+ ROM_LOAD( "g-6", 0x08000, 0x04000, CRC(99e9cb27) SHA1(d141d6caa077e3cd182eb64cf803613ac17e7d09) )
ROM_REGION( 0xc000, "gfx2", 0 ) /* GFX */
- ROM_LOAD( "g-1.3t", 0x00000, 0x04000, CRC(d78fae6e) SHA1(a7bf3b213f2a3a51b964959bd45003351670575a) )
- ROM_LOAD( "g-3.3p", 0x04000, 0x04000, CRC(37df4a4c) SHA1(ab996db636d89845474529ba2573307046fb96ee) )
- ROM_LOAD( "g-2.3r", 0x08000, 0x04000, CRC(3a46e354) SHA1(ebd6a5db4c9cdfc6fabe6b412a704aaf03c32d7c) )
+ ROM_LOAD( "g-1", 0x00000, 0x04000, CRC(d78fae6e) SHA1(a7bf3b213f2a3a51b964959bd45003351670575a) )
+ ROM_LOAD( "g-3", 0x04000, 0x04000, CRC(37df4a4c) SHA1(ab996db636d89845474529ba2573307046fb96ee) )
+ ROM_LOAD( "g-2", 0x08000, 0x04000, CRC(3a46e354) SHA1(ebd6a5db4c9cdfc6fabe6b412a704aaf03c32d7c) )
ROM_REGION( 0x0600, "proms", 0 )
ROM_LOAD( "1.pr", 0x0000, 0x0100, CRC(a784e71f) SHA1(1741ce98d719bad6cc5ea42337ef897f2435bbab) ) /* 24S10N, 82S129 or compatible? */
@@ -1457,63 +1403,31 @@ ROM_END
// Omega code/gfx looks to be based on gigas mk2, given the "MarkII" graphic in the gfx roms and gigas MarkII style continue numbers etc
// PCB is marked "K.K NS6102-A" and seems to be somewhere between gigas hardware and freekick hardware (3x dipswitch arrays)
// Supposedly an extremely limited release with ~10 PCBs produced.
-// A second PCB found with the CPU (under a metal cap) to be a NEC MC-8123 317-5002 - same as Gigas & Gigas Mark II, however
-// neither Omega set will work with the 317-5002 key in MAME, so maybe the CPU was factory reprogrammed?
-// A single byte difference at 0x1120 in 17.M10 (when decoded) looks like a legit bug fix as it changes a branch
-// which incorrectly jumps over a bit of initialization code
-
-ROM_START( omega ) // ROM at M10 labeled "17" to indicate a later Bug fix version
- ROM_REGION(0xc000, "maincpu", 0) // encrypted
- ROM_LOAD( "17.m10", 0x0000, 0x4000, CRC(c7de0993) SHA1(35ecd464935faba1dc7d0dbf48e1b17153626bfd) ) // 27128
- ROM_LOAD( "8.n10", 0x4000, 0x8000, CRC(9bb61910) SHA1(f8a1210dbf93e901e246e6adf4cd905acc3ef376) ) // 27256
-
- ROM_REGION(0x2000, "maincpu:key", 0) // MC8123 key
- ROM_LOAD( "omega.key", 0x0000, 0x2000, CRC(0a63943f) SHA1(9e581ea0c5bf6c0ed5d402d3bab053766b8e44c2) )
-
- ROM_REGION(0xc000, "gfx1", 0)
- ROM_LOAD( "4.f10", 0x00000, 0x04000, CRC(bf780a8e) SHA1(53bfabf74f1a7782c6c1803498a24da0bf8db995) ) // 27128
- ROM_LOAD( "5.h10", 0x04000, 0x04000, CRC(b491647f) SHA1(88017033a781ecc49a83241bc49e2077a480ac2b) ) // 27128
- ROM_LOAD( "6.j10", 0x08000, 0x04000, CRC(65beba5b) SHA1(e6d61dc52dcbb30570b48d7b1d7807dd0be41400) ) // 27128
-
- ROM_REGION(0xc000, "gfx2", 0)
- ROM_LOAD( "3.d10", 0x00000, 0x04000, CRC(c678b202) SHA1(ee93385e11158ccaf51a22d813bd7020c04cfdad) ) // 27128
- ROM_LOAD( "1.a10", 0x04000, 0x04000, CRC(e0aeada9) SHA1(ed00f6dca4f9701ff89390922d39341b179597c7) ) // 27128
- ROM_LOAD( "2.c10", 0x08000, 0x04000, CRC(dbc0a47f) SHA1(b617c5a10c655e7befaeaecd9ce736e972285e6b) ) // 27128
-
- ROM_REGION(0x600, "proms", 0)
- ROM_LOAD( "tbp24s10n.3f", 0x0000, 0x100, CRC(75ec7472) SHA1(868811e838c570a0f576a0ece249cab2d4274d65) ) /* Or compatible type prom like the 82S129 */
- ROM_LOAD( "tbp24s10n.4f", 0x0100, 0x100, CRC(5113a114) SHA1(3a5ab68c93d1f2c05ceb0311e12a54fd124d8435) )
- ROM_LOAD( "tbp24s10n.3g", 0x0200, 0x100, CRC(b6b5d4a0) SHA1(2b7ba59a6c185326e11ce8ccd96b3c8cfd652fdf) )
- ROM_LOAD( "tbp24s10n.4g", 0x0300, 0x100, CRC(931bc299) SHA1(f116f1d6a4324b86b0aae0a5a040236b3a4fd12d) )
- ROM_LOAD( "tbp24s10n.3e", 0x0400, 0x100, CRC(899e089d) SHA1(5a485d3ef7d2102451ff76452cac106061cc5cd6) )
- ROM_LOAD( "tbp24s10n.4e", 0x0500, 0x100, CRC(28321dd8) SHA1(4ba0f6c381ef929a476d4d7aa71b1397c48a644e) )
-ROM_END
-
-ROM_START( omegaa ) // ROM at M10 labeled "7" to indicate the original version skipping some initialization code
+ROM_START( omega )
ROM_REGION(0xc000, "maincpu", 0) // encrypted
- ROM_LOAD(" 7.m10", 0x0000, 0x4000, CRC(6e7d77e1) SHA1(7675cea41391595cd7a3e1893478185989f4c319) ) // 27128
- ROM_LOAD(" 8.n10", 0x4000, 0x8000, CRC(9bb61910) SHA1(f8a1210dbf93e901e246e6adf4cd905acc3ef376) ) // 27256
+ ROM_LOAD("17.m10", 0x0000, 0x4000, CRC(c7de0993) SHA1(35ecd464935faba1dc7d0dbf48e1b17153626bfd)) // 27128
+ ROM_LOAD("8.n10", 0x4000, 0x8000, CRC(9bb61910) SHA1(f8a1210dbf93e901e246e6adf4cd905acc3ef376)) // 27256
ROM_REGION(0x2000, "maincpu:key", 0) // MC8123 key
- ROM_LOAD( "omega.key", 0x0000, 0x2000, CRC(0a63943f) SHA1(9e581ea0c5bf6c0ed5d402d3bab053766b8e44c2) )
+ ROM_LOAD("omega.key", 0x0000, 0x2000, CRC(0a63943f) SHA1(9e581ea0c5bf6c0ed5d402d3bab053766b8e44c2))
ROM_REGION(0xc000, "gfx1", 0)
- ROM_LOAD( "4.f10", 0x00000, 0x04000, CRC(bf780a8e) SHA1(53bfabf74f1a7782c6c1803498a24da0bf8db995) ) // 27128
- ROM_LOAD( "5.h10", 0x04000, 0x04000, CRC(b491647f) SHA1(88017033a781ecc49a83241bc49e2077a480ac2b) ) // 27128
- ROM_LOAD( "6.j10", 0x08000, 0x04000, CRC(65beba5b) SHA1(e6d61dc52dcbb30570b48d7b1d7807dd0be41400) ) // 27128
+ ROM_LOAD("4.f10", 0x00000, 0x04000, CRC(bf780a8e) SHA1(53bfabf74f1a7782c6c1803498a24da0bf8db995)) // 27128
+ ROM_LOAD("5.h10", 0x04000, 0x04000, CRC(b491647f) SHA1(88017033a781ecc49a83241bc49e2077a480ac2b)) // 27128
+ ROM_LOAD("6.j10", 0x08000, 0x04000, CRC(65beba5b) SHA1(e6d61dc52dcbb30570b48d7b1d7807dd0be41400)) // 27128
ROM_REGION(0xc000, "gfx2", 0)
- ROM_LOAD( "3.d10", 0x00000, 0x04000, CRC(c678b202) SHA1(ee93385e11158ccaf51a22d813bd7020c04cfdad) ) // 27128
- ROM_LOAD( "1.a10", 0x04000, 0x04000, CRC(e0aeada9) SHA1(ed00f6dca4f9701ff89390922d39341b179597c7) ) // 27128
- ROM_LOAD( "2.c10", 0x08000, 0x04000, CRC(dbc0a47f) SHA1(b617c5a10c655e7befaeaecd9ce736e972285e6b) ) // 27128
+ ROM_LOAD("3.d10", 0x00000, 0x04000, CRC(c678b202) SHA1(ee93385e11158ccaf51a22d813bd7020c04cfdad)) // 27128
+ ROM_LOAD("1.a10", 0x04000, 0x04000, CRC(e0aeada9) SHA1(ed00f6dca4f9701ff89390922d39341b179597c7)) // 27128
+ ROM_LOAD("2.c10", 0x08000, 0x04000, CRC(dbc0a47f) SHA1(b617c5a10c655e7befaeaecd9ce736e972285e6b)) // 27128
ROM_REGION(0x600, "proms", 0)
- ROM_LOAD( "tbp24s10n.3f", 0x0000, 0x100, CRC(75ec7472) SHA1(868811e838c570a0f576a0ece249cab2d4274d65) ) /* Or compatible type prom like the 82S129 */
- ROM_LOAD( "tbp24s10n.4f", 0x0100, 0x100, CRC(5113a114) SHA1(3a5ab68c93d1f2c05ceb0311e12a54fd124d8435) )
- ROM_LOAD( "tbp24s10n.3g", 0x0200, 0x100, CRC(b6b5d4a0) SHA1(2b7ba59a6c185326e11ce8ccd96b3c8cfd652fdf) )
- ROM_LOAD( "tbp24s10n.4g", 0x0300, 0x100, CRC(931bc299) SHA1(f116f1d6a4324b86b0aae0a5a040236b3a4fd12d) )
- ROM_LOAD( "tbp24s10n.3e", 0x0400, 0x100, CRC(899e089d) SHA1(5a485d3ef7d2102451ff76452cac106061cc5cd6) )
- ROM_LOAD( "tbp24s10n.4e", 0x0500, 0x100, CRC(28321dd8) SHA1(4ba0f6c381ef929a476d4d7aa71b1397c48a644e) )
+ ROM_LOAD("tbp24s10n.3f", 0x0000, 0x100, CRC(75ec7472) SHA1(868811e838c570a0f576a0ece249cab2d4274d65) ) /* Or compatible type prom like the 82S129 */
+ ROM_LOAD("tbp24s10n.4f", 0x0100, 0x100, CRC(5113a114) SHA1(3a5ab68c93d1f2c05ceb0311e12a54fd124d8435) )
+ ROM_LOAD("tbp24s10n.3g", 0x0200, 0x100, CRC(b6b5d4a0) SHA1(2b7ba59a6c185326e11ce8ccd96b3c8cfd652fdf) )
+ ROM_LOAD("tbp24s10n.4g", 0x0300, 0x100, CRC(931bc299) SHA1(f116f1d6a4324b86b0aae0a5a040236b3a4fd12d) )
+ ROM_LOAD("tbp24s10n.3e", 0x0400, 0x100, CRC(899e089d) SHA1(5a485d3ef7d2102451ff76452cac106061cc5cd6) )
+ ROM_LOAD("tbp24s10n.4e", 0x0500, 0x100, CRC(28321dd8) SHA1(4ba0f6c381ef929a476d4d7aa71b1397c48a644e) )
ROM_END
@@ -1559,8 +1473,7 @@ GAME( 1986, gigasb, gigas, gigas, gigas, freekick_state, init_gigas
GAME( 1986, oigas, gigas , oigas, gigas, freekick_state, init_gigasb, ROT270, "bootleg", "Oigas (bootleg)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, gigasm2, 0, gigasm, gigasm2, freekick_state, init_gigas, ROT270, "Sega", "Gigas Mark II (MC-8123, 317-5002)", MACHINE_SUPPORTS_SAVE )
GAME( 1986, gigasm2b, gigasm2, gigas, gigasm2, freekick_state, init_gigasb, ROT270, "bootleg", "Gigas Mark II (bootleg)", MACHINE_SUPPORTS_SAVE )
-GAME( 1986, omega, 0, omega, omega, freekick_state, init_gigas, ROT270, "Nihon System", "Omega", MACHINE_SUPPORTS_SAVE ) // Bug fix version
-GAME( 1986, omegaa, omega, omega, omega, freekick_state, init_gigas, ROT270, "Nihon System", "Omega (earlier)", MACHINE_SUPPORTS_SAVE )
+GAME( 1986, omega, 0, omega, omega, freekick_state, init_gigas, ROT270, "Nihon System", "Omega", MACHINE_SUPPORTS_SAVE )
GAME( 1987, pbillrd, 0, pbillrd, pbillrd, freekick_state, empty_init, ROT0, "Nihon System", "Perfect Billiard", MACHINE_SUPPORTS_SAVE )
GAME( 1987, pbillrds, pbillrd, pbillrdm, pbillrd, freekick_state, init_pbillrds, ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-0030)", MACHINE_SUPPORTS_SAVE )
GAME( 1987, pbillrdsa, pbillrd, pbillrdm, pbillrd, freekick_state, init_pbillrds, ROT0, "Nihon System", "Perfect Billiard (MC-8123, 317-5008)", MACHINE_SUPPORTS_SAVE ) // sticker on CPU module different (wrong?) functionality the same