diff --git a/src/devices/cpu/ns32000/ns32000.cpp b/src/devices/cpu/ns32000/ns32000.cpp index 494c57c1a0f..df40818387f 100644 --- a/src/devices/cpu/ns32000/ns32000.cpp +++ b/src/devices/cpu/ns32000/ns32000.cpp @@ -3888,9 +3888,16 @@ void ns32532_device::device_add_mconfig(machine_config &config) void ns32532_device::device_reset() { + // TODO: pc and psr are saved in r0/r1 at reset + //m_r[0] = m_pc; + //m_r[1] = m_psr; + ns32000_device<32, 2>::device_reset(); m_cfg = CFG_P | CFG_FC | CFG_FM | CFG_FF; + m_mcr = 0; + m_msr = 0; + m_dcr = 0; } device_memory_interface::space_config_vector ns32532_device::memory_space_config() const diff --git a/src/mame/excellent/es9501.cpp b/src/mame/excellent/es9501.cpp new file mode 100644 index 00000000000..1880409b7f3 --- /dev/null +++ b/src/mame/excellent/es9501.cpp @@ -0,0 +1,207 @@ +// license:BSD-3-Clause +// copyright-holders: + +/* +Excellent System's ES-9501 PCB + +Main components: +TMP68HC000-P16 CPU +2x HM6265LK-70 RAM (near CPU) +28.6363 MHz XTAL (near CPU) +ES-9409 custom (GFX, same as dblcrown.cpp) +6x N341256P-15 RAM (near custom) +IS61C64 RAM (near custom, exact type not readable) +YMZ280B-F sound chip (no XTAL, running internal?) +2x N341256P-15 RAM (near YMZ280B-F) +MAX693ACPE watchdog +93C56 EEPROM +bank of 8 DIP switches + +Undumped games known to run on this PCB: +* Multi Spin +* Star Ball +*/ + +#include "emu.h" + +#include "cpu/m68000/m68000.h" +#include "machine/eepromser.h" +#include "machine/watchdog.h" +#include "sound/ymz280b.h" + +#include "emupal.h" +#include "screen.h" +#include "speaker.h" +#include "tilemap.h" + + +namespace { + +class es9501_state : public driver_device +{ +public: + es9501_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_screen(*this, "screen"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette") + { } + + void es9501(machine_config &config); + +protected: + virtual void video_start() override ATTR_COLD; + +private: + required_device m_maincpu; + required_device m_screen; + required_device m_gfxdecode; + required_device m_palette; + + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void program_map(address_map &map) ATTR_COLD; +}; + + +void es9501_state::video_start() +{ +} + +uint32_t es9501_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + return 0; +} + + +void es9501_state::program_map(address_map &map) +{ + map(0x000000, 0x07ffff).rom(); + map(0x3fc000, 0x3fffff).ram(); + map(0x400000, 0x407fff).ram(); + map(0x600000, 0x600001).portr("IN0"); + map(0x600002, 0x600003).portr("IN1"); + map(0x600004, 0x600005).portr("DSW"); + // map(0x600008, 0x600009).w // watchdog? + map(0x700000, 0x700003).rw("ymz", FUNC(ymz280b_device::read), FUNC(ymz280b_device::write)).umask16(0x00ff); // ?? +} + + +static INPUT_PORTS_START( specd9 ) + PORT_START("IN0") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("IN1") + PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START("DSW") + 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") +INPUT_PORTS_END + + +static const gfx_layout char_16x16_layout = +{ + 16,16, + RGN_FRAC(1,1), + 4, + { 0,1,2,3 }, + { 4,0, 12,8, 20,16, 28,24, 36,32, 44,40, 52,48, 60,56 }, + { STEP16(0,8*8) }, + 8*8*16 +}; + +static GFXDECODE_START( gfx_es9501 ) + GFXDECODE_ENTRY( "gfx", 0, char_16x16_layout, 0, 0x10 ) +GFXDECODE_END + + +void es9501_state::es9501(machine_config &config) +{ + M68000(config, m_maincpu, 28.636363_MHz_XTAL / 2); // divider not verified + m_maincpu->set_addrmap(AS_PROGRAM, &es9501_state::program_map); + + EEPROM_93C56_16BIT(config, "eeprom"); + + WATCHDOG_TIMER(config, "watchdog", 0); + + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); // TODO: everything + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(40*8, 32*8); + m_screen->set_visarea(0*8, 40*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(es9501_state::screen_update)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_es9501); + PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 0x1000 / 2); // TODO + + SPEAKER(config, "lspeaker").front_left(); + SPEAKER(config, "rspeaker").front_right(); + + ymz280b_device &ymz(YMZ280B(config, "ymz", 16.9344_MHz_XTAL)); + ymz.add_route(0, "lspeaker", 1.0); + ymz.add_route(1, "rspeaker", 1.0); +} + + +ROM_START( specd9 ) + ROM_REGION( 0x80000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "3.u33", 0x00000, 0x40000, CRC(e4b00f37) SHA1(4c33912b7c38399ba2ca5e4dc0335458d929bd52) ) + ROM_LOAD16_BYTE( "2.u31", 0x00001, 0x40000, CRC(620bc09e) SHA1(fce0e9c7394aa782d0b6f1558a3b4c76c5c1e787) ) + + ROM_REGION( 0x280000, "gfx", 0 ) + ROM_LOAD( "t58.u10", 0x000000, 0x200000, CRC(7a572d9e) SHA1(9a1d842ac78fea6047242c405aaf81c827dc2358) ) // contains Multi Spin logo + ROM_LOAD( "u51.u51", 0x200000, 0x080000, CRC(a213c33b) SHA1(42b4c3d3cb2db50ea0fad06509e3e73b81f3db4c) ) // TODO: this is an EPROM, contains Special Dream 9 logo, should be overlayed on the mask ROM contents, IGS style + + ROM_REGION( 0x200000, "ymz", 0 ) + ROM_LOAD( "t59.u23", 0x000000, 0x200000, CRC(b11857b4) SHA1(c0a6478fd8a8ef1ed35cfbfa9fd2af44eb258725) ) + + ROM_REGION16_BE( 0x100, "eeprom", 0 ) + ROM_LOAD16_WORD_SWAP( "93c56.u12", 0x000, 0x100, CRC(dba91cd8) SHA1(dfbe41e3a8d7e8ad7068d25afe10a1d93bf3cc4d) ) + + ROM_REGION( 0x117, "plds", 0 ) + ROM_LOAD( "3.u37", 0x000, 0x117, CRC(bea4cb24) SHA1(09987e6b903cc3bd202a9d933474b36bdbb99d9a) ) // PALCE16V8H +ROM_END + +} // anonymous namespace + + +GAME( 1997, specd9, 0, es9501, specd9, es9501_state, empty_init, ROT0, "Excellent System", "Special Dream 9 (v1.0.5G)", MACHINE_IS_SKELETON ) diff --git a/src/mame/igs/goldstar.cpp b/src/mame/igs/goldstar.cpp index 74205961338..e0ec13b84ff 100644 --- a/src/mame/igs/goldstar.cpp +++ b/src/mame/igs/goldstar.cpp @@ -457,6 +457,7 @@ class cmaster_state : public goldstar_state void init_cll(); void init_animalhs(); void init_eldoraddoa(); + template void init_tsk(); uint32_t screen_update_amcoe1a(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); uint32_t screen_update_cmast91(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); @@ -481,6 +482,7 @@ class cmaster_state : public goldstar_state void super7(machine_config &config); void animalhs(machine_config &config); void eldoraddoa(machine_config &config); + void amaztsk(machine_config &config); void animalhs_map(address_map &map) ATTR_COLD; void animalhs_portmap(address_map &map) ATTR_COLD; void amcoe1_portmap(address_map &map) ATTR_COLD; @@ -494,6 +496,7 @@ class cmaster_state : public goldstar_state void cmtetriskr_portmap(address_map &map) ATTR_COLD; void cmv4zg_portmap(address_map &map) ATTR_COLD; void eldoraddoa_portmap(address_map &map) ATTR_COLD; + void nfm_portmap(address_map &map) ATTR_COLD; void super7_portmap(address_map &map) ATTR_COLD; void chryangl_decrypted_opcodes_map(address_map &map) ATTR_COLD; void ss2001_portmap(address_map &map) ATTR_COLD; @@ -2364,6 +2367,12 @@ void cmaster_state::amcoe2_portmap(address_map &map) map(0x13, 0x13).w(FUNC(cmaster_state::background_col_w)); } +void cmaster_state::nfm_portmap(address_map &map) +{ + amcoe2_portmap(map); + + map(0x17, 0x17).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); +} void goldstar_state::lucky8_map(address_map &map) { @@ -10005,7 +10014,7 @@ static const gfx_layout tiles8x8_3bpp_layout = static GFXDECODE_START( gfx_nfm ) GFXDECODE_ENTRY( "tilegfx", 0, tiles8x8_3bpp_layout, 0, 16 ) GFXDECODE_ENTRY( "reelgfx", 0, tiles8x32_4bpp_layout, 128+64, 4 ) - GFXDECODE_ENTRY( "user1", 0, tiles128x128x4_layout, 128, 4 ) // wrong, needs correct decoding + GFXDECODE_ENTRY( "user1", 0, gfx_8x8x8_raw, 0, 16 ) GFXDECODE_END @@ -11182,12 +11191,21 @@ void cmaster_state::nfm(machine_config &config) /* basic machine hardware */ m_maincpu->set_addrmap(AS_PROGRAM, &cmaster_state::nfm_map); + m_maincpu->set_addrmap(AS_IO, &cmaster_state::nfm_portmap); m_gfxdecode->set_info(gfx_nfm); m_palette->set_init(FUNC(cmaster_state::nfm_palette)); + + OKIM6295(config, "oki", OKI_CLOCK, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); /* clock frequency & pin 7 not verified */ } +void cmaster_state::amaztsk(machine_config &config) +{ + nfm(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &cmaster_state::cm_map); // expects NVRAM instead of ROM in the 0xd000 - 0xd7ff range +} void unkch_state::vblank_irq(int state) { @@ -18162,11 +18180,13 @@ ROM_START( nfm ) ROM_LOAD( "fruit6", 0x08000, 0x08000, CRC(39d5b89a) SHA1(4cf52fa557ffc792d3e13f7dbb5d45fd617bac85) ) ROM_LOAD( "fruit5", 0x10000, 0x08000, CRC(a7a8f08d) SHA1(76c93194133ba85c0dde1f364260e16d5b647134) ) - ROM_REGION( 0x140000, "user1", 0 ) - ROM_LOAD( "8_f29c51002t.u53", 0x00000, 0x40000, CRC(ff9d5b6d) SHA1(a84fe241ff9958740dcdbd4650bd16a0aa6e01ca) ) + ROM_REGION( 0x100000, "user1", 0 ) // according to the dumper, the next two contain game logo + symbols animations + talking sounds - ROM_LOAD( "am29f040b.plcc32-a.bin", 0x40000, 0x80000, CRC(04bb0bcf) SHA1(b72fc5c351cb05d86938d49d310fe623c7de70d5) ) - ROM_LOAD( "am29f040b.plcc32-b.bin", 0xc0000, 0x80000, CRC(f95838f9) SHA1(99a999945e489c56ec04a87b5037d7e8d138f686) ) + ROM_LOAD( "am29f040b.plcc32-a.bin", 0x00000, 0x80000, CRC(04bb0bcf) SHA1(b72fc5c351cb05d86938d49d310fe623c7de70d5) ) + ROM_LOAD( "am29f040b.plcc32-b.bin", 0x80000, 0x80000, CRC(f95838f9) SHA1(99a999945e489c56ec04a87b5037d7e8d138f686) ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "8_f29c51002t.u53", 0x00000, 0x40000, CRC(ff9d5b6d) SHA1(a84fe241ff9958740dcdbd4650bd16a0aa6e01ca) ) ROM_REGION( 0x8000, "colours", 0 ) // colours, only 0x200 used ROM_LOAD( "fruiprg2", 0x0000, 0x08000, CRC(13925ff5) SHA1(236415a244ef6092834f8080cf0d2e04bbfa2650) ) @@ -18202,16 +18222,94 @@ ROM_START( nfma ) ROM_LOAD( "6_27c256.u11", 0x08000, 0x08000, CRC(39d5b89a) SHA1(4cf52fa557ffc792d3e13f7dbb5d45fd617bac85) ) // matches nfm ROM_LOAD( "5_27c256.u4", 0x10000, 0x08000, CRC(a7a8f08d) SHA1(76c93194133ba85c0dde1f364260e16d5b647134) ) // matches nfm - ROM_REGION( 0x140000, "user1", 0 ) - ROM_LOAD( "8_f29c51002t.u53", 0x00000, 0x40000, CRC(ff9d5b6d) SHA1(a84fe241ff9958740dcdbd4650bd16a0aa6e01ca) ) + ROM_REGION( 0x100000, "user1", 0 ) // according to the dumper, the next two contain game logo + symbols animations + talking sounds - ROM_LOAD( "am29f040b.plcc32-a.bin", 0x40000, 0x80000, CRC(04bb0bcf) SHA1(b72fc5c351cb05d86938d49d310fe623c7de70d5) ) - ROM_LOAD( "am29f040b.plcc32-b.bin", 0xc0000, 0x80000, CRC(f95838f9) SHA1(99a999945e489c56ec04a87b5037d7e8d138f686) ) + ROM_LOAD( "am29f040b.plcc32-a.bin", 0x00000, 0x80000, CRC(04bb0bcf) SHA1(b72fc5c351cb05d86938d49d310fe623c7de70d5) ) + ROM_LOAD( "am29f040b.plcc32-b.bin", 0x80000, 0x80000, CRC(f95838f9) SHA1(99a999945e489c56ec04a87b5037d7e8d138f686) ) + + ROM_REGION( 0x40000, "oki", 0 ) + ROM_LOAD( "8_f29c51002t.u53", 0x00000, 0x40000, CRC(ff9d5b6d) SHA1(a84fe241ff9958740dcdbd4650bd16a0aa6e01ca) ) ROM_REGION( 0x8000, "colours", 0 ) // colours, only 0x200 used ROM_LOAD( "10bp_27c257.u62", 0x0000, 0x8000, CRC(13925ff5) SHA1(236415a244ef6092834f8080cf0d2e04bbfa2650) ) // matches nfm ROM_END +ROM_START( halltsk ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "halloween_mp.u3", 0x00000, 0x10000, CRC(73bd23a2) SHA1(15f91995e69b8da096135df2d27fb0439206c0fa) ) // on subboard, 27C512 + + ROM_REGION( 0x10000, "reelgfx", 0 ) // all 27C256 + ROM_LOAD( "halloween_4.bin", 0x0000, 0x4000, CRC(3d824818) SHA1(85ad476da4d48afb3814a005724ab82bd8879d8c) ) // 0xxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x0000, 0x4000 ) + ROM_LOAD( "halloween_3.bin", 0x4000, 0x4000, CRC(3ff5daf9) SHA1(b8a37fb0c32c85a263dd9a4b7a64d82e6b4012a7) ) // 0xxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x4000, 0x4000 ) + ROM_LOAD( "halloween_2.bin", 0x8000, 0x4000, CRC(aa9ae972) SHA1(f5ee3faac34940a80b86a5d8bd39fefaa75f59f0) ) // 0xxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x8000, 0x4000 ) + ROM_LOAD( "halloween_1.bin", 0xc000, 0x4000, CRC(b03f696a) SHA1(7eeead9737ab7d62872dc4f26654c8e661e6b9f4) ) // 0xxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0xc000, 0x4000 ) + + ROM_REGION( 0x18000, "tilegfx", 0 ) // all 27C512 + ROM_LOAD( "halloween_7.bin", 0x00000, 0x08000, CRC(2be097f6) SHA1(c7114262524c532b99018aca0aa236263e820337) ) // 1ST AND 2ND HALF IDENTICAL + ROM_CONTINUE( 0x00000, 0x08000 ) + ROM_LOAD( "halloween_6.bin", 0x08000, 0x08000, CRC(83095784) SHA1(3a623fa6259e452fc27a51b0d2801ef69f24d34d) ) // 1ST AND 2ND HALF IDENTICAL + ROM_CONTINUE( 0x08000, 0x08000 ) + ROM_LOAD( "halloween_5.bin", 0x10000, 0x08000, CRC(475e58ed) SHA1(0841762c96cd7ad884f18e3991edf94d70867cbc) ) // 1ST AND 2ND HALF IDENTICAL + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x100000, "user1", ROMREGION_ERASE00 ) // not on this PCB? + + ROM_REGION( 0x40000, "oki", 0 ) // on subboard, AM29F040 + ROM_LOAD( "halloween_vsp.bin", 0x00000, 0x40000, CRC(fc56b7fb) SHA1(cf4087a765a9b3e7a3abb6049deba37d6859c02c) ) // 1ST AND 2ND HALF IDENTICAL + ROM_IGNORE( 0x40000 ) + + ROM_REGION( 0x10000, "colours", 0 ) // 27c512, only 0x200 used + ROM_LOAD( "halloween_8.bin", 0x00000, 0x10000, CRC(d5bd2fad) SHA1(7b8988cf4ec76ff1f4bdbb11a4cc4b2562fc4996) ) + + ROM_REGION( 0x400, "proms", 0 ) // TODO: verify what are these for + ROM_LOAD( "h.1", 0x000, 0x100, CRC(2e3cf7a7) SHA1(4dd4e85e693b3966b7dd21c38041c2e28bef6a3c) ) + ROM_LOAD( "h.2", 0x100, 0x100, CRC(c40219ad) SHA1(544982e63847a08d3a4c135775c83deeb004a81f) ) + ROM_LOAD( "t.1", 0x200, 0x100, CRC(6d52f710) SHA1(9729a4240f9a4408f33d743c97eef1572f083e66) ) + ROM_LOAD( "t.2", 0x300, 0x100, CRC(242535dc) SHA1(260f7a141c1915cf65726a5182a5dac4271419f5) ) +ROM_END + +ROM_START( amaztsk ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "amazonia_mp.u3", 0x00000, 0x10000, CRC(baddb153) SHA1(1a696ad1ef21d0d27fa2d2a729b56c7130d1f205) ) // on subboard, 27C512 + + ROM_REGION( 0x10000, "reelgfx", 0 ) // all 27C256 + ROM_LOAD( "amazonia_4.bin", 0x0000, 0x4000, CRC(03da97b6) SHA1(e2ec003a0584b93724c84e674c20a2e047015949) ) // 0xxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x0000, 0x4000 ) + ROM_LOAD( "amazonia_3.bin", 0x4000, 0x4000, CRC(4585c8c5) SHA1(cb32caa5fbf611ea4dc3f638c62614abbec83cfa) ) // 0xxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x4000, 0x4000 ) + ROM_LOAD( "amazonia_2.bin", 0x8000, 0x4000, CRC(acf3100f) SHA1(988813b60f01a188b6a46df32a2c6634b3178ced) ) // 0xxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x8000, 0x4000 ) + ROM_LOAD( "amazonia_1.bin", 0xc000, 0x4000, CRC(fc6d856f) SHA1(05eec692b3ecd8fa74a7ebfa9bf84915b189ef11) ) // 0xxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0xc000, 0x4000 ) + + ROM_REGION( 0x18000, "tilegfx", 0 ) // all 27C512 + ROM_LOAD( "amazonia_7.bin", 0x00000, 0x08000, CRC(5680d299) SHA1(78eba64d4b94346b2c4204657f4b2549c26c8c3d) ) // 0xxxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x00000, 0x08000 ) + ROM_LOAD( "amazonia_6.bin", 0x08000, 0x08000, CRC(c3cb5d5c) SHA1(8d8f1c2cf2f91a75355828aba2716fdd2e4d255e) ) // 0xxxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x08000, 0x08000 ) + ROM_LOAD( "amazonia_5.bin", 0x10000, 0x08000, CRC(46630843) SHA1(fb703c09e0d89999999f2c4ce726dd2d5d21224e) ) // 0xxxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x10000, 0x08000 ) + + ROM_REGION( 0x100000, "user1", ROMREGION_ERASE00 ) // not on this PCB? + + ROM_REGION( 0x80000, "oki", 0 ) // on subboard, AM29F040 + ROM_LOAD( "amazonia_vsp.bin", 0x00000, 0x80000, CRC(1aad7535) SHA1(7e585596de545d47c8db426adc2cf7f47cdd04de) ) + + ROM_REGION( 0x10000, "colours", 0 ) // 27c512, only 0x200 used + ROM_LOAD( "amazonia_8.bin", 0x0000, 0x8000, CRC(044a140a) SHA1(fe46a21270ba1c39ba7b8229479e379a25510d44) ) // 0xxxxxxxxxxxxxxx = 0xFF + ROM_CONTINUE( 0x0000, 0x8000 ) + + ROM_REGION( 0x400, "proms", 0 ) + ROM_LOAD( "h.1", 0x000, 0x100, NO_DUMP ) + ROM_LOAD( "h.2", 0x100, 0x100, NO_DUMP ) + ROM_LOAD( "t.1", 0x200, 0x100, NO_DUMP ) + ROM_LOAD( "t.2", 0x300, 0x100, NO_DUMP ) +ROM_END + /* Super Cherry Master. Lacks of Dyna copyright. Maybe bootleg. @@ -22257,6 +22355,20 @@ void cmaster_state::init_eldoraddoa() m_decrypted_opcodes[a] = bitswap<8>(rom[a] ^ 0xff, 4, 5, 6, 7, 0, 1, 2, 3); } +template +void cmaster_state::init_tsk() +{ + uint8_t *rom = memregion("maincpu")->base(); + std::vector buffer(0x10000); + memcpy(&buffer[0], rom, 0x10000); + + for (int i = 0; i < 0xc000; i++) + rom [i] = buffer[i ^ 0x1000]; + + for (int i = 0; i < 0x10000; i++) + rom[i] = bitswap<8>(rom[i] ^ Xor_value, 6, 7, 4, 5, 2, 3, 0, 1); +} + } // anonymous namespace @@ -22494,6 +22606,8 @@ GAME( 2006, noved, nfb96, amcoe2, nfb96bl, cmaster_state, empty_in GAME( 2003, nfm, 0, nfm, nfm, cmaster_state, empty_init, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic, vFB02-07A)", MACHINE_NOT_WORKING ) // vFB02-07A "Copyright By Ms. Liu Orchis 2003/03/06", needs correct PROM and USER1 regions decode GAME( 2003, nfma, nfm, nfm, nfm, cmaster_state, empty_init, ROT0, "Ming-Yang Electronic", "New Fruit Machine (Ming-Yang Electronic, vFB02-01A)", MACHINE_NOT_WORKING ) // vFB02-01A "Copyright By Ms. Liu Orchis 2003/03/06", needs correct PROM and USER1 regions decode +GAME( 2006, amaztsk, 0, amaztsk, nfm, cmaster_state, init_tsk<0xba>, ROT0, "Ming-Yang Electronic / TSK", "Amazonia (Ming-Yang Electronic / TSK)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // resets when starting reels, reels don't show, inputs need fixing, no sound +GAME( 2006, halltsk, 0, nfm, nfm, cmaster_state, init_tsk<0x71>, ROT0, "Ming-Yang Electronic / TSK", "Halloween (Ming-Yang Electronic / TSK, version 1.0)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_IMPERFECT_GRAPHICS ) // resets when starting reels, reels don't show, inputs need fixing, no sound // Super Cherry Master sets... diff --git a/src/mame/mame.lst b/src/mame/mame.lst index e29030078d5..a7303795c0f 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17935,6 +17935,9 @@ rpanic // (c) 1992 Excellent System / Jaleco @source:excellent/dblcrown.cpp dblcrown // (c) 1994 Excellent System +@source:excellent/es9501.cpp +specd9 + @source:excellent/gcpinbal.cpp gcpinbal // (c) 1994 Excellent System pwrflip // (c) 1994 Excellent System @@ -20102,6 +20105,7 @@ poker21 @source:igs/goldstar.cpp 3cdpoker // hack? 3cdpokera // hack? +amaztsk // animalhs // (c) 1991 Suns Co Ltd. animalhsa // (c) 1991 Suns Co Ltd. animalhsb // bootleg @@ -20185,6 +20189,7 @@ fl7_tw // Taiwanese Hardware. goldfrui // bootleg goldstar // (c) 198? IGS goldstbl // (c) 198? IGS +halltsk // hamhouse // bootleg hamhouse9 // bootleg jkrmast // (c) 199? unknown