diff options
author | 2021-10-26 18:11:54 +1100 | |
---|---|---|
committer | 2021-10-26 18:11:54 +1100 | |
commit | 94b51d9776fe0f3bdd0878b710d4b6bccf17cd47 (patch) | |
tree | 4d42f07b61bc66486974429071dc73c1346b2dc5 /src | |
parent | 71537cb4dd2edb4e460b8e1517948a72b6b6d84b (diff) | |
parent | 60706c1e933d8533232157241a576f96a229380e (diff) |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/cpu/powerpc/ppc_dasm.cpp | 2 | ||||
-rw-r--r-- | src/devices/cpu/powerpc/ppc_dasm.h | 11 | ||||
-rw-r--r-- | src/mame/drivers/djmain.cpp | 24 | ||||
-rw-r--r-- | src/mame/drivers/facit4440.cpp | 101 | ||||
-rw-r--r-- | src/mame/drivers/macp.cpp | 386 | ||||
-rw-r--r-- | src/mame/drivers/pce.cpp | 12 | ||||
-rw-r--r-- | src/mame/layout/macp.lay | 134 | ||||
-rw-r--r-- | src/mame/mame.lst | 3 |
8 files changed, 584 insertions, 89 deletions
diff --git a/src/devices/cpu/powerpc/ppc_dasm.cpp b/src/devices/cpu/powerpc/ppc_dasm.cpp index bdebe0b428b..d43f00cbb21 100644 --- a/src/devices/cpu/powerpc/ppc_dasm.cpp +++ b/src/devices/cpu/powerpc/ppc_dasm.cpp @@ -28,7 +28,7 @@ * and print instructions. */ -constexpr int I_COMMON = I_POWER | I_POWERPC; +constexpr int I_COMMON = powerpc_disassembler::I_POWER | powerpc_disassembler::I_POWERPC; const powerpc_disassembler::IDESCR powerpc_disassembler::itab[] = { diff --git a/src/devices/cpu/powerpc/ppc_dasm.h b/src/devices/cpu/powerpc/ppc_dasm.h index cdf9c7e6720..c837089319f 100644 --- a/src/devices/cpu/powerpc/ppc_dasm.h +++ b/src/devices/cpu/powerpc/ppc_dasm.h @@ -20,15 +20,16 @@ #pragma once -enum implementation : int -{ - I_POWER = 1 << 0, - I_POWERPC = 1 << 1, -}; class powerpc_disassembler : public util::disasm_interface { public: + enum implementation : int + { + I_POWER = 1 << 0, + I_POWERPC = 1 << 1, + }; + powerpc_disassembler(bool powerpc = true) : m_implementation(powerpc ? I_POWERPC : I_POWER) { diff --git a/src/mame/drivers/djmain.cpp b/src/mame/drivers/djmain.cpp index 6a253a3de70..4613b9f2c18 100644 --- a/src/mame/drivers/djmain.cpp +++ b/src/mame/drivers/djmain.cpp @@ -1832,6 +1832,27 @@ ROM_END ROM_START( popn1 ) ROM_REGION( 0x100000, "maincpu", 0 ) /* MC68EC020FG25 MPU */ + ROM_LOAD16_BYTE( "803t_a01.6a", 0x000000, 0x80000, CRC(e85032bc) SHA1(625ac755a77a861ecede766d77fbecb29683844b) ) + ROM_LOAD16_BYTE( "803j_a02.8a", 0x000001, 0x80000, CRC(17e90be0) SHA1(8857d46d63b7cd97aed5c7a5cf804fe5311255ac) ) + + ROM_REGION( 0x200000, "gfx1", 0) /* SPRITE */ + ROM_LOAD16_BYTE( "803t_a03.19a", 0x000000, 0x80000, CRC(a0970b32) SHA1(4bf06f977f67f13d0994e80021faaefed015ca1c) ) + ROM_LOAD16_BYTE( "803t_a04.20a", 0x000001, 0x80000, CRC(a158b950) SHA1(535d994a68fe56c8a93d460e5272b1a0b081383d) ) + ROM_LOAD16_BYTE( "803t_a05.22a", 0x100000, 0x80000, CRC(8a23c18d) SHA1(714b68a3112dff52feba6a50ae15c02d041b1def) ) + ROM_LOAD16_BYTE( "803t_a06.24a", 0x100001, 0x80000, CRC(bd6450ff) SHA1(bb89c65d1b0e38c0a26ec4cccd35103583efff45) ) + + ROM_REGION( 0x200000, "k056832", 0 ) /* TILEMAP */ + ROM_LOAD16_BYTE( "803t_a07.22d", 0x000000, 0x80000, CRC(4c97dbf0) SHA1(c33f84e2c1a59294413163a5546cb2fe092e42d1) ) + ROM_LOAD16_BYTE( "803t_a08.23d", 0x000001, 0x80000, CRC(cc6b21d3) SHA1(eac3b92bc392265df08b0311320c4e23f257c58b) ) + ROM_LOAD16_BYTE( "803t_a09.25d", 0x100000, 0x80000, CRC(45ab3978) SHA1(c34b800dfb14affcb705dffa566d046a6d1e7c7c) ) + ROM_LOAD16_BYTE( "803t_a10.27d", 0x100001, 0x80000, CRC(a487ad02) SHA1(ca9edb611ddf2f1e7d42b049ce867b173fce3634) ) + + DISK_REGION( "ata:0:hdd:image" ) /* IDE HARD DRIVE */ + DISK_IMAGE( "803_ta_hdd", 0, SHA1(be833a3c0f1e5953271fa7d8d6e81211fbe9710f) ) /* GQ803AA pop'n music ver1.01 1998/10/14 (C) KONAMI */ +ROM_END + +ROM_START( popn1a ) + ROM_REGION( 0x100000, "maincpu", 0 ) /* MC68EC020FG25 MPU */ ROM_LOAD16_BYTE( "803aaa01.6a", 0x000000, 0x80000, CRC(70466eff) SHA1(d59f97a6882ad65afa3b5de491d44bb4d839d286) ) ROM_LOAD16_BYTE( "803aaa02.8a", 0x000001, 0x80000, CRC(c102c909) SHA1(630a74ccec78d36adaba38a85ed6a0e45dca96a4) ) @@ -2237,7 +2258,8 @@ GAME( 2001, bm6thmix, 0, djmainj, bm6thmix, djmain_state, init_bm6thmix, GAME( 2001, bm7thmix, 0, djmainj, bm6thmix, djmain_state, init_bm7thmix, ROT0, "Konami", "beatmania 7th MIX (ver JA-B)", 0 ) GAME( 2002, bmfinal, 0, djmainj, bm6thmix, djmain_state, init_bmfinal, ROT0, "Konami", "beatmania THE FINAL (ver JA-A)", 0 ) -GAME( 1998, popn1, 0, djmaina, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver AA-A, HDD 1.00)", 0 ) +GAME( 1998, popn1, 0, djmaina, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver TA-A, HDD 1.01)", 0 ) +GAME( 1998, popn1a, popn1, djmaina, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver AA-A, HDD 1.00)", 0 ) GAME( 1998, popn1k, popn1, djmaina, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver KA-A, HDD 1.01)", 0 ) // KA-A based on filenames provided, no warning message GAME( 1998, popn1j, popn1, djmainj, popn1, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 1 (ver JA-A, HDD 1.00)", 0 ) GAME( 1999, popn2, 0, djmainj, popn2, djmain_state, init_beatmania, ROT0, "Konami", "Pop'n Music 2 (ver JA-A)", 0 ) diff --git a/src/mame/drivers/facit4440.cpp b/src/mame/drivers/facit4440.cpp index 84c6d8cc8db..d203d085319 100644 --- a/src/mame/drivers/facit4440.cpp +++ b/src/mame/drivers/facit4440.cpp @@ -16,25 +16,31 @@ Several non-ANSI emulation modes are also available. An OEM customized version was sold by Norsk Data AS as the ND 319 Twist. + Micro-Term apparently distributed this terminal in the US. The timing of the display circuit seems a bit uncertain. Promotional information claims that it has a 40 MHz bandwidth, but this may be only a nominal maximum rating since the only high-frequency oscillator seen - on the PCB is 32 MHz. It is unclear how the CRTC parameters and this - value can produce the documented 65 Hz refresh rate. The actual circuit - also generates alarming levels of electromagnetic radiation. + on the PCB is 32 MHz, and schematics label this as 30 MHz. It is unclear + how the CRTC parameters and this value can produce the documented 65 Hz + refresh rate. The actual circuit also generates alarming levels of + electromagnetic radiation. ****************************************************************************/ #include "emu.h" -//#include "bus/rs232/rs232.h" +#include "bus/rs232/rs232.h" #include "cpu/z80/z80.h" +#include "cpu/m6800/m6801.h" #include "machine/clock.h" #include "machine/er1400.h" +#include "machine/ripple_counter.h" #include "machine/z80ctc.h" #include "machine/z80sio.h" +#include "sound/spkrdev.h" #include "video/mc6845.h" #include "screen.h" +#include "speaker.h" class facit4440_state : public driver_device { @@ -42,8 +48,11 @@ public: facit4440_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") - , m_earom(*this, "earom%u", 0U) + , m_earom(*this, "earom%u", 1U) , m_crtc(*this, "crtc") + , m_bellctr(*this, "bellctr") + , m_rs232(*this, "rs232") + , m_printer(*this, "printer") , m_test(*this, "TEST") , m_orientation(*this, "ORIENTATION") , m_chargen(*this, "chargen") @@ -74,6 +83,9 @@ private: required_device<z80_device> m_maincpu; required_device_array<er1400_device, 2> m_earom; required_device<mc6845_device> m_crtc; + required_device<ripple_counter_device> m_bellctr; + required_device<rs232_port_device> m_rs232; + required_device<rs232_port_device> m_printer; required_ioport m_test; required_ioport m_orientation; @@ -97,8 +109,8 @@ void facit4440_state::earom_latch_w(u8 data) m_earom[0]->clock_w(BIT(data, 5)); m_earom[1]->clock_w(BIT(data, 5)); - m_earom[0]->data_w(BIT(data, 1)); - m_earom[1]->data_w(BIT(data, 0)); + m_earom[0]->data_w(BIT(data, 0)); + m_earom[1]->data_w(BIT(data, 1)); for (auto &earom : m_earom) { @@ -112,7 +124,8 @@ void facit4440_state::control_2000_w(u8 data) { m_control_latch[0] = data; - if (!BIT(m_control_latch[0], 5)) + m_bellctr->reset_w(BIT(data, 5)); + if (!BIT(m_control_latch[0], 6)) m_maincpu->set_input_line(INPUT_LINE_NMI, CLEAR_LINE); } @@ -130,9 +143,10 @@ u8 facit4440_state::misc_status_r() { u8 status = m_test->read() << 6; - status |= m_earom[0]->data_r() << 4; - status |= m_earom[1]->data_r() << 3; + status |= m_earom[1]->data_r() << 4; + status |= m_earom[0]->data_r() << 3; + status |= m_crtc->hsync_r() << 2; status |= m_crtc->vsync_r() << 1; status |= m_orientation->read(); @@ -147,6 +161,7 @@ WRITE_LINE_MEMBER(facit4440_state::vsync_w) MC6845_UPDATE_ROW(facit4440_state::update_row) { + // FIXME: MA does not determine video addressing at all here offs_t base = ma / 5 * 6; u32 *px = &bitmap.pix(y); @@ -191,6 +206,8 @@ void facit4440_state::io_map(address_map &map) void facit4440_state::machine_start() { + subdevice<z80dart_device>("kbdart")->rxb_w(0); + m_control_latch[0] = m_control_latch[1] = m_control_latch[2] = 0; save_item(NAME(m_control_latch)); @@ -198,10 +215,10 @@ void facit4440_state::machine_start() static INPUT_PORTS_START(facit4440) PORT_START("TEST") - PORT_CONFNAME(3, 0, "Test Mode") - PORT_CONFSETTING(0, DEF_STR(Off)) - PORT_CONFSETTING(3, DEF_STR(On)) - PORT_CONFSETTING(2, "Burn In") + PORT_DIPNAME(3, 0, "Test Mode") PORT_DIPLOCATION("W7/W4:1,2") + PORT_DIPSETTING(0, DEF_STR(Off)) + PORT_DIPSETTING(3, DEF_STR(On)) + PORT_DIPSETTING(2, "Burn In") PORT_START("ORIENTATION") PORT_CONFNAME(1, 1, "Orientation") @@ -219,16 +236,15 @@ static const z80_daisy_config daisy_chain[] = void facit4440_state::facit4440(machine_config &config) { - constexpr u32 CH_WIDTH = 8; - constexpr u32 FAKE_DOT_CLOCK = 65 * 103 * 621 * CH_WIDTH; + constexpr XTAL DOT_CLOCK = 32_MHz_XTAL; // XTAL is 30 MHz according to schematics - Z80(config, m_maincpu, 32_MHz_XTAL / 8); // clock unknown + Z80(config, m_maincpu, 32_MHz_XTAL / 8); // divider confirmed from schematics m_maincpu->set_addrmap(AS_PROGRAM, &facit4440_state::mem_map); m_maincpu->set_addrmap(AS_IO, &facit4440_state::io_map); m_maincpu->set_daisy_config(daisy_chain); - ER1400(config, m_earom[0]); // M5G1400P - ER1400(config, m_earom[1]); // M5G1400P + ER1400(config, m_earom[0]); // M5G1400P @ D65 + ER1400(config, m_earom[1]); // M5G1400P @ D64 z80ctc_device &ctc(Z80CTC(config, "ctc", 32_MHz_XTAL / 8)); ctc.intr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); @@ -240,33 +256,51 @@ void facit4440_state::facit4440(machine_config &config) ctc.zc_callback<2>().set("iodart", FUNC(z80dart_device::txcb_w)); ctc.zc_callback<2>().append("iodart", FUNC(z80dart_device::rxcb_w)); - clock_device &keybclk(CLOCK(config, "keybclk", 2.4576_MHz_XTAL / 32)); // unclear + clock_device &keybclk(CLOCK(config, "kbdclk", 2.4576_MHz_XTAL / 32)); // divider confirmed from schematics keybclk.signal_handler().set("kbdart", FUNC(z80dart_device::txca_w)); keybclk.signal_handler().append("kbdart", FUNC(z80dart_device::rxca_w)); - z80dart_device &iodart(Z80DART(config, "iodart", 32_MHz_XTAL / 8)); // Z80ADART + z80dart_device &iodart(Z80DART(config, "iodart", 32_MHz_XTAL / 8)); // Z80ADART @ D83 iodart.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); - iodart.out_txda_callback().set("iodart", FUNC(z80dart_device::rxa_w)); // temporary loopback for testing - iodart.out_rtsa_callback().set("iodart", FUNC(z80dart_device::ctsa_w)); // temporary loopback for testing - iodart.out_dtra_callback().set("iodart", FUNC(z80dart_device::dcdb_w)); // temporary loopback for testing - iodart.out_txdb_callback().set("iodart", FUNC(z80dart_device::rxb_w)); // temporary loopback for testing + iodart.out_txda_callback().set(m_rs232, FUNC(rs232_port_device::write_txd)); + iodart.out_rtsa_callback().set(m_rs232, FUNC(rs232_port_device::write_rts)); + iodart.out_dtra_callback().set(m_printer, FUNC(rs232_port_device::write_dtr)); // not correct according to schematics, but needed to pass burn-in test + iodart.out_txdb_callback().set(m_printer, FUNC(rs232_port_device::write_txd)); - z80dart_device &kbdart(Z80DART(config, "kbdart", 32_MHz_XTAL / 8)); // Z80ADART + z80dart_device &kbdart(Z80DART(config, "kbdart", 32_MHz_XTAL / 8)); // Z80ADART @ D82 kbdart.out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); kbdart.out_txda_callback().set("kbdart", FUNC(z80dart_device::rxa_w)); // FIXME: serial keyboard needed here - // Channel B is not used + // Channel B is not used (though schematics show 307.2 kHz provided for RxTxCB) + + M6801(config, "kbdmcu", 2.4576_MHz_XTAL).set_disable(); // exact type unknown screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_raw(FAKE_DOT_CLOCK, 103 * CH_WIDTH, 0, 80 * CH_WIDTH, 621, 0, 500); - //screen.set_raw(FAKE_DOT_CLOCK, 103 * CH_WIDTH, 0, 80 * CH_WIDTH, 621, 0, 560); + screen.set_raw(DOT_CLOCK, 103 * 8, 0, 80 * 8, 621, 0, 500); + //screen.set_raw(DOT_CLOCK, 103 * 8, 0, 80 * 8, 621, 0, 560); screen.set_screen_update("crtc", FUNC(mc6845_device::screen_update)); - MC6845(config, m_crtc, FAKE_DOT_CLOCK / CH_WIDTH); // HD46505SP-2 - m_crtc->set_char_width(CH_WIDTH); + MC6845(config, m_crtc, DOT_CLOCK / 8); // HD46505SP-2 + m_crtc->set_char_width(8); m_crtc->set_show_border_area(false); m_crtc->set_update_row_callback(FUNC(facit4440_state::update_row)); m_crtc->out_hsync_callback().set("ctc", FUNC(z80ctc_device::trg3)); + m_crtc->out_hsync_callback().append(m_bellctr, FUNC(ripple_counter_device::clock_w)); m_crtc->out_vsync_callback().set(FUNC(facit4440_state::vsync_w)); + + RIPPLE_COUNTER(config, m_bellctr).set_stages(12); // HEF4040BP + m_bellctr->count_out_cb().set("speaker", FUNC(speaker_sound_device::level_w)).bit(5); + + SPEAKER(config, "mono").front_center(); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.5); + + RS232_PORT(config, m_rs232, default_rs232_devices, "loopback"); // temporary loopback for testing + m_rs232->rxd_handler().set("iodart", FUNC(z80dart_device::rxa_w)); + m_rs232->cts_handler().set("iodart", FUNC(z80dart_device::ctsa_w)); + m_rs232->dcd_handler().set("iodart", FUNC(z80dart_device::dcda_w)); + + RS232_PORT(config, m_printer, default_rs232_devices, "loopback"); // temporary loopback for testing + m_printer->rxd_handler().set("iodart", FUNC(z80dart_device::rxb_w)); + m_printer->dcd_handler().set("iodart", FUNC(z80dart_device::dcdb_w)); } @@ -275,6 +309,9 @@ ROM_START(facit4440) ROM_LOAD("rom7.bin", 0x0000, 0x4000, CRC(a8da2b11) SHA1(4436ef14c29ae299f7bc338748158771c02d02a9)) ROM_LOAD("rom6.bin", 0x4000, 0x4000, CRC(790b7642) SHA1(688a80cbf011e5c14f501e11fe0e3bf64a85bbd7)) + ROM_REGION(0x1000, "kbdmcu", 0) + ROM_LOAD("6801.bin", 0x0000, 0x1000, NO_DUMP) + ROM_REGION(0x2000, "testprg", 0) ROM_LOAD("rom5.bin", 0x0000, 0x2000, CRC(715d02b6) SHA1(e304718dbdc8867ac01909fd2d027e5014a8c4f9)) @@ -287,4 +324,4 @@ ROM_START(facit4440) ROM_LOAD("rom2.bin", 0x0000, 0x0800, CRC(9e1a190c) SHA1(fb08ee806f1056bcdfb5b08ea85995e1d3d01298)) ROM_END -COMP(1984, facit4440, 0, 0, facit4440, facit4440, facit4440_state, empty_init, "Facit", "4440 Twist (30M-F1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND) +COMP(1984, facit4440, 0, 0, facit4440, facit4440, facit4440_state, empty_init, "Facit", "4440 Twist (30M-F1)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS) diff --git a/src/mame/drivers/macp.cpp b/src/mame/drivers/macp.cpp index 25f3546a8a4..17c35b56454 100644 --- a/src/mame/drivers/macp.cpp +++ b/src/mame/drivers/macp.cpp @@ -1,84 +1,386 @@ // license:BSD-3-Clause -// copyright-holders:Ivan Vangelista +// copyright-holders:Robbbert // PINBALL -// Skeleton driver for MAC S.A. and CICPlay pinballs. ROM definitions taken from PinMAME. +/*************************************************************************************************************** +Skeleton driver for MAC S.A. and CICPlay pinballs. ROM definitions taken from PinMAME. + +There's a number of undumped PAL-type devices, so had to guess a few things. +Unknown chips: SIVP47, MAC P01, MAC D01, MAC A01 (=MAC A.A4, MAC A.A5). +Schematic has errors and omissions (no input or output matrix, no wiring between boards). +Although the coin slots are not working, you can add credits by changing 0xC011 in the memory view. + +Status: +- Some games are playable +-- macgalxy (Outhole is Z and X) +-- macjungl (Outhole is E) +-- glxplay2 (Outhole unknown) +- Other machines can generally accept credits and start, but then cannot score. +- Display has intolerable flicker. + +ToDo +- MSM sound +- Inputs not responding +- DIPs to be checked +- Fix flicker on displays +- CIC games need a different layout + +***************************************************************************************************************/ #include "emu.h" #include "machine/genpin.h" #include "cpu/z80/z80.h" +#include "machine/clock.h" #include "machine/i8279.h" #include "sound/ay8910.h" #include "sound/msm5205.h" +#include "speaker.h" +#include "macp.lh" + +namespace { class macp_state : public genpin_class { public: macp_state(const machine_config &mconfig, device_type type, const char *tag) : genpin_class(mconfig, type, tag) - , m_maincpu(*this, "maincpu") { } - - void macp(machine_config &config); - void macpmsm(machine_config &config); - void macp0(machine_config &config); - void macp0_map(address_map &map); - void macp_io(address_map &map); - void macp_map(address_map &map); + , m_maincpu(*this, "maincpu") + , m_ay8910(*this, "ay%u", 0U) + , m_io_keyboard(*this, "X%u", 0) + , m_digits(*this, "digit%u", 0U) + , m_io_outputs(*this, "out%u", 0U) + { } + + void mac16k(machine_config &config); + void mac32k(machine_config &config); + void mem16k_map(address_map &map); + void io16k_map(address_map &map); + void mem32k_map(address_map &map); + void io32k_map(address_map &map); + private: - required_device<cpu_device> m_maincpu; + DECLARE_WRITE_LINE_MEMBER(clock_tick); + DECLARE_WRITE_LINE_MEMBER(irq_w); + void scanlines_w(u8); + void digit_w(u8); + void ay0_a_w(u8); + void ay0_b_w(u8); + void ay1_a_w(u8); + void ay1_b_w(u8); + u8 ay1_b_r(); + u8 kbd_r(); + u8 m_t_c = 0; + u8 m_digit = 0; + u8 m_ay1_b = 0; + u8 m_ay1_a = 0; + u8 m_relay_ctrl = 0; + virtual void machine_start() override; + virtual void machine_reset() override; + required_device<z80_device> m_maincpu; + required_device_array<ay8910_device, 2> m_ay8910; + required_ioport_array<8> m_io_keyboard; + output_finder<40> m_digits; + output_finder<85> m_io_outputs; // 12+4+1 solenoids + 48+16 lamps }; -void macp_state::macp_map(address_map &map) +void macp_state::mem16k_map(address_map &map) +{ + map.unmap_value_high(); + map.global_mask(0x7fff); // A15 only goes to the expansion socket and a PAL + map(0x0000, 0x3fff).rom(); + map(0x4000, 0x47ff).ram().share("nvram"); // 6116 + map(0x6000, 0x6001).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); +} + +void macp_state::mem32k_map(address_map &map) { map.unmap_value_high(); map(0x0000, 0x7fff).rom(); - map(0xc000, 0xc7ff).ram(); + map(0xc000, 0xdfff).ram().share("nvram"); // DS1225 (8k RAM with inbuilt battery), only first 2k used. } -void macp_state::macp0_map(address_map &map) +void macp_state::io16k_map(address_map &map) { map.unmap_value_high(); - map(0x0000, 0x3fff).rom(); - map(0x4000, 0x47ff).ram(); + map.global_mask(0xff); + map(0x08, 0x08).w(m_ay8910[0], FUNC(ay8910_device::address_w)); + map(0x0a, 0x0a).w(m_ay8910[0], FUNC(ay8910_device::data_w)); + map(0x18, 0x18).w(m_ay8910[1], FUNC(ay8910_device::address_w)); + map(0x19, 0x19).r(m_ay8910[1], FUNC(ay8910_device::data_r)); + map(0x1a, 0x1a).w(m_ay8910[1], FUNC(ay8910_device::data_w)); } -void macp_state::macp_io(address_map &map) +void macp_state::io32k_map(address_map &map) { map.unmap_value_high(); map.global_mask(0xff); + map(0x08, 0x08).w(m_ay8910[0], FUNC(ay8910_device::address_w)); + map(0x0a, 0x0a).w(m_ay8910[0], FUNC(ay8910_device::data_w)); + map(0x28, 0x28).w(m_ay8910[1], FUNC(ay8910_device::address_w)); + map(0x29, 0x29).r(m_ay8910[1], FUNC(ay8910_device::data_r)); + map(0x2a, 0x2a).w(m_ay8910[1], FUNC(ay8910_device::data_w)); + map(0x40, 0x41).rw("i8279", FUNC(i8279_device::read), FUNC(i8279_device::write)); } static INPUT_PORTS_START( macp ) + PORT_START("X0") + PORT_DIPNAME( 0x01, 0x01, "DIP A1") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x01, DEF_STR(Off)) + PORT_DIPNAME( 0x02, 0x02, "DIP A2") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x02, DEF_STR(Off)) + PORT_DIPNAME( 0x04, 0x04, "DIP A3") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x04, DEF_STR(Off)) + PORT_DIPNAME( 0x08, 0x08, "DIP A4") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x08, DEF_STR(Off)) + PORT_DIPNAME( 0x10, 0x10, "DIP A5") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x10, DEF_STR(Off)) + PORT_DIPNAME( 0x20, 0x20, "DIP A6") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x20, DEF_STR(Off)) + PORT_DIPNAME( 0x40, 0x40, "DIP A7") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x40, DEF_STR(Off)) + + PORT_START("X1") + PORT_DIPNAME( 0x01, 0x01, "DIP B1") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x01, DEF_STR(Off)) + PORT_DIPNAME( 0x02, 0x02, "DIP B2") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x02, DEF_STR(Off)) + PORT_DIPNAME( 0x04, 0x04, "DIP B3") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x04, DEF_STR(Off)) + PORT_DIPNAME( 0x08, 0x08, "DIP B4") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x08, DEF_STR(Off)) + PORT_DIPNAME( 0x10, 0x10, "DIP B5") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x10, DEF_STR(Off)) + PORT_DIPNAME( 0x20, 0x20, "DIP B6") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x20, DEF_STR(Off)) + PORT_DIPNAME( 0x40, 0x40, "DIP B7") + PORT_DIPSETTING( 0x00, DEF_STR(On)) + PORT_DIPSETTING( 0x40, DEF_STR(Off)) + + PORT_START("X2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9) PORT_NAME("Tilt") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0) PORT_NAME("Slam Tilt") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN3 ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Reset RAM") + + PORT_START("X3") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_A) PORT_NAME("INP30") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_B) PORT_NAME("INP31") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_C) PORT_NAME("INP32") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_D) PORT_NAME("INP33") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_E) PORT_NAME("INP34") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_F) PORT_NAME("INP35") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_G) PORT_NAME("INP36") + + PORT_START("X4") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_H) PORT_NAME("INP40") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_I) PORT_NAME("INP41") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_J) PORT_NAME("INP42") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_K) PORT_NAME("INP43") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_L) PORT_NAME("INP44") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_M) PORT_NAME("INP45") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_N) PORT_NAME("INP46") + + PORT_START("X5") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_O) PORT_NAME("INP50") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_P) PORT_NAME("INP51") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Q) PORT_NAME("INP52") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_R) PORT_NAME("INP53") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_S) PORT_NAME("INP54") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_T) PORT_NAME("INP55") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_U) PORT_NAME("INP56") + + PORT_START("X6") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_V) PORT_NAME("INP60") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_W) PORT_NAME("INP61") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_X) PORT_NAME("INP62") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Y) PORT_NAME("INP63") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_Z) PORT_NAME("INP64") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COMMA) PORT_NAME("INP65") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_STOP) PORT_NAME("INP66") + + PORT_START("X7") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_SLASH) PORT_NAME("INP70") + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_COLON) PORT_NAME("INP71") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_QUOTE) PORT_NAME("INP72") + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ENTER) PORT_NAME("INP73") + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_OPENBRACE) PORT_NAME("INP74") + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_CLOSEBRACE) PORT_NAME("INP75") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_BACKSLASH) PORT_NAME("INP76") INPUT_PORTS_END static INPUT_PORTS_START( cicplay ) + PORT_INCLUDE( macp ) INPUT_PORTS_END -void macp_state::macp(machine_config &config) +void macp_state::scanlines_w(u8 data) +{ + m_digit = data & 15; +} + +void macp_state::digit_w(u8 data) +{ + static const uint8_t patterns[16] = { 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67, 0, 0, 0, 0, 0, 0 }; // guess, because custom PAL + m_digits[m_digit] = patterns[BIT(data, 0, 4)]; + m_digits[m_digit+20] = patterns[BIT(data, 4, 4)]; + // This isn't right obviously, but if score > 999999 and bit 7 of PAL, then illuminate some extra lamps on the backboard + u8 i,j = BIT(data, 0, 4); + if (j > 9) + for (i = 0; i < 8; i++) + m_io_outputs[69+i] = BIT(data, i); + j = BIT(data, 4, 4); + if (j > 9) + for (i = 0; i < 8; i++) + m_io_outputs[77+i] = BIT(data, i); +} + +u8 macp_state::kbd_r() +{ + return (m_io_keyboard[m_digit & 7]->read() & 0x7f )| (BIT(m_ay1_b, 4) ? 0x80 : 0); +} + +void macp_state::ay0_a_w(u8 data) +{ + // d4-7 solenoids + for (u8 i = 4; i < 8; i++) + m_io_outputs[4+i] = BIT(data, i); + + // d0-3 lamps + data &= 15; + if (data < 6) + for (u8 i = 0; i < 8; i++) + m_io_outputs[17+data*8+i] = BIT(m_ay1_a, i); +} + +void macp_state::ay0_b_w(u8 data) +{ + // d0-7 solenoids + for (u8 i = 0; i < 8; i++) + m_io_outputs[i] = BIT(data, i); +} + +void macp_state::ay1_a_w(u8 data) +{ + m_ay1_a = data; +} + +void macp_state::ay1_b_w(u8 data) +{ + m_ay1_b = data; + // d0-3 solenoids: Coin Lock (probably lockout), Coin In (probably coin counter), Ext Play, Ext Ball. + for (u8 i = 0; i < 4; i++) + m_io_outputs[12+i] = BIT(data, i); + // d4 goes to RL7 (kbd_r) + // d5 another solenoid + m_io_outputs[16] = BIT(data, 5); + // Relay control: 0 = not set; 1 = K1 relay enables 12v supply; 2 = K2 relay enables 40v supply; 3= normal operation + // K2 is pulsed by a watchdog circuit. The K2 relay needs both bits enabled before it will turn on. + m_relay_ctrl = BIT(data, 5, 2); +} + +u8 macp_state::ay1_b_r() +{ + //return 0x7f | ((m_relay_ctrl == 3) ? 0 : 0x80); // BIT 7 low indicates 40volt supply is available + return 0x7f | (m_relay_ctrl ? 0 : 0x80); // Temporary for testing +} + +WRITE_LINE_MEMBER( macp_state::irq_w ) +{ + m_maincpu->set_input_line(INPUT_LINE_IRQ0, state ? ASSERT_LINE : CLEAR_LINE); +} + +WRITE_LINE_MEMBER( macp_state::clock_tick ) +{ + if (state) + { + if (m_t_c > 0xf0) + m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); + else + m_t_c++; + } +} + +void macp_state::machine_start() +{ + genpin_class::machine_start(); + + m_digits.resolve(); + m_io_outputs.resolve(); + + save_item(NAME(m_digit)); + save_item(NAME(m_t_c)); + save_item(NAME(m_ay1_a)); + save_item(NAME(m_ay1_b)); +} + +void macp_state::machine_reset() +{ + genpin_class::machine_reset(); + m_t_c = 0; + m_relay_ctrl = 0; +} + +void macp_state::mac16k(machine_config &config) { /* basic machine hardware */ - Z80(config, m_maincpu, 2500000); - m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::macp_map); - m_maincpu->set_addrmap(AS_IO, &macp_state::macp_io); + Z80(config, m_maincpu, 3'800'000); + m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::mem16k_map); + m_maincpu->set_addrmap(AS_IO, &macp_state::io16k_map); + + clock_device &cpoint_clock(CLOCK(config, "cpoint_clock", 50)); // crosspoint detector + cpoint_clock.signal_handler().set(FUNC(macp_state::clock_tick)); + + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); /* video hardware */ - //config.set_default_layout(); + config.set_default_layout(layout_macp); //I8279 + i8279_device &kbdc(I8279(config, "i8279", 3'800'000)); // based on divider + kbdc.out_sl_callback().set(FUNC(macp_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(macp_state::digit_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(macp_state::kbd_r)); // kbd RL lines + kbdc.out_irq_callback().set(FUNC(macp_state::irq_w)); /* sound hardware */ - //2x AY8910 genpin_audio(config); -} -void macp_state::macp0(machine_config &config) -{ - macp(config); - m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::macp0_map); + //2x AY8910 + SPEAKER(config, "lspkr").front_left(); + AY8910(config, m_ay8910[0], 3'800'000/2); + m_ay8910[0]->set_resistors_load(10e3,10e3,10e3); + m_ay8910[0]->port_a_write_callback().set(FUNC(macp_state::ay0_a_w)); + m_ay8910[0]->port_b_write_callback().set(FUNC(macp_state::ay0_b_w)); + m_ay8910[0]->add_route(ALL_OUTPUTS, "lspkr", 0.50); + + SPEAKER(config, "rspkr").front_right(); + AY8910(config, m_ay8910[1], 3'800'000/2); + m_ay8910[1]->set_resistors_load(10e3,10e3,10e3); + m_ay8910[1]->port_a_write_callback().set(FUNC(macp_state::ay1_a_w)); + m_ay8910[1]->port_b_write_callback().set(FUNC(macp_state::ay1_b_w)); + m_ay8910[1]->port_b_read_callback().set(FUNC(macp_state::ay1_b_r)); + m_ay8910[1]->add_route(ALL_OUTPUTS, "rspkr", 0.50); } -void macp_state::macpmsm(machine_config &config) +void macp_state::mac32k(machine_config &config) { - macp(config); + mac16k(config); + m_maincpu->set_addrmap(AS_PROGRAM, &macp_state::mem32k_map); + m_maincpu->set_addrmap(AS_IO, &macp_state::io32k_map); // MSM5205 } @@ -155,17 +457,19 @@ ROM_START(glxplay2) ROM_LOAD("1382-2.cpu", 0x2000, 0x2000, CRC(945c90fd) SHA1(8367992f8db8b402d82e4a3f02a35b796756ce0f)) ROM_END +} // Anonymous namespace + // MAC S.A. pinballs -GAME( 1986, macgalxy, 0, macp0, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC's Galaxy", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, macjungl, 0, macp0, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC Jungle", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, spctrain, 0, macp, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Train (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, spctraino, spctrain, macp0, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Train (Pinball, old hardware)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1988, spcpnthr, 0, macpmsm, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Panther", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 19??, mac_1808, 0, macpmsm, macp, macp_state, empty_init, ROT0, "MAC S.A.", "unknown game (MAC #1808)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1995, macjungn, 0, macpmsm, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC Jungle (New version)", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1996, nbamac, 0, macpmsm, macp, macp_state, empty_init, ROT0, "MAC S.A.", "NBA MAC", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, macgalxy, 0, mac16k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC's Galaxy", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, macjungl, 0, mac16k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC Jungle", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, spctrain, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Train (Pinball)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, spctraino, spctrain, mac16k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Train (Pinball, old hardware)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1988, spcpnthr, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "Space Panther", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 19??, mac_1808, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "unknown game (MAC #1808)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1995, macjungn, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "MAC Jungle (New version)", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1996, nbamac, 0, mac32k, macp, macp_state, empty_init, ROT0, "MAC S.A.", "NBA MAC", MACHINE_IS_SKELETON_MECHANICAL ) // CICPlay pinballs -GAME( 1985, glxplay, 0, macp0, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Galaxy Play", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1986, kidnap, 0, macp0, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Kidnap", MACHINE_IS_SKELETON_MECHANICAL ) -GAME( 1987, glxplay2, 0, macp0, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Galaxy Play 2", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1985, glxplay, 0, mac16k, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Galaxy Play", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1986, kidnap, 0, mac16k, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Kidnap", MACHINE_IS_SKELETON_MECHANICAL ) +GAME( 1987, glxplay2, 0, mac16k, cicplay, macp_state, empty_init, ROT0, "CICPlay", "Galaxy Play 2", MACHINE_IS_SKELETON_MECHANICAL ) diff --git a/src/mame/drivers/pce.cpp b/src/mame/drivers/pce.cpp index cfb152a93d9..15bfe8a26ae 100644 --- a/src/mame/drivers/pce.cpp +++ b/src/mame/drivers/pce.cpp @@ -16,7 +16,6 @@ - test sprite collision and overflow interrupts - sprite precaching - rewrite the base renderer loop -- Add CD support - Add expansion port support - Add 263 line mode - Sprite DMA should use vdc VRAM functions @@ -49,11 +48,8 @@ Super System Card: /********************************************************************** Known Bugs *********************************************************************** -- Benkei Gaiden: hangs after a few Sunsoft logo spins. -- Busou Keiji Cyber Cross: hangs on attract mode - Cadash: After choosing character and name, the game starts and the display 'jiggles' like tracking if off a VCR - Fighting Run: has color and sprite issues during gameplay; -- Hisou Kihei - Xserd: black screen; **********************************************************************/ #include "emu.h" @@ -147,7 +143,7 @@ static void pce_cart(device_slot_interface &device) void pce_state::pce_common(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware H6280(config, m_maincpu, MAIN_CLOCK/3); m_maincpu->set_addrmap(AS_PROGRAM, &pce_state::pce_mem); m_maincpu->set_addrmap(AS_IO, &pce_state::pce_io); @@ -158,7 +154,7 @@ void pce_state::pce_common(machine_config &config) config.set_maximum_quantum(attotime::from_hz(60)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242); screen.set_screen_update(FUNC(pce_state::screen_update)); @@ -209,7 +205,7 @@ void pce_state::tg16(machine_config &config) void pce_state::sgx(machine_config &config) { - /* basic machine hardware */ + // basic machine hardware H6280(config, m_maincpu, MAIN_CLOCK/3); m_maincpu->set_addrmap(AS_PROGRAM, &pce_state::sgx_mem); m_maincpu->set_addrmap(AS_IO, &pce_state::sgx_io); @@ -220,7 +216,7 @@ void pce_state::sgx(machine_config &config) config.set_maximum_quantum(attotime::from_hz(60)); - /* video hardware */ + // video hardware screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_raw(MAIN_CLOCK, huc6260_device::WPF, 64, 64 + 1024 + 64, huc6260_device::LPF, 18, 18 + 242); screen.set_screen_update(FUNC(pce_state::screen_update)); diff --git a/src/mame/layout/macp.lay b/src/mame/layout/macp.lay new file mode 100644 index 00000000000..ff29b4396c7 --- /dev/null +++ b/src/mame/layout/macp.lay @@ -0,0 +1,134 @@ +<?xml version="1.0"?> +<!-- +license:CC0 +--> + +<mamelayout version="2"> + + <element name="digit7" defstate="0"> + <led7seg> + <color red="0.0" green="0.75" blue="1.0" /> + </led7seg> + </element> + + <view name="Default Layout"> + <bounds left="0" top="25" right="325" bottom="205" /> + + <!-- Top Row --> + <element name="digit0" ref="digit7"> + <bounds left="10" top="45" right="30" bottom="84" /> + </element> + <element name="digit1" ref="digit7"> + <bounds left="34" top="45" right="54" bottom="84" /> + </element> + <element name="digit2" ref="digit7"> + <bounds left="58" top="45" right="78" bottom="84" /> + </element> + <element name="digit3" ref="digit7"> + <bounds left="87" top="45" right="107" bottom="84" /> + </element> + <element name="digit4" ref="digit7"> + <bounds left="111" top="45" right="131" bottom="84" /> + </element> + <element name="digit5" ref="digit7"> + <bounds left="135" top="45" right="155" bottom="84" /> + </element> + + <element name="digit20" ref="digit7"> + <bounds left="170" top="45" right="190" bottom="84" /> + </element> + <element name="digit21" ref="digit7"> + <bounds left="194" top="45" right="214" bottom="84" /> + </element> + <element name="digit22" ref="digit7"> + <bounds left="218" top="45" right="238" bottom="84" /> + </element> + <element name="digit23" ref="digit7"> + <bounds left="247" top="45" right="267" bottom="84" /> + </element> + <element name="digit24" ref="digit7"> + <bounds left="271" top="45" right="291" bottom="84" /> + </element> + <element name="digit25" ref="digit7"> + <bounds left="295" top="45" right="315" bottom="84" /> + </element> + + <!-- Middle Row --> + <element name="digit6" ref="digit7"> + <bounds left="10" top="100" right="30" bottom="139" /> + </element> + <element name="digit7" ref="digit7"> + <bounds left="34" top="100" right="54" bottom="139" /> + </element> + <element name="digit8" ref="digit7"> + <bounds left="58" top="100" right="78" bottom="139" /> + </element> + <element name="digit9" ref="digit7"> + <bounds left="87" top="100" right="107" bottom="139" /> + </element> + <element name="digit10" ref="digit7"> + <bounds left="111" top="100" right="131" bottom="139" /> + </element> + <element name="digit11" ref="digit7"> + <bounds left="135" top="100" right="155" bottom="139" /> + </element> + + <element name="digit26" ref="digit7"> + <bounds left="170" top="100" right="190" bottom="139" /> + </element> + <element name="digit27" ref="digit7"> + <bounds left="194" top="100" right="214" bottom="139" /> + </element> + <element name="digit28" ref="digit7"> + <bounds left="218" top="100" right="238" bottom="139" /> + </element> + <element name="digit29" ref="digit7"> + <bounds left="247" top="100" right="267" bottom="139" /> + </element> + <element name="digit30" ref="digit7"> + <bounds left="271" top="100" right="291" bottom="139" /> + </element> + <element name="digit31" ref="digit7"> + <bounds left="295" top="100" right="315" bottom="139" /> + </element> + + <!-- Bottom Row --> + <element name="digit15" ref="digit7"> + <bounds left="10" top="155" right="30" bottom="194" /> + </element> + <element name="unused1" ref="digit7"> + <bounds left="34" top="155" right="54" bottom="194" /> + </element> + <element name="digit14" ref="digit7"> + <bounds left="58" top="155" right="78" bottom="194" /> + </element> + <element name="unused2" ref="digit7"> + <bounds left="87" top="155" right="107" bottom="194" /> + </element> + <element name="digit13" ref="digit7"> + <bounds left="111" top="155" right="131" bottom="194" /> + </element> + <element name="digit12" ref="digit7"> + <bounds left="135" top="155" right="155" bottom="194" /> + </element> + + <element name="digit32" ref="digit7"> + <bounds left="170" top="155" right="190" bottom="194" /> + </element> + <element name="digit33" ref="digit7"> + <bounds left="194" top="155" right="214" bottom="194" /> + </element> + <element name="digit34" ref="digit7"> + <bounds left="218" top="155" right="238" bottom="194" /> + </element> + <element name="digit35" ref="digit7"> + <bounds left="247" top="155" right="267" bottom="194" /> + </element> + <element name="digit35" ref="digit7"> + <bounds left="271" top="155" right="291" bottom="194" /> + </element> + <element name="digit35" ref="digit7"> + <bounds left="295" top="155" right="315" bottom="194" /> + </element> + </view> +</mamelayout> diff --git a/src/mame/mame.lst b/src/mame/mame.lst index ea7595c616d..f66abe8e238 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -12405,7 +12405,8 @@ bmdct // GX995 (c) 2000 (Japan) bmfinal // GXC01 (c) 2002 (Japan) hmcompm2 // GX988 (c) 2000 hmcompmx // GX858 (c) 1999 -popn1 // GX803 (c) 1998 (Asia) +popn1 // GX803 (c) 1998 (Export) +popn1a // GX803 (c) 1998 (Asia) popn1k // GX803 (c) 1998 (Korea) popn1j // GX803 (c) 1998 (Japan) popn2 // GX831 (c) 1998 (Japan) |