diff options
-rw-r--r-- | src/devices/machine/pci-ide.cpp | 5 | ||||
-rw-r--r-- | src/devices/machine/pci-ide.h | 6 | ||||
-rw-r--r-- | src/mame/drivers/cps2.cpp | 37 | ||||
-rw-r--r-- | src/mame/drivers/epos.cpp | 12 | ||||
-rw-r--r-- | src/mame/drivers/royalmah.cpp | 337 | ||||
-rw-r--r-- | src/mame/mame.lst | 1 |
6 files changed, 240 insertions, 158 deletions
diff --git a/src/devices/machine/pci-ide.cpp b/src/devices/machine/pci-ide.cpp index bac97798949..98ec5180b46 100644 --- a/src/devices/machine/pci-ide.cpp +++ b/src/devices/machine/pci-ide.cpp @@ -11,7 +11,8 @@ ide_pci_device::ide_pci_device(const machine_config &mconfig, const char *tag, d m_ide2(*this, "ide2"), m_irq_num(-1), m_irq_handler(*this), - m_legacy_top(0x000) + m_legacy_top(0x000), + m_pif(0x8a) { } @@ -106,7 +107,7 @@ void ide_pci_device::device_reset() bank_infos[2].adr = (m_legacy_top << 20) | 0x170; bank_infos[3].adr = (m_legacy_top << 20) | 0x374; bank_infos[4].adr = 0xf00; - pclass = 0x01018a; + pclass = 0x010100 | m_pif; remap_cb(); // PCI0646U allow BAR diff --git a/src/devices/machine/pci-ide.h b/src/devices/machine/pci-ide.h index d9200898b4e..f3849fb1515 100644 --- a/src/devices/machine/pci-ide.h +++ b/src/devices/machine/pci-ide.h @@ -33,6 +33,10 @@ TODO: #define MCFG_IDE_PCI_SET_LEGACY_TOP(_val) \ downcast<ide_pci_device *>(device)->set_legacy_top(_val); +// Sets the default Programming Interface (PIF) register +#define MCFG_IDE_PCI_SET_PIF(_val) \ + downcast<ide_pci_device *>(device)->set_pif(_val); + class ide_pci_device : public pci_device { public: ide_pci_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); @@ -47,6 +51,7 @@ public: void set_irq_info(const char *tag, const int irq_num); template <class Object> static devcb_base &set_irq_handler(device_t &device, Object &&cb) { return downcast<ide_pci_device &>(device).m_irq_handler.set_callback(std::forward<Object>(cb)); } void set_legacy_top(int val) { m_legacy_top = val & 0xfff; }; + void set_pif(int val) { m_pif = val & 0xff; }; protected: virtual void device_start() override; @@ -63,6 +68,7 @@ private: uint32_t pci_bar[6]; // Bits 31-20 for legacy mode hack uint32_t m_legacy_top; + uint32_t m_pif; uint32_t m_config_data[0x10]; DECLARE_ADDRESS_MAP(chan1_data_command_map, 32); diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp index 3b305d72538..6b608b988bd 100644 --- a/src/mame/drivers/cps2.cpp +++ b/src/mame/drivers/cps2.cpp @@ -8182,6 +8182,42 @@ ROM_START( ssf2tbj1 ) ROM_LOAD( "ssf2tbj.key", 0x000000, 0x000014, CRC(bcc2e017) SHA1(9c375eeffa599be4994e8efd7dee9d0e67613a13) ) ROM_END +ROM_START( ssf2tba ) + ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ + ROM_LOAD16_WORD_SWAP( "ssfa.03tb", 0x000000, 0x80000, CRC(8de631d2) SHA1(e9249413149c6799faaece09226cdd37906b1a63) ) + ROM_LOAD16_WORD_SWAP( "ssfa.04ta", 0x080000, 0x80000, CRC(abef3042) SHA1(71062765bd1337780fb347d277ebeca5d7f91c05) ) + ROM_LOAD16_WORD_SWAP( "ssfa.05t", 0x100000, 0x80000, CRC(edfa018f) SHA1(61f80f3a1674c900df34095601db92d98bb28096) ) + ROM_LOAD16_WORD_SWAP( "ssfa.06tb", 0x180000, 0x80000, CRC(2b9d1dbc) SHA1(e7136c2269c54f1fdfcdefdefc5dce0a63f38960) ) + ROM_LOAD16_WORD_SWAP( "ssfa.07t", 0x200000, 0x80000, CRC(f4a25159) SHA1(83967820a82a20030ddb1404e73b73e20605e907) ) + + ROM_REGION( 0xc00000, "gfx", 0 ) + ROMX_LOAD( "ssf.13m", 0x000000, 0x200000, CRC(cf94d275) SHA1(bf2a6d98a656d1cb5734da7836686242d3211137) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.15m", 0x000002, 0x200000, CRC(5eb703af) SHA1(4b302dbb66e8a5c2ad92798699391e981bada427) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.17m", 0x000004, 0x200000, CRC(ffa60e0f) SHA1(b21b1c749a8241440879bf8e7cb33968ccef97e5) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.19m", 0x000006, 0x200000, CRC(34e825c5) SHA1(4d320fc96d1ef0b9928a8ce801734245a4c097a5) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.14m", 0x800000, 0x100000, CRC(b7cc32e7) SHA1(0f4d26af338dab5dce5b7b34d32ad0c573434ace) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.16m", 0x800002, 0x100000, CRC(8376ad18) SHA1(f4456833fb396e6501f4174c0fe5fd63ea40a188) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.18m", 0x800004, 0x100000, CRC(f5b1b336) SHA1(4b060501e56b9d61294748da5387cdae5280ec4d) , ROM_GROUPWORD | ROM_SKIP(6) ) + ROMX_LOAD( "ssf.20m", 0x800006, 0x100000, CRC(459d5c6b) SHA1(32b11ba7a12004aff810d719bff7508204c7b7c0) , ROM_GROUPWORD | ROM_SKIP(6) ) + + ROM_REGION( QSOUND_SIZE, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */ + ROM_LOAD( "ssf-01a", 0x00000, 0x08000, CRC(71fcdfc9) SHA1(c816f47ce10b8e85504638ada9117ec26ddaab77) ) + ROM_CONTINUE( 0x10000, 0x18000 ) + + ROM_REGION( 0x400000, "qsound", 0 ) /* QSound samples */ + ROM_LOAD( "ssf.q01", 0x000000, 0x080000, CRC(a6f9da5c) SHA1(6d19f83a01bd25b838d5c2871f7964529d926c98) ) + ROM_LOAD( "ssf.q02", 0x080000, 0x080000, CRC(8c66ae26) SHA1(32a82aee6ed4480e5a990f9af161734c7c0a1403) ) + ROM_LOAD( "ssf.q03", 0x100000, 0x080000, CRC(695cc2ca) SHA1(c2675f0233608b76de528d2a6ef19846d1348060) ) + ROM_LOAD( "ssf.q04", 0x180000, 0x080000, CRC(9d9ebe32) SHA1(9b26329370041374f1a90b479a172d2bc2801c4d) ) + ROM_LOAD( "ssf.q05", 0x200000, 0x080000, CRC(4770e7b7) SHA1(0e764f0befb9227b0b36508d8ca8ec9be31bcb05) ) + ROM_LOAD( "ssf.q06", 0x280000, 0x080000, CRC(4e79c951) SHA1(1144781d7dc57ef8a6458d982f5c91548ff59e27) ) + ROM_LOAD( "ssf.q07", 0x300000, 0x080000, CRC(cdd14313) SHA1(ebe767a9d4b51dba4282fa0a36a546a88620dd59) ) + ROM_LOAD( "ssf.q08", 0x380000, 0x080000, CRC(6f5a088c) SHA1(6c0b4690479647a99d76335f174be8455b4ff118) ) + + ROM_REGION( 0x20, "key", 0 ) + ROM_LOAD( "ssf2tba.key", 0x000000, 0x000014, CRC(8d2740ed) SHA1(a211373e6f45ef073f36bda2d6fbfc2cd5c7866b) ) +ROM_END + ROM_START( ssf2tbh ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ ROM_LOAD16_WORD_SWAP( "ssfh.03tb", 0x000000, 0x80000, CRC(6db7d28b) SHA1(b37f3287c51564ee0fdab499787b37166d1eb76d) ) @@ -9869,6 +9905,7 @@ GAME( 1993, ssf2tb, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, GAME( 1993, ssf2tbr1, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 930911)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode GAME( 1993, ssf2tbj, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 931005)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode GAME( 1993, ssf2tbj1, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 930911)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode +GAME( 1993, ssf2tba, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Asia 931005)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode GAME( 1993, ssf2tbh, ssf2, cps2, cps2_2p6b, cps_state, ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Hispanic 931005)", MACHINE_SUPPORTS_SAVE ) // works, but not in tournament mode GAME( 1993, ecofghtr, 0, cps2, ecofghtr, cps_state, ecofghtr, ROT0, "Capcom", "Eco Fighters (World 931203)", MACHINE_SUPPORTS_SAVE ) GAME( 1993, ecofghtru, ecofghtr, cps2, ecofghtr, cps_state, ecofghtr, ROT0, "Capcom", "Eco Fighters (USA 940215)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/epos.cpp b/src/mame/drivers/epos.cpp index c00fa6f54fa..f03eb0c3068 100644 --- a/src/mame/drivers/epos.cpp +++ b/src/mame/drivers/epos.cpp @@ -13,11 +13,15 @@ - Super Glob seems like a later revision of The Glob, the most obvious difference being an updated service mode. - These games don't have cocktail mode. - - The divisor 4 was derived using the timing loop used to split the screen - in the middle. This loop takes roughly 24200 cycles, giving + - The CPU clock divisor 4 was derived using the timing loop used to split + the screen in the middle. This loop takes roughly 24200 cycles, giving 2500 + (24200 - 2500) * 2 * 60 = 2754000 = 2.75MHz for the CPU speed, assuming 60 fps and a 2500 cycle VBLANK period. - This should be easy to check since the schematics are available, . + This also matches the IGMO schematic, as it is the /CLK signal, which is + derived from the 11MHz xtal by dividing it down by two 74LS193 chips, one + (U92) dividing the clock by 2, and another (U91) having 3 taps, further + dividing the already divided clock by 2 (/CLK), 4 (/PLOAD) and 8 (CLOCK). + The CLOCK signal drives the AY. - I think theglob2 is earlier than theglob. They only differ in one routine, but it appears to be a bug fix. Also, theglob3 appears to be even older. @@ -472,7 +476,7 @@ static MACHINE_CONFIG_START( epos ) /* EPOS TRISTAR 8000 PCB */ /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("mono") - MCFG_SOUND_ADD("aysnd", AY8912, XTAL_11MHz/16) /* 0.6875 MHz??? - clock not confirmed (similar to the clock listed below) */ + MCFG_SOUND_ADD("aysnd", AY8912, XTAL_11MHz/16) /* 0.6875 MHz, confirmed from schematics */ MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) MACHINE_CONFIG_END diff --git a/src/mame/drivers/royalmah.cpp b/src/mame/drivers/royalmah.cpp index ab299f04e75..fe8093b0479 100644 --- a/src/mame/drivers/royalmah.cpp +++ b/src/mame/drivers/royalmah.cpp @@ -50,6 +50,7 @@ TODO: - mjtensin: random crashes, interrupts related +- convert the remaining set_base calls to configured banking and enable save state support Stephh's notes (based on the games Z80 code and some tests) : @@ -111,51 +112,43 @@ public: royalmah_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this,"maincpu"), + m_ay(*this, "aysnd"), m_videoram(*this, "videoram"), m_audiocpu(*this, "audiocpu"), m_rtc(*this, "rtc"), m_soundlatch(*this, "soundlatch") { } + - required_device<cpu_device> m_maincpu; - required_shared_ptr<uint8_t> m_videoram; - optional_device<cpu_device> m_audiocpu; - optional_device<msm6242_device> m_rtc; - optional_device<generic_latch_8_device> m_soundlatch; - - uint8_t m_input_port_select; - uint8_t m_dsw_select; - uint8_t m_rombank; - int m_palette_base; - std::unique_ptr<uint8_t[]> m_janptr96_nvram; - uint8_t m_suzume_bank; - uint8_t m_gfx_adr_l; - uint8_t m_gfx_adr_m; - uint8_t m_gfx_adr_h; - uint32_t m_gfx_adr; - uint8_t m_gfxdata0; - uint8_t m_gfxdata1; - uint8_t m_jansou_colortable[16]; - uint8_t m_mjifb_rom_enable; - uint8_t m_flip_screen; + DECLARE_READ8_MEMBER(player_1_port_r); + DECLARE_READ8_MEMBER(player_2_port_r); + DECLARE_WRITE8_MEMBER(input_port_select_w); DECLARE_WRITE8_MEMBER(royalmah_palbank_w); - DECLARE_WRITE8_MEMBER(royalmah_rom_w); + DECLARE_WRITE8_MEMBER(tahjong_bank_w); + DECLARE_WRITE8_MEMBER(mjderngr_coin_w); DECLARE_WRITE8_MEMBER(mjderngr_palbank_w); - DECLARE_WRITE8_MEMBER(input_port_select_w); + DECLARE_READ8_MEMBER(majs101b_dsw_r); + DECLARE_READ8_MEMBER(suzume_dsw_r); DECLARE_WRITE8_MEMBER(suzume_bank_w); + DECLARE_WRITE8_MEMBER(mjapinky_bank_w); DECLARE_WRITE8_MEMBER(mjapinky_palbank_w); DECLARE_READ8_MEMBER(mjapinky_dsw_r); + DECLARE_WRITE8_MEMBER(tontonb_bank_w); + DECLARE_WRITE8_MEMBER(dynax_bank_w); + DECLARE_READ8_MEMBER(daisyari_dsw_r); DECLARE_WRITE8_MEMBER(daisyari_bank_w); + DECLARE_READ8_MEMBER(mjclub_dsw_r); DECLARE_WRITE8_MEMBER(mjclub_bank_w); + DECLARE_WRITE8_MEMBER(jansou_dsw_sel_w); DECLARE_READ8_MEMBER(jansou_dsw_r); DECLARE_WRITE8_MEMBER(jansou_colortable_w); @@ -166,6 +159,7 @@ public: DECLARE_READ8_MEMBER(jansou_6404_r); DECLARE_READ8_MEMBER(jansou_6405_r); DECLARE_WRITE8_MEMBER(jansou_sound_w); + DECLARE_WRITE8_MEMBER(janptr96_dswsel_w); DECLARE_READ8_MEMBER(janptr96_dswsel_r); DECLARE_READ8_MEMBER(janptr96_dsw_r); @@ -173,6 +167,8 @@ public: DECLARE_WRITE8_MEMBER(janptr96_rambank_w); DECLARE_READ8_MEMBER(janptr96_unknown_r); DECLARE_WRITE8_MEMBER(janptr96_coin_counter_w); + DECLARE_WRITE_LINE_MEMBER(janptr96_rtc_irq); + DECLARE_WRITE8_MEMBER(mjifb_coin_counter_w); DECLARE_READ8_MEMBER(mjifb_rom_io_r); DECLARE_WRITE8_MEMBER(mjifb_rom_io_w); @@ -185,17 +181,21 @@ public: DECLARE_WRITE8_MEMBER(mjifb_p3_w); DECLARE_WRITE8_MEMBER(mjifb_p4_w); DECLARE_WRITE8_MEMBER(mjifb_p8_w); + DECLARE_READ8_MEMBER(mjdejavu_rom_io_r); DECLARE_WRITE8_MEMBER(mjdejavu_rom_io_w); + DECLARE_READ8_MEMBER(mjtensin_p3_r); DECLARE_WRITE8_MEMBER(mjtensin_p4_w); DECLARE_WRITE8_MEMBER(mjtensin_6ff3_w); + DECLARE_WRITE8_MEMBER(cafetime_p4_w); DECLARE_WRITE8_MEMBER(cafetime_p3_w); DECLARE_WRITE8_MEMBER(cafetime_dsw_w); DECLARE_READ8_MEMBER(cafetime_dsw_r); DECLARE_READ8_MEMBER(cafetime_7fe4_r); DECLARE_WRITE8_MEMBER(cafetime_7fe3_w); + DECLARE_WRITE8_MEMBER(mjvegasa_p4_w); DECLARE_WRITE8_MEMBER(mjvegasa_p3_w); DECLARE_WRITE8_MEMBER(mjvegasa_rombank_w); @@ -204,24 +204,72 @@ public: DECLARE_WRITE8_MEMBER(mjvegasa_coin_counter_w); DECLARE_WRITE8_MEMBER(mjvegasa_12400_w); DECLARE_READ8_MEMBER(mjvegasa_12500_r); - DECLARE_READ8_MEMBER(royalmah_player_1_port_r); - DECLARE_READ8_MEMBER(royalmah_player_2_port_r); - DECLARE_WRITE_LINE_MEMBER(janptr96_rtc_irq); + DECLARE_WRITE_LINE_MEMBER(mjtensin_rtc_irq); - DECLARE_DRIVER_INIT(janptr96); + + DECLARE_DRIVER_INIT(tahjong); + DECLARE_DRIVER_INIT(dynax); + DECLARE_DRIVER_INIT(jansou); + DECLARE_DRIVER_INIT(suzume); DECLARE_DRIVER_INIT(ippatsu); + DECLARE_DRIVER_INIT(mjifb); + DECLARE_DRIVER_INIT(tontonb); + DECLARE_DRIVER_INIT(janptr96); DECLARE_PALETTE_INIT(royalmah); DECLARE_PALETTE_INIT(mjderngr); + uint32_t screen_update_royalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + INTERRUPT_GEN_MEMBER(suzume_irq); INTERRUPT_GEN_MEMBER(mjtensin_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(janptr96_interrupt); + +protected: + virtual void machine_start() override; + +private: + required_device<cpu_device> m_maincpu; + required_device<ay8910_device> m_ay; + required_shared_ptr<uint8_t> m_videoram; + optional_device<cpu_device> m_audiocpu; + optional_device<msm6242_device> m_rtc; + optional_device<generic_latch_8_device> m_soundlatch; + + // used by most games + uint8_t m_input_port_select; + uint8_t m_dsw_select; + uint8_t m_rombank; + uint8_t m_palette_base; + uint8_t m_flip_screen; + + // game specific + std::unique_ptr<uint8_t[]> m_janptr96_nvram; + + uint8_t m_suzume_bank; + + uint8_t m_gfx_adr_l; + uint8_t m_gfx_adr_m; + uint8_t m_gfx_adr_h; + uint32_t m_gfx_adr; + uint8_t m_gfxdata0; + uint8_t m_gfxdata1; + uint8_t m_jansou_colortable[16]; + + uint8_t m_mjifb_rom_enable; + void mjtensin_update_rombank(); void cafetime_update_rombank(); }; - +void royalmah_state::machine_start() +{ + save_item(NAME(m_input_port_select)); + save_item(NAME(m_dsw_select)); + save_item(NAME(m_rombank)); + save_item(NAME(m_palette_base)); + save_item(NAME(m_flip_screen)); +} PALETTE_INIT_MEMBER(royalmah_state, royalmah) { @@ -308,21 +356,15 @@ WRITE8_MEMBER(royalmah_state::mjderngr_palbank_w) uint32_t royalmah_state::screen_update_royalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - uint8_t *videoram = m_videoram; - - offs_t offs; - - for (offs = 0; offs < 0x4000; offs++) + for (offs_t offs = 0; offs < 0x4000; offs++) { - int i; - - uint8_t data1 = videoram[offs + 0x0000]; - uint8_t data2 = videoram[offs + 0x4000]; + uint8_t data1 = m_videoram[offs + 0x0000]; + uint8_t data2 = m_videoram[offs + 0x4000]; uint8_t y = (m_flip_screen) ? 255 - (offs >> 6) : (offs >> 6); uint8_t x = (m_flip_screen) ? 255 - (offs << 2) : (offs << 2); - for (i = 0; i < 4; i++) + for (int i = 0; i < 4; i++) { uint8_t pen = ((data2 >> 1) & 0x08) | ((data2 << 2) & 0x04) | ((data1 >> 3) & 0x02) | ((data1 >> 0) & 0x01); @@ -337,23 +379,12 @@ uint32_t royalmah_state::screen_update_royalmah(screen_device &screen, bitmap_in return 0; } - - - - -WRITE8_MEMBER(royalmah_state::royalmah_rom_w) -{ - /* using this handler will avoid all the entries in the error log that are the result of - the RLD and RRD instructions this games uses to print text on the screen */ -} - - WRITE8_MEMBER(royalmah_state::input_port_select_w) { m_input_port_select = data; } -READ8_MEMBER(royalmah_state::royalmah_player_1_port_r) +READ8_MEMBER(royalmah_state::player_1_port_r) { int ret = (ioport("KEY0")->read() & 0xc0) | 0x3f; @@ -366,7 +397,7 @@ READ8_MEMBER(royalmah_state::royalmah_player_1_port_r) return ret; } -READ8_MEMBER(royalmah_state::royalmah_player_2_port_r) +READ8_MEMBER(royalmah_state::player_2_port_r) { int ret = (ioport("KEY5")->read() & 0xc0) | 0x3f; @@ -414,40 +445,27 @@ READ8_MEMBER(royalmah_state::suzume_dsw_r) WRITE8_MEMBER(royalmah_state::tahjong_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - -logerror("%04x: bank %02x\n",space.device().safe_pc(),data); - - data &= 0x01; - - address = 0x10000 + data * 0x4000; - - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x01); } WRITE8_MEMBER(royalmah_state::suzume_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - m_suzume_bank = data; -logerror("%04x: bank %02x\n",space.device().safe_pc(),data); + logerror("%04x: bank %02x\n",space.device().safe_pc(),data); /* bits 6, 4 and 3 used for something input related? */ - address = 0x10000 + (data & 0x07) * 0x8000; - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x07); } WRITE8_MEMBER(royalmah_state::mjapinky_bank_w) { - uint8_t *ROM = memregion("maincpu")->base(); m_rombank = data; - membank("bank1")->set_base(ROM + 0x10000 + 0x8000 * data); + + membank("mainbank")->set_entry(data & 0x0f); } WRITE8_MEMBER(royalmah_state::mjapinky_palbank_w) @@ -466,36 +484,22 @@ READ8_MEMBER(royalmah_state::mjapinky_dsw_r) WRITE8_MEMBER(royalmah_state::tontonb_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - -logerror("%04x: bank %02x\n",space.device().safe_pc(),data); + logerror("%04x: bank %02x\n",space.device().safe_pc(),data); if (data == 0) return; // tontonb fix? - data &= 0x0f; - - address = 0x10000 + data * 0x8000; - - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x0f); } /* bits 5 and 6 seem to affect which Dip Switch to read in 'majs101b' */ WRITE8_MEMBER(royalmah_state::dynax_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - //logerror("%04x: bank %02x\n",space.device().safe_pc(),data); m_dsw_select = data & 0x60; - data &= 0x1f; - - address = 0x10000 + data * 0x8000; - - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x1f); } READ8_MEMBER(royalmah_state::daisyari_dsw_r) @@ -521,7 +525,7 @@ WRITE8_MEMBER(royalmah_state::daisyari_bank_w) address = 0x10000 + ((data & 0x30)>>4) * 0x10000 + (data & 0x1) * 0x8000; // printf("%08x %02x\n",address,data); - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_base(&rom[address]); /* bit 1 used too but unknown purpose. */ } @@ -541,41 +545,33 @@ READ8_MEMBER(royalmah_state::mjclub_dsw_r) WRITE8_MEMBER(royalmah_state::mjclub_bank_w) { - uint8_t *rom = memregion("maincpu")->base(); - int address; - m_dsw_select = data & 0xc0; - data &= 0x0f; - - address = 0x10000 + data * 0x8000; -// printf("%08x\n",address); - - membank("bank1")->set_base(&rom[address]); + membank("mainbank")->set_entry(data & 0x0f); /* bit 5 used too but unknown purpose. */ } static ADDRESS_MAP_START( royalmah_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) // banked ROMs not present in royalmah + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) // banked ROMs not present in royalmah AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END static ADDRESS_MAP_START( mjapinky_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x77ff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x7800, 0x7fff ) AM_RAM AM_RANGE( 0x8000, 0x8000 ) AM_READ(mjapinky_dsw_r ) - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END static ADDRESS_MAP_START( tahjong_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x3fff ) AM_ROM AM_WRITE(royalmah_rom_w ) - AM_RANGE( 0x4000, 0x6fff ) AM_ROMBANK( "bank1" ) AM_WRITE(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x3fff ) AM_ROM + AM_RANGE( 0x4000, 0x6fff ) AM_ROMBANK("mainbank") AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -725,7 +721,7 @@ static ADDRESS_MAP_START( mjapinky_iomap, AS_IO, 8, royalmah_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( janoh_map, AS_PROGRAM, 8, royalmah_state ) - AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_WRITE(royalmah_rom_w ) + AM_RANGE( 0x0000, 0x6fff ) AM_ROM AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -864,8 +860,8 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( janptr96_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x0000, 0x5fff ) AM_ROM AM_RANGE( 0x6000, 0x6fff ) AM_RAMBANK("bank3") AM_SHARE("nvram") // nvram - AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK("bank2") // banked nvram - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("bank1") + AM_RANGE( 0x7000, 0x7fff ) AM_RAMBANK("rambank") // banked nvram + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK("mainbank") AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -893,13 +889,12 @@ READ8_MEMBER(royalmah_state::janptr96_dsw_r) WRITE8_MEMBER(royalmah_state::janptr96_rombank_w) { - uint8_t *ROM = memregion("maincpu")->base(); - membank("bank1")->set_base(ROM + 0x10000 + 0x8000 * data); + membank("mainbank")->set_entry(data & 0x3f); } WRITE8_MEMBER(royalmah_state::janptr96_rambank_w) { - membank("bank2")->set_base(m_janptr96_nvram.get() + 0x1000 + 0x1000 * data); + membank("rambank")->set_entry(data & 0x07); } READ8_MEMBER(royalmah_state::janptr96_unknown_r) @@ -953,7 +948,7 @@ READ8_MEMBER(royalmah_state::mjifb_rom_io_r) { case 0x8000: return ioport("DSW4")->read(); // dsw 4 case 0x8200: return ioport("DSW3")->read(); // dsw 3 - case 0x9001: return machine().device<ay8910_device>("aysnd")->data_r(space, 0); // inputs + case 0x9001: return m_ay->data_r(space, 0); // inputs case 0x9011: return ioport("SYSTEM")->read(); } @@ -963,10 +958,9 @@ READ8_MEMBER(royalmah_state::mjifb_rom_io_r) WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w) { - uint8_t *videoram = m_videoram; if (m_mjifb_rom_enable) { - videoram[offset] = data; + m_videoram[offset] = data; return; } @@ -975,8 +969,8 @@ WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w) switch(offset) { case 0x8e00: m_palette_base = data & 0x1f; return; - case 0x9002: machine().device<ay8910_device>("aysnd")->data_w(space,0,data); return; - case 0x9003: machine().device<ay8910_device>("aysnd")->address_w(space,0,data); return; + case 0x9002: m_ay->data_w(space,0,data); return; + case 0x9003: m_ay->address_w(space,0,data); return; case 0x9010: mjifb_coin_counter_w(space,0,data); return; @@ -991,8 +985,7 @@ WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w) WRITE8_MEMBER(royalmah_state::mjifb_videoram_w) { - uint8_t *videoram = m_videoram; - videoram[offset + 0x4000] = data; + m_videoram[offset + 0x4000] = data; } static ADDRESS_MAP_START( mjifb_map, AS_PROGRAM, 8, royalmah_state ) @@ -1062,7 +1055,7 @@ READ8_MEMBER(royalmah_state::mjdejavu_rom_io_r) { case 0x8000: return ioport("DSW2")->read(); // dsw 2 case 0x8001: return ioport("DSW1")->read(); // dsw 1 - case 0x9001: return machine().device<ay8910_device>("aysnd")->data_r(space, 0); // inputs + case 0x9001: return m_ay->data_r(space, 0); // inputs case 0x9011: return ioport("SYSTEM")->read(); } @@ -1072,10 +1065,9 @@ READ8_MEMBER(royalmah_state::mjdejavu_rom_io_r) WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w) { - uint8_t *videoram = m_videoram; if (m_mjifb_rom_enable) { - videoram[offset] = data; + m_videoram[offset] = data; return; } @@ -1083,8 +1075,8 @@ WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w) switch(offset) { case 0x8802: m_palette_base = data & 0x1f; return; - case 0x9002: machine().device<ay8910_device>("aysnd")->data_w(space,0,data); return; - case 0x9003: machine().device<ay8910_device>("aysnd")->address_w(space,0,data); return; + case 0x9002: m_ay->data_w(space,0,data); return; + case 0x9003: m_ay->address_w(space,0,data); return; case 0x9010: janptr96_coin_counter_w(space,0,data); return; case 0x9011: input_port_select_w(space,0,data); return; case 0x9013: @@ -1114,7 +1106,7 @@ READ8_MEMBER(royalmah_state::mjtensin_p3_r) void royalmah_state::mjtensin_update_rombank() { - membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); + membank("mainbank")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); } WRITE8_MEMBER(royalmah_state::mjtensin_p4_w) { @@ -1139,7 +1131,7 @@ static ADDRESS_MAP_START( mjtensin_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x6ff1, 0x6ff1 ) AM_WRITE(mjderngr_palbank_w ) AM_RANGE( 0x6ff3, 0x6ff3 ) AM_WRITE(mjtensin_6ff3_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM AM_SHARE("nvram") - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -1155,7 +1147,7 @@ ADDRESS_MAP_END void royalmah_state::cafetime_update_rombank() { - membank("bank1")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); + membank("mainbank")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); } WRITE8_MEMBER(royalmah_state::cafetime_p4_w) { @@ -1209,7 +1201,7 @@ static ADDRESS_MAP_START( cafetime_map, AS_PROGRAM, 8, royalmah_state ) AM_RANGE( 0x7fe3, 0x7fe3 ) AM_WRITE(cafetime_7fe3_w ) AM_RANGE( 0x7fe4, 0x7fe4 ) AM_READ(cafetime_7fe4_r ) AM_RANGE( 0x7ff0, 0x7fff ) AM_DEVREADWRITE("rtc", msm6242_device, read, write) - AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "bank1" ) + AM_RANGE( 0x8000, 0xffff ) AM_ROMBANK( "mainbank" ) AM_RANGE( 0x8000, 0xffff ) AM_WRITEONLY AM_SHARE("videoram") ADDRESS_MAP_END @@ -1255,10 +1247,9 @@ READ8_MEMBER(royalmah_state::mjvegasa_rom_io_r) WRITE8_MEMBER(royalmah_state::mjvegasa_rom_io_w) { - uint8_t *videoram = m_videoram; if ((m_rombank & 0x70) != 0x70) { - videoram[offset] = data; + m_videoram[offset] = data; return; } @@ -3368,8 +3359,8 @@ static MACHINE_CONFIG_START( royalmah ) MCFG_SPEAKER_STANDARD_MONO("speaker") MCFG_SOUND_ADD("aysnd", AY8910, 18432000/12) - MCFG_AY8910_PORT_A_READ_CB(READ8(royalmah_state, royalmah_player_1_port_r)) - MCFG_AY8910_PORT_B_READ_CB(READ8(royalmah_state, royalmah_player_2_port_r)) + MCFG_AY8910_PORT_A_READ_CB(READ8(royalmah_state, player_1_port_r)) + MCFG_AY8910_PORT_B_READ_CB(READ8(royalmah_state, player_2_port_r)) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.33) MACHINE_CONFIG_END @@ -4978,6 +4969,7 @@ ROM_START( jangtaku ) /*this is just a z80 Voice Player (and latches port I/O $00 with the main CPU)*/ ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "1.a3", 0x00000, 0x8000, CRC(745162d3) SHA1(145269c60c87e772e6cbca40213d286ec05c9134) ) + // THE Jantaku Voice Ver 1.0 (C) Copy Right 1986 DYNA Computer Service CO.,LTD. By Satoshi Kato ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "82s123a.6k", 0x0000, 0x0020, CRC(e9598146) SHA1(619e7eb76cc3e882b5b3e55cdd23fe00b0a1fe45) ) @@ -5002,16 +4994,57 @@ ROM_START( rkjanoh2 ) ROM_LOAD( "82s123", 0x000, 0x020, CRC(74a53e94) SHA1(ca9114bd9b2b07f5abe82616b41ae9fdb9537a4f) ) ROM_END -DRIVER_INIT_MEMBER(royalmah_state,ippatsu) +DRIVER_INIT_MEMBER(royalmah_state, tahjong) +{ + membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000); +} + +DRIVER_INIT_MEMBER(royalmah_state, jansou) { - membank("bank1")->set_base(memregion("maincpu")->base() + 0x8000 ); + save_item(NAME(m_gfx_adr_l)); + save_item(NAME(m_gfx_adr_m)); + save_item(NAME(m_gfx_adr_h)); + save_item(NAME(m_gfx_adr)); + save_item(NAME(m_gfxdata0)); + save_item(NAME(m_gfxdata1)); + save_item(NAME(m_jansou_colortable)); } -DRIVER_INIT_MEMBER(royalmah_state,janptr96) +DRIVER_INIT_MEMBER(royalmah_state, dynax) { + membank("mainbank")->configure_entries(0, 32, memregion("maincpu")->base() + 0x10000, 0x8000); +} + +DRIVER_INIT_MEMBER(royalmah_state, ippatsu) +{ + membank("mainbank")->set_base(memregion("maincpu")->base() + 0x8000 ); +} + +DRIVER_INIT_MEMBER(royalmah_state, suzume) +{ + membank("mainbank")->configure_entries(0, 8, memregion("maincpu")->base() + 0x10000, 0x8000); + + save_item(NAME(m_suzume_bank)); +} + +DRIVER_INIT_MEMBER(royalmah_state, mjifb) +{ + save_item(NAME(m_mjifb_rom_enable)); +} + +DRIVER_INIT_MEMBER(royalmah_state, tontonb) +{ + membank("mainbank")->configure_entries(0, 16, memregion("maincpu")->base() + 0x10000, 0x8000); +} + +DRIVER_INIT_MEMBER(royalmah_state, janptr96) +{ + membank("mainbank")->configure_entries(0, 64, memregion("maincpu")->base() + 0x10000, 0x8000); + m_janptr96_nvram = std::make_unique<uint8_t[]>(0x1000 * 9); membank("bank3")->set_base(m_janptr96_nvram.get()); machine().device<nvram_device>("nvram")->set_base(m_janptr96_nvram.get(), 0x1000 * 9); + membank("rambank")->configure_entries(0, 8, m_janptr96_nvram.get() + 0x1000, 0x1000); } @@ -5021,40 +5054,40 @@ GAME( 1981, royalmj, 0, royalmah, royalmah, royalmah_state, 0, R GAME( 1981?, openmj, royalmj, royalmah, royalmah, royalmah_state, 0, ROT0, "Sapporo Mechanic", "Open Mahjong [BET] (Japan)", 0 ) GAME( 1982, royalmah, royalmj, royalmah, royalmah, royalmah_state, 0, ROT0, "bootleg", "Royal Mahjong (Falcon bootleg, v1.01)", 0 ) GAME( 1983, janyoup2, royalmj, ippatsu, janyoup2, royalmah_state, 0, ROT0, "Cosmo Denshi", "Janyou Part II (ver 7.03, July 1 1983)",0 ) -GAME( 1985, tahjong, royalmj, tahjong, tahjong, royalmah_state, 0, ROT0, "Bally Pond / Nasco", "Tahjong Yakitori (ver. 2-1)", 0 ) // 1985 Jun. 17 +GAME( 1985, tahjong, royalmj, tahjong, tahjong, royalmah_state, tahjong, ROT0, "Bally Pond / Nasco", "Tahjong Yakitori (ver. 2-1)", 0 ) // 1985 Jun. 17 GAME( 1981, janputer, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "bootleg (Paradise Denshi Ltd. / Mes)", "New Double Bet Mahjong (bootleg of Royal Mahjong) [BET]", 0 ) // MT #05392 GAME( 1984, rkjanoh2, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "SNK / Dyna", "Royal King Jang Oh 2 (v4.00 1984 Jun 10th)", MACHINE_NOT_WORKING ) GAME( 1984, janoh, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "Toaplan", "Jan Oh (set 1)", MACHINE_NOT_WORKING ) GAME( 1984, janoha, janoh, janoh, royalmah, royalmah_state, 0, ROT0, "Toaplan", "Jan Oh (set 2)", MACHINE_NOT_WORKING ) // this one is complete? -GAME( 1985, jansou, 0, jansou, jansou, royalmah_state, 0, ROT0, "Dyna Computer", "Jansou (set 1)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) -GAME( 1985, jansoua, jansou, jansou, jansou, royalmah_state, 0, ROT0, "Dyna Computer", "Jansou (V 1.1)", 0 ) -GAME( 1986, jangtaku, 0, jansou, jansou, royalmah_state, 0, ROT0, "Dyna Computer", "Jang Taku (V 1.3)", 0 ) -GAME( 1986, dondenmj, 0, dondenmj, majs101b, royalmah_state, 0, ROT0, "Dyna Electronics", "Don Den Mahjong [BET] (Japan)", 0 ) +GAME( 1985, jansou, 0, jansou, jansou, royalmah_state, jansou, ROT0, "Dyna Computer", "Jansou (set 1)", MACHINE_NOT_WORKING|MACHINE_NO_SOUND ) +GAME( 1985, jansoua, jansou, jansou, jansou, royalmah_state, jansou, ROT0, "Dyna Computer", "Jansou (V 1.1)", 0 ) +GAME( 1986, jangtaku, 0, jansou, jansou, royalmah_state, jansou, ROT0, "Dyna Computer", "Jang Taku (V 1.3)", 0 ) +GAME( 1986, dondenmj, 0, dondenmj, majs101b, royalmah_state, dynax, ROT0, "Dyna Electronics", "Don Den Mahjong [BET] (Japan)", 0 ) GAME( 1986, ippatsu, 0, ippatsu, ippatsu, royalmah_state, ippatsu, ROT0, "Public Software / Paradais", "Ippatsu Gyakuten [BET] (Japan)", 0 ) -GAME( 1986, suzume, 0, suzume, suzume, royalmah_state, 0, ROT0, "Dyna Electronics", "Watashiha Suzumechan (Japan)", 0 ) +GAME( 1986, suzume, 0, suzume, suzume, royalmah_state, suzume, ROT0, "Dyna Electronics", "Watashiha Suzumechan (Japan)", 0 ) GAME( 1986, mjsiyoub, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "Visco", "Mahjong Shiyou (Japan)", MACHINE_NOT_WORKING ) GAME( 1986, mjsenka, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "Visco", "Mahjong Senka (Japan)", MACHINE_NOT_WORKING ) GAME( 1986, mjyarou, 0, mjyarou, mjyarou, royalmah_state, 0, ROT0, "Visco / Video System", "Mahjong Yarou [BET] (Japan, set 1)", MACHINE_IMPERFECT_GRAPHICS ) // girls aren't shown GAME( 1986, mjyarou2, mjyarou, mjyarou, mjyarou, royalmah_state, 0, ROT0, "Visco / Video System", "Mahjong Yarou [BET] (Japan, set 2)", MACHINE_IMPERFECT_GRAPHICS ) // girls aren't shown -GAME( 1986?, mjclub, 0, mjclub, mjclub, royalmah_state, 0, ROT0, "Xex", "Mahjong Club [BET] (Japan)", 0 ) -GAME( 1987, mjdiplob, 0, mjdiplob, mjdiplob, royalmah_state, 0, ROT0, "Dynax", "Mahjong Diplomat [BET] (Japan)", 0 ) -GAME( 1987, tontonb, 0, tontonb, tontonb, royalmah_state, 0, ROT0, "Dynax", "Tonton [BET] (Japan, set 1)", 0 ) -GAME( 1987, makaijan, 0, makaijan, makaijan, royalmah_state, 0, ROT0, "Dynax", "Makaijan [BET] (Japan)", 0 ) -GAME( 1988, majs101b, 0, majs101b, majs101b, royalmah_state, 0, ROT0, "Dynax", "Mahjong Studio 101 [BET] (Japan)", 0 ) -GAME( 1988, mjapinky, 0, mjapinky, mjapinky, royalmah_state, 0, ROT0, "Dynax", "Almond Pinky [BET] (Japan)", 0 ) -GAME( 1989, mjdejavu, 0, mjdejavu, mjdejavu, royalmah_state, 0, ROT0, "Dynax", "Mahjong Shinkirou Deja Vu (Japan)", MACHINE_NOT_WORKING ) // MT #00964 -GAME( 1989, mjdejav2, mjdejavu, mjdejavu, mjdejavu, royalmah_state, 0, ROT0, "Dynax", "Mahjong Shinkirou Deja Vu 2 (Japan)", MACHINE_NOT_WORKING ) -GAME( 1989, mjderngr, 0, mjderngr, mjderngr, royalmah_state, 0, ROT0, "Dynax", "Mahjong Derringer (Japan)", 0 ) +GAME( 1986?, mjclub, 0, mjclub, mjclub, royalmah_state, tontonb, ROT0, "Xex", "Mahjong Club [BET] (Japan)", 0 ) +GAME( 1987, mjdiplob, 0, mjdiplob, mjdiplob, royalmah_state, tontonb, ROT0, "Dynax", "Mahjong Diplomat [BET] (Japan)", 0 ) +GAME( 1987, tontonb, 0, tontonb, tontonb, royalmah_state, tontonb, ROT0, "Dynax", "Tonton [BET] (Japan, set 1)", 0 ) +GAME( 1987, makaijan, 0, makaijan, makaijan, royalmah_state, dynax, ROT0, "Dynax", "Makaijan [BET] (Japan)", 0 ) +GAME( 1988, majs101b, 0, majs101b, majs101b, royalmah_state, dynax, ROT0, "Dynax", "Mahjong Studio 101 [BET] (Japan)", 0 ) +GAME( 1988, mjapinky, 0, mjapinky, mjapinky, royalmah_state, tontonb, ROT0, "Dynax", "Almond Pinky [BET] (Japan)", 0 ) +GAME( 1989, mjdejavu, 0, mjdejavu, mjdejavu, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong Shinkirou Deja Vu (Japan)", MACHINE_NOT_WORKING ) // MT #00964 +GAME( 1989, mjdejav2, mjdejavu, mjdejavu, mjdejavu, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong Shinkirou Deja Vu 2 (Japan)", MACHINE_NOT_WORKING ) +GAME( 1989, mjderngr, 0, mjderngr, mjderngr, royalmah_state, dynax, ROT0, "Dynax", "Mahjong Derringer (Japan)", 0 ) GAME( 1989, daisyari, 0, daisyari, daisyari, royalmah_state, 0, ROT0, "Best System", "Daisyarin [BET] (Japan)", 0 ) -GAME( 1990, mjifb, 0, mjifb, mjifb, royalmah_state, 0, ROT0, "Dynax", "Mahjong If...? [BET]", 0 ) -GAME( 1990, mjifb2, mjifb, mjifb, mjifb, royalmah_state, 0, ROT0, "Dynax", "Mahjong If...? [BET](2921)", 0 ) -GAME( 1990, mjifb3, mjifb, mjifb, mjifb, royalmah_state, 0, ROT0, "Dynax", "Mahjong If...? [BET](2931)", 0 ) +GAME( 1990, mjifb, 0, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong If...? [BET]", 0 ) +GAME( 1990, mjifb2, mjifb, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong If...? [BET](2921)", 0 ) +GAME( 1990, mjifb3, mjifb, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong If...? [BET](2931)", 0 ) GAME( 1991, mjvegasa, 0, mjvegasa, mjvegasa, royalmah_state, 0, ROT0, "Dynax", "Mahjong Vegas (Japan, unprotected)", 0 ) GAME( 1991, mjvegas, mjvegasa, mjvegasa, mjvegasa, royalmah_state, 0, ROT0, "Dynax", "Mahjong Vegas (Japan)", MACHINE_NOT_WORKING ) GAME( 1992, cafetime, 0, cafetime, cafetime, royalmah_state, 0, ROT0, "Dynax", "Mahjong Cafe Time", 0 ) -GAME( 1993, cafedoll, 0, mjifb, mjifb, royalmah_state, 0, ROT0, "Dynax", "Mahjong Cafe Doll (Japan)", MACHINE_NOT_WORKING ) +GAME( 1993, cafedoll, 0, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Dynax", "Mahjong Cafe Doll (Japan)", MACHINE_NOT_WORKING ) GAME( 1995, mjtensin, 0, mjtensin, mjtensin, royalmah_state, 0, ROT0, "Dynax", "Mahjong Tensinhai (Japan)", MACHINE_NOT_WORKING ) GAME( 1996, janptr96, 0, janptr96, janptr96, royalmah_state, janptr96, ROT0, "Dynax", "Janputer '96 (Japan)", 0 ) GAME( 1997, janptrsp, 0, janptr96, janptr96, royalmah_state, janptr96, ROT0, "Dynax", "Janputer Special (Japan)", 0 ) -GAME( 1999, cafebrk, 0, mjifb, mjifb, royalmah_state, 0, ROT0, "Nakanihon / Dynax", "Mahjong Cafe Break", MACHINE_NOT_WORKING ) -GAME( 1999, cafepara, 0, mjifb, mjifb, royalmah_state, 0, ROT0, "Techno-Top", "Mahjong Cafe Paradise", MACHINE_NOT_WORKING ) +GAME( 1999, cafebrk, 0, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Nakanihon / Dynax", "Mahjong Cafe Break", MACHINE_NOT_WORKING ) +GAME( 1999, cafepara, 0, mjifb, mjifb, royalmah_state, mjifb, ROT0, "Techno-Top", "Mahjong Cafe Paradise", MACHINE_NOT_WORKING ) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index c6209e2506b..07b296ce621 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -10328,6 +10328,7 @@ ssf2t // 23/02/1994 (c) 1994 (World) ssf2ta // 23/02/1994 (c) 1994 (Asia) ssf2tad // ssf2tb // 19/11/1993 (c) 1993 (World) +ssf2tba // 05/10/1993 (c) 1993 (Asia) ssf2tbd // ssf2tbh // 05/10/1993 (c) 1993 (Hispanic) ssf2tbj // 05/10/1993 (c) 1993 (Japan) |