summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2023-10-13 20:14:39 +0200
committer Ivan Vangelista <mesgnet@yahoo.it>2023-10-13 20:14:39 +0200
commitac3c4190eeb647596523182572e535424106421c (patch)
tree437702ca366cfd399f6500dffc020288e247e3d0 /src
parentfa84d2ba677ee09e4e9a6ee81e958b7a74b8b66d (diff)
dynax/royalmah.cpp: preliminary address map for cafepara
Diffstat (limited to 'src')
-rw-r--r--src/mame/dynax/royalmah.cpp64
-rw-r--r--src/mame/merit/merit.cpp2
2 files changed, 55 insertions, 11 deletions
diff --git a/src/mame/dynax/royalmah.cpp b/src/mame/dynax/royalmah.cpp
index b236dffed2d..1cbe5a4703b 100644
--- a/src/mame/dynax/royalmah.cpp
+++ b/src/mame/dynax/royalmah.cpp
@@ -35,16 +35,16 @@ Year + Game Board(s) CPU Company Not
89 Mahjong Shinkirou D210301BL2 + FRM-00? TLCS-90 Dynax
89 Mahjong Derringer D2203018L Z80 Dynax Larger palette
90 Mahjong If..? D2909278L TLCS-90 Dynax Larger palette
-91 Mahjong Vegas D5011308L1 + FRM-00 TLCS-90 Dynax Undumped internal rom (mjvegas set)
+91 Mahjong Vegas D5011308L1 + FRM-00 TLCS-90 Dynax Larger palette, RTC
92 Mahjong Cafe Time D6310128L1-1 TLCS-90 Dynax Larger palette, RTC
-93 Mahjong Cafe Doll D76052208L-2 TLCS-90 Dynax Larger palette, RTC, Undumped internal rom
+93 Mahjong Cafe Doll D76052208L-2 TLCS-90 Dynax Larger palette, RTC, Undumped internal ROM
93 Ichi Ban Jian MJ911 Z80 Excel Larger palette, additional YM2413
95 Mahjong Tensinhai D10010318L1 TLCS-90 Dynax Larger palette, RTC
96 Janputer '96 NS503X0727 Z80 Dynax Larger palette, RTC
97 Pong Boo! 2 NEW PONG-BOO Z80(?) OCT OKI M6295, no PROMs
97 Janputer Special CS166P008 + NS5110207 Z80 Dynax Larger palette, RTC
-99 Mahjong Cafe Break NS528-9812 TLCS-90 Nakanihon / Dynax Undumped internal rom
-99 Mahjong Cafe Paradise ? + TSS001-0001 TLCS-90 Techno-Top Undumped internal rom
+99 Mahjong Cafe Break NS528-9812 TLCS-90 Nakanihon / Dynax Undumped internal ROM
+99 Mahjong Cafe Paradise ? + TSS001-0001 TLCS-90 Techno-Top Larger palette, RTC
-----------------------------------------------------------------------------------------------------------------------
TODO:
@@ -90,8 +90,8 @@ Stephh's notes (based on the games Z80 code and some tests) :
front of a random combination. It's value remains *1 though.
Could it be a leftover from another game ('tontonb' for exemple) ?
-- janptr96, janptrsp: in service mode press in sequence N,Ron,Ron,N to access some
- hidden options. (thanks bnathan)
+- cafepara, janptr96, janptrsp: in service mode press in sequence N,Ron,Ron,N to
+ access some hidden options. (thanks bnathan)
****************************************************************************/
@@ -254,6 +254,7 @@ public:
void mjifb(machine_config &config) ATTR_COLD;
void mjdejavu(machine_config &config) ATTR_COLD;
void mjtensin(machine_config &config) ATTR_COLD;
+ void cafepara(machine_config &config) ATTR_COLD;
void cafetime(machine_config &config) ATTR_COLD;
void mjvegas(machine_config &config) ATTR_COLD;
void mjvegasa(machine_config &config) ATTR_COLD;
@@ -366,6 +367,7 @@ private:
void mjdejavu_map(address_map &map) ATTR_COLD;
void mjtensin_map(address_map &map) ATTR_COLD;
void mjvegasa_map(address_map &map) ATTR_COLD;
+ void cafepara_map(address_map &map) ATTR_COLD;
void cafetime_map(address_map &map) ATTR_COLD;
void chalgirl_iomap(address_map &map) ATTR_COLD;
@@ -1448,6 +1450,29 @@ void royalmah_prgbank_state::cafetime_map(address_map &map)
/****************************************************************************
+ Mahjong Cafe Paradise
+****************************************************************************/
+
+void royalmah_prgbank_state::cafepara_map(address_map &map)
+{
+ map(0x0000, 0x5fff).rom();
+ map(0x6000, 0x7eff).ram().share("nvram");
+ map(0x7fe1, 0x7fe1).r(m_ay, FUNC(ay8910_device::data_r));
+ map(0x7fe2, 0x7fe3).w(m_ay, FUNC(ay8910_device::data_address_w));
+ map(0x7ff0, 0x7ff0).w(FUNC(royalmah_prgbank_state::janptr96_coin_counter_w));
+ map(0x7ff1, 0x7ff1).portr("SYSTEM").nopw();
+ map(0x7ff3, 0x7ff3).w(FUNC(royalmah_prgbank_state::input_port_select_w));
+ map(0x7ff4, 0x7ff4).lw8(NAME([this] (uint8_t data) { m_mainbank->set_entry(data); logerror("mainbank_w: %02x\n", data); }));
+ map(0x7ff5, 0x7ff5).lw8(NAME([this] (uint8_t data) { logerror("0x7ff5 write: %02x\n", data); })); // bit 1 seems coin counter but it's actually at 0x7ff0
+ map(0x7ff6, 0x7ff6).w(FUNC(royalmah_prgbank_state::mjderngr_palbank_w));
+ map(0x7ff7, 0x7ff7).w(FUNC(royalmah_prgbank_state::cafetime_7fe3_w));
+ map(0x8000, 0xffff).bankr(m_mainbank);
+ map(0x8000, 0xffff).writeonly().share(m_videoram);
+ map(0xfff0, 0xffff).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)); // TODO: this should probably be behind a view
+}
+
+
+/****************************************************************************
Mahjong Vegas
****************************************************************************/
uint8_t royalmah_prgbank_state::mjvegas_p5_r()
@@ -4112,6 +4137,25 @@ void royalmah_prgbank_state::cafetime(machine_config &config)
MSM6242(config, m_rtc, 32.768_kHz_XTAL).out_int_handler().set_inputline(m_maincpu, INPUT_LINE_IRQ1);
}
+void royalmah_prgbank_state::cafepara(machine_config &config)
+{
+ cafetime(config);
+ tmp91640_device &tmp(TMP91640(config.replace(), m_maincpu, XTAL(8'000'000))); // XTAL is verified, should it be divided?
+ tmp.set_addrmap(AS_PROGRAM, &royalmah_prgbank_state::cafepara_map);
+ tmp.port_read<3>().set([this] () { logerror("%s: p3 in\n", machine().describe_context()); return uint8_t(0); }); // read sometimes
+ tmp.port_read<4>().set([this] () { logerror("%s: p4 in\n", machine().describe_context()); return uint8_t(0); }); // not seen yet
+ tmp.port_read<5>().set([this] () { logerror("%s: p5 in\n", machine().describe_context()); return uint8_t(0); }); // dips
+ tmp.port_read<6>().set([this] () { logerror("%s: p6 in\n", machine().describe_context()); return uint8_t(0); }); // dips
+ tmp.port_read<7>().set([this] () { logerror("%s: p7 in\n", machine().describe_context()); return uint8_t(0); }); // not seen yet
+ tmp.port_read<8>().set([this] () { logerror("%s: p8 in\n", machine().describe_context()); return uint8_t(0); });
+ tmp.port_write<3>().set([this] (uint8_t data) { logerror("%s: p3 out %02X\n", machine().describe_context(), data); }); // 0x6c at startup, remnant of older games?
+ tmp.port_write<4>().set([this] (uint8_t data) { logerror("%s: p4 out %02X\n", machine().describe_context(), data); }); // 0x00 at startup
+ tmp.port_write<5>().set([this] (uint8_t data) { logerror("%s: p5 out %02X\n", machine().describe_context(), data); }); // not seen yet
+ tmp.port_write<6>().set([this] (uint8_t data) { logerror("%s: p6 out %02X\n", machine().describe_context(), data); }); // not seen yet
+ tmp.port_write<7>().set([this] (uint8_t data) { logerror("%s: p7 out %02X\n", machine().describe_context(), data); }); // seen 0x07, 0x0b, 0x0d, 0x0f. ???
+ tmp.port_write<8>().set([this] (uint8_t data) { logerror("%s: p8 out %02X\n", machine().describe_context(), data); }); // 0x00 or 0x08, most probably view
+}
+
void royalmah_prgbank_state::mjvegasa(machine_config &config)
{
mjderngr(config);
@@ -4986,10 +5030,10 @@ and a PLCC68 chip (likely FPGA)
ROM_START( cafepara )
ROM_REGION( 0x290000, "maincpu", 0 )
// VIDEO & AM MICRO COMPUTER SYSTEMS 1999 TECHNO-TOP,LIMITED NAGOYA JAPAN MAHJONG CAFE PARADISE TSS001 VER. 1.00
- ROM_LOAD( "00101.1h", 0x000000, 0x080000, CRC(f5917280) SHA1(e6180e36643075ab9fa5bc27baef2a464a23f581) )
- ROM_LOAD( "cafepara.tmp91640", 0x000000, 0x004000, CRC(0575607c) SHA1(e641ffd1bd44f2b4a0cdf72c49990933a0f0ff22) )
+ ROM_LOAD( "00101.1h", 0x000000, 0x080000, CRC(f5917280) SHA1(e6180e36643075ab9fa5bc27baef2a464a23f581) ) // external ROM with first 0x4000 empty
+ ROM_LOAD( "cafepara.tmp91640", 0x000000, 0x004000, CRC(0575607c) SHA1(e641ffd1bd44f2b4a0cdf72c49990933a0f0ff22) ) // internal ROM
- // bank switched ROMs follow
+ // bank switched ROMs follow (test mode checks 0x50 banks)
ROM_COPY( "maincpu", 0x000000, 0x010000, 0x080000 )
ROM_LOAD( "00102.1d", 0x090000, 0x200000, CRC(ed3b5447) SHA1(ac24e9c00c94c35d2b2ec35f0c4262ceeda5408f) )
@@ -5946,4 +5990,4 @@ GAME( 1996, janptr96, 0, janptr96, janptr96, royalmah_prgbank_state, ini
GAME( 1997, janptrsp, 0, janptr96, janptr96, royalmah_prgbank_state, init_janptr96, ROT0, "Dynax", "Janputer Special (Japan)", 0 )
GAME( 1997, pongboo2, 0, pongboo2, ichiban, royalmah_prgbank_state, init_pongboo2, ROT0, "OCT", "Pong Boo! 2 (Ver. 1.31)", MACHINE_NOT_WORKING | MACHINE_WRONG_COLORS ) // banking, palette, inputs
GAME( 1999, cafebrk, 0, mjifb, mjifb, royalmah_prgbank_state, init_mjifb, ROT0, "Nakanihon / Dynax", "Mahjong Cafe Break", MACHINE_NOT_WORKING ) // missing internal ROM dump
-GAME( 1999, cafepara, 0, mjvegasa, mjvegasa, royalmah_prgbank_state, init_mjvegasa, ROT0, "Techno-Top", "Mahjong Cafe Paradise", MACHINE_NOT_WORKING ) // needs correct memory map and CPU ports
+GAME( 1999, cafepara, 0, cafepara, cafetime, royalmah_prgbank_state, init_mjtensin, ROT0, "Techno-Top", "Mahjong Cafe Paradise (Ver. 1.00)", MACHINE_NOT_WORKING ) // needs correct memory map and CPU ports
diff --git a/src/mame/merit/merit.cpp b/src/mame/merit/merit.cpp
index 4a434f81d47..35e5ad34d1f 100644
--- a/src/mame/merit/merit.cpp
+++ b/src/mame/merit/merit.cpp
@@ -71,7 +71,7 @@ Merit Riviera Notes - There are several known versions:
NOTE: Based on tests and observations, the CRT-209 module seems to use the Z80's M1 signal when it fetches
an opcode to activate and overlay the module's built in 2816 EEPROM. While this prevents a simple
- memory read of the 2816's memory region, it does limit the usuable instructions to single byte opcodes.
+ memory read of the 2816's memory region, it does limit the usable instructions to single byte opcodes.
*/