diff options
Diffstat (limited to 'src/mame/drivers/freekick.cpp')
-rw-r--r-- | src/mame/drivers/freekick.cpp | 323 |
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 |