diff options
| author | 2026-04-29 18:07:59 +0200 | |
|---|---|---|
| committer | 2026-04-29 18:07:59 +0200 | |
| commit | 955cd5e8b17e130acdccfb9a174e8f98533ab57c (patch) | |
| tree | 894466588ef835cbc237d0885096138ea2b10456 | |
| parent | d3989b3e8596425c42aa7afb0275b1e28e53bbf4 (diff) | |
New systems marked not working
------------------------------
Charmy Dash (Japan) [Hammy]
Royal Selection (Japan, ver. 1.01) [Hammy]
- taito/taitoair.cpp: dumped motor ROM board for topland [Domenico Cervini]
| -rw-r--r-- | src/mame/dynax/ddenlovr.cpp | 58 | ||||
| -rw-r--r-- | src/mame/mame.lst | 2 | ||||
| -rw-r--r-- | src/mame/misc/anes.cpp | 41 | ||||
| -rw-r--r-- | src/mame/taito/taitoair.cpp | 8 |
4 files changed, 94 insertions, 15 deletions
diff --git a/src/mame/dynax/ddenlovr.cpp b/src/mame/dynax/ddenlovr.cpp index e34194bd7aa..e91bcbf5dca 100644 --- a/src/mame/dynax/ddenlovr.cpp +++ b/src/mame/dynax/ddenlovr.cpp @@ -127,6 +127,8 @@ TODO: - daichukaa: setting of time to next inspection doesn't stick, even without resetting, so the game is always stuck with the 'inspection needed' message +- rselect: needs correct inputs and DIP definitions + Notes: - all games using black as default palette is trusted from a real rongrong PCB; @@ -297,6 +299,7 @@ public: void mjmywrldt(machine_config &config) ATTR_COLD; void dtoyoken(machine_config &config) ATTR_COLD; void hgokou(machine_config &config) ATTR_COLD; + void rselect(machine_config &config) ATTR_COLD; void seljan2(machine_config &config) ATTR_COLD; void jongoh(machine_config &config) ATTR_COLD; void daichuka(machine_config &config) ATTR_COLD; @@ -407,8 +410,8 @@ private: uint8_t mjmyster_keyb_r(); uint8_t mjmyster_dsw_r(); void mjmyster_coincounter_w(uint8_t data); - void hginga_rombank_w(uint8_t data); - uint8_t hginga_protection_r(); + template <uint8_t Mask> void hginga_rombank_w(uint8_t data); + template <uint8_t Mask> uint8_t hginga_protection_r(); void hginga_input_w(uint8_t data); uint8_t hginga_coins_r(); void hginga_80_w(uint8_t data); @@ -512,6 +515,7 @@ private: void quizchq_portmap(address_map &map) ATTR_COLD; void rongrong_map(address_map &map) ATTR_COLD; void rongrong_portmap(address_map &map) ATTR_COLD; + void rselect_map(address_map &map) ATTR_COLD; void seljan2_map(address_map &map) ATTR_COLD; void seljan2_portmap(address_map &map) ATTR_COLD; void sryudens_map(address_map &map) ATTR_COLD; @@ -3477,20 +3481,22 @@ void ddenlovr_state::mjmyster_portmap(address_map &map) Hanafuda Hana Ginga ***************************************************************************/ +template <uint8_t Mask> void ddenlovr_state::hginga_rombank_w(uint8_t data) { - membank("bank1")->set_entry(data & 0x7); + membank("bank1")->set_entry(data & Mask); m_hginga_rombank = data; } // similar to rongrong +template <uint8_t Mask> uint8_t ddenlovr_state::hginga_protection_r() { uint8_t *rom = memregion("maincpu")->base(); if (m_hginga_rombank & 0x10) return hanakanz_rand_r(); - return rom[0x10000 + 0x8000 * (m_hginga_rombank & 0x7) + 0xf601 - 0x8000]; + return rom[0x10000 + 0x8000 * (m_hginga_rombank & Mask) + 0xf601 - 0x8000]; } void ddenlovr_state::hginga_map(address_map &map) @@ -3499,11 +3505,18 @@ void ddenlovr_state::hginga_map(address_map &map) map(0x6000, 0x6fff).ram(); // RAM map(0x7000, 0x7fff).bankrw("bank2"); // RAM (Banked) map(0x8000, 0xffff).bankr("bank1"); // ROM/RAM (Banked) - map(0xf601, 0xf601).r(FUNC(ddenlovr_state::hginga_protection_r)); + map(0xf601, 0xf601).r(FUNC(ddenlovr_state::hginga_protection_r<0x07>)); map(0xf000, 0xf1ff).w(FUNC(ddenlovr_state::ddenlovr_palette_w)); // RAM enabled by bit 4 of rombank map(0xf700, 0xf706).nopw(); } +void ddenlovr_state::rselect_map(address_map &map) +{ + hginga_map(map); + + map(0xf601, 0xf601).r(FUNC(ddenlovr_state::hginga_protection_r<0x0f>)); +} + uint8_t ddenlovr_state::hginga_dsw_r() { if (!BIT(m_dsw_sel, 0)) return ioport("DSW4")->read(); @@ -7725,6 +7738,7 @@ static INPUT_PORTS_START( hgokou ) PORT_DIPSETTING( 0x02, "Hanafuda Amusement" ) // 当社華札アミューズメントパネルシール (numbers, doesn't use take/w-up/big/small) INPUT_PORTS_END + static INPUT_PORTS_START( mjmyornt ) // The manual provides three sets of standard settings: // 標準設定 シングル向け 標準設定 メダル コーナー向け 標準設定 アミューズ コーナー向け @@ -10029,7 +10043,7 @@ void ddenlovr_state::hginga(machine_config &config) maincpu.set_addrmap(AS_IO, &ddenlovr_state::hginga_portmap); maincpu.in_pa_callback().set_constant(0); maincpu.out_pa_callback().set(FUNC(ddenlovr_state::mjmyster_rambank_w)); - maincpu.out_pb_callback().set(FUNC(ddenlovr_state::hginga_rombank_w)); + maincpu.out_pb_callback().set(FUNC(ddenlovr_state::hginga_rombank_w<0x07>)); MAHJONG_PANEL_CONNECTOR(config, m_key_matrix[0], hginga_panels, "hf", false); MAHJONG_PANEL_CONNECTOR(config, m_key_matrix[1], mahjong_panel_connector_device::medal_panels, "hf", false); @@ -10061,7 +10075,7 @@ void ddenlovr_state::hgokou(machine_config &config) maincpu.set_addrmap(AS_IO, &ddenlovr_state::hgokou_portmap); maincpu.in_pa_callback().set_constant(0); maincpu.out_pa_callback().set(FUNC(ddenlovr_state::mjmyster_rambank_w)); - maincpu.out_pb_callback().set(FUNC(ddenlovr_state::hginga_rombank_w)); + maincpu.out_pb_callback().set(FUNC(ddenlovr_state::hginga_rombank_w<0x07>)); m_screen->screen_vblank().set("maincpu", FUNC(tmpz84c015_device::trg0)); @@ -10089,6 +10103,17 @@ void ddenlovr_state::hgokbang(machine_config &config) subdevice<tmpz84c015_device>("maincpu")->set_addrmap(AS_IO, &ddenlovr_state::hgokbang_portmap); } +void ddenlovr_state::rselect(machine_config &config) +{ + hgokou(config); + + // basic machine hardware + subdevice<tmpz84c015_device>("maincpu")->set_addrmap(AS_PROGRAM, &ddenlovr_state::rselect_map); + subdevice<tmpz84c015_device>("maincpu")->out_pb_callback().set(FUNC(ddenlovr_state::hginga_rombank_w<0x0f>)); + + MCFG_MACHINE_START_OVERRIDE(ddenlovr_state,mjflove) +} + void ddenlovr_state::mjmywrld(machine_config &config) { mjmyster(config); @@ -10098,7 +10123,7 @@ void ddenlovr_state::mjmywrld(machine_config &config) maincpu.set_addrmap(AS_PROGRAM, &ddenlovr_state::hginga_map); maincpu.set_addrmap(AS_IO, &ddenlovr_state::mjmywrld_portmap); maincpu.out_pa_callback().set(FUNC(ddenlovr_state::mjmyster_rambank_w)); - maincpu.out_pb_callback().set(FUNC(ddenlovr_state::hginga_rombank_w)); + maincpu.out_pb_callback().set(FUNC(ddenlovr_state::hginga_rombank_w<0x07>)); } void ddenlovr_state::mjmyuniv(machine_config &config) @@ -12655,6 +12680,21 @@ ROM_START( hgokou ) ROM_LOAD( "1081.2d", 0x00000, 0x40000, CRC(74dede40) SHA1(d148f9ab9223b4c0b2f457a6f0e7fa3d173ab12b) ) ROM_END +// /DYNA D8306158L1 (almost identical to hgokou's N83061581L1) +ROM_START( rselect ) + ROM_REGION( 0x90000+8*0x1000, "maincpu", 0 ) // Z80 Code + ROM_LOAD( "8302.2b", 0x00000, 0x80000, CRC(941df21e) SHA1(50dadbea5989176e77c2eddb63753d65411fb061) ) + ROM_RELOAD( 0x10000, 0x80000 ) + + ROM_REGION( 0x200000, "blitter", 0 ) + ROM_LOAD( "8303.9a", 0x000000, 0x100000, CRC(5e22b02f) SHA1(58d0ddfeca878532d227e001264bfe26307b3b08) ) + ROM_LOAD( "8304.10a", 0x100000, 0x080000, CRC(39b9dc72) SHA1(fb614c3f76f1e5c35aac2f979b60c4c8c46a7229) ) + // 11a, 12a and 14a not populated + + ROM_REGION( 0x40000, "oki", 0 ) // samples + ROM_LOAD( "8301.2d", 0x00000, 0x40000, CRC(428e3c15) SHA1(d3ac2eb00b01d72322722501eda5ecef1e8ec994) ) +ROM_END + /*************************************************************************** Hanafuda Hana Gokou Bangaihen @@ -13378,6 +13418,8 @@ GAME( 1994, rongrongg, rongrong, rongrong, rongrong, ddenlovr_state, init_r GAME( 1994, hparadis, 0, hparadis, hparadis, ddenlovr_state, empty_init, ROT0, "Dynax", "Super Hana Paradise (Japan)", MACHINE_NO_COCKTAIL ) +GAME( 1994, rselect, 0, rselect, hgokou, ddenlovr_state, empty_init, ROT0, "Dynax", "Royal Selection (Japan, ver. 1.01)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) // needs correct inputs and DIP definitions + GAME( 1995, hgokou, 0, hgokou, hgokou, ddenlovr_state, empty_init, ROT0, "Dynax (Alba license)", "Hanafuda Hana Gokou (Japan, ver. B)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) GAME( 1995, hgokoua, hgokou, hgokbang, hgokou, ddenlovr_state, empty_init, ROT0, "Dynax (Alba license)", "Hanafuda Hana Gokou (Japan, ver. A)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) GAME( 1995, hgokbang, hgokou, hgokbang, hgokou, ddenlovr_state, empty_init, ROT0, "Dynax", "Hanafuda Hana Gokou Bangaihen (Japan)", MACHINE_NO_COCKTAIL | MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d06d4eead34..004c99b8fc9 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -17842,6 +17842,7 @@ quizchqk rongrong rongrongg rongrongj +rselect seljan2 seljan2a sryudens @@ -29901,6 +29902,7 @@ wwdash zenponta @source:misc/anes.cpp +chardash sanma tonpuu diff --git a/src/mame/misc/anes.cpp b/src/mame/misc/anes.cpp index a263ef06a8b..5843241d88d 100644 --- a/src/mame/misc/anes.cpp +++ b/src/mame/misc/anes.cpp @@ -5,12 +5,16 @@ Sanma - San-nin Uchi Mahjong (Japan) by ANES Ton Puu Mahjong (Japan) by ANES +Charmy Dash (Japan) by ANES + TODO: - refine blitter emulation; - flip screen; - player 2 inputs; - verify sanma dips translations; +- move Charmy Dash to separate driver (if warranted). +Main components of the PCB used for mahjong games: - 1x Z0840008PSC Z80 CPU - 1x 16.000 XTAL near the Z80 - 1x YM2413 sound chip @@ -21,6 +25,19 @@ TODO: - 1x HM6265LK-70 - 1x unknown 160 pin device labeled "ANES ORIGINAL SEAL NO. A199." for tonpuu, "ANES ORIGINAL SEAL NO. A446." for sanma - 4x banks of 8 DIP switches + +Main components of the PCB used for horse racing games: +- 1x Z0840008PSC Z80 CPU +- 1x HM6265LK-70 +- 4x CY7C109-20VC SRAM +- 2x CY7C199-15VC SRAM +- 1x 32.00000MHz XTAL near the Z80 +- 1x unknown 240 pin device labeled "ANES ORIGINAL SEAL NO. D117" +- 1x PIC16F84A-20P MCU +- 1x OKI M9810B +- 1x 17S40C configuration bitstream +- 1x volume pot +- no banks of DIP switches */ #include "emu.h" @@ -50,7 +67,7 @@ public: { } - void anes(machine_config &config); + void anes(machine_config &config) ATTR_COLD; protected: virtual void machine_start() override ATTR_COLD; @@ -794,8 +811,26 @@ ROM_START( tonpuu ) ROM_LOAD( "17128epc.u41", 0x0000, 0x4001, NO_DUMP ) ROM_END +ROM_START( chardash ) + ROM_REGION(0x80000, "maincpu", 0) + ROM_LOAD( "anes_c13.u10", 0x00000, 0x80000, CRC(9d23bded) SHA1(7ddf8947c8f8c4e974e0cdbfc7956dcc6ebbde5c) ) // 1xxxxxxxxxxxxxxxxxx = 0xFF + + ROM_REGION( 0x8080, "pic", 0 ) + ROM_LOAD( "pic16f84_code.bin", 0x000, 0x800, NO_DUMP ) + ROM_LOAD( "pic16f84_data.bin", 0x800, 0x080, NO_DUMP ) + + ROM_REGION(0x200000, "blitter", 0) + ROM_LOAD( "anes_e21.u16", 0x000000, 0x100000, CRC(2db77530) SHA1(a1e7f1b4c34999342a75b459f63f790526da9ca0) ) + ROM_LOAD( "anes_e22.u17", 0x000000, 0x100000, CRC(ba10631e) SHA1(5f1e69171b9d1ddf6a12d549d5a402acd09fa3bf) ) + + ROM_REGION(0x100000, "oki", 0) + ROM_LOAD( "anes_m11.u29", 0x000000, 0x100000, CRC(66316c40) SHA1(d253299dd4da3c680b41fef709377e974dc7a969) ) + // u30 not populated +ROM_END + } // anonymous namespace -GAME( 2001, sanma, 0, anes, sanma, anes_state, empty_init, ROT0, "ANES", "Sanma - San-nin Uchi Mahjong (Japan, version 2.60)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // flyer says 2000, manual says 2001 version 2.60 -GAME( 1997, tonpuu, 0, anes, tonpuu, anes_state, empty_init, ROT0, "ANES", "Ton Puu Mahjong Version 2.0 RX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2001, sanma, 0, anes, sanma, anes_state, empty_init, ROT0, "ANES", "Sanma - San-nin Uchi Mahjong (Japan, version 2.60)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // flyer says 2000, manual says 2001 version 2.60 +GAME( 1997, tonpuu, 0, anes, tonpuu, anes_state, empty_init, ROT0, "ANES", "Ton Puu Mahjong Version 2.0 RX (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) +GAME( 2002, chardash, 0, anes, tonpuu, anes_state, empty_init, ROT0, "ANES", "Charmy Dash (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/taito/taitoair.cpp b/src/mame/taito/taitoair.cpp index 58a9e14124e..25a78d9e66d 100644 --- a/src/mame/taito/taitoair.cpp +++ b/src/mame/taito/taitoair.cpp @@ -771,8 +771,8 @@ ROM_START( topland ) ROM_LOAD16_BYTE( "b62-21.35", 0x00000, 0x02000, CRC(5f38460d) SHA1(0593718d15b30b10f7686959932e2c934de2a529) ) // cpu board ROM_LOAD16_BYTE( "b62-20.6", 0x00001, 0x02000, CRC(a4afe958) SHA1(7593a327f4ea0cc9e28fd3269278871f62fb0598) ) // cpu board - ROM_REGION( 0x10000, "mechacpu", 0 ) - ROM_LOAD( "b62_mecha.rom", 0x00000, 0x08000, NO_DUMP ) + ROM_REGION( 0x10000, "mechacpu", 0 ) // on POWER P.C. BOARD J3000014A + ROM_LOAD( "b09_37.13", 0x00000, 0x08000, CRC(4bdf15ed) SHA1(b960208e63cede116925e064279a6cf107aef81c) ) // same as mlanding ROM_REGION( 0x100000, "tc0080vco", 0 ) /* 16x16 tiles */ ROM_LOAD64_BYTE( "b62-33.39", 0x000007, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) ) @@ -820,8 +820,8 @@ ROM_START( toplandj ) ROM_LOAD16_BYTE( "b62-21.35", 0x00000, 0x02000, CRC(5f38460d) SHA1(0593718d15b30b10f7686959932e2c934de2a529) ) // cpu board ROM_LOAD16_BYTE( "b62-20.6", 0x00001, 0x02000, CRC(a4afe958) SHA1(7593a327f4ea0cc9e28fd3269278871f62fb0598) ) // cpu board - ROM_REGION( 0x10000, "mechacpu", 0 ) - ROM_LOAD( "b62_mecha.rom", 0x00000, 0x08000, NO_DUMP ) + ROM_REGION( 0x10000, "mechacpu", 0 ) // on POWER P.C. BOARD J3000014A + ROM_LOAD( "b09_37.13", 0x00000, 0x08000, CRC(4bdf15ed) SHA1(b960208e63cede116925e064279a6cf107aef81c) ) // same as mlanding ROM_REGION( 0x100000, "tc0080vco", 0 ) /* 16x16 tiles */ ROM_LOAD64_BYTE( "b62-33.39", 0x000007, 0x20000, CRC(38786867) SHA1(7292e3fa69cad6494f2e8e7efa9c3f989bdf958d) ) |
