From 7d7b1fadb9e04c8ca08e645ce48bcc0f1c62eedd Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 25 Nov 2024 19:05:16 +0100 Subject: New systems marked not working ------------------------------ CPS1 Multi Game [hellshinox, H4M573R, NTDEC, Nnap, Hammy, TeamEurope] unknown Belatra slot machine [TeamEurope] - leapfrog/leappad.cpp: verified the Cocopad BIOS ROM matches the corresponding Leappad one [David Haywood, TeamEurope] - tecfri/ambush.cpp: dumped PROMs and unprotected PALs for mariobl [f205v] --- src/emu/xtal.cpp | 1 + src/mame/capcom/cps1.cpp | 63 +++++++++++++++++++++++++++++- src/mame/capcom/cps1.h | 1 + src/mame/capcom/cps1_v.cpp | 3 ++ src/mame/leapfrog/leappad.cpp | 34 +++++++++++++--- src/mame/mame.lst | 2 + src/mame/misc/belatra.cpp | 91 ++++++++++++++++++++++++++++++++----------- src/mame/tecfri/ambush.cpp | 67 +++++++++++-------------------- 8 files changed, 187 insertions(+), 75 deletions(-) diff --git a/src/emu/xtal.cpp b/src/emu/xtal.cpp index 1ee3b6f0f54..15489fcd56c 100644 --- a/src/emu/xtal.cpp +++ b/src/emu/xtal.cpp @@ -486,6 +486,7 @@ const double XTAL::known_xtals[] = { 53'693'175, // 53.693175_MHz_XTAL PSX-based h/w, Sony ZN1-2-based (15x NTSC subcarrier) 54'000'000, // 54_MHz_XTAL Taito JC 55'000'000, // 55_MHz_XTAL Eolith Vega + 56'000'000, // 56_MHz_XTAL ARM7500 based Belatra slot machines 57'272'727, // 57.272727_MHz_XTAL Psikyo SH2 with /2 divider (16x NTSC subcarrier) 57'283'200, // 57.2832_MHz_XTAL Macintosh IIci RBV, 15-inch portrait display 58'000'000, // 58_MHz_XTAL Magic Reel (Play System) diff --git a/src/mame/capcom/cps1.cpp b/src/mame/capcom/cps1.cpp index 9ce6edefa5b..faaf602c524 100644 --- a/src/mame/capcom/cps1.cpp +++ b/src/mame/capcom/cps1.cpp @@ -13898,7 +13898,6 @@ ROM_START( pang3b5 ) ROM_LOAD( "c632.ic1", 0x0200, 0x0117, CRC(0fbd9270) SHA1(d7e737b20c44d41e29ca94be56114b31934dde81) ) ROM_END - /* B-Board 91635B-2 */ /* Note that this USA set seems to be the only one where GFX are stored into EPROMs instead of the usual mask ROMs. */ ROM_START( megaman ) @@ -14431,6 +14430,43 @@ ROM_START( sfzbch ) ROM_LOAD( "sfz63b.1a", 0x0000, 0x0104, CRC(f5a351da) SHA1(a867947d784167b5284efb76a8634ca5713dafdb) ) ROM_END +ROM_START( cps1mult ) + ROM_REGION( 0x4000000, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "prg_0.bin", 0x0000000, 0x800000, CRC(cbb4062c) SHA1(468bd4c381da299491807daad0a2f1a4128d8fce) ) + ROM_LOAD16_WORD_SWAP( "prg_1.bin", 0x0800000, 0x800000, CRC(e434b882) SHA1(d66c92aaaf43e37fc224013e4c93dc02550616e6) ) + ROM_LOAD16_WORD_SWAP( "prg_2.bin", 0x1000000, 0x800000, CRC(2ce2fc75) SHA1(0fc038f0188e91e3490c127877a17b57f5bb10fd) ) + ROM_LOAD16_WORD_SWAP( "prg_3.bin", 0x1800000, 0x800000, CRC(0a93b43e) SHA1(bf3669c3970beacabbe4876d6d302ddcb531aa21) ) + ROM_LOAD16_WORD_SWAP( "prg_4.bin", 0x2000000, 0x800000, CRC(80b6dfb3) SHA1(332daea56d4dc00cceea8b84d9a0872de7f5f48d) ) + ROM_LOAD16_WORD_SWAP( "prg_5.bin", 0x2800000, 0x800000, CRC(bfa503e7) SHA1(0efecaf34832e6db5aad429513df1188a1086e6a) ) + ROM_LOAD16_WORD_SWAP( "prg_6.bin", 0x3000000, 0x800000, CRC(977d2d34) SHA1(1b9ed488f600aa3352ad6a4ce88b385a44f5b598) ) + ROM_LOAD16_WORD_SWAP( "prg_7.bin", 0x3800000, 0x800000, CRC(65b0d8fd) SHA1(1ae4bf558c5884b4429a6bd1b3130076bf0de47a) ) + + ROM_REGION( 0x8000000, "gfx", 0 ) + ROM_LOAD( "ca_0.bin", 0x0000000, 0x0800000, CRC(6819f572) SHA1(08026fe527a3e3e98c4b490f677a6daad9013752) ) + ROM_LOAD( "ca_1.bin", 0x0800000, 0x0800000, CRC(f18256d2) SHA1(0ba49b2f1abc67a08965e43df70aed42b3bc1c31) ) + ROM_LOAD( "ca_2.bin", 0x1000000, 0x0800000, CRC(1f474165) SHA1(c0c3632c1dbadeaea1334cfe8954d091458d773a) ) + ROM_LOAD( "ca_3.bin", 0x1800000, 0x0800000, CRC(1f7f36a7) SHA1(33fb5e280111ce7f1dcf18093285d8834ac76be9) ) + ROM_LOAD( "ca_4.bin", 0x2000000, 0x0800000, CRC(b6c2ae5c) SHA1(e7769bb593d37934280bf7d16d95b867854d4a4b) ) + ROM_LOAD( "ca_5.bin", 0x2800000, 0x0800000, CRC(68e7b97e) SHA1(f2457e0341d8571a81f31497f7a54c6b9b312276) ) + ROM_LOAD( "ca_6.bin", 0x3000000, 0x0800000, CRC(d7df2079) SHA1(ab1ae0fa4b8f3db1390b7504e62b2db2540ab003) ) + ROM_LOAD( "ca_7.bin", 0x3800000, 0x0800000, CRC(76c35a1f) SHA1(8139a759ba9edaad44962a73f494e2af20a49787) ) + ROM_LOAD( "cb_0.bin", 0x4000000, 0x0800000, CRC(c9ca6efc) SHA1(7c2c8b62fd2e10e968e7f739536ba0bc99826ffe) ) + ROM_LOAD( "cb_1.bin", 0x4800000, 0x0800000, CRC(c53de0e5) SHA1(518407210e3afcc43dea776f0cafe735f5b1d0fb) ) + ROM_LOAD( "cb_2.bin", 0x5000000, 0x0800000, CRC(2934a28c) SHA1(ab0a800adee07d485fd2b93be3f56d49cf18078f) ) + ROM_LOAD( "cb_3.bin", 0x5800000, 0x0800000, CRC(ca41ae19) SHA1(ef8fc3b2f7027be4431bcd5954490392b40af329) ) + ROM_LOAD( "cb_4.bin", 0x6000000, 0x0800000, CRC(b9ea6163) SHA1(9759ee1ec434406c1640743266a8576ca112dd92) ) + ROM_LOAD( "cb_5.bin", 0x6800000, 0x0800000, CRC(74a402f2) SHA1(1d04ae19d0ed81532a01c8c069267fc6474fabdd) ) + ROM_LOAD( "cb_6.bin", 0x7000000, 0x0800000, CRC(73f471e1) SHA1(d0a56fb43c0b8f37d60c728bd4fc8abeeb294774) ) + ROM_LOAD( "cb_7.bin", 0x7800000, 0x0800000, CRC(7570e1f0) SHA1(e19243d21ee126c62f5e96150dd04c1ff8a18868) ) + + ROM_REGION( 0x100000, "audiocpu", 0 ) + ROM_LOAD( "m1_074733.bin", 0x000000, 0x100000, CRC(fbb43b64) SHA1(099e02ba2e3e2b04bb99144009927dac584f89f0) ) + + ROM_REGION( 0x400000, "oki", 0 ) /* Samples */ + ROM_LOAD( "mx29f1610mcpsop44.u18", 0x000000, 0x200000, CRC(69cd2a53) SHA1(f5d78d7f4a807d5124cc8d48e57d283c3ddf972b) ) + ROM_LOAD( "mx29f1610mcpsop44.u19a", 0x200000, 0x200000, CRC(4a0cebaa) SHA1(9384780fad82310122ac930bafe2e2c48b562676) ) +ROM_END + uint16_t cps_state::sf2rb_prot_r(offs_t offset) { @@ -14661,8 +14697,28 @@ void cps_state::init_pang3() init_pang3b(); } +void cps_state::init_cps1mult() +{ + init_cps1(); + + uint8_t *rom = memregion("maincpu")->base(); + int rom_size = memregion("maincpu")->bytes(); + std::vector buffer(rom_size); + memcpy(&buffer[0], rom, rom_size); + + for (int i = 0; i < rom_size; i++) + rom[i] = buffer[bitswap<28>(i, 27, 26, 18, 23, 16, 17, 21, 24, 19, 25, 22, 20, 5, 6, 7, 8, 13, 15, 14, 9, 10, 12, 11, 1, 2, 3, 4, 0)]; + + uint8_t *gfxrom = memregion("gfx")->base(); + rom_size = memregion("gfx")->bytes(); + std::vector gfxbuffer(rom_size); + memcpy(&gfxbuffer[0], gfxrom, rom_size); + for (int i = 0; i < rom_size; i++) + gfxrom[i] = gfxbuffer[bitswap<28>(i, 27, 1, 20, 21, 18, 19, 23, 25, 2, 26, 24, 22, 7, 8, 9, 10, 15, 17, 16, 11, 12, 14, 13, 3, 4, 5, 6, 0)]; // TODO: 25 and 26 to be verified +} + /* -Pang 3b4 - code accesso to $5762b0 and $57a2b0 (PIC) +Pang 3b4 - code access to $5762b0 and $57a2b0 (PIC) --------- Dip switch decoding --------- 0E001A: move.b $80001c.l, D0 ; !Dip switch B @@ -15068,4 +15124,7 @@ CONS( 1995, sfzch, 0, 0, cps1_12MHz, sfzch, cps_state, init_cps1, "Capcom", CONS( 1995, sfach, sfzch, 0, cps1_12MHz, sfzch, cps_state, init_cps1, "Capcom", "Street Fighter Alpha: Warriors' Dreams (CPS Changer, Publicity USA 950727)", MACHINE_SUPPORTS_SAVE ) CONS( 1995, sfzbch, sfzch, 0, cps1_12MHz, sfzch, cps_state, init_cps1, "Capcom", "Street Fighter Zero (CPS Changer, Brazil 950727)", MACHINE_SUPPORTS_SAVE ) +/* CPS1 multi game bootleg */ +GAME( 199?, cps1mult, 0, cps1_12MHz, sf2, cps_state, init_cps1mult, ROT0, "bootleg", "CPS1 Multi Game", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // needs game selection support via DIP switches + // Ken Sei Mogura: Street Fighter II - see capcom/kenseim.cpp diff --git a/src/mame/capcom/cps1.h b/src/mame/capcom/cps1.h index f0586ffed64..acc3a12b34a 100644 --- a/src/mame/capcom/cps1.h +++ b/src/mame/capcom/cps1.h @@ -149,6 +149,7 @@ public: void varthb3(machine_config &config); void init_cps1(); + void init_cps1mult(); void init_sf2ee(); void init_wof(); void init_dino(); diff --git a/src/mame/capcom/cps1_v.cpp b/src/mame/capcom/cps1_v.cpp index b6981fc02a5..1c1837407f4 100644 --- a/src/mame/capcom/cps1_v.cpp +++ b/src/mame/capcom/cps1_v.cpp @@ -2013,6 +2013,9 @@ static const struct CPS1config cps1_config_table[]= {"kenseim", CPS_B_21_DEF, mapper_KNM10B }, + /* CPS1 multi game bootleg */ + {"cps1mult", CPS_B_21_DEF, mapper_CP1B1F }, // TODO: not correct for all games + {nullptr} /* End of table */ }; diff --git a/src/mame/leapfrog/leappad.cpp b/src/mame/leapfrog/leappad.cpp index a715c63715f..de34fb49c18 100644 --- a/src/mame/leapfrog/leappad.cpp +++ b/src/mame/leapfrog/leappad.cpp @@ -4,11 +4,12 @@ LEAPPAD: Example-Video: https://www.youtube.com/watch?v=LtUhENu5TKc - The LEAPPAD is basically compareable to the SEGA PICO, but without + The LEAPPAD is basically comparable to the SEGA PICO, but without Screen-Output! Each "Game" consists of two parts (Book + Cartridge). Insert the cartridge into the system and add the Book on the Top of the "console" and you can click on each pages and hear sounds or learning-stuff on each page... + Note: The Cocopad shares the same BIOS as the Leappad (CRC32 c886cddc) MY FIRST LEAPPAD: Basically the same as the LEAPPAD, but for even younger kids! (Cartridge @@ -22,7 +23,7 @@ also released some kind of Tablet with this name, and they even released a new "LEAPPAD" in around 2016: https://www.youtube.com/watch?v=MXFSgj6xLTU , which nearly looks like the - same, but is most likely techically completely different... + same, but is most likely technically completely different... The cartridges pinout is the same on the three systems: A1 N/C (A21?) @@ -66,14 +67,36 @@ B19 D4 B20 GND + Cocopad BIOS pinout: + +-----------+ + A23-| |- GND + A21-| |- A22 + A18-| |- A20 + A17-| |- A19 + A07-| |- A08 + A06-| |- A09 + A05-| |- A10 + A04-| |- A11 + A03-| |- A12 + A02-| |- A13 + A01-| |- A14 + A00-| |- A15 + CE-| |- A16 + GND-| |- CE + OE-| |- A-1 + D00-| |- D07 + D01-| |- D06 + D02-| |- D05 + D03-| |- D04 + VCC-| |- GND + +-----------+ *******************************************************************************/ #include "emu.h" -#include "cpu/mcs51/mcs51.h" - #include "bus/generic/slot.h" #include "bus/generic/carts.h" +#include "cpu/mcs51/mcs51.h" #include "screen.h" #include "softlist_dev.h" @@ -96,10 +119,11 @@ public: void leapfrog_mfleappad(machine_config &config); void leapfrog_ltleappad(machine_config &config); -private: +protected: virtual void machine_start() override ATTR_COLD; virtual void machine_reset() override ATTR_COLD; +private: void prog_map(address_map &map) ATTR_COLD; void ext_map(address_map &map) ATTR_COLD; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index b991f710c24..a17296ec85a 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -15250,6 +15250,7 @@ cawingr1 // 09/10/1990 (c) 1990 (World) cawingu // 30/11/1990 (c) 1990 (USA) cawingur1 // 12/10/1990 (c) 1990 (USA) chikij // 19/06/1990 (c) 1990 (Japan) +cps1mult // bootleg cworld2j // 11/06/1992 (c) 1992 (Japan) cworld2ja // 11/06/1992 (c) 1992 (Japan) cworld2jb // 11/06/1992 (c) 1992 (Japan) @@ -29153,6 +29154,7 @@ fairyl2bl // ldrink // ldrinka // merryjn // +unkbel // @source:misc/bingoman.cpp bingoman // diff --git a/src/mame/misc/belatra.cpp b/src/mame/misc/belatra.cpp index d33a838458c..bd17ec5b7f1 100644 --- a/src/mame/misc/belatra.cpp +++ b/src/mame/misc/belatra.cpp @@ -7,8 +7,38 @@ SoC is suspected to be an ARM7500 or similar. +The following hardware description comes from PCB with "GS Unterhaltungssysteme Vertriebs- & Produktions GmbH" sticker. +However they were probably only the distributor. The hardware is currently believed to be the same or cloned: + +ULN2803A: DD5 & DD6 & DD4 +MM74HC273: DD1, DD2, DD3 +MM74HC244: DD7, DD8, DD9, DD10 +DS1309: DD14 +PALCE16V8: DD21 +V62C518256L: DD13 +29F160: DD11, DD12 +CL-PS7500FE56QC: DD15 +74AC04: DD19 +EPSON 11.0592: DD17 +EPSON 56.0000: DD18 +CS4334K: DA1 +ADM691AR 0228 138074.1: DD20 +AT90S2313-10PI: DD16 +ADM208EAR 0230 140807.1: DD22 + +RAM-Modul: 8x MT4C4M4E8DJ + +Markings on the board: +CTE 002 94V-0 0245 +002BG358A + +Markings on the RAM-Modul: +MICRON TECHNOLOGY INC. +099 D U.S.A. +4096-43-73 ET + TODO: -- just a skeleton and everything is complete guesswork. +- just a skeleton. */ /* @@ -79,10 +109,11 @@ void belatra_state::program_map(address_map &map) { map(0x00000000, 0x001fffff).rom().region("maincpu", 0x000000); // TODO: implement this as proper flash ROM device map(0x00800000, 0x009fffff).rom().region("maincpu", 0x200000); // " - map(0x03200000, 0x032001ff).m(m_iomd, FUNC(arm7500fe_iomd_device::map)); // TODO: writes to some unimplemented registers - //map(0x03340000, 0x03340003).r; - //map(0x03400000, 0x037fffff).w(m_vidc, FUNC(arm_vidc20_device::write)); - //map(0x08000000, 0x0800000f).r; + map(0x03200000, 0x032001ff).m(m_iomd, FUNC(arm7500fe_iomd_device::map)); // TODO: the games write to adn read from some unimplemented registers + // msecr_r is hardcoded to return 0x80 but these games seem to expect 0x20, too + // map(0x03340000, 0x03340003).lr32(NAME([this] () -> uint32_t { return machine().rand() & 0x01; })); + // map(0x03400000, 0x037fffff).w(m_vidc, FUNC(arm_vidc20_device::write)); + // map(0x08000000, 0x0800000f).r; map(0x10000000, 0x13ffffff).ram(); map(0x14000000, 0x17ffffff).ram(); } @@ -92,7 +123,7 @@ INPUT_PORTS_END void belatra_state::belatra(machine_config &config) { - ARM7500(config, m_maincpu, 54'000'000); // CPU type and clock guessed + ARM7500(config, m_maincpu, 56_MHz_XTAL); m_maincpu->set_addrmap(AS_PROGRAM, &belatra_state::program_map); SCREEN(config, "screen", SCREEN_TYPE_RASTER); @@ -102,7 +133,7 @@ void belatra_state::belatra(machine_config &config) m_vidc->vblank().set(m_iomd, FUNC(arm_iomd_device::vblank_irq)); m_vidc->sound_drq().set(m_iomd, FUNC(arm_iomd_device::sound_drq)); - ARM7500FE_IOMD(config, m_iomd, 54'000'000); // CPU type and clock guessed + ARM7500FE_IOMD(config, m_iomd, 56_MHz_XTAL); m_iomd->set_host_cpu_tag(m_maincpu); m_iomd->set_vidc_tag(m_vidc); m_iomd->iocr_read_od<0>().set([this] () { logerror("%s: IOCR read OD 0\n", machine().describe_context()); return 0; }); @@ -123,59 +154,73 @@ void belatra_state::belatra(machine_config &config) ROM_START( merryjn ) - ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD( "am29f160bd_mery_up.bin", 0x000000, 0x200000, CRC(475161a5) SHA1(784904ffb949e56cac1126eaacf09db19a51b2f0) ) ROM_LOAD( "am29f160bd_mery_down.bin", 0x200000, 0x200000, CRC(f8b6354c) SHA1(6de6e0c7927d2d673ac3fd5dc1c8263a73dcbb14) ) ROM_END ROM_START( fairyl2 ) - ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD( "zfl2-1belatra.bin", 0x000000, 0x200000, CRC(cb0f3eba) SHA1(a7776810cfe037c25c196bbe900e5e17a2005d2d) ) ROM_LOAD( "zfl2-2belatra.bin", 0x200000, 0x200000, CRC(755fad4b) SHA1(12243fdf95fcdd9012d1bbde6a18abb00918f560) ) - ROM_REGION( 0x400000, "others", ROMREGION_ERASEFF ) - ROM_LOAD( "at90s2313_fl2.bin", 0x0000, 0x000800, CRC(38e2d37e) SHA1(78178cb3ea219a71d1f15ffde722f9c03ad64dda) ) + ROM_REGION( 0x800, "mcu", 0 ) + ROM_LOAD( "at90s2313_fl2.bin", 0x000, 0x800, CRC(38e2d37e) SHA1(78178cb3ea219a71d1f15ffde722f9c03ad64dda) ) ROM_END ROM_START( fairyl2a ) - ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD( "fairy_land2_up_original.bin", 0x000000, 0x200000, CRC(e9c24e75) SHA1(c80acfdcab4ed098596cd3f92a38086881344bb2) ) ROM_LOAD( "fairy_land2_dw_original.bin", 0x200000, 0x200000, CRC(9d07818f) SHA1(8427b264ef03379cd6f3fbe4f5e141837ffef6fe) ) ROM_END ROM_START( fairyl2b ) - ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD( "zfl2-1 china.bin", 0x000000, 0x200000, CRC(3bfd7a0f) SHA1(e67c3fa27e5945de23efb8cb9899bcb23808e4cf) ) ROM_LOAD( "zfl2-2 china.bin", 0x200000, 0x200000, CRC(1e1e172a) SHA1(6fb2eec95947ec7995f9c3c52f26b2c6dd5fd6b9) ) ROM_END ROM_START( fairyl2bl ) - ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD( "fairy_land2_up_pirate.bin", 0x000000, 0x200000, CRC(e9c24e75) SHA1(c80acfdcab4ed098596cd3f92a38086881344bb2) ) ROM_LOAD( "fairy_land2_dw_pirate.bin", 0x200000, 0x200000, CRC(00bf73d0) SHA1(3fa81815b4bbb5ed4dcd64afa1ad799a5a0bd48e) ) ROM_END ROM_START( ldrink ) - ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD( "lucky_up.bin", 0x000000, 0x200000, CRC(5d5277cc) SHA1(893369a58ea3ba3c7ba82a4cc4b1ffdbcc6745e2) ) ROM_LOAD( "lucky_down.bin", 0x200000, 0x200000, CRC(e4c5b32a) SHA1(c8c44a7e35bbc88ba271566f8324b71818aa223c) ) ROM_END ROM_START( ldrinka ) - ROM_REGION( 0x400000, "maincpu", ROMREGION_ERASEFF ) + ROM_REGION( 0x400000, "maincpu", 0 ) ROM_LOAD( "zld-0012534-1belatra.bin", 0x000000, 0x200000, CRC(7a9b1e9f) SHA1(d9c7551b812bda509ba5ade09d2f82a77a5215d3) ) ROM_LOAD( "zld-0012534-2belatra.bin", 0x200000, 0x200000, CRC(e3e74597) SHA1(0157dbf806eb2e5f0c9b9e8ed68d38748a713a6e) ) ROM_END +ROM_START( unkbel ) + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD( "29f160.dd11", 0x000000, 0x200000, CRC(cd92dd9d) SHA1(24aee4e3d986750183cb110bb3497da4c8179f73) ) + ROM_LOAD( "29f160.dd12", 0x200000, 0x200000, CRC(d03e57b8) SHA1(557ad08bbc5992f11722c04aba8ff52cf93ffe59) ) // 1xxxxxxxxxxxxxxxxxxxx = 0xFF + + ROM_REGION( 0x800, "mcu", ROMREGION_ERASE00 ) + ROM_LOAD( "at90s2313.dd16", 0x000, 0x800, NO_DUMP ) // protected + + ROM_REGION( 0x117, "plds", ROMREGION_ERASE00 ) + ROM_LOAD( "palce16v8.dd21", 0x000, 0x117, NO_DUMP ) // dumped as 27C020, needs reduction +ROM_END + } // anonymous namespace -GAME( 2004, fairyl2, 0, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Fairy Land 2 (set 1)", MACHINE_IS_SKELETON ) -GAME( 2004, fairyl2a, fairyl2, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Fairy Land 2 (set 2)", MACHINE_IS_SKELETON ) -GAME( 2004, fairyl2b, fairyl2, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Fairy Land 2 (set 3)", MACHINE_IS_SKELETON ) -GAME( 2004, fairyl2bl, fairyl2, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Fairy Land 2 (bootleg)", MACHINE_IS_SKELETON ) +GAME( 2004, fairyl2, 0, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Fairy Land 2 (set 1)", MACHINE_IS_SKELETON ) +GAME( 2004, fairyl2a, fairyl2, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Fairy Land 2 (set 2)", MACHINE_IS_SKELETON ) +GAME( 2004, fairyl2b, fairyl2, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Fairy Land 2 (set 3)", MACHINE_IS_SKELETON ) +GAME( 2004, fairyl2bl, fairyl2, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Fairy Land 2 (bootleg)", MACHINE_IS_SKELETON ) + +GAME( 2004, ldrink, 0, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Lucky Drink (set 1)", MACHINE_IS_SKELETON ) +GAME( 2004, ldrinka, ldrink, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Lucky Drink (set 2)", MACHINE_IS_SKELETON ) -GAME( 2004, ldrink, 0, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Lucky Drink (set 1)", MACHINE_IS_SKELETON ) -GAME( 2004, ldrinka, ldrink, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Lucky Drink (set 2)", MACHINE_IS_SKELETON ) +GAME( 2004, merryjn, 0, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Merry Joiner", MACHINE_IS_SKELETON ) -GAME( 2004, merryjn, 0, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "Merry Joiner", MACHINE_IS_SKELETON ) +GAME( 200?, unkbel, 0, belatra, belatra, belatra_state, empty_init, ROT0, "Belatra", "unknown Belatra slot machine", MACHINE_IS_SKELETON ) diff --git a/src/mame/tecfri/ambush.cpp b/src/mame/tecfri/ambush.cpp index dee39906f16..f4d5e1a8547 100644 --- a/src/mame/tecfri/ambush.cpp +++ b/src/mame/tecfri/ambush.cpp @@ -81,8 +81,7 @@ public: private: void ambush_palette(palette_device &palette) const; - void mario_palette(palette_device &palette) const; - void mariobla_palette(palette_device &palette) const; + void mariobl_palette(palette_device &palette) const; void dkong3_palette(palette_device &palette) const; uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -337,36 +336,7 @@ void ambush_state::ambush_palette(palette_device &palette) const } } -void ambush_state::mario_palette(palette_device &palette) const -{ - uint8_t const *const color_prom = memregion("colors")->base(); - - for (int i = 0; i < palette.entries(); i++) - { - int bit0, bit1, bit2; - - // red component - bit0 = BIT(color_prom[i], 5); - bit1 = BIT(color_prom[i], 6); - bit2 = BIT(color_prom[i], 7); - int const r = 255 - (0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2); - - // green component - bit0 = BIT(color_prom[i], 2); - bit1 = BIT(color_prom[i], 3); - bit2 = BIT(color_prom[i], 4); - int const g = 255 - (0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2); - - // blue component - bit0 = BIT(color_prom[i], 0); - bit1 = BIT(color_prom[i], 1); - int const b = 255 - (0x55 * bit0 + 0xaa * bit1); - - palette.set_pen_color(i, rgb_t(r, g, b)); - } -} - -void ambush_state::mariobla_palette(palette_device &palette) const +void ambush_state::mariobl_palette(palette_device &palette) const { uint8_t const *const color_prom = memregion("colors")->base(); @@ -767,7 +737,7 @@ void ambush_state::ambush(machine_config &config) m_outlatch[1]->q_out_cb<7>().set(FUNC(ambush_state::coin_counter_2_w)); } -void ambush_state::mariobl(machine_config &config) +void ambush_state::mariobla(machine_config &config) { ambush_base(config); subdevice("maincpu")->set_addrmap(AS_PROGRAM, &ambush_state::bootleg_map); @@ -775,7 +745,7 @@ void ambush_state::mariobl(machine_config &config) // To be verified: do these bootlegs only have one LS259? ls259_device &outlatch(LS259(config, "outlatch")); outlatch.q_out_cb<4>().set(FUNC(ambush_state::coin_counter_1_w)); - outlatch.q_out_cb<6>().set(FUNC(ambush_state::color_bank_1_w)); + outlatch.q_out_cb<5>().set(FUNC(ambush_state::color_bank_1_w)); MCFG_MACHINE_START_OVERRIDE(ambush_state, mariobl) @@ -783,7 +753,7 @@ void ambush_state::mariobl(machine_config &config) m_gfxdecode->set_info(gfx_mariobl); - subdevice("palette")->set_init(FUNC(ambush_state::mario_palette)); + subdevice("palette")->set_init(FUNC(ambush_state::mariobl_palette)); ay8910_device &ay1(AY8910(config.replace(), "ay1", XTAL(18'432'000)/6/2)); ay1.port_a_read_callback().set_ioport("buttons"); @@ -794,15 +764,13 @@ void ambush_state::mariobl(machine_config &config) ay2.add_route(ALL_OUTPUTS, "mono", 0.33); } -void ambush_state::mariobla(machine_config &config) +void ambush_state::mariobl(machine_config &config) { - mariobl(config); - - subdevice("palette")->set_init(FUNC(ambush_state::mariobla_palette)); + mariobla(config); auto &outlatch(*subdevice("outlatch")); - outlatch.q_out_cb<5>().set(FUNC(ambush_state::color_bank_1_w)); - outlatch.q_out_cb<6>().set_nop(); + outlatch.q_out_cb<5>().set_nop(); + outlatch.q_out_cb<6>().set(FUNC(ambush_state::color_bank_1_w)); } void ambush_state::dkong3abl(machine_config &config) @@ -923,10 +891,19 @@ ROM_START( mariobl ) ROM_LOAD("mbjba-1.3l", 0x4000, 0x2000, CRC(c772cb8f) SHA1(7fd6dd9888928fad5c50d96b4ecff954ea8975ce)) ROM_REGION(0x200, "colors", 0) - ROM_LOAD("a.bpr", 0x000, 0x100, NO_DUMP) - ROM_LOAD("b.bpr", 0x100, 0x100, NO_DUMP) - // taken from mario - ROM_LOAD("tma1-c-4p.4p", 0x000, 0x200, CRC(afc9bd41) SHA1(90b739c4c7f24a88b6ac5ca29b06c032906a2801)) + ROM_LOAD("n82s147n.15", 0x000, 0x200, CRC(6a109f4b) SHA1(b117f85728afc6d3efeff0a7075b797996916f6e)) + + ROM_REGION(0x200, "other_prom", 0) + ROM_LOAD("n82s147n.13", 0x000, 0x200, CRC(a334e4f3) SHA1(b15e3d9851b43976e98c47e3365c1b69022b0a7d)) + + ROM_REGION(0xb00, "plds", ROMREGION_ERASE00) + ROM_LOAD("82s153.2", 0x000, 0x0eb, CRC(3b6ec269) SHA1(447cb00549b606f870f8b7a78aa241acacd4dc5c)) + ROM_LOAD("82s153.4", 0x100, 0x0eb, CRC(8e227b3e) SHA1(6ff6c705269de46a8498fbcc13dd09e92e45b732)) + ROM_LOAD("82s153.11", 0x200, 0x0eb, CRC(9da5e80d) SHA1(3bd1a55e68a7e6b7590fe3c15ae2e3a36b298fa6)) + ROM_LOAD("pal16x4cj.10", 0x300, 0x104, CRC(d2731879) SHA1(81d4719f0a93d8bf8fb113693fc3ffb67c12248b)) + ROM_LOAD("pal16r4cn.1", 0x500, 0x104, NO_DUMP ) // read protected + ROM_LOAD("pal16r4cn.5", 0x700, 0x104, NO_DUMP ) // read protected + ROM_LOAD("pal16r4cn.6", 0x900, 0x104, NO_DUMP ) // read protected ROM_END ROM_START( mariobla ) -- cgit v1.2.3