diff --git a/src/mame/bmc/popobear.cpp b/src/mame/bmc/popobear.cpp index a9e2401a017..1d29d2fdc2c 100644 --- a/src/mame/bmc/popobear.cpp +++ b/src/mame/bmc/popobear.cpp @@ -8,11 +8,12 @@ Popo Bear (c) 2000 BMC TODO: - BGM seems quite off; - timer chip (controls auto-animation on title screen + something else during gameplay?); -- complete I/Os; +- complete I/Os (BMC-A00211 PCB has 4 banks of DIPs but only 1 is hooked up?); - Identify what's on $600000 & $620000; - Uses tas opcode to sync to irq, from VDP? - magkengo: doesn't boot, same as popobear would do without the 0x620000 work-around, but it doesn't read there. +- qiwang: uses unhandled GFX features, needs correct I/O =================================================================================================== @@ -108,7 +109,8 @@ public: m_tilemap_base[3] = 0xfc000; } - void popobear(machine_config &config); + void popobear(machine_config &config) ATTR_COLD; + void qiwang(machine_config &config) ATTR_COLD; protected: virtual void video_start() override ATTR_COLD; @@ -131,6 +133,7 @@ private: void irq_ack_w(uint8_t data); void vram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + template uint8_t _620000_r(); uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); @@ -138,6 +141,7 @@ private: TIMER_DEVICE_CALLBACK_MEMBER(scanline_cb); void main_map(address_map &map) ATTR_COLD; + void qiwang_main_map(address_map &map) ATTR_COLD; }; @@ -260,9 +264,9 @@ void popobear_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec // this isn't understood, not enough evidence. switch (param & 3) { - case 0x0: // not used? - color_bank = (machine().rand() & 0x3); - add_it = color_bank*0x40; + case 0x0: // girls in the intro (qiwang) + //color_bank = (machine().rand() & 0x3); + add_it = color_bank * 0x40; break; case 0x1: // butterflies in intro, enemy characters, line of characters, stage start text @@ -281,10 +285,9 @@ void popobear_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprec break; } - if (param == 0) + if (param == 0) // this avoids some glitches during the intro in popobear, when the panda gets stunned continue; - spr_num <<= 3; for (int yi = 0; yi < height; yi++) @@ -327,7 +330,7 @@ uint32_t popobear_state::screen_update(screen_device &screen, bitmap_ind16 &bitm //popmessage("%04x",m_vregs[0/2]); uint16_t* vreg = m_vregs; -// popmessage("%04x %04x %04x %04x %04x %04x %04x - %04x - %04x %04x",vreg[0x00],vreg[0x01],vreg[0x02],vreg[0x03],vreg[0x04],vreg[0x05],vreg[0x06], vreg[0x0b],vreg[0x0e],vreg[0x0f]); + // popmessage("%04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x %04x",vreg[0x00],vreg[0x01],vreg[0x02],vreg[0x03],vreg[0x04],vreg[0x05],vreg[0x06], vreg[0x07],vreg[0x08],vreg[0x09],vreg[0x0a],vreg[0x0b],m_vregs[0x0c],m_vregs[0x0d],vreg[0x0e],vreg[0x0f]); // vreg[0x00] also looks like it could be some enable registers // 0x82ff - BMC logo @@ -346,13 +349,13 @@ uint32_t popobear_state::screen_update(screen_device &screen, bitmap_ind16 &bitm int const enable2 = (m_vregs[0x0d] & 0xff00) >> 8; int const enable3 = (m_vregs[0x0d] & 0x00ff) >> 0; - if ((enable0 != 0x00) && (enable0 != 0x0d) && (enable0 != 0x1f)) popmessage("unknown enable0 value %02x", enable0); - if ((enable1 != 0x00) && (enable1 != 0x0d) && (enable1 != 0x1f)) popmessage("unknown enable1 value %02x", enable1); - if ((enable2 != 0x00) && (enable2 != 0x0d)) popmessage("unknown enable2 value %02x", enable2); - if ((enable3 != 0x00) && (enable3 != 0x0d)) popmessage("unknown enable3 value %02x", enable3); + if ((enable0 != 0x00) && (enable0 != 0x0d) && (enable0 != 0x1f)) logerror("unknown enable0 value %02x\n", enable0); + if ((enable1 != 0x00) && (enable1 != 0x0d) && (enable1 != 0x1f)) logerror("unknown enable1 value %02x\n", enable1); + if ((enable2 != 0x00) && (enable2 != 0x0d)) logerror("unknown enable2 value %02x\n", enable2); + if ((enable3 != 0x00) && (enable3 != 0x0d)) logerror("unknown enable3 value %02x\n", enable3); - // the lower 2 tilemaps use regular scrolling + // for popobear, the lower 2 tilemaps use regular scrolling. qiwang doesn't seem to agree m_bg_tilemap[2]->set_scrollx(0, vreg[0x07]); m_bg_tilemap[2]->set_scrolly(0, vreg[0x08]); @@ -417,7 +420,8 @@ uint32_t popobear_state::screen_update(screen_device &screen, bitmap_ind16 &bitm m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0); } - draw_sprites(bitmap, cliprect); + if (BIT(m_vregs[0x00], 8)) + draw_sprites(bitmap, cliprect); return 0; } @@ -431,6 +435,14 @@ void popobear_state::irq_ack_w(uint8_t data) } } +template +uint8_t popobear_state::_620000_r() +{ + // TODO: checked while flipping bit 0 in clock select fashion at POST + // refuses to boot with either bits 1-2 high. + return Mystery_value; +} + void popobear_state::main_map(address_map &map) { map.unmap_value_high(); @@ -469,16 +481,19 @@ void popobear_state::main_map(address_map &map) map(0x550000, 0x550003).w("ymsnd", FUNC(ym2413_device::write)).umask16(0x00ff); // map(0x600000, 0x600001).nopw(); // activated during transitions, bits 0-3 - map(0x620000, 0x620000).lr8( - NAME([] (offs_t offset) { - // TODO: checked while flipping bit 0 in clock select fashion at POST - // refuses to boot with either bits 1-2 high. - return 9; - }) - ); + map(0x620000, 0x620000).r(FUNC(popobear_state::_620000_r<0x09>)); map(0x800000, 0xbfffff).rom().region("gfx_data", 0); } +void popobear_state::qiwang_main_map(address_map &map) +{ + main_map(map); + + map(0x500000, 0x500001).lr16(NAME([] () -> uint16_t { return 0x0000; })); // TODO: while booting, it specifically checks for this not to return 0xffff. Any other value is ok + map(0x620000, 0x620000).r(FUNC(popobear_state::_620000_r<0x01>)); +} + + // TODO: unconfirmed diplocations static INPUT_PORTS_START( popobear ) PORT_START("IN0") @@ -602,6 +617,12 @@ void popobear_state::popobear(machine_config &config) OKIM6295(config, "oki", XTAL(42'000'000) / 32, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 1.0); // divisor guessed } +void popobear_state::qiwang(machine_config &config) +{ + popobear(config); + + m_maincpu->set_addrmap(AS_PROGRAM, &popobear_state::qiwang_main_map); +} ROM_START( popobear ) ROM_REGION( 0x040000, "maincpu", 0 ) @@ -618,6 +639,23 @@ ROM_START( popobear ) ROM_LOAD( "popobear_ta-a-901.u9", 0x00000, 0x40000, CRC(f1e94926) SHA1(f4d6f5b5811d90d0069f6efbb44d725ff0d07e1c) ) ROM_END +// exactly same PCB as popobear. +// All labels have 棋王 prepended to what's below, with the exception of mj-57 which has a sticker 'BMC 棋王' on the upper part of the label +ROM_START( qiwang ) + ROM_REGION( 0x040000, "maincpu", 0 ) + ROM_LOAD16_BYTE( "mj-03.u3", 0x000001, 0x020000, CRC(3cf3ff12) SHA1(dd4347b44a45822e7bfddffb0afadd65d398bea6) ) + ROM_LOAD16_BYTE( "mj-04.u4", 0x000000, 0x020000, CRC(03a0d290) SHA1(d8fb1e6780d31ebf8cdc6ae14301d1f8c25380c6) ) + // u1 and u2 not populated + + ROM_REGION16_BE( 0x400000, "gfx_data", ROMREGION_ERASE00 ) + ROM_LOAD16_BYTE( "mj-57.u5", 0x000001, 0x100000, CRC(50871b0c) SHA1(01279d844cae699eb76a90b8c4b3915ae538c12e) ) + ROM_LOAD16_BYTE( "mj-68.u6", 0x000000, 0x100000, CRC(9692bb92) SHA1(6282054a41eda1b1fc1de5096bc2440a386d9f99) ) + // u7 and u8 not populated + + ROM_REGION( 0x040000, "oki", 0 ) + ROM_LOAD( "mj-09.u9", 0x00000, 0x20000, CRC(dc6326bf) SHA1(88bb77f46f04cc8824a6ac52a2eee32cbe813a26) ) +ROM_END + // HERBHOME 20A23-1 PCB. Mostly same components as popobear's (BMC AIA90423, BMC AIA90610, OKI6295, 42 MHz XTAL, etc.), different layout. // Has a Altera MAX EPM7064SLC84-10 and only 1 8-DIP bank // Has Herb Home 2003 copyright in ROM but stickers have 2005. TODO: Verify date on title screen when it boots. @@ -654,6 +692,10 @@ ROM_END } // anonymous namespace +// BMC-A00211 PCB GAME( 2000, popobear, 0, popobear, popobear, popobear_state, empty_init, ROT0, "BMC", "PoPo Bear", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_SUPPORTS_SAVE ) +GAME( 2010, qiwang, 0, qiwang, popobear, popobear_state, empty_init, ROT0, "Herb Home", "Qi Wang", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_SUPPORTS_SAVE ) + +// HERBHOME 20A23-* PCB GAME( 2005, magkengo, 0, popobear, popobear, popobear_state, empty_init, ROT0, "Herb Home", "Magical Kengo 2005 (Ver. 1.2)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_SUPPORTS_SAVE ) GAME( 2005, magkengou, magkengo, popobear, popobear, popobear_state, empty_init, ROT0, "Herb Home", "Magical Kengo 2005 (Ver. USA 1.10)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_TIMING | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/capcom/cps1.cpp b/src/mame/capcom/cps1.cpp index d745393c2d2..2f5d18934a1 100644 --- a/src/mame/capcom/cps1.cpp +++ b/src/mame/capcom/cps1.cpp @@ -6942,7 +6942,7 @@ ROM_START( nemor1 ) ROM_LOAD( "iob1.11e", 0x0000, 0x0117, CRC(3abc0700) SHA1(973043aa46ec6d5d1db20dc9d5937005a0f9f6ae) ) ROM_END -/* B-Board 89622B-3 */ +/* B-Board 88622B-3 */ ROM_START( nemoj ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_BYTE( "nmj_36a.12f", 0x00000, 0x20000, CRC(daeceabb) SHA1(ebd44922be9d07a3d3411af52edee8a60cb11dad) ) @@ -14981,7 +14981,7 @@ GAME( 1990, cawingur1, cawing, cps1_10MHz, cawing, cps_state, init_cps1, GAME( 1990, cawingj, cawing, cps1_10MHz, cawing, cps_state, init_cps1, ROT0, "Capcom", "U.S. Navy (Japan 901012)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, nemo, 0, cps1_10MHz, nemo, cps_state, init_cps1, ROT0, "Capcom", "Nemo (World 901130)", MACHINE_SUPPORTS_SAVE ) // "ETC" GAME( 1990, nemor1, nemo, cps1_10MHz, nemo, cps_state, init_cps1, ROT0, "Capcom", "Nemo (World 901109)", MACHINE_SUPPORTS_SAVE ) // "ETC" -GAME( 1990, nemoj, nemo, cps1_10MHz, nemo, cps_state, init_cps1, ROT0, "Capcom", "Nemo (Japan 901120, 89622B-3 ROM board)", MACHINE_SUPPORTS_SAVE ) +GAME( 1990, nemoj, nemo, cps1_10MHz, nemo, cps_state, init_cps1, ROT0, "Capcom", "Nemo (Japan 901120, 88622B-3 ROM board)", MACHINE_SUPPORTS_SAVE ) GAME( 1990, nemoja, nemo, cps1_10MHz, nemo, cps_state, init_cps1, ROT0, "Capcom", "Nemo (Japan 901120, 89625B-1 ROM board)", MACHINE_SUPPORTS_SAVE ) GAME( 1991, sf2, 0, cps1_10MHz, sf2, cps_state, init_cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910522)", MACHINE_SUPPORTS_SAVE ) // "ETC" GAME( 1991, sf2ea, sf2, cps1_10MHz, sf2, cps_state, init_cps1, ROT0, "Capcom", "Street Fighter II: The World Warrior (World 910204)", MACHINE_SUPPORTS_SAVE ) // "ETC" diff --git a/src/mame/capcom/cps1_v.cpp b/src/mame/capcom/cps1_v.cpp index 673c207da96..c9f9158fc8b 100644 --- a/src/mame/capcom/cps1_v.cpp +++ b/src/mame/capcom/cps1_v.cpp @@ -96,7 +96,7 @@ U.S. Navy (Japan 901012) 89625B-1 CA Nemo (World 901109) 1990 89624B-3 NM24B IOB1 88622-C-5 CPS-B-15 DL-0411-10010 None Nemo (World 901130) 89624B-3 NM24B IOB1 88622-C-5 CPS-B-15 DL-0411-10010 None -Nemo (Japan 901120) 89622B-3 NM22B LWIO 88622-C-5 CPS-B-15 DL-0411-10010 None +Nemo (Japan 901120) 88622B-3 NM22B LWIO 88622-C-5 CPS-B-15 DL-0411-10010 None Nemo (Japan 901120) 89625B-1 NM22B IOB1 88622-C-5 CPS-B-15 DL-0411-10010 None Street Fighter II: The World Warrior (World 910129) 1991 90629B-2 STF29 IOB1 90632C-1 CPS-B-17 DL-0411-10012 C632 diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 73df2d7544a..9ded9e3e3f5 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -15152,6 +15152,7 @@ koftball magkengo magkengou popobear +qiwang @source:bondwell/bw12.cpp bw12 @@ -43183,6 +43184,7 @@ venteta @source:skeleton/vgame.cpp hilice +mjxy @source:skeleton/vp415.cpp vp415 @@ -43604,6 +43606,7 @@ m5p_brno @source:stern/astinvad.cpp astinvad +astinvadb betafrce kamikaze kosmokil diff --git a/src/mame/misc/gms.cpp b/src/mame/misc/gms.cpp index a554f41e9b2..cea8d575bf8 100644 --- a/src/mame/misc/gms.cpp +++ b/src/mame/misc/gms.cpp @@ -2342,6 +2342,7 @@ void gms_2layers_state::init_rbspm() { uint16_t *rom = (uint16_t *)memregion("maincpu")->base(); + // 0x REPAIR rom[0x00520 / 2] = 0x600a; rom[0x00772 / 2] = 0x4e71; rom[0x00774 / 2] = 0x4e71; @@ -2409,14 +2410,22 @@ void gms_3layers_state::init_sc2in1() { uint16_t *rom = (uint16_t *)memregion("maincpu")->base(); + // U135 ERROR rom[0x45f46 / 2] = 0x4e71; rom[0x45f48 / 2] = 0x4e71; - rom[0x45f60 / 2] = 0x6000; - rom[0x45f70 / 2] = 0x4e71; - rom[0x45f72 / 2] = 0x4e71; - rom[0x45f9e / 2] = 0x6000; rom[0x46818 / 2] = 0x4e71; rom[0x4681a / 2] = 0x4e71; + + rom[0x45f60 / 2] = 0x6000; + + // loops endlessly + rom[0x45f70 / 2] = 0x4e71; + rom[0x45f72 / 2] = 0x4e71; + + // U136 ERROR + rom[0x45f9e / 2] = 0x6000; + + // U181 ERROR rom[0x46842 / 2] = 0x4e71; rom[0x46844 / 2] = 0x4e71; } @@ -2482,22 +2491,22 @@ void gms_2layers_state::init_sscs() // mahjong -GAME( 1998, rbmk, 0, rbmk, rbmk, gms_2layers_state, empty_init, ROT0, "GMS", "Shizhan Majiang Wang (Version 8.8)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // misses YM2151 hookup -GAME( 1998, rbspm, 0, rbspm, rbspm, gms_2layers_state, init_rbspm, ROT0, "GMS", "Shizhan Ding Huang Maque (Version 4.1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Misses YM2151 hookup -GAME( 1998, ssanguoj, 0, ssanguoj, ssanguoj, gms_2layers_state, init_ssanguoj, ROT0, "GMS", "Shizhan Sanguo Ji Jiaqiang Ban (Version 8.9 980413)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // stops during boot, patched for now. YM3812 isn't hooked up (goes through undumped MCU). -GAME( 2005, yyhm, 0, magslot, yyhm, gms_3layers_state, init_yyhm, ROT0, "GMS", "Yuanyan Hudie Meng (Version 8.8A 2005-09-25)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. +GAME( 1998, rbmk, 0, rbmk, rbmk, gms_2layers_state, empty_init, ROT0, "GMS", "Shizhan Majiang Wang (Version 8.8)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // misses YM2151 hookup +GAME( 1998, rbspm, 0, rbspm, rbspm, gms_2layers_state, init_rbspm, ROT0, "GMS", "Shizhan Ding Huang Maque (Version 4.1)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Misses YM2151 hookup +GAME( 1998, ssanguoj, 0, ssanguoj, ssanguoj, gms_2layers_state, init_ssanguoj, ROT0, "GMS", "Shizhan Sanguo Ji Jiaqiang Ban (Version 8.9 980413)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // stops during boot, patched for now. YM3812 isn't hooked up (goes through undumped MCU). +GAME( 2005, yyhm, 0, magslot, yyhm, gms_3layers_state, init_yyhm, ROT0, "GMS", "Yuanyang Hudie Meng (Version 8.8A 2005-09-25)", MACHINE_UNEMULATED_PROTECTION | MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. // card games -GAME( 1999, super555, 0, super555, super555, gms_2layers_state, init_super555, ROT0, "GMS", "Super 555 (English version V1.5)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. -GAME( 1999, sscs, 0, super555, sscs, gms_2layers_state, init_sscs, ROT0, "GMS", "San Se Caishen (Version 0502)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. -GAME( 2001, sball2k1, 0, super555, sball2k1, gms_2layers_state, init_sball2k1, ROT0, "GMS", "Super Ball 2001 (Italy version 5.23)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. -GAME( 2001, sc2in1, 0, magslot, sc2in1, gms_3layers_state, init_sc2in1, ROT0, "GMS", "Super Card 2 in 1 (English version 03.23)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. -GAME( 2004, jinpaish, 0, magslot, jinpaish, gms_3layers_state, init_jinpaish, ROT0, "GMS", "Jinpai Show Hand (Chinese version 2004-09-22)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. Also needs correct controls. -GAME( 2005, baile, 0, magslot, baile, gms_3layers_state, init_baile, ROT0, "GMS", "Baile 2005 (V3.2 2005-01-12)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. +GAME( 1999, super555, 0, super555, super555, gms_2layers_state, init_super555, ROT0, "GMS", "Super 555 (English version V1.5)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. +GAME( 1999, sscs, 0, super555, sscs, gms_2layers_state, init_sscs, ROT0, "GMS", "San Se Caishen (Version 0502)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. +GAME( 2001, sball2k1, 0, super555, sball2k1, gms_2layers_state, init_sball2k1, ROT0, "GMS", "Super Ball 2001 (Italy version 5.23)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. +GAME( 2001, sc2in1, 0, magslot, sc2in1, gms_3layers_state, init_sc2in1, ROT0, "GMS", "Super Card 2 in 1 (English version 03.23)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. +GAME( 2004, jinpaish, 0, magslot, jinpaish, gms_3layers_state, init_jinpaish, ROT0, "GMS", "Jinpai Suoha - Show Hand (Chinese version 2004-09-22)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. Also needs correct controls. +GAME( 2005, baile, 0, magslot, baile, gms_3layers_state, init_baile, ROT0, "GMS", "Baile 2005 (V3.2 2005-01-12)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. // slot, on slightly different PCB -GAME( 2003, magslot, 0, magslot, magslot, gms_3layers_state, empty_init, ROT0, "GMS", "Magic Slot (normal 1.0C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // reel / tilemaps priorities are wrong, inputs to be verified. Also needs EEPROM support. +GAME( 2003, magslot, 0, magslot, magslot, gms_3layers_state, empty_init, ROT0, "GMS", "Magic Slot (normal 1.0C)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) // reel / tilemaps priorities are wrong, inputs to be verified. Also needs EEPROM support. // train games -GAME( 2002, ballch, 0, super555, ballch, gms_2layers_state, init_ballch, ROT0, "TVE", "Ball Challenge (20020607 1.0 OVERSEA)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. -GAME( 2005, cots, 0, super555, cots, gms_2layers_state, init_cots, ROT0, "ECM", "Creatures of the Sea (20050328 USA 6.3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. +GAME( 2002, ballch, 0, super555, ballch, gms_2layers_state, init_ballch, ROT0, "TVE", "Ball Challenge (20020607 1.0 OVERSEA)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. +GAME( 2005, cots, 0, super555, cots, gms_2layers_state, init_cots, ROT0, "ECM", "Creatures of the Sea (20050328 USA 6.3)", MACHINE_UNEMULATED_PROTECTION | MACHINE_NOT_WORKING ) // stops during boot, patched for now. Also needs EEPROM support. diff --git a/src/mame/skeleton/vgame.cpp b/src/mame/skeleton/vgame.cpp index 8ebb0792329..2b8b8cb89b2 100644 --- a/src/mame/skeleton/vgame.cpp +++ b/src/mame/skeleton/vgame.cpp @@ -2,7 +2,7 @@ // copyright-holders: /* -Video slots by VGame. +Video slots / mahjongs by VGame. The main components are: rectangular 128-pin chip, marked VGAME-007 (probably CPU) @@ -13,7 +13,7 @@ LY62256SL SRAM (near VGAME-007) U6295 sound chip 2 banks of 8 DIP switches -TODO: everything. CPU core isn't identified and code is encrypted. +TODO: everything. CPU core isn't identified and code is encrypted. Possibly internal ROM? */ @@ -149,9 +149,9 @@ void vgame_state::vgame(machine_config &config) OKIM6295(config, "oki", 44_MHz_XTAL / 44, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 1.0); // pin 7 and clock not verified } - +// VGAME-0030-02-AI PCB ROM_START( hilice ) - ROM_REGION( 0x200000, "maincpu", ROMREGION_ERASE00 ) + ROM_REGION( 0x200000, "maincpu", 0 ) ROM_LOAD( "hi_lice_v102fa.u13", 0x000000, 0x200000, CRC(4da87481) SHA1(5a20b254cfe8a2f087faa0dd17f682218a2ca1b2) ) ROM_REGION( 0x400000, "gfx", 0 ) @@ -162,6 +162,20 @@ ROM_START( hilice ) ROM_LOAD( "hi_lice_sp_100f.u45", 0x000000, 0x200000, CRC(b2588f54) SHA1(0d046e56596611954a9d2a9a30746d8aa370431b) ) // 1xxxxxxxxxxxxxxxxxxxx = 0x00 ROM_END +// VGAME-0030-02-AG PCB, almost identical to the hilice one. +// all labels have 麻將學園 (Mahjong Academy) prepended to what's below. +ROM_START( mjxy ) + ROM_REGION( 0x400000, "maincpu", 0 ) + ROM_LOAD( "u12_v108tw.u12", 0x000000, 0x400000, BAD_DUMP CRC(c9989af0) SHA1(0edd65518688602810549955e79ad3f0edc0b1a5) ) // xxxxxxxxxxxxxxxxxxxx1x = 0xFF + + ROM_REGION( 0x800000, "gfx", 0 ) + ROM_LOAD( "u3_cg_v105.u3", 0x000000, 0x400000, BAD_DUMP CRC(7ed9736c) SHA1(69a3ad01a0582de8b1f206921544063e6eb3b4b0) ) // xxxxxxxxxxxxxxxxxxxx1x = 0xFF + ROM_LOAD( "u7_cg_v105.u7", 0x400000, 0x400000, BAD_DUMP CRC(177111ce) SHA1(3834e3613f59b938c69d5a8679ffc3ea6baf999a) ) // xxxxxxxxxxxxxxxxxxxx1x = 0xFF + + ROM_REGION( 0x200000, "oki", 0 ) + ROM_LOAD( "u43_sp_v105.u43", 0x000000, 0x200000, CRC(5d1ab8f1) SHA1(56473b632dfdb210208ce3b35cb6861f07861cd7) ) +ROM_END + void vgame_state::init_hilice() { @@ -171,4 +185,5 @@ void vgame_state::init_hilice() } // anonymous namespace -GAME( 200?, hilice, 0, vgame, hilice, vgame_state, init_hilice, ROT0, "VGame", "Hi Lice (V102FA)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 200?, hilice, 0, vgame, hilice, vgame_state, init_hilice, ROT0, "VGame", "Hi Lice (V102FA)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) +GAME( 200?, mjxy, 0, vgame, hilice, vgame_state, init_hilice, ROT0, "VGame", "Majiang Xueyuan (V108TW)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING ) diff --git a/src/mame/stern/astinvad.cpp b/src/mame/stern/astinvad.cpp index 9e432a6b965..0c8d0ec3912 100644 --- a/src/mame/stern/astinvad.cpp +++ b/src/mame/stern/astinvad.cpp @@ -783,6 +783,20 @@ ROM_START( astinvad ) ROM_LOAD( "ai_vid_c.rom", 0x0000, 0x0400, CRC(b45287ff) SHA1(7e558eaf402641d7ff60171f854030219fbf9a59) ) ROM_END +ROM_START( astinvadb ) + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "killer2_1.bin", 0x0000, 0x0400, CRC(20e3ec41) SHA1(7e77fa3c51d1e83ce91a24808301d9f1e0bed18e) ) + ROM_LOAD( "killer2_2.bin", 0x0400, 0x0400, CRC(581625cf) SHA1(adac0c1f27c3f3c02ec14c1db8dc73febe01545f) ) + ROM_LOAD( "killer2_3.bin", 0x0800, 0x0400, CRC(7ea9b6d6) SHA1(d9f9a3a0e0c68e022dec6c3c9a8266cdce06cb64) ) + ROM_LOAD( "killer2_4.bin", 0x0c00, 0x0400, CRC(0d305d5f) SHA1(1581717d6c0472b5adb36f3d35cccb63dc4ba209) ) + ROM_LOAD( "killer2_5.bin", 0x1000, 0x0400, CRC(fee681ec) SHA1(b4b94f62e598030e6a432a0bb83d18d0e342aed9) ) + ROM_LOAD( "killer2_6.bin", 0x1400, 0x0400, CRC(eb338863) SHA1(e841c6c5903dd6dee9ec2fedaff431f4a31d738a) ) + ROM_LOAD( "killer2_7.bin", 0x1800, 0x0400, CRC(9e2d279d) SHA1(357835761974ace956c965c0dd920a0692a5a2ea) ) + + ROM_REGION( 0x0400, "proms", 0 ) + ROM_LOAD( "killer2_1-8.bin", 0x0000, 0x0400, CRC(d62a3e62) SHA1(00d42988203fbf167791cf5b887f06d1d015e942) ) +ROM_END + ROM_START( kosmokil ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.bin", 0x0000, 0x0400, CRC(8d851fb2) SHA1(06b3816ecb45c5d034447a875669a96f443339f5) ) @@ -859,6 +873,7 @@ ROM_END GAME( 1980, kamikaze, 0, kamikaze, kamikaze, kamikaze_state, empty_init, ROT270, "Konami (Leijac Corporation license)", "Kamikaze", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980, astinvad, kamikaze, kamikaze, astinvad, kamikaze_state, empty_init, ROT270, "Konami (Stern Electronics license)", "Astro Invader", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1980?, astinvadb, kamikaze, kamikaze, astinvad, kamikaze_state, empty_init, ROT270, "bootleg", "Astro Invader (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1980?, kosmokil, kamikaze, kamikaze, kamikaze, kamikaze_state, empty_init, ROT270, "bootleg (BEM)", "Kosmo Killer", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // says >BEM< Mi Italy but it looks hacked in, different revision of game tho. GAME( 1980?, betafrce, kamikaze, kamikaze, kamikaze, kamikaze_state, empty_init, ROT270, "bootleg (Omni)", "Beta Force", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) GAME( 1979, spcking2, 0, spcking2, spcking2, spcking2_state, empty_init, ROT270, "Konami", "Space King 2", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE )