From 3f5fca9c4976b73f87861812609838b37e6fdda5 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Tue, 6 Aug 2024 19:00:17 +0200 Subject: New systems marked not working ------------------------------ PK [Hammy] Turbo PK [Hammy] New working clones ------------------ Tarzan Chuang Tian Guan (China, V110) [Hammy] - igs\igs_m027.cpp: dumped MX10EXA for crzybugs US sets and wldfruit, matches dumps for crzybugsj and haunthig [Ioannis Bampoulas] --- src/mame/amiga/mquake.cpp | 2 +- src/mame/igs/igs017.cpp | 23 ++++ src/mame/igs/igs_m027.cpp | 14 +-- src/mame/mame.lst | 5 + src/mame/misc/gei.cpp | 2 +- src/mame/skeleton/boramz80.cpp | 271 +++++++++++++++++++++++++++++++++++++++++ 6 files changed, 308 insertions(+), 9 deletions(-) create mode 100644 src/mame/skeleton/boramz80.cpp diff --git a/src/mame/amiga/mquake.cpp b/src/mame/amiga/mquake.cpp index b6b8f4cecb2..0dcb485438b 100644 --- a/src/mame/amiga/mquake.cpp +++ b/src/mame/amiga/mquake.cpp @@ -397,7 +397,7 @@ U09 MC68705P5S - Label detached / fell off ROMs had handwritten labels and are TMS 27C512: -U08 / QROM3 MQ_ROM3 0 5-28-87 +U08 / QROM3 MQ-ROM3 0 5-28-87 U07 / QROM2 MQ-ROM2 0 5-28-87 U06 / QROM1 MQ-ROM1 0 5-28 U05 / QROM0 MQ-ROM0 0 5-28 diff --git a/src/mame/igs/igs017.cpp b/src/mame/igs/igs017.cpp index c45d66ffef7..a7dd8752df3 100644 --- a/src/mame/igs/igs017.cpp +++ b/src/mame/igs/igs017.cpp @@ -5764,6 +5764,28 @@ ROM_START( tarzana ) ROM_LOAD( "tarzan_string.key", 0x00, 0xec, CRC(595fe40c) SHA1(0b46983400d237d8bde97a72eaa99b718a03387e) ) ROM_END +// IGS PCB NO-0248-1 +ROM_START( tarzanb ) // V110 TARZAN C + ROM_REGION( 0x40000, "maincpu", 0 ) + ROM_LOAD( "v110.u19", 0x00000, 0x40000, CRC(16026d12) SHA1(df08641b4bc1437648f0a8cd5f7a8a4786c07041) ) + + ROM_REGION( 0x400000, "igs017_igs031:sprites", 0 ) + ROM_LOAD( "igs_a2103_cg_v100f.u15", 0x00000, 0x400000, BAD_DUMP CRC(dcbff16f) SHA1(2bf77ef4448c26124c8d8d18bb7ffe4105cfa940) ) // using tarzanc's one for now, but versions differ + + ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) + ROM_LOAD( "text.u5", 0x00000, 0x80000, CRC(1724e039) SHA1(d628499b61f98f7c9034d70b82ee25e002190ece) ) + + ROM_REGION( 0x80000, "oki", 0 ) + ROM_LOAD( "igs_s2102_sp_v102.u14", 0x00000, 0x80000, BAD_DUMP CRC(90dda82d) SHA1(67fbc1e8d76b85e124136e2f1df09c8b6c5a8f97) ) // not dumped for this set, using tarzanc's one for now + + ROM_REGION( 0x2dd * 2, "plds", ROMREGION_ERASE ) + ROM_LOAD( "eg.u20", 0x000, 0x2dd, NO_DUMP ) + ROM_LOAD( "eg.u21", 0x2dd, 0x2dd, NO_DUMP ) + + ROM_REGION( 0xec, "igs_string", 0 ) + ROM_LOAD( "tarzanb_string.key", 0x00, 0xec, CRC(595fe40c) SHA1(0b46983400d237d8bde97a72eaa99b718a03387e) ) +ROM_END + /*************************************************************************** Super Tarzan (Italy, V100I) @@ -5950,6 +5972,7 @@ GAME ( 1998, slqz2, 0, slqz2, slqz2, igs017_state, init_slqz2, GAME ( 1999, tarzanc, 0, tarzan, tarzan, igs017_state, init_tarzanc, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V109C, set 1)", 0 ) // 泰山闯天关 GAME ( 1999, tarzan, tarzanc, tarzan, tarzan, igs017_state, init_tarzan, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V109C, set 2)", MACHINE_NOT_WORKING ) // missing sprites and sound rom, imperfect tiles decryption GAME ( 1999, tarzana, tarzanc, tarzan, tarzan, igs017_state, init_tarzana, ROT0, "IGS", "Tarzan (V107)", MACHINE_NOT_WORKING | MACHINE_UNEMULATED_PROTECTION ) // missing IGS029 protection, missing sprites and sound rom +GAME ( 1999, tarzanb, tarzanc, tarzan, tarzan, igs017_state, init_tarzanc, ROT0, "IGS", "Tarzan Chuang Tian Guan (China, V110)", 0 ) GAME ( 2000, sdmg2p, 0, sdmg2p, sdmg2p, igs017_state, init_sdmg2p, ROT0, "IGS", "Maque Wangchao / Chaoji Damanguan 2 - Jiaqiang Ban (China, V100C)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // 麻雀王朝 / 超級大滿貫 2 -加強版 protection kicks in after starting game, hopper isn't hooked up correctly GAMEL( 2000?, starzan, 0, starzan, starzan, igs017_state, init_starzan, ROT0, "IGS (G.F. Gioca license)", "Super Tarzan (Italy, V100I)", 0, layout_igsslot ) GAMEL( 2000?, happyskl, 0, happyskl, happyskl, igs017_state, init_happyskl, ROT0, "IGS", "Happy Skill (Italy, V611IT)", 0, layout_igspoker ) diff --git a/src/mame/igs/igs_m027.cpp b/src/mame/igs/igs_m027.cpp index 551685c51c1..c30df42763c 100644 --- a/src/mame/igs/igs_m027.cpp +++ b/src/mame/igs/igs_m027.cpp @@ -1090,8 +1090,8 @@ ROM_START( crzybugs ) // IGS PCB-0447-05-GM - Has IGS027A, MX10EXAQC, IGS031, Ok ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg ROM_LOAD( "crazy_bugs_v-204us.u23", 0x000000, 0x80000, CRC(d1232462) SHA1(685a292f39bf57a80d6ef31289cf9f673ba06dd4) ) // MX27C4096 - ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) marked J9, probably same as haunthig, but not dumped for this set - ROM_LOAD( "j9.u27", 0x00000, 0x10000, BAD_DUMP CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) marked J9 + ROM_LOAD( "j9.u27", 0x00000, 0x10000, CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) // not dumped for this set ROM_LOAD( "crazy_bugs_text_u10.u10", 0x000000, 0x80000, BAD_DUMP CRC(db0d679a) SHA1(c5d039aa4fa2218b6f574ccb5b6da983b8d4067d) ) @@ -1113,8 +1113,8 @@ ROM_START( crzybugsa ) ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg ROM_LOAD( "crazy_bugs_v-202us.u23", 0x000000, 0x80000, CRC(210da1e6) SHA1(c726497bebd25d6a9053e331b4c26acc7e2db0b2) ) // MX27C4096 - ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) probably same as haunthig, but not dumped for this set - ROM_LOAD( "j9.u27", 0x00000, 0x10000, BAD_DUMP CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) + ROM_LOAD( "j9.u27", 0x00000, 0x10000, CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) ROM_LOAD( "crazy_bugs_text_u10.u10", 0x000000, 0x80000, CRC(db0d679a) SHA1(c5d039aa4fa2218b6f574ccb5b6da983b8d4067d) ) // M27C4002 @@ -1136,8 +1136,8 @@ ROM_START( crzybugsb ) ROM_REGION32_LE( 0x80000, "user1", 0 ) // external ARM data / prg ROM_LOAD( "crazy_bugs_v-202us.u23", 0x000000, 0x80000, CRC(129e36e9) SHA1(53f20bc3792249de8ef276f84283baa9abd30acd) ) // MX27C4096 - ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) probably same as haunthig, but not dumped for this set - ROM_LOAD( "j9.u27", 0x00000, 0x10000, BAD_DUMP CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) + ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) + ROM_LOAD( "j9.u27", 0x00000, 0x10000, CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) ROM_LOAD( "crazy_bugs_text_u10.u10", 0x000000, 0x80000, BAD_DUMP CRC(db0d679a) SHA1(c5d039aa4fa2218b6f574ccb5b6da983b8d4067d) ) // not dumped for this set @@ -1309,7 +1309,7 @@ ROM_START( wldfruit ) // IGS PCB-0447-05-GM - Has IGS027A, MX10EXAQC, IGS031, Ok ROM_LOAD( "wild_fruit_v-208us.u23", 0x000000, 0x80000, CRC(d43398f1) SHA1(ecc4bd5cb6da16b35c63b843cf7beec1ab84ed9d) ) // M27C4002 ROM_REGION( 0x10000, "xa", 0 ) // MX10EXAQC (80C51 XA based MCU) marked J9 - ROM_LOAD( "j9.u27", 0x00000, 0x10000, NO_DUMP ) + ROM_LOAD( "j9.u27", 0x00000, 0x10000, CRC(3c76b157) SHA1(d8d3a434fd649577a30d5855e3fb34998041f4e5) ) ROM_REGION( 0x80000, "igs017_igs031:tilemaps", 0 ) ROM_LOAD( "wild_fruit_text.u10", 0x000000, 0x80000, CRC(d6f0fd58) SHA1(5ddae5d4df53504dbb2e0fe9f7caea961c961ef8) ) // 27C4096 diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 6bc0e77fd1e..ec11de34f56 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -20200,6 +20200,7 @@ spkrform // (c) 2000? starzan // (c) 2000? tarzan // (c) 1999 tarzana // (c) 1999 +tarzanb // (c) 1999 tarzanc // (c) 1999 tjsb // (c) 1997 @@ -41843,6 +41844,10 @@ bolsaint // (c) 2000 Sleic/Petaco @source:skeleton/boo.cpp boo1000 +@source:skeleton/boramz80.cpp +pkboram +tpkboram + @source:skeleton/bpmmicro.cpp bp1200 // (c) 1991 BP Microsystems diff --git a/src/mame/misc/gei.cpp b/src/mame/misc/gei.cpp index 3ee866dd6ce..a06d3112eed 100644 --- a/src/mame/misc/gei.cpp +++ b/src/mame/misc/gei.cpp @@ -1311,7 +1311,7 @@ ROM_START( gtsers7a ) // Series 7 (Complete - question ROMs dated 7/9) ROM_LOAD( "general_v", 0x14000, 0x4000, CRC(81bf07c7) SHA1(a53f050b4ef8ffc0499b50224d4bbed4af0ca09c) ) ROM_LOAD( "kids_korner", 0x18000, 0x4000, CRC(66631b79) SHA1(ec534941add7113c9bb96d00f2e09834275e314b) ) ROM_LOAD( "good_guys", 0x1c000, 0x4000, CRC(4d638326) SHA1(2d6d00ae7f02d1607f37eb1cefae31c42797b2cf) ) - ROM_LOAD( "sex_triv.", 0x20000, 0x4000, CRC(cd0ce4e2) SHA1(2046ee3da94f00bf4a8b3fc62b1190d58e83cc89) ) // Listed as an alternate question set + ROM_LOAD( "sex_triv", 0x20000, 0x4000, CRC(cd0ce4e2) SHA1(2046ee3da94f00bf4a8b3fc62b1190d58e83cc89) ) // Listed as an alternate question set ROM_END ROM_START( gtsersa ) // alt or older version questions diff --git a/src/mame/skeleton/boramz80.cpp b/src/mame/skeleton/boramz80.cpp new file mode 100644 index 00000000000..951a8e31620 --- /dev/null +++ b/src/mame/skeleton/boramz80.cpp @@ -0,0 +1,271 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* +Boram Z80-based poker games + +The 2 dumped games come from 2 similar PCBs: +PK uses the ATPK-BORAM 0211 PCB, while Turbo PK uses the ATPK-BORAM 0300 III PCB. +Main components are: +Z80A CPU (different variants) +HD46505SP CRT +I8255 PPI +2 XTALs with solder blobs on them (value not readable) +AY-8910 sound chip +on 0211 PCB: 2x 8-DIP banks +on 0300 III PCB: 4x 8-DIP banks +*/ + + +#include "emu.h" + +#include "cpu/z80/z80.h" +#include "machine/i8255.h" +#include "sound/ay8910.h" +#include "video/mc6845.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" +#include "tilemap.h" + + +namespace { + +class boramz80_state : public driver_device +{ +public: + boramz80_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_char_ram(*this, "char_ram"), + m_tile_ram(*this, "tile_ram") + { } + + void pk(machine_config &config) ATTR_COLD; + +protected: + virtual void video_start() override ATTR_COLD; + +private: + required_device m_maincpu; + required_device m_gfxdecode; + + required_shared_ptr m_char_ram; + required_shared_ptr m_tile_ram; + + uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + + void program_map(address_map &map) ATTR_COLD; + void io_map(address_map &map) ATTR_COLD; +}; + + +void boramz80_state::video_start() +{ +} + +uint32_t boramz80_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) +{ + bitmap.fill(rgb_t::black(), cliprect); + + return 0; +} + + +void boramz80_state::program_map(address_map &map) +{ + map(0x0000, 0x7fff).rom(); + map(0x8000, 0x8fff).ram(); // TODO: only 0x800 for pkboram + map(0xa000, 0xa7ff).ram().share(m_char_ram); + map(0xc000, 0xc7ff).ram().share(m_tile_ram); + map(0xe000, 0xe3ff).ram().w("palette", FUNC(palette_device::write8)).share("palette"); + map(0xf000, 0xf3ff).ram().w("palette", FUNC(palette_device::write8_ext)).share("palette_ext"); +} + +void boramz80_state::io_map(address_map &map) +{ + map.global_mask(0xff); + + map(0x00, 0x03).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)); + //map(0x20, 0x20).r(); + //map(0x40, 0x40).r(); + //map(0x60, 0x60).r(); + map(0x80, 0x81).w("aysnd", FUNC(ay8910_device::data_address_w)); + map(0x81, 0x81).r("aysnd", FUNC(ay8910_device::data_r)); + //map(0xa0, 0xa0).r(); + map(0xc0, 0xc0).w("crtc", FUNC(mc6845_device::address_w)); + map(0xc1, 0xc1).w("crtc", FUNC(mc6845_device::register_w)); +} + + +static INPUT_PORTS_START( pkboram ) + PORT_START("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DSW1") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW1:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW1:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW1:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW1:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW1:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW1:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW1:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW1:8") + + PORT_START("DSW2") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW2:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW2:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW2:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW2:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW2:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW2:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW2:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW2:8") +INPUT_PORTS_END + +static INPUT_PORTS_START( tpkboram ) + PORT_INCLUDE( pkboram ) + + PORT_START("DSW3") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW3:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW3:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW3:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW3:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW3:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW3:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW3:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW3:8") + + PORT_START("DSW4") + PORT_DIPUNKNOWN_DIPLOC(0x01, 0x01, "SW4:1") + PORT_DIPUNKNOWN_DIPLOC(0x02, 0x02, "SW4:2") + PORT_DIPUNKNOWN_DIPLOC(0x04, 0x04, "SW4:3") + PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SW4:4") + PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SW4:5") + PORT_DIPUNKNOWN_DIPLOC(0x20, 0x20, "SW4:6") + PORT_DIPUNKNOWN_DIPLOC(0x40, 0x40, "SW4:7") + PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SW4:8") +INPUT_PORTS_END + + +static GFXDECODE_START( gfx_boram ) + GFXDECODE_ENTRY( "chars", 0, gfx_8x8x2_planar, 0, 16 ) + GFXDECODE_ENTRY( "tiles", 0, gfx_8x8x4_planar, 0, 16 ) // probably wrong +GFXDECODE_END + + +void boramz80_state::pk(machine_config &config) +{ + // basic machine hardware + Z80(config, m_maincpu, 4'000'000); // clock unknown + m_maincpu->set_addrmap(AS_PROGRAM, &boramz80_state::program_map); + m_maincpu->set_addrmap(AS_IO, &boramz80_state::io_map); + //m_maincpu->set_vblank_int("screen", FUNC(boramz80_state::irq0_line_hold)); + + i8255_device &ppi(I8255A(config, "ppi")); + ppi.in_pa_callback().set([this] () { logerror("%s: PPI port A read\n", machine().describe_context()); return ioport("IN0")->read(); }); + ppi.in_pb_callback().set([this] () { logerror("%s: PPI port B read\n", machine().describe_context()); return ioport("IN1")->read(); }); + ppi.in_pc_callback().set([this] () { logerror("%s: PPI port C read\n", machine().describe_context()); return ioport("IN2")->read(); }); + ppi.out_pc_callback().set([this] (u8 data) { logerror("%s: PPI port C write %02x\n", machine().describe_context(), data); }); + + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); // TODO: everything + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea_full(); + screen.set_screen_update(FUNC(boramz80_state::screen_update)); + + hd6845s_device &crtc(HD6845S(config, "crtc", 1'000'000)); // clock unknown + crtc.set_screen("screen"); + crtc.set_show_border_area(false); + crtc.set_char_width(8); + + GFXDECODE(config, "gfxdecode", "palette", gfx_boram); + PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x400); // TODO: verify once it works + + SPEAKER(config, "mono").front_center(); + + ay8910_device &aysnd(AY8910(config, "aysnd", 1'000'000)); // clock unknown + aysnd.port_a_read_callback().set_ioport("DSW1"); // TODO: verify once it works + aysnd.port_b_read_callback().set_ioport("DSW2"); // TODO: verify once it works + aysnd.port_a_write_callback().set([this] (uint8_t data) { logerror("%s: AY port A write %02x\n", machine().describe_context(), data); }); + aysnd.add_route(ALL_OUTPUTS, "mono", 0.50); +} + + +ROM_START( pkboram ) + ROM_REGION( 0x8000, "maincpu", 0 ) + ROM_LOAD( "b.rom", 0x0000, 0x8000, CRC(5f38640d) SHA1(914cbd3c5e0406e2daa9bdad6bd46758498aabb5) ) + + ROM_REGION( 0x4000, "chars", 0 ) + ROM_LOAD( "1.cg1", 0x0000, 0x2000, CRC(a5c43569) SHA1(17a5d529ee2ef18019dabf9aefcf595d1193c7d0) ) + ROM_LOAD( "2.cg2", 0x2000, 0x2000, CRC(68906bae) SHA1(4ccec70f4d6044a7e23e4e50c98916278fe7dfd0) ) + + ROM_REGION( 0x40000, "tiles", 0 ) + ROM_LOAD( "3.pg1", 0x00000, 0x8000, CRC(5bd66a9b) SHA1(52fcda1e818c19910b88956ed28a479b6d5f3385) ) + ROM_LOAD( "4.pg2", 0x08000, 0x8000, CRC(a8832475) SHA1(f0ec6cd74992cd6f27c12e0c6da6aaabdb8b2e52) ) + ROM_LOAD( "5.pg3", 0x10000, 0x8000, CRC(bf00fe98) SHA1(218103db220d96c6f16e685f48df8a63443d24f7) ) + ROM_LOAD( "6.pg4", 0x18000, 0x8000, CRC(5fe7b018) SHA1(26a41f96a4b4722b73dbee08cfa1272aa6d83ca8) ) + ROM_LOAD( "7.pg5", 0x20000, 0x8000, CRC(c19d09bf) SHA1(124169b22e566b2a44ae1d0ae1259cdb188e8769) ) + ROM_LOAD( "8.pg6", 0x28000, 0x8000, CRC(191d2ab3) SHA1(ad8bfc3f28ccf503cf388791634f32f745559c3c) ) + ROM_LOAD( "9.pg7", 0x30000, 0x8000, CRC(fd182a3a) SHA1(0d7e9e905b33fd6925962d6992c595830a35ac26) ) + ROM_LOAD( "10.pg8", 0x38000, 0x8000, CRC(7c2e9f86) SHA1(b82efdd718fa49cb57330fdcf05df6a9e025a822) ) + + // TODO: PROMs? +ROM_END + +ROM_START( tpkboram ) + ROM_REGION( 0x8000, "maincpu", 0 ) + ROM_LOAD( "pkt-21spko.rom", 0x0000, 0x8000, CRC(a024d82b) SHA1(4d656261747930415807cd084536ef145fbf0f5b) ) + + ROM_REGION( 0x4000, "chars", 0 ) + ROM_LOAD( "1.cg1", 0x0000, 0x2000, CRC(69f44d04) SHA1(2f98805e4b70ce3426078f35ff260a3bc97fab86) ) + ROM_LOAD( "2.cg2", 0x2000, 0x2000, CRC(c1adf009) SHA1(0d5d8b39d40c807b9b5ed7418ba871c4d683286a) ) + + ROM_REGION( 0x40000, "tiles", 0 ) + ROM_LOAD( "3.pg1", 0x00000, 0x8000, CRC(5506285c) SHA1(017095d0c293b8a5ae73e40a4e5f662d8ba01a06) ) + ROM_LOAD( "4.pg2", 0x08000, 0x8000, CRC(6d62a734) SHA1(42716934bc93f3c815af961a6efbae120bec2793) ) + ROM_LOAD( "5.pg3", 0x10000, 0x8000, CRC(644c44a6) SHA1(a407735ccdefc4ff7a6f2f007b9e1c4846202dfe) ) + ROM_LOAD( "6.pg4", 0x18000, 0x8000, CRC(029cc0d1) SHA1(d41ec3fa38c1729fee3026f5c9365175738ecc99) ) + ROM_LOAD( "7.pg5", 0x20000, 0x8000, CRC(c07a3cac) SHA1(19c1f996494cf0b200c7d781ba3ffd4af9bfe73b) ) + ROM_LOAD( "8.pg6", 0x28000, 0x8000, CRC(8f2a8c3e) SHA1(5ec031dc1fa21a09c1a4ebc0b6bb5f899038801a) ) + ROM_LOAD( "9.pg7", 0x30000, 0x8000, CRC(7dbbdeb5) SHA1(4d379b9e0c825174bf151117e3550809948e1763) ) + ROM_LOAD( "10.pg8", 0x38000, 0x8000, CRC(4a293afa) SHA1(be532e6a476f78638e7f558bf8093e1914bc3688) ) + + // TODO: PROMs? +ROM_END + +} // anonymous namespace + + +GAME( 1987, pkboram, 0, pk, pkboram, boramz80_state, empty_init, ROT0, "Boram", "PK", MACHINE_IS_SKELETON ) // PK-BORAM 0211 aug.04.1987. BORAM CORP +GAME( 1988, tpkboram, 0, pk, tpkboram, boramz80_state, empty_init, ROT0, "Boram", "Turbo PK", MACHINE_IS_SKELETON ) // PK-TURBO jan.29.1988. BORAM CORP. -- cgit v1.2.3