summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2026-04-29 18:07:59 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2026-04-29 18:07:59 +0200
commit955cd5e8b17e130acdccfb9a174e8f98533ab57c (patch)
tree894466588ef835cbc237d0885096138ea2b10456
parentd3989b3e8596425c42aa7afb0275b1e28e53bbf4 (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.cpp58
-rw-r--r--src/mame/mame.lst2
-rw-r--r--src/mame/misc/anes.cpp41
-rw-r--r--src/mame/taito/taitoair.cpp8
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) )