// license:BSD-3-Clause // copyright-holders:Zsolt Vasvari, Nicola Salmoria, Luca Elia /**************************************************************************** Royal Mahjong (c) 1981 Nichibutsu and many other Dyna/Dynax games running in similar bare-bones hardware driver by Zsolt Vasvari, Nicola Salmoria, Luca Elia CPU: Z80 or TLCS-90 Video: Framebuffer Sound: AY-3-8910 (or YM2149) OSC: 18.432MHz and 8MHz ----------------------------------------------------------------------------------------------------------------------- Year + Game Board(s) CPU Company Notes ----------------------------------------------------------------------------------------------------------------------- 81 Royal Mahjong Z80 Nichibutsu 81? Open Mahjong Z80 Sapporo Mechanic 82 Royal Mahjong ? + FRM-03 Z80 Falcon bootleg 83 Janyou Part II Z80 Cosmo Denshi 84? Jan Oh FRM-00? Z80 Toaplan Incomplete program roms 86 Ippatsu Gyakuten Z80 Public/Paradais 86 Don Den Mahjong D039198L-0 Z80 Dyna Electronics 86 Watashiha Suzumechan D8803288L1-0 Z80 Dyna Electronics 87 Mahjong Diplomat D0706088L1-0 Z80 Dynax 87 Mahjong Studio 101 D1708228L1 Z80 Dynax 87 Tonton D0908288L1-0 Z80 Dynax 88 Almond Pinky D1401128L-0 + RM-1D Z80 Dynax 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) 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 95 Mahjong Tensinhai D10010318L1 TLCS-90 Dynax Larger palette, RTC 96 Janputer '96 NS503X0727 Z80 Dynax Larger palette, RTC 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 ----------------------------------------------------------------------------------------------------------------------- TODO: - dip switches and inputs in dondenmj, suzume, mjderngr... - there's something fishy with the bank switching in tontonb/mjdiplob - majs101b: service mode doesn't work - 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) : 1) 'royalmah' - COIN1 doesn't work correctly, the screen goes black instead of showing the credits, and you can start a game but the "phantom" credit is not subtracted; with NVRAM support, this means the game would always boot to a black screen. - The doesn't seem to be any possibility to play a 2 players game (but the inputs are mapped so you can test them in the "test mode"). P1 IN4 doesn't seem to be needed outside the "test mode" either. 2) 'tontonb' - The doesn't seem to be any possibility to play a 2 players game (but the inputs are mapped so you can test them in the "test mode") P1 IN4 doesn't seem to be needed outside the "test mode" either. - I've DELIBERATELY mapped DSW3 before DSW2 to try to spot the common things with the other Dynax mahjong games ! Please don't change this ! - When "Special Combinations" Dip Switch is ON, there is a marker in front of a random combination. It's value is *2 then. 3) 'mjdiplob' - The doesn't seem to be any possibility to play a 2 players game (but the inputs are mapped so you can test them in the "test mode") P1 IN4 doesn't seem to be needed outside the "test mode" either. - When "Special Combinations" Dip Switch is ON, there is a marker in 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) 2009-03-25 FP: fixed verified DSW and default settings for mjclub (thanks to translation from manual by Yasu) ****************************************************************************/ #include "emu.h" #include "cpu/z80/z80.h" #include "cpu/z80/tmpz84c015.h" #include "cpu/tlcs90/tlcs90.h" #include "machine/gen_latch.h" #include "machine/msm6242.h" #include "machine/nvram.h" #include "sound/ay8910.h" #include "sound/dac.h" #include "sound/volt_reg.h" #include "video/mc6845.h" #include "screen.h" #include "speaker.h" class royalmah_state : public driver_device { 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") { } 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(tahjong_bank_w); DECLARE_WRITE8_MEMBER(mjderngr_coin_w); DECLARE_WRITE8_MEMBER(mjderngr_palbank_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); DECLARE_WRITE8_MEMBER(jansou_6400_w); DECLARE_WRITE8_MEMBER(jansou_6401_w); DECLARE_WRITE8_MEMBER(jansou_6402_w); DECLARE_READ8_MEMBER(jansou_6403_r); 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_dsw_r); DECLARE_WRITE8_MEMBER(janptr96_rombank_w); DECLARE_WRITE8_MEMBER(janptr96_rambank_w); DECLARE_READ8_MEMBER(janptr96_unknown_r); DECLARE_WRITE8_MEMBER(janptr96_coin_counter_w); DECLARE_WRITE8_MEMBER(mjifb_coin_counter_w); DECLARE_READ8_MEMBER(mjifb_rom_io_r); DECLARE_WRITE8_MEMBER(mjifb_rom_io_w); DECLARE_WRITE8_MEMBER(mjifb_videoram_w); DECLARE_READ8_MEMBER(mjifb_p3_r); DECLARE_READ8_MEMBER(mjifb_p5_r); DECLARE_READ8_MEMBER(mjifb_p6_r); DECLARE_READ8_MEMBER(mjifb_p7_r); DECLARE_READ8_MEMBER(mjifb_p8_r); 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); DECLARE_READ8_MEMBER(mjvegasa_rom_io_r); DECLARE_WRITE8_MEMBER(mjvegasa_rom_io_w); DECLARE_WRITE8_MEMBER(mjvegasa_coin_counter_w); DECLARE_WRITE8_MEMBER(mjvegasa_12400_w); DECLARE_READ8_MEMBER(mjvegasa_12500_r); 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); void mjdiplob(machine_config &config); void tahjong(machine_config &config); void tontonb(machine_config &config); void mjderngr(machine_config &config); void mjyarou(machine_config &config); void janoh(machine_config &config); void mjtensin(machine_config &config); void mjvegasa(machine_config &config); void jansou(machine_config &config); void cafetime(machine_config &config); void seljan(machine_config &config); void majs101b(machine_config &config); void dondenmj(machine_config &config); void daisyari(machine_config &config); void mjdejavu(machine_config &config); void mjapinky(machine_config &config); void royalmah(machine_config &config); void mjifb(machine_config &config); void janptr96(machine_config &config); void ippatsu(machine_config &config); void suzume(machine_config &config); void mjclub(machine_config &config); void makaijan(machine_config &config); void janyoup2(machine_config &config); void cafetime_map(address_map &map); void daisyari_iomap(address_map &map); void dondenmj_iomap(address_map &map); void ippatsu_iomap(address_map &map); void janoh_map(address_map &map); void janoh_sub_iomap(address_map &map); void janoh_sub_map(address_map &map); void janptr96_iomap(address_map &map); void janptr96_map(address_map &map); void jansou_map(address_map &map); void jansou_sub_iomap(address_map &map); void jansou_sub_map(address_map &map); void janyoup2_iomap(address_map &map); void majs101b_iomap(address_map &map); void makaijan_iomap(address_map &map); void mjapinky_iomap(address_map &map); void mjapinky_map(address_map &map); void mjclub_iomap(address_map &map); void mjdejavu_map(address_map &map); void mjderngr_iomap(address_map &map); void mjdiplob_iomap(address_map &map); void mjifb_map(address_map &map); void mjtensin_map(address_map &map); void mjvegasa_map(address_map &map); void mjyarou_iomap(address_map &map); void royalmah_iomap(address_map &map); void royalmah_map(address_map &map); void seljan_iomap(address_map &map); void seljan_map(address_map &map); void suzume_iomap(address_map &map); void tahjong_iomap(address_map &map); void tahjong_map(address_map &map); void tontonb_iomap(address_map &map); protected: virtual void machine_start() override; private: required_device m_maincpu; required_device m_ay; required_shared_ptr m_videoram; optional_device m_audiocpu; optional_device m_rtc; optional_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 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) { offs_t i; const uint8_t *prom = memregion("proms")->base(); int len = memregion("proms")->bytes(); for (i = 0; i < len; i++) { uint8_t bit0, bit1, bit2, r, g, b; uint8_t data = prom[i]; /* red component */ bit0 = (data >> 0) & 0x01; bit1 = (data >> 1) & 0x01; bit2 = (data >> 2) & 0x01; r = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; /* green component */ bit0 = (data >> 3) & 0x01; bit1 = (data >> 4) & 0x01; bit2 = (data >> 5) & 0x01; g = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; /* blue component */ bit0 = 0; bit1 = (data >> 6) & 0x01; bit2 = (data >> 7) & 0x01; b = 0x21 * bit0 + 0x47 * bit1 + 0x97 * bit2; palette.set_pen_color(i, r,g,b); } } PALETTE_INIT_MEMBER(royalmah_state,mjderngr) { offs_t i; const uint8_t *prom = memregion("proms")->base(); int len = memregion("proms")->bytes(); for (i = 0; i < len / 2; i++) { uint16_t data = (prom[i] << 8) | prom[i + 0x200]; /* the bits are in reverse order */ uint8_t r = bitswap<8>((data >> 0) & 0x1f,7,6,5,0,1,2,3,4 ); uint8_t g = bitswap<8>((data >> 5) & 0x1f,7,6,5,0,1,2,3,4 ); uint8_t b = bitswap<8>((data >> 10) & 0x1f,7,6,5,0,1,2,3,4 ); palette.set_pen_color(i, pal5bit(r), pal5bit(g), pal5bit(b)); } } WRITE8_MEMBER(royalmah_state::royalmah_palbank_w) { /* bit 1 = coin counter */ machine().bookkeeping().coin_counter_w(0,data & 2); /* bit 2 = flip screen */ m_flip_screen = (data & 4) >> 2; /* bit 3 = palette bank */ m_palette_base = (data >> 3) & 0x01; } WRITE8_MEMBER(royalmah_state::mjderngr_coin_w) { /* bit 1 = coin counter */ machine().bookkeeping().coin_counter_w(0,data & 2); /* bit 2 = flip screen */ m_flip_screen = (data & 4) >> 2; } WRITE8_MEMBER(royalmah_state::mjderngr_palbank_w) { m_palette_base = data; } uint32_t royalmah_state::screen_update_royalmah(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { for (offs_t offs = 0; offs < 0x4000; offs++) { 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 (int i = 0; i < 4; i++) { uint8_t pen = ((data2 >> 1) & 0x08) | ((data2 << 2) & 0x04) | ((data1 >> 3) & 0x02) | ((data1 >> 0) & 0x01); bitmap.pix16(y, x) = (m_palette_base << 4) | pen; x = (m_flip_screen) ? x - 1 : x + 1; data1 = data1 >> 1; data2 = data2 >> 1; } } return 0; } WRITE8_MEMBER(royalmah_state::input_port_select_w) { m_input_port_select = data; } READ8_MEMBER(royalmah_state::player_1_port_r) { int ret = (ioport("KEY0")->read() & 0xc0) | 0x3f; if ((m_input_port_select & 0x01) == 0) ret &= ioport("KEY0")->read(); if ((m_input_port_select & 0x02) == 0) ret &= ioport("KEY1")->read(); if ((m_input_port_select & 0x04) == 0) ret &= ioport("KEY2")->read(); if ((m_input_port_select & 0x08) == 0) ret &= ioport("KEY3")->read(); if ((m_input_port_select & 0x10) == 0) ret &= ioport("KEY4")->read(); return ret; } READ8_MEMBER(royalmah_state::player_2_port_r) { int ret = (ioport("KEY5")->read() & 0xc0) | 0x3f; if ((m_input_port_select & 0x01) == 0) ret &= ioport("KEY5")->read(); if ((m_input_port_select & 0x02) == 0) ret &= ioport("KEY6")->read(); if ((m_input_port_select & 0x04) == 0) ret &= ioport("KEY7")->read(); if ((m_input_port_select & 0x08) == 0) ret &= ioport("KEY8")->read(); if ((m_input_port_select & 0x10) == 0) ret &= ioport("KEY9")->read(); return ret; } READ8_MEMBER(royalmah_state::majs101b_dsw_r) { switch (m_dsw_select) { case 0x00: return ioport("DSW3")->read(); /* DSW3 */ case 0x20: return ioport("DSW4")->read(); /* DSW4 */ case 0x40: return ioport("DSW2")->read(); /* DSW2 */ } return 0; } READ8_MEMBER(royalmah_state::suzume_dsw_r) { if (m_suzume_bank & 0x40) { return m_suzume_bank; } else { switch (m_suzume_bank) { case 0x08: return ioport("DSW4")->read(); /* DSW4 */ case 0x10: return ioport("DSW3")->read(); /* DSW3 */ case 0x18: return ioport("DSW2")->read(); /* DSW2 */ } return 0; } } WRITE8_MEMBER(royalmah_state::tahjong_bank_w) { membank("mainbank")->set_entry(data & 0x01); } WRITE8_MEMBER(royalmah_state::suzume_bank_w) { m_suzume_bank = data; logerror("%04x: bank %02x\n",m_maincpu->pc(),data); /* bits 6, 4 and 3 used for something input related? */ membank("mainbank")->set_entry(data & 0x07); } WRITE8_MEMBER(royalmah_state::mjapinky_bank_w) { m_rombank = data; membank("mainbank")->set_entry(data & 0x0f); } WRITE8_MEMBER(royalmah_state::mjapinky_palbank_w) { m_flip_screen = (data & 4) >> 2; m_palette_base = (data >> 3) & 0x01; machine().bookkeeping().coin_counter_w(0,data & 2); // in machine().bookkeeping().coin_counter_w(1,data & 1); // out } READ8_MEMBER(royalmah_state::mjapinky_dsw_r) { if (m_rombank == 0x0e) return ioport("DSW3")->read(); else return *(memregion("maincpu")->base() + 0x10000 + 0x8000 * m_rombank); } WRITE8_MEMBER(royalmah_state::tontonb_bank_w) { logerror("%04x: bank %02x\n",m_maincpu->pc(),data); if (data == 0) return; // tontonb fix? 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) { //logerror("%04x: bank %02x\n",m_maincpu->pc(),data); m_dsw_select = data & 0x60; membank("mainbank")->set_entry(data & 0x1f); } READ8_MEMBER(royalmah_state::daisyari_dsw_r) { switch (m_dsw_select) { case 0x00: return ioport("DSW4")->read(); case 0x04: return ioport("DSW1")->read(); case 0x08: return ioport("DSW2")->read(); case 0x0c: return ioport("DSW3")->read(); } return 0; } WRITE8_MEMBER(royalmah_state::daisyari_bank_w) { uint8_t *rom = memregion("maincpu")->base(); int address; m_dsw_select = (data & 0xc); address = 0x10000 + ((data & 0x30)>>4) * 0x10000 + (data & 0x1) * 0x8000; // printf("%08x %02x\n",address,data); membank("mainbank")->set_base(&rom[address]); /* bit 1 used too but unknown purpose. */ } READ8_MEMBER(royalmah_state::mjclub_dsw_r) { switch (m_dsw_select) { // case 0x00: return ioport("DSW4")->read(); case 0x40: return ioport("DSW2")->read(); case 0x80: return ioport("DSW3")->read(); case 0xc0: return ioport("DSW4")->read(); } return 0; } WRITE8_MEMBER(royalmah_state::mjclub_bank_w) { m_dsw_select = data & 0xc0; membank("mainbank")->set_entry(data & 0x0f); /* bit 5 used too but unknown purpose. */ } void royalmah_state::royalmah_map(address_map &map) { map(0x0000, 0x6fff).rom().nopw(); map(0x7000, 0x7fff).ram().share("nvram"); map(0x8000, 0xffff).bankr("mainbank"); // banked ROMs not present in royalmah map(0x8000, 0xffff).writeonly().share("videoram"); } void royalmah_state::mjapinky_map(address_map &map) { map(0x0000, 0x6fff).rom().nopw(); map(0x7000, 0x77ff).ram().share("nvram"); map(0x7800, 0x7fff).ram(); map(0x8000, 0xffff).bankr("mainbank"); map(0x8000, 0xffff).writeonly().share("videoram"); map(0x8000, 0x8000).r(this, FUNC(royalmah_state::mjapinky_dsw_r)); } void royalmah_state::tahjong_map(address_map &map) { map(0x0000, 0x3fff).rom().nopw(); map(0x4000, 0x6fff).bankr("mainbank"); map(0x7000, 0x7fff).ram().share("nvram"); map(0x8000, 0xffff).writeonly().share("videoram"); } void royalmah_state::royalmah_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); } void royalmah_state::ippatsu_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x12, 0x12).portr("DSW2"); map(0x13, 0x13).portr("DSW3"); } void royalmah_state::janyoup2_iomap(address_map &map) { ippatsu_iomap(map); map(0x20, 0x20).w("crtc", FUNC(mc6845_device::address_w)); map(0x21, 0x21).w("crtc", FUNC(mc6845_device::register_w)); } void royalmah_state::seljan_map(address_map &map) { map(0x0000, 0x8fff).rom().nopw(); map(0xe000, 0xefff).ram().share("nvram"); } void royalmah_state::seljan_iomap(address_map &map) { map(0x0001, 0x0001).mirror(0x7f00).r(m_ay, FUNC(ay8910_device::data_r)); map(0x0002, 0x0003).mirror(0x7f00).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x0010, 0x0010).mirror(0x7f00).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x0011, 0x0011).mirror(0x7f00).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x0012, 0x0012).mirror(0x7f00).portr("DSW2").w("crtc", FUNC(mc6845_device::address_w)); map(0x0013, 0x0013).mirror(0x7f00).portr("DSW3").w("crtc", FUNC(mc6845_device::register_w)); // TODO: following actually starts at 0x8000, needs custom 6845 routine because it uses start address register. map(0x7e00, 0xffff).ram().share("videoram"); } void royalmah_state::tahjong_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x12, 0x12).w(this, FUNC(royalmah_state::tahjong_bank_w)); map(0x13, 0x13).portr("DSW2"); } void royalmah_state::suzume_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x80, 0x80).r(this, FUNC(royalmah_state::suzume_dsw_r)); map(0x81, 0x81).w(this, FUNC(royalmah_state::suzume_bank_w)); } void royalmah_state::mjyarou_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x12, 0x12).portr("DSW2"); } void royalmah_state::dondenmj_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x85, 0x85).portr("DSW2"); // DSW2 map(0x86, 0x86).portr("DSW3"); // DSW3 map(0x87, 0x87).w(this, FUNC(royalmah_state::dynax_bank_w)); } void royalmah_state::makaijan_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x84, 0x84).portr("DSW2"); // DSW2 map(0x85, 0x85).portr("DSW3"); // DSW3 map(0x86, 0x86).w(this, FUNC(royalmah_state::dynax_bank_w)); } void royalmah_state::daisyari_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0xc0, 0xc0).rw(this, FUNC(royalmah_state::daisyari_dsw_r), FUNC(royalmah_state::daisyari_bank_w)); } void royalmah_state::mjclub_iomap(address_map &map) { map.global_mask(0xff); map(0x00, 0x00).rw(this, FUNC(royalmah_state::mjclub_dsw_r), FUNC(royalmah_state::mjclub_bank_w)); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); } void royalmah_state::mjdiplob_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x61, 0x61).w(this, FUNC(royalmah_state::tontonb_bank_w)); map(0x62, 0x62).portr("DSW2"); // DSW2 map(0x63, 0x63).portr("DSW3"); // DSW3 } void royalmah_state::tontonb_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x44, 0x44).w(this, FUNC(royalmah_state::tontonb_bank_w)); map(0x46, 0x46).portr("DSW2"); // DSW2 map(0x47, 0x47).portr("DSW3"); // DSW3 } void royalmah_state::majs101b_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::royalmah_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x00, 0x00).rw(this, FUNC(royalmah_state::majs101b_dsw_r), FUNC(royalmah_state::dynax_bank_w)); } void royalmah_state::mjderngr_iomap(address_map &map) { map.global_mask(0xff); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); // AM_RANGE( 0x10, 0x10 ) AM_READ_PORT("DSW1") map(0x10, 0x10).w(this, FUNC(royalmah_state::mjderngr_coin_w)); // palette bank is set separately map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x20, 0x20).w(this, FUNC(royalmah_state::dynax_bank_w)); map(0x40, 0x40).portr("DSW2"); map(0x4c, 0x4c).portr("DSW1"); map(0x60, 0x60).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); } void royalmah_state::mjapinky_iomap(address_map &map) { map.global_mask(0xff); map(0x00, 0x00).w(this, FUNC(royalmah_state::mjapinky_bank_w)); map(0x01, 0x01).r(m_ay, FUNC(ay8910_device::data_r)); map(0x02, 0x03).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x04, 0x04).portr("DSW2"); map(0x10, 0x10).portr("DSW1").w(this, FUNC(royalmah_state::mjapinky_palbank_w)); map(0x11, 0x11).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); } void royalmah_state::janoh_map(address_map &map) { map(0x0000, 0x6fff).rom().nopw(); map(0x7000, 0x7fff).ram().share("nvram"); map(0x8000, 0xffff).writeonly().share("videoram"); } /* this CPU makes little sense - what is it for? why so many addresses accessed? -- it puts a value in shared ram to allow the main CPU to boot, then.. ? */ void royalmah_state::janoh_sub_map(address_map &map) { map(0x0000, 0x3fff).rom(); map(0x4100, 0x413f).ram(); map(0x6000, 0x607f).ram(); map(0x7000, 0x7000).nopr(); map(0x7200, 0x7200).nopw(); map(0xf000, 0xffff).ram().share("nvram"); } void royalmah_state::janoh_sub_iomap(address_map &map) { } /**************************************************************************** Jansou ****************************************************************************/ WRITE8_MEMBER(royalmah_state::jansou_dsw_sel_w) { m_dsw_select = data; } READ8_MEMBER(royalmah_state::jansou_dsw_r) { switch (m_dsw_select & 7) { case 1: return ioport("DSW1")->read(); case 2: return ioport("DSW2")->read(); case 4: return ioport("DSW3")->read(); } return 0xff; } WRITE8_MEMBER(royalmah_state::jansou_colortable_w) { m_jansou_colortable[offset] = data; } WRITE8_MEMBER(royalmah_state::jansou_6400_w) { m_gfx_adr_l = data; m_gfx_adr = m_gfx_adr_h*0x10000 + m_gfx_adr_m*0x100 + m_gfx_adr_l; } WRITE8_MEMBER(royalmah_state::jansou_6401_w) { m_gfx_adr_m = data; m_gfx_adr = m_gfx_adr_h*0x10000 + m_gfx_adr_m*0x100 + m_gfx_adr_l; } WRITE8_MEMBER(royalmah_state::jansou_6402_w) { m_gfx_adr_h = data & 1; m_gfx_adr = m_gfx_adr_h*0x10000 + m_gfx_adr_m*0x100 + m_gfx_adr_l; } READ8_MEMBER(royalmah_state::jansou_6403_r) { uint8_t *GFXROM = memregion("gfx1")->base(); int d0 = GFXROM[m_gfx_adr]; int d1 = GFXROM[m_gfx_adr+1]; int c0 = m_jansou_colortable[d1 & 0x0f] & 0x0f; int c1 = m_jansou_colortable[(d1 & 0xf0) >> 4] >> 4; int c2 = m_jansou_colortable[d0 & 0x0f] & 0x0f; int c3 = m_jansou_colortable[(d0 & 0xf0) >> 4] >> 4; m_gfx_adr += 2; m_gfxdata0 = (c3 & 1) << 0 | ((c2 & 1) << 1) | ((c1 & 1) << 2) | ((c0 & 1) << 3) | ((c3 & 2) << 3) | ((c2 & 2) << 4) | ((c1 & 2) << 5) | ((c0 & 2) << 6); m_gfxdata1 = (c3 & 4) >> 2 | ((c2 & 4) >> 1) | (c1 & 4) | ((c0 & 4) << 1) | ((c3 & 8) << 1) | ((c2 & 8) << 2) | ((c1 & 8) << 3) | ((c0 & 8) << 4); return 0xff; } READ8_MEMBER(royalmah_state::jansou_6404_r) { return m_gfxdata0; } READ8_MEMBER(royalmah_state::jansou_6405_r) { return m_gfxdata1; } WRITE8_MEMBER(royalmah_state::jansou_sound_w) { m_soundlatch->write(space, 0, data); m_audiocpu->set_input_line(INPUT_LINE_NMI, PULSE_LINE); } void royalmah_state::jansou_map(address_map &map) { map(0x0000, 0x3fff).rom().nopw(); map(0x6000, 0x600f).w(this, FUNC(royalmah_state::jansou_colortable_w)); map(0x6400, 0x6400).w(this, FUNC(royalmah_state::jansou_6400_w)); map(0x6401, 0x6401).w(this, FUNC(royalmah_state::jansou_6401_w)); map(0x6402, 0x6402).w(this, FUNC(royalmah_state::jansou_6402_w)); map(0x6403, 0x6403).r(this, FUNC(royalmah_state::jansou_6403_r)); map(0x6404, 0x6404).r(this, FUNC(royalmah_state::jansou_6404_r)); map(0x6405, 0x6405).r(this, FUNC(royalmah_state::jansou_6405_r)); map(0x6406, 0x6406).w(this, FUNC(royalmah_state::jansou_dsw_sel_w)); map(0x6407, 0x6407).r(this, FUNC(royalmah_state::jansou_dsw_r)); map(0x6800, 0x6800).w(this, FUNC(royalmah_state::jansou_sound_w)); map(0x7000, 0x77ff).ram().share("nvram"); map(0x8000, 0xffff).writeonly().share("videoram"); } void royalmah_state::jansou_sub_map(address_map &map) { map(0x0000, 0xffff).rom().nopw(); // tries to write to the stack at irq generation } void royalmah_state::jansou_sub_iomap(address_map &map) { map.global_mask(0xff); map(0x00, 0x00).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("dac", FUNC(dac_byte_interface::write)); } /**************************************************************************** Janputer '96 ****************************************************************************/ void royalmah_state::janptr96_map(address_map &map) { map(0x0000, 0x5fff).rom(); map(0x6000, 0x6fff).bankrw("bank3").share("nvram"); // nvram map(0x7000, 0x7fff).bankrw("rambank"); // banked nvram map(0x8000, 0xffff).bankr("mainbank"); map(0x8000, 0xffff).writeonly().share("videoram"); } WRITE8_MEMBER(royalmah_state::janptr96_dswsel_w) { // 0x20 = 0 -> hopper on // 0x40 ? m_dsw_select = data; } READ8_MEMBER(royalmah_state::janptr96_dsw_r) { if (~m_dsw_select & 0x01) return ioport("DSW4")->read(); if (~m_dsw_select & 0x02) return ioport("DSW3")->read(); if (~m_dsw_select & 0x04) return ioport("DSW2")->read(); if (~m_dsw_select & 0x08) return ioport("DSW1")->read(); if (~m_dsw_select & 0x10) return ioport("DSWTOP")->read(); return 0xff; } WRITE8_MEMBER(royalmah_state::janptr96_rombank_w) { membank("mainbank")->set_entry(data & 0x3f); } WRITE8_MEMBER(royalmah_state::janptr96_rambank_w) { membank("rambank")->set_entry(data & 0x07); } READ8_MEMBER(royalmah_state::janptr96_unknown_r) { // 0x08 = 0 makes the game crash (e.g. in the m-ram test: nested interrupts?) return 0xff; } WRITE8_MEMBER(royalmah_state::janptr96_coin_counter_w) { m_flip_screen = (data & 4) >> 2; machine().bookkeeping().coin_counter_w(0,data & 2); // in machine().bookkeeping().coin_counter_w(1,data & 1); // out } void royalmah_state::janptr96_iomap(address_map &map) { map.global_mask(0xff); map(0x00, 0x00).w(this, FUNC(royalmah_state::janptr96_rombank_w)); // BANK ROM Select map(0x20, 0x20).rw(this, FUNC(royalmah_state::janptr96_unknown_r), FUNC(royalmah_state::janptr96_rambank_w)); map(0x50, 0x50).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); map(0x60, 0x6f).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)); map(0x81, 0x81).r(m_ay, FUNC(ay8910_device::data_r)); map(0x82, 0x83).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x93, 0x93).w(this, FUNC(royalmah_state::input_port_select_w)); map(0xd8, 0xd8).w(this, FUNC(royalmah_state::janptr96_coin_counter_w)); map(0xd9, 0xd9).portr("SYSTEM").nopw(); // second input select? } /**************************************************************************** Mahjong If ****************************************************************************/ WRITE8_MEMBER(royalmah_state::mjifb_coin_counter_w) { m_flip_screen = ((data & 4) >> 2) ^ 1; machine().bookkeeping().coin_counter_w(0,data & 2); // in machine().bookkeeping().coin_counter_w(1,data & 1); // out } READ8_MEMBER(royalmah_state::mjifb_rom_io_r) { if (m_mjifb_rom_enable) return ((uint8_t*)(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x4000))[offset]; offset += 0x8000; switch(offset) { case 0x8000: return ioport("DSW4")->read(); // dsw 4 case 0x8200: return ioport("DSW3")->read(); // dsw 3 case 0x9001: return m_ay->data_r(space, 0); // inputs case 0x9011: return ioport("SYSTEM")->read(); } logerror("%04X: unmapped input read at %04X\n", m_maincpu->pc(), offset); return 0xff; } WRITE8_MEMBER(royalmah_state::mjifb_rom_io_w) { if (m_mjifb_rom_enable) { m_videoram[offset] = data; return; } offset += 0x8000; switch(offset) { case 0x8e00: m_palette_base = data & 0x1f; 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; case 0x9011: input_port_select_w(space,0,data); return; case 0x9013: // if (data) popmessage("%02x",data); return; } logerror("%04X: unmapped input write at %04X = %02X\n", m_maincpu->pc(), offset,data); } WRITE8_MEMBER(royalmah_state::mjifb_videoram_w) { m_videoram[offset + 0x4000] = data; } void royalmah_state::mjifb_map(address_map &map) { map(0x0000, 0x6fff).rom(); map(0x7000, 0x7fff).ram().share("nvram"); map(0x8000, 0xbfff).rw(this, FUNC(royalmah_state::mjifb_rom_io_r), FUNC(royalmah_state::mjifb_rom_io_w)).share("videoram"); map(0xc000, 0xffff).rom().w(this, FUNC(royalmah_state::mjifb_videoram_w)); // AM_RANGE( 0xc000, 0xffff ) AM_ROM AM_WRITEONLY This should, but doesn't work } READ8_MEMBER(royalmah_state::mjifb_p3_r) { return ioport("PORT3_5")->read() >> 6; } READ8_MEMBER(royalmah_state::mjifb_p5_r) { return ioport("PORT3_5")->read(); } READ8_MEMBER(royalmah_state::mjifb_p6_r) { return ioport("PORT6_7")->read(); } READ8_MEMBER(royalmah_state::mjifb_p7_r) { return ioport("PORT6_7")->read() >> 4; } READ8_MEMBER(royalmah_state::mjifb_p8_r) { return 0xff; } WRITE8_MEMBER(royalmah_state::mjifb_p3_w) { m_rombank = (m_rombank & 0x0f) | ((data & 0x0c) << 2); } WRITE8_MEMBER(royalmah_state::mjifb_p4_w) { m_rombank = (m_rombank & 0xf0) | (data & 0x0f); } WRITE8_MEMBER(royalmah_state::mjifb_p8_w) { m_mjifb_rom_enable = (data & 0x08); } /**************************************************************************** Mahjong Shinkirou Deja Vu ****************************************************************************/ READ8_MEMBER(royalmah_state::mjdejavu_rom_io_r) { if (m_mjifb_rom_enable) return ((uint8_t*)(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x4000))[offset]; offset += 0x8000; switch(offset) { case 0x8000: return ioport("DSW2")->read(); // dsw 2 case 0x8001: return ioport("DSW1")->read(); // dsw 1 case 0x9001: return m_ay->data_r(space, 0); // inputs case 0x9011: return ioport("SYSTEM")->read(); } logerror("%04X: unmapped input read at %04X\n", m_maincpu->pc(), offset); return 0xff; } WRITE8_MEMBER(royalmah_state::mjdejavu_rom_io_w) { if (m_mjifb_rom_enable) { m_videoram[offset] = data; return; } offset += 0x8000; switch(offset) { case 0x8802: m_palette_base = data & 0x1f; 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: // if (data) popmessage("%02x",data); return; } logerror("%04X: unmapped input write at %04X = %02X\n", m_maincpu->pc(), offset,data); } void royalmah_state::mjdejavu_map(address_map &map) { map(0x0000, 0x6fff).rom(); map(0x7000, 0x7fff).ram().share("nvram"); map(0x8000, 0xbfff).rw(this, FUNC(royalmah_state::mjdejavu_rom_io_r), FUNC(royalmah_state::mjdejavu_rom_io_w)).share("videoram"); map(0xc000, 0xffff).rom().w(this, FUNC(royalmah_state::mjifb_videoram_w)); } /**************************************************************************** Mahjong Tensinhai ****************************************************************************/ READ8_MEMBER(royalmah_state::mjtensin_p3_r) { return 0xff; } void royalmah_state::mjtensin_update_rombank() { membank("mainbank")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); } WRITE8_MEMBER(royalmah_state::mjtensin_p4_w) { m_rombank = (m_rombank & 0xf0) | (data & 0x0f); mjtensin_update_rombank(); } WRITE8_MEMBER(royalmah_state::mjtensin_6ff3_w) { m_rombank = (data << 4) | (m_rombank & 0x0f); mjtensin_update_rombank(); } void royalmah_state::mjtensin_map(address_map &map) { map(0x0000, 0x5fff).rom(); map(0x6000, 0x6fbf).ram(); map(0x6fc1, 0x6fc1).r(m_ay, FUNC(ay8910_device::data_r)); map(0x6fc2, 0x6fc3).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x6fd0, 0x6fd0).w(this, FUNC(royalmah_state::janptr96_coin_counter_w)); map(0x6fd1, 0x6fd1).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x6fe0, 0x6fef).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)); map(0x6ff0, 0x6ff0).rw(this, FUNC(royalmah_state::janptr96_dsw_r), FUNC(royalmah_state::janptr96_dswsel_w)); map(0x6ff1, 0x6ff1).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); map(0x6ff3, 0x6ff3).w(this, FUNC(royalmah_state::mjtensin_6ff3_w)); map(0x7000, 0x7fff).ram().share("nvram"); map(0x8000, 0xffff).bankr("mainbank"); map(0x8000, 0xffff).writeonly().share("videoram"); } /**************************************************************************** Mahjong Cafe Time ****************************************************************************/ void royalmah_state::cafetime_update_rombank() { membank("mainbank")->set_base(memregion("maincpu")->base() + 0x10000 + m_rombank * 0x8000 ); } WRITE8_MEMBER(royalmah_state::cafetime_p4_w) { m_rombank = (m_rombank & 0xf0) | (data & 0x0f); cafetime_update_rombank(); } WRITE8_MEMBER(royalmah_state::cafetime_p3_w) { m_rombank = (m_rombank & 0x0f) | ((data & 0x0c) << 2); cafetime_update_rombank(); } WRITE8_MEMBER(royalmah_state::cafetime_dsw_w) { m_dsw_select = data; } READ8_MEMBER(royalmah_state::cafetime_dsw_r) { switch( m_dsw_select ) { case 0x00: return ioport("DSW1")->read(); case 0x01: return ioport("DSW2")->read(); case 0x02: return ioport("DSW3")->read(); case 0x03: return ioport("DSW4")->read(); case 0x04: return ioport("DSWTOP")->read(); } logerror("%04X: unmapped dsw read %02X\n", m_maincpu->pc(), m_dsw_select); return 0xff; } READ8_MEMBER(royalmah_state::cafetime_7fe4_r) { return 0xff; } WRITE8_MEMBER(royalmah_state::cafetime_7fe3_w) { // popmessage("%02x",data); } void royalmah_state::cafetime_map(address_map &map) { map(0x0000, 0x5fff).rom(); map(0x6000, 0x7eff).ram().share("nvram"); map(0x7fc1, 0x7fc1).r(m_ay, FUNC(ay8910_device::data_r)); map(0x7fc2, 0x7fc3).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x7fd0, 0x7fd0).w(this, FUNC(royalmah_state::janptr96_coin_counter_w)); map(0x7fd1, 0x7fd1).portr("SYSTEM").nopw(); map(0x7fd3, 0x7fd3).w(this, FUNC(royalmah_state::input_port_select_w)); map(0x7fe0, 0x7fe0).r(this, FUNC(royalmah_state::cafetime_dsw_r)); map(0x7fe1, 0x7fe1).w(this, FUNC(royalmah_state::cafetime_dsw_w)); map(0x7fe2, 0x7fe2).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); map(0x7fe3, 0x7fe3).w(this, FUNC(royalmah_state::cafetime_7fe3_w)); map(0x7fe4, 0x7fe4).r(this, FUNC(royalmah_state::cafetime_7fe4_r)); map(0x7ff0, 0x7fff).rw(m_rtc, FUNC(msm6242_device::read), FUNC(msm6242_device::write)); map(0x8000, 0xffff).bankr("mainbank"); map(0x8000, 0xffff).writeonly().share("videoram"); } /**************************************************************************** Mahjong Vegas ****************************************************************************/ WRITE8_MEMBER(royalmah_state::mjvegasa_p4_w) { m_rombank = (m_rombank & 0xf8) | ((data & 0x0e) >> 1); } WRITE8_MEMBER(royalmah_state::mjvegasa_p3_w) { m_rombank = (m_rombank & 0xf7) | ((data & 0x04) << 1); } WRITE8_MEMBER(royalmah_state::mjvegasa_rombank_w) { m_rombank = (m_rombank & 0x0f) | ((data & 0x0f) << 4); } READ8_MEMBER(royalmah_state::mjvegasa_rom_io_r) { if ((m_rombank & 0x70) != 0x70) return memregion("maincpu")->base()[0x10000 + m_rombank * 0x8000 + offset]; offset += 0x8000; if((offset & 0xfff0) == 0x8000) { return m_rtc->read(space, offset & 0xf); } logerror("%04X: unmapped IO read at %04X\n", m_maincpu->pc(), offset); return 0xff; } WRITE8_MEMBER(royalmah_state::mjvegasa_rom_io_w) { if ((m_rombank & 0x70) != 0x70) { m_videoram[offset] = data; return; } offset += 0x8000; if((offset & 0xfff0) == 0x8000) { m_rtc->write(space, offset & 0xf,data); return; } logerror("%04X: unmapped IO write at %04X = %02X\n", m_maincpu->pc(), offset,data); } WRITE8_MEMBER(royalmah_state::mjvegasa_coin_counter_w) { m_flip_screen = (data & 4) >> 2; machine().bookkeeping().coin_counter_w(0,data & 2); // in machine().bookkeeping().coin_counter_w(1,data & 1); // out } // hopper? WRITE8_MEMBER(royalmah_state::mjvegasa_12400_w) { // bits 0 & 1 // popmessage("UNK: %02x",data); } READ8_MEMBER(royalmah_state::mjvegasa_12500_r) { // bits 0 & 2 return 0xff; } void royalmah_state::mjvegasa_map(address_map &map) { map(0x00000, 0x05fff).rom(); map(0x06000, 0x07fff).ram().share("nvram"); map(0x08000, 0x0ffff).rw(this, FUNC(royalmah_state::mjvegasa_rom_io_r), FUNC(royalmah_state::mjvegasa_rom_io_w)).share("videoram"); map(0x10001, 0x10001).r(m_ay, FUNC(ay8910_device::data_r)); map(0x10002, 0x10003).w(m_ay, FUNC(ay8910_device::data_address_w)); map(0x10010, 0x10010).w(this, FUNC(royalmah_state::mjvegasa_coin_counter_w)); map(0x10011, 0x10011).portr("SYSTEM").w(this, FUNC(royalmah_state::input_port_select_w)); map(0x10013, 0x10013).w(this, FUNC(royalmah_state::input_port_select_w)); map(0x12000, 0x12000).w(this, FUNC(royalmah_state::mjvegasa_rombank_w)); map(0x12100, 0x12100).r(this, FUNC(royalmah_state::cafetime_dsw_r)); map(0x12200, 0x12200).w(this, FUNC(royalmah_state::cafetime_dsw_w)); map(0x12300, 0x12300).w(this, FUNC(royalmah_state::mjderngr_palbank_w)); map(0x12400, 0x12400).w(this, FUNC(royalmah_state::mjvegasa_12400_w)); map(0x12500, 0x12500).r(this, FUNC(royalmah_state::mjvegasa_12500_r)); } static INPUT_PORTS_START( mjctrl1 ) PORT_START("KEY0") /* P1 IN0 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P1 Credit Clear") PORT_CODE(KEYCODE_O) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("P2 Credit Clear") PORT_CODE(KEYCODE_8) PORT_START("KEY1") /* P1 IN1 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY2") /* P1 IN2 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY3") /* P1 IN3 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY4") /* P1 IN4 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY5") /* P2 IN0 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_A ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_E ) PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_I ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_M ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_KAN ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("KEY6") /* P2 IN1 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_B ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_F ) PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_J ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_N ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_REACH ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_BET ) PORT_PLAYER(2) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY7") /* P2 IN2 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_C ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_G ) PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_K ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_CHI ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_RON ) PORT_PLAYER(2) PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY8") /* P2 IN3 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_D ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_H ) PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_L ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_PON ) PORT_PLAYER(2) PORT_BIT( 0xf0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("KEY9") /* P2 IN4 */ PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_MAHJONG_LAST_CHANCE ) PORT_PLAYER(2) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_MAHJONG_SCORE ) PORT_PLAYER(2) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_MAHJONG_DOUBLE_UP ) PORT_PLAYER(2) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_MAHJONG_FLIP_FLOP ) PORT_PLAYER(2) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_MAHJONG_BIG ) PORT_PLAYER(2) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_MAHJONG_SMALL ) PORT_PLAYER(2) PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_START("SYSTEM") /* IN10 */ PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN2 ) /* "Note" ("Paper Money") = 10 Credits */ PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_MEMORY_RESET ) /* Memory Reset */ PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_SERVICE1 ) /* Analizer (Statistics) */ PORT_SERVICE( 0x08, IP_ACTIVE_HIGH ) PORT_BIT( 0xf0, IP_ACTIVE_HIGH, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START( mjctrl2 ) PORT_INCLUDE( mjctrl1 ) PORT_MODIFY("KEY0") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Payout") PORT_CODE(KEYCODE_O) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END static INPUT_PORTS_START( royalmah ) PORT_INCLUDE( mjctrl1 ) PORT_MODIFY("KEY5") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // "COIN2" PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) // "COIN1", but not working PORT_START("DSW1") /* DSW (inport $10) */ PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( tahjong ) PORT_INCLUDE( mjctrl1 ) PORT_MODIFY("KEY5") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // "COIN2" PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) // "COIN1", but not working PORT_START("DSW1") // port $10 PORT_DIPNAME( 0x07, 0x07, "SWB:1,2,3" ) PORT_DIPLOCATION("SWB:1,2,3") // only with bets on PORT_DIPSETTING( 0x00, "0" ) PORT_DIPSETTING( 0x01, "1" ) PORT_DIPSETTING( 0x02, "2" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPSETTING( 0x04, "4" ) PORT_DIPSETTING( 0x05, "5" ) PORT_DIPSETTING( 0x06, "5 (6)" ) PORT_DIPSETTING( 0x07, "5 (7)" ) PORT_DIPUNKNOWN_DIPLOC(0x08, 0x08, "SWB:4") PORT_DIPUNKNOWN_DIPLOC(0x10, 0x10, "SWB:5") PORT_DIPNAME( 0x60, 0x60, "Winnings" ) PORT_DIPLOCATION("SWB:6,7") PORT_DIPSETTING( 0x40, "30 30 10 10 5 5 1 1" ) PORT_DIPSETTING( 0x20, "32 24 16 12 8 4 2 1" ) PORT_DIPSETTING( 0x60, "100 50 30 10 5 4 3 2" ) PORT_DIPSETTING( 0x00, "200 50 30 10 5 4 3 2" ) PORT_DIPUNKNOWN_DIPLOC(0x80, 0x80, "SWB:8") PORT_START("DSW2") // port $13 PORT_DIPNAME( 0x07, 0x07, "Pay Out Rate" ) PORT_DIPLOCATION("SWA:1,2,3") PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x02, "68%" ) PORT_DIPSETTING( 0x06, "71%" ) PORT_DIPSETTING( 0x01, "75%" ) PORT_DIPSETTING( 0x05, "78%" ) PORT_DIPSETTING( 0x03, "81%" ) PORT_DIPSETTING( 0x07, "90%" ) PORT_DIPNAME( 0x18, 0x18, "Maximum Bet" ) PORT_DIPLOCATION("SWA:4,5") PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x08, "5" ) PORT_DIPSETTING( 0x10, "10" ) PORT_DIPSETTING( 0x18, "20" ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Coinage ) ) PORT_DIPLOCATION("SWA:6") PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x20, DEF_STR( 1C_2C ) ) PORT_DIPNAME( 0x40, 0x40, "Allow Bets" ) PORT_DIPLOCATION("SWA:7") PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x40, DEF_STR( Yes ) ) PORT_DIPNAME( 0x80, 0x80, "Note Rate" ) PORT_DIPLOCATION("SWA:8") PORT_DIPSETTING( 0x00, "5" ) PORT_DIPSETTING( 0x80, "10" ) INPUT_PORTS_END static INPUT_PORTS_START( janyoup2 ) PORT_INCLUDE( royalmah ) PORT_START("DSW2") /* DSW (inport $12) */ PORT_DIPNAME( 0x01, 0x01, "Unknown 1-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 1-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 1-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 1-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 1-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW3") /* DSW (inport $13) */ PORT_DIPNAME( 0x01, 0x01, "Unknown 2-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 2-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( seljan ) PORT_INCLUDE( royalmah ) PORT_START("DSW2") /* DSW (inport $12) */ PORT_DIPNAME( 0x01, 0x01, "Unknown 1-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 1-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 1-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 1-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, "Unknown 1-5" ) // these two activates credit analyzer if they are off PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, "Unknown 1-6" ) // ^ PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW3") /* DSW (inport $13) */ PORT_DIPNAME( 0x01, 0x01, "Unknown 2-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 2-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 2-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( suzume ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") /* DSW1 */ PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") /* DSW2 */ PORT_DIPNAME( 0x03, 0x03, "Winnings" ) PORT_DIPSETTING( 0x03, "50 30 15 8 5 3 2 1" ) PORT_DIPSETTING( 0x00, "50 30 20 15 8 6 3 2" ) PORT_DIPSETTING( 0x02, "100 50 25 10 5 3 2 1" ) PORT_DIPSETTING( 0x01, "200 100 50 10 5 3 2 1" ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW3") /* DSW3 */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, "2" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x02, "6" ) PORT_DIPSETTING( 0x03, "8" ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, "Background" ) PORT_DIPSETTING( 0x08, "Black" ) PORT_DIPSETTING( 0x00, "Green" ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Girls" ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSW4") /* DSW4 */ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( mjyarou ) PORT_INCLUDE( royalmah ) PORT_START("DSW2") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( tontonb ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") /* DSW1 (inport $10 -> 0x73b0) */ PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) // affects videoram - flip screen ? PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Debug Mode ?" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW3") /* DSW3 (inport $47 -> 0x73b1) */ PORT_DIPNAME( 0x03, 0x03, "Winnings" ) // check code at 0x0e6d PORT_DIPSETTING( 0x00, "32 24 16 12 8 4 2 1" ) // table at 0x4e7d PORT_DIPSETTING( 0x03, "50 30 15 8 5 3 2 1" ) // table at 0x4e4d PORT_DIPSETTING( 0x02, "100 50 25 10 5 3 2 1" ) // table at 0x4e5d PORT_DIPSETTING( 0x01, "200 100 50 10 5 3 2 1" ) // table at 0x4e6d PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) // check code at 0x5184 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) // stores something at 0x76ff PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) // check code at 0x1482, 0x18c2, 0x1a1d, 0x1a83, 0x2d2f and 0x2d85 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x60, 0x60, "Maximum Payout ?" ) // check code at 0x1ab7 PORT_DIPSETTING( 0x00, "100" ) PORT_DIPSETTING( 0x20, "200" ) PORT_DIPSETTING( 0x40, "300" ) PORT_DIPSETTING( 0x60, "500" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) // check code at 0x18c2, 0x1a1d, 0x2d2f and 0x2d85 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSW2") /* DSW2 (inport $46 -> 0x73b2) */ PORT_DIPNAME( 0x01, 0x00, "Special Combinations" ) // see notes PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) // check code at 0x07c5 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) // check code at 0x5375 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) // check code at 0x5241 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) // untested ? PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) // check code at 0x13aa PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Full Tests" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END /* TODO: check dip-switches */ static INPUT_PORTS_START( makaijan ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x00, "Background Color" ) PORT_DIPSETTING( 0x00, "Green" ) PORT_DIPSETTING( 0x40, "Black" ) PORT_DIPNAME( 0x80, 0x80, "Debug Mode ?" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW3") PORT_DIPNAME( 0x01, 0x00, "Special Combinations" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Full Tests" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") PORT_DIPNAME( 0x01, 0x01, "DSW2" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END /* TODO: check dip-switches */ static INPUT_PORTS_START( daisyari ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSW3") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Full Tests" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") PORT_DIPNAME( 0x01, 0x00, "DSW2" ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSW4") PORT_DIPNAME( 0x01, 0x00, "DSW4" ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x01, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( mjclub ) PORT_INCLUDE( mjctrl2 ) /* On the main board */ PORT_START("DSW1") PORT_DIPNAME( 0x0f, 0x08, "Pay Out Rate" ) PORT_DIPLOCATION("SW4:1,2,3,4") PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x20, "Maximum Bet" ) PORT_DIPLOCATION("SW4:5,6") PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x40, "Note Rate" ) PORT_DIPLOCATION("SW4:7") PORT_DIPSETTING( 0x00, "5" ) PORT_DIPSETTING( 0x40, "10" ) PORT_DIPNAME( 0x80, 0x80, "Data Display" ) PORT_DIPLOCATION("SW4:8") PORT_DIPSETTING( 0x80, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) /* On the subboard */ PORT_START("DSW3") PORT_DIPNAME( 0x03, 0x00, "Game Type" ) PORT_DIPLOCATION("SW2:1,2") PORT_DIPSETTING( 0x00, "A" ) PORT_DIPSETTING( 0x02, "B" ) PORT_DIPSETTING( 0x01, "C" ) PORT_DIPSETTING( 0x03, "D" ) PORT_DIPUNUSED_DIPLOC( 0x0c, 0x08, "SW2:3,4" ) PORT_CONDITION("DSW3", 0x03, EQUALS, 0x00) PORT_DIPUNUSED_DIPLOC( 0x0c, 0x08, "SW2:3,4" ) PORT_CONDITION("DSW3", 0x03, EQUALS, 0x02) PORT_DIPNAME( 0x0c, 0x08, "Bonus Rate (3renchan bonus)" ) PORT_DIPLOCATION("SW2:3,4") PORT_CONDITION("DSW3", 0x03, EQUALS, 0x01) PORT_DIPSETTING( 0x00, "A (1 2 2 3 pts.)" ) PORT_DIPSETTING( 0x04, "B (1 2 2 5 pts.)" ) PORT_DIPSETTING( 0x08, "C (1 2 3 6 pts.)" ) PORT_DIPSETTING( 0x0c, "D (1 2 6 10 pts.)" ) PORT_DIPNAME( 0x0c, 0x08, "Bonus Rate (5renchan bonus)" ) PORT_DIPLOCATION("SW2:3,4") PORT_CONDITION("DSW3", 0x03, EQUALS, 0x03) PORT_DIPSETTING( 0x00, "A (5 pts.)" ) PORT_DIPSETTING( 0x04, "B (10 pts.)" ) PORT_DIPSETTING( 0x08, "C (15 pts.)" ) PORT_DIPSETTING( 0x0c, "D (20 pts.)" ) PORT_DIPNAME( 0x30, 0x00, "CPU Houjuu Pattern" ) PORT_DIPLOCATION("SW2:5,6") PORT_DIPSETTING( 0x00, "100% Free" ) PORT_DIPSETTING( 0x10, "75% Free" ) PORT_DIPSETTING( 0x20, "50% Free" ) PORT_DIPSETTING( 0x30, "25% Free" ) PORT_DIPNAME( 0x40, 0x00, "Payout Rate Autochange" ) PORT_DIPLOCATION("SW2:7") PORT_DIPSETTING( 0x40, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_DIPNAME( 0x80, 0x80, "Test Mode" ) PORT_DIPLOCATION("SW2:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) /* On the subboard */ PORT_START("DSW2") PORT_DIPNAME( 0x01, 0x00, "Double Odds Bonus" ) PORT_DIPLOCATION("SW3:1") PORT_DIPSETTING( 0x01, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_DIPNAME( 0x02, 0x00, "Extra Bet" ) PORT_DIPLOCATION("SW3:2") PORT_DIPSETTING( 0x02, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_DIPNAME( 0x04, 0x00, "Color Hai Bonus" ) PORT_DIPLOCATION("SW3:3") PORT_DIPSETTING( 0x04, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_DIPNAME( 0x08, 0x00, "Sangenhai Bonus" ) PORT_DIPLOCATION("SW3:4") PORT_DIPSETTING( 0x08, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_DIPUNUSED_DIPLOC( 0x70, 0x00, "SW3:5,6,7" ) PORT_DIPNAME( 0x80, 0x00, "Coin Needed for Last Chance" ) PORT_DIPLOCATION("SW3:8") PORT_DIPSETTING( 0x80, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) /* On the subboard */ PORT_START("DSW4") PORT_DIPNAME( 0x03, 0x00, "Odds Rate" ) PORT_DIPLOCATION("SW1:1,2") PORT_DIPSETTING( 0x03, "A (50 30 15 8 5 4 3 2)" ) PORT_DIPSETTING( 0x02, "B (100 40 20 10 5 4 3 2)" ) PORT_DIPSETTING( 0x01, "C (150 70 30 10 5 4 3 2)" ) PORT_DIPSETTING( 0x00, "D (32 24 16 12 8 4 2 1)" ) PORT_DIPNAME( 0x3c, 0x3c, "Bonus Awarded at:" ) PORT_DIPLOCATION("SW1:3,4,5,6") PORT_DIPSETTING( 0x00, "1st Time Only" ) PORT_DIPSETTING( 0x20, "200 Coins" ) PORT_DIPSETTING( 0x10, "300 Coins" ) PORT_DIPSETTING( 0x30, "400 Coins" ) PORT_DIPSETTING( 0x08, "500 Coins" ) PORT_DIPSETTING( 0x28, "600 Coins" ) PORT_DIPSETTING( 0x18, "700 Coins" ) PORT_DIPSETTING( 0x38, "1000 Coins" ) PORT_DIPSETTING( 0x3c, "Never" ) PORT_DIPNAME( 0x40, 0x40, "Bonus Occurrence" ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x00, "Once" ) PORT_DIPSETTING( 0x40, "Twice" ) PORT_DIPNAME( 0x80, 0x80, "Background Color" ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x00, "White" ) // Black according to manual PORT_DIPSETTING( 0x80, "Green" ) INPUT_PORTS_END static INPUT_PORTS_START( mjdiplob ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") /* DSW1 (inport $10 -> 0x76fa) */ PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) // affects videoram - flip screen ? PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Debug Mode ?" ) // check code at 0x0b94 and 0x0de2 PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") /* DSW2 (inport $62 -> 0x76fb) */ PORT_DIPNAME( 0x03, 0x03, "Winnings" ) // check code at 0x09cd PORT_DIPSETTING( 0x00, "32 24 16 12 8 4 2 1" ) // table at 0x4b82 PORT_DIPSETTING( 0x03, "50 30 15 8 5 3 2 1" ) // table at 0x4b52 PORT_DIPSETTING( 0x02, "100 50 25 10 5 3 2 1" ) // table at 0x4b62 PORT_DIPSETTING( 0x01, "200 100 50 10 5 3 2 1" ) // table at 0x4b72 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x30, 0x30, "Maximum Payout ?" ) // check code at 0x166c PORT_DIPSETTING( 0x00, "100" ) PORT_DIPSETTING( 0x10, "200" ) PORT_DIPSETTING( 0x20, "300" ) PORT_DIPSETTING( 0x30, "500" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) // check code at 0x2c64 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Unknown ) ) // check code at 0x2c64 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( On ) ) PORT_START("DSW3") /* DSW3 (inport $63 -> 0x76fc) */ PORT_DIPNAME( 0x01, 0x00, "Special Combinations" ) // see notes PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) // check code at 0x531f and 0x5375 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) // check code at 0x5240 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) // check code at 0x2411 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) // check code at 0x2411 and 0x4beb PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) // check code at 0x24ff, 0x25f2, 0x3fcf and 0x45d7 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Full Tests" ) // seems to hang after the last animation PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( mjderngr ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") PORT_DIPNAME( 0x03, 0x00, DEF_STR( Coinage ) ) PORT_DIPSETTING( 0x03, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x00, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_2C ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "ROM & Animation Test" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( majs101b ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") /* DSW1 (inport $10 -> 0x76fd) */ PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unused ) ) PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Debug Mode ?" ) // check code at 0x1635 PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") /* DSW2 (inport $00 (after out 0,$40) -> 0x76fa) */ PORT_DIPNAME( 0x03, 0x03, "Winnings" ) // check code at 0x14e4 PORT_DIPSETTING( 0x00, "32 24 16 12 8 4 2 1" ) // table at 0x1539 PORT_DIPSETTING( 0x03, "50 30 15 8 5 3 2 1" ) // table at 0x1509 PORT_DIPSETTING( 0x02, "100 50 25 10 5 3 2 1" ) // table at 0x1519 PORT_DIPSETTING( 0x01, "200 100 50 10 5 3 2 1" ) // table at 0x1529 PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) // check code at 0x1220, 0x128d, 0x13b1, 0x13cb and 0x2692 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x38, 0x00, "Maximum Payout ?" ) // check code at 0x12c1 PORT_DIPSETTING( 0x20, "200" ) PORT_DIPSETTING( 0x10, "300" ) PORT_DIPSETTING( 0x30, "400" ) PORT_DIPSETTING( 0x08, "500" ) PORT_DIPSETTING( 0x28, "600" ) PORT_DIPSETTING( 0x18, "700" ) PORT_DIPSETTING( 0x00, "1000" ) // PORT_DIPSETTING( 0x38, "1000" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) // check code at 0x1333 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Background" ) PORT_DIPSETTING( 0x00, "Black" ) PORT_DIPSETTING( 0x80, "Gray" ) PORT_START("DSW3") /* DSW3 (inport $00 (after out 0,$00) -> 0x76fc) */ PORT_DIPNAME( 0x01, 0x00, "Special Combinations" ) // see notes PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, DEF_STR( Unknown ) ) // check code at 0x1cf9 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x02, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, DEF_STR( Unknown ) ) // check code at 0x21a9, 0x21dc and 0x2244 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) // check code at 0x2b7f PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x08, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) // check code at 0x50ba PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, DEF_STR( Unknown ) ) // check code at 0x1f65 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) // check code at 0x6412 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) // check code at 0x2cb2 and 0x2d02 PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW4") /* DSW4 (inport $00 (after out 0,$20) -> 0x76fb) */ PORT_DIPNAME( 0x03, 0x00, DEF_STR( Unknown ) ) // stored at 0x702f - check code at 0x1713, PORT_DIPSETTING( 0x00, "0" ) // 0x33d1, 0x3408, 0x3415, 0x347c, 0x3492, 0x350d, PORT_DIPSETTING( 0x01, "1" ) // 0x4af9, 0x4b1f and 0x61f6 PORT_DIPSETTING( 0x02, "2" ) PORT_DIPSETTING( 0x03, "3" ) PORT_DIPNAME( 0x0c, 0x00, "Difficulty ?" ) // check code at 0x4b5c and 0x6d72 PORT_DIPSETTING( 0x00, DEF_STR( Easy ) ) // 0x05 - 0x03, 0x02, 0x02, 0x01 PORT_DIPSETTING( 0x04, DEF_STR( Normal ) ) // 0x0a - 0x05, 0x02, 0x02, 0x01 PORT_DIPSETTING( 0x08, DEF_STR( Hard ) ) // 0x0f - 0x06, 0x03, 0x02, 0x01 PORT_DIPSETTING( 0x0c, DEF_STR( Hardest ) ) // 0x14 - 0x0a, 0x06, 0x02, 0x01 PORT_DIPNAME( 0x30, 0x00, DEF_STR( Unknown ) ) // check code at 0x228e PORT_DIPSETTING( 0x00, "0x00" ) PORT_DIPSETTING( 0x10, "0x10" ) PORT_DIPSETTING( 0x20, "0x20" ) PORT_DIPSETTING( 0x30, "0x30" ) PORT_DIPNAME( 0x40, 0x00, DEF_STR( Unknown ) ) // check code at 0x11e4 PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Full Tests" ) // check code at 0x006d PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( mjapinky ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") /* IN11 */ PORT_DIPNAME( 0x01, 0x01, "Unknown 1-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 1-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 1-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 1-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x30, "1" ) PORT_DIPSETTING( 0x20, "5" ) PORT_DIPSETTING( 0x10, "10" ) PORT_DIPSETTING( 0x00, "20" ) PORT_DIPNAME( 0x40, 0x00, "Background" ) PORT_DIPSETTING( 0x40, "Black" ) PORT_DIPSETTING( 0x00, "Green" ) PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") /* IN12 */ PORT_DIPNAME( 0x03, 0x03, "Unknown 2-0&1" ) PORT_DIPSETTING( 0x03, "0" ) PORT_DIPSETTING( 0x02, "1" ) PORT_DIPSETTING( 0x01, "2" ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPNAME( 0x04, 0x04, "Unknown 2-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 2-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x30, 0x30, "Unknown 2-4&5" ) PORT_DIPSETTING( 0x30, "0" ) PORT_DIPSETTING( 0x20, "1" ) PORT_DIPSETTING( 0x10, "2" ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPNAME( 0xc0, 0xc0, "Unknown 2-6&7" ) PORT_DIPSETTING( 0xc0, "0" ) PORT_DIPSETTING( 0x80, "1" ) PORT_DIPSETTING( 0x40, "2" ) PORT_DIPSETTING( 0x00, "3" ) PORT_START("DSW3") /* IN13 */ PORT_DIPNAME( 0x01, 0x01, "Unknown 3-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 3-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 3-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 3-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 3-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 3-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Full Test" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( janptr96 ) PORT_INCLUDE( mjctrl1 ) PORT_START("DSW4") /* IN11 */ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, "In Game Music" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, "Girls (Demo)" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Don Den Key" ) PORT_DIPSETTING( 0x80, "Start" ) PORT_DIPSETTING( 0x00, "Flip/Flop" ) PORT_START("DSW3") /* IN12 */ PORT_DIPNAME( 0x07, 0x07, "YAKUMAN Bonus" ) PORT_DIPSETTING( 0x07, "Cut" ) PORT_DIPSETTING( 0x06, "1 T" ) PORT_DIPSETTING( 0x05, "300" ) PORT_DIPSETTING( 0x04, "500" ) PORT_DIPSETTING( 0x03, "700" ) PORT_DIPSETTING( 0x02, "1000" ) PORT_DIPSETTING( 0x01, "1000?" ) PORT_DIPSETTING( 0x00, "1000?" ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x30, 0x30, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x30, "0" ) PORT_DIPSETTING( 0x20, "1" ) PORT_DIPSETTING( 0x10, "2" ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") /* IN13 */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) PORT_DIPNAME( 0x0c, 0x0c, "Min Credits To Start" ) PORT_DIPSETTING( 0x0c, "1" ) PORT_DIPSETTING( 0x08, "2" ) PORT_DIPSETTING( 0x04, "3" ) PORT_DIPSETTING( 0x00, "5" ) PORT_DIPNAME( 0x30, 0x30, "Payout" ) PORT_DIPSETTING( 0x30, "300" ) PORT_DIPSETTING( 0x20, "500" ) PORT_DIPSETTING( 0x10, "700" ) PORT_DIPSETTING( 0x00, "1000" ) PORT_DIPNAME( 0x40, 0x40, "W-BET" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Last Chance" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW1") /* IN14 */ PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Odds Rate" ) PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" ) PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" ) PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" ) PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" ) PORT_DIPNAME( 0xc0, 0xc0, "Maximum Bet" ) PORT_DIPSETTING( 0xc0, "1" ) PORT_DIPSETTING( 0x80, "5" ) PORT_DIPSETTING( 0x40, "10" ) PORT_DIPSETTING( 0x00, "20" ) PORT_START("DSWTOP") /* IN15 */ PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Debug Mode" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Credits Per Note" ) PORT_DIPSETTING( 0x40, "5" ) PORT_DIPSETTING( 0x00, "10" ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( mjifb ) PORT_INCLUDE( mjctrl2 ) // Default dip-switch settings taken from manual for "single type" cabinet // When they differ for "corner type" cabinet, it's noted in a comment near the dip-switch PORT_START("PORT3_5") // IN10 - DSW1 (P3 & P5) PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate" ) PORT_DIPLOCATION("DSW1:1,2,3,4") PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) // default for "corner type" cabinet PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x10, "Maximum Bet" ) PORT_DIPLOCATION("DSW1:5,6") PORT_DIPSETTING( 0x30, "1" ) PORT_DIPSETTING( 0x20, "5" ) PORT_DIPSETTING( 0x10, "10" ) PORT_DIPSETTING( 0x00, "20" ) PORT_DIPNAME( 0xc0, 0xc0, "Minimum Rate to Play" ) PORT_DIPLOCATION("DSW1:7,8") PORT_DIPSETTING( 0xc0, "1" ) PORT_DIPSETTING( 0x80, "2" ) PORT_DIPSETTING( 0x40, "3" ) PORT_DIPSETTING( 0x00, "4" ) PORT_START("PORT6_7") // IN11 - DSW2 (P6 & P7) PORT_DIPNAME( 0x03, 0x00, "Winnings" ) PORT_DIPLOCATION("DSW2:1,2") PORT_DIPSETTING( 0x03, "32 24 16 12 8 4 2 1" ) PORT_DIPSETTING( 0x00, "50 30 15 8 5 3 2 1" ) PORT_DIPSETTING( 0x01, "100 50 25 10 5 3 2 1" ) PORT_DIPSETTING( 0x02, "200 100 50 10 5 3 2 1" ) PORT_DIPNAME( 0x04, 0x00, "Credits Per Note" ) PORT_DIPLOCATION("DSW2:3") PORT_DIPSETTING( 0x04, "5" ) PORT_DIPSETTING( 0x00, "10" ) PORT_DIPNAME( 0x38, 0x20, "YAKUMAN Bonus" ) PORT_DIPLOCATION("DSW2:4,5,6") PORT_DIPSETTING( 0x38, "None" ) // default for "corner type" cabinet PORT_DIPSETTING( 0x30, "Once at start" ) PORT_DIPSETTING( 0x28, "Every 300 coins" ) PORT_DIPSETTING( 0x20, "Every 500 coins" ) PORT_DIPSETTING( 0x18, "Every 700 coins" ) PORT_DIPSETTING( 0x10, "Every 1000 coins" ) // PORT_DIPSETTING( 0x08, "Every 1000 coins?" ) // PORT_DIPSETTING( 0x00, "Every 1000 coins?" ) PORT_DIPNAME( 0x40, 0x40, "YAKUMAN Bonus Frequency" ) PORT_DIPLOCATION("DSW2:7") PORT_DIPSETTING( 0x00, "Once" ) PORT_DIPSETTING( 0x40, "Twice" ) PORT_DIPNAME( 0x80, 0x00, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW2:8") PORT_DIPSETTING( 0x00, DEF_STR( Normal ) ) PORT_DIPSETTING( 0x80, DEF_STR( Hard ) ) PORT_START("DSW3") // IN13 - DSW3 ($8200) PORT_DIPNAME( 0x01, 0x00, "Automatic Rate Change" ) PORT_DIPLOCATION("DSW3:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) // default for "corner type" cabinet PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, "Service Count" ) PORT_DIPLOCATION("DSW3:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) // default for "corner type" cabinet PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, "Renchan Rate" ) PORT_DIPLOCATION("DSW3:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, "W-Bet" ) PORT_DIPLOCATION("DSW3:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, "Bye-Bye Bonus" ) PORT_DIPLOCATION("DSW3:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, "Last Chance" ) PORT_DIPLOCATION("DSW3:6") PORT_DIPSETTING( 0x20, "Free" ) PORT_DIPSETTING( 0x00, "Charge" ) PORT_DIPNAME( 0x40, 0x00, "Auto Tsumo" ) PORT_DIPLOCATION("DSW3:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, "Background Color" ) PORT_DIPLOCATION("DSW3:8") PORT_DIPSETTING( 0x80, "Black" ) PORT_DIPSETTING( 0x00, "Blue" ) // gray according to manual?!?! PORT_START("DSW4") // IN14 - DSW4 ($8000) PORT_DIPNAME( 0x01, 0x00, "Double-tile exchange" ) PORT_DIPLOCATION("DSW4:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, "Double hand-tile game" ) PORT_DIPLOCATION("DSW4:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, "Blind-tile game" ) PORT_DIPLOCATION("DSW4:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, "Don Den Button" ) PORT_DIPLOCATION("DSW4:4") PORT_DIPSETTING( 0x08, "F/F Button" ) PORT_DIPSETTING( 0x00, "A Button" ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW4:5") PORT_DIPSETTING( 0x00, DEF_STR( Off ) ) // default for "corner type" cabinet PORT_DIPSETTING( 0x10, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW4:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Animation" ) PORT_DIPLOCATION("DSW4:7") // marked as "unused" in manual PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Full Tests" ) PORT_DIPLOCATION("DSW4:8") // marked as "unused" in manual PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( mjtensin ) PORT_INCLUDE( mjctrl1 ) PORT_START("DSW4") /* IN11 */ PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Odds Rate" ) PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" ) PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" ) PORT_DIPSETTING( 0x20, "2 3 6 8 12 15 30 50" ) PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" ) PORT_DIPNAME( 0xc0, 0xc0, "Maximum Bet" ) PORT_DIPSETTING( 0xc0, "1" ) PORT_DIPSETTING( 0x80, "5" ) PORT_DIPSETTING( 0x40, "10" ) PORT_DIPSETTING( 0x00, "20" ) PORT_START("DSW3") /* IN12 */ PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) PORT_DIPNAME( 0x0c, 0x0c, "Min Credits To Start" ) PORT_DIPSETTING( 0x0c, "1" ) PORT_DIPSETTING( 0x08, "2" ) PORT_DIPSETTING( 0x04, "3" ) PORT_DIPSETTING( 0x00, "5" ) PORT_DIPNAME( 0x30, 0x30, "Payout" ) PORT_DIPSETTING( 0x30, "300" ) PORT_DIPSETTING( 0x20, "500" ) PORT_DIPSETTING( 0x10, "700" ) PORT_DIPSETTING( 0x00, "1000" ) PORT_DIPNAME( 0x40, 0x40, "W-BET" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Last Chance" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") /* IN13 */ PORT_DIPNAME( 0x03, 0x03, "YAKUMAN Bonus" ) PORT_DIPSETTING( 0x03, "Cut" ) PORT_DIPSETTING( 0x02, "500" ) PORT_DIPSETTING( 0x01, "700" ) PORT_DIPSETTING( 0x00, "1000" ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x04, "2" ) PORT_DIPNAME( 0x18, 0x18, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x18, "0" ) PORT_DIPSETTING( 0x10, "1" ) PORT_DIPSETTING( 0x80, "2" ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPNAME( 0x60, 0x60, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x60, "0" ) PORT_DIPSETTING( 0x40, "1" ) PORT_DIPSETTING( 0x20, "2" ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW1") /* IN14 */ PORT_DIPNAME( 0x01, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x00, "In Game Music" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x00, "Girls (Demo)" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Show Clock" ) PORT_DIPSETTING( 0x80, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_START("DSWTOP") /* IN15 */ PORT_DIPNAME( 0x01, 0x01, "Credits Per Note" ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPSETTING( 0x00, "10" ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( cafetime ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") /* IN11 */ PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x00, "Maximum Bet" ) PORT_DIPSETTING( 0x30, "1" ) PORT_DIPSETTING( 0x20, "5" ) PORT_DIPSETTING( 0x10, "10" ) PORT_DIPSETTING( 0x00, "20" ) PORT_DIPNAME( 0xc0, 0xc0, "Unknown 1-6&7" ) PORT_DIPSETTING( 0xc0, "1" ) PORT_DIPSETTING( 0x80, "2" ) PORT_DIPSETTING( 0x40, "3" ) PORT_DIPSETTING( 0x00, "4" ) PORT_START("DSW2") /* IN12 */ PORT_DIPNAME( 0x03, 0x03, "Winnings" ) PORT_DIPSETTING( 0x03, "32 24 16 12 8 4 2 1" ) PORT_DIPSETTING( 0x00, "50 30 15 8 5 3 2 1" ) PORT_DIPSETTING( 0x01, "100 50 25 10 5 3 2 1" ) PORT_DIPSETTING( 0x02, "200 100 50 10 5 3 2 1" ) PORT_DIPNAME( 0x0c, 0x0c, "Unknown 2-2&3" ) PORT_DIPSETTING( 0x0c, "1" ) PORT_DIPSETTING( 0x08, "2" ) PORT_DIPSETTING( 0x04, "3" ) PORT_DIPSETTING( 0x00, "5" ) PORT_DIPNAME( 0x70, 0x70, "Unknown 2-4&5&6" ) PORT_DIPSETTING( 0x70, "0" ) PORT_DIPSETTING( 0x60, "1" ) PORT_DIPSETTING( 0x50, "2" ) PORT_DIPSETTING( 0x40, "3" ) PORT_DIPSETTING( 0x30, "4" ) PORT_DIPSETTING( 0x20, "5" ) PORT_DIPSETTING( 0x10, "6" ) PORT_DIPSETTING( 0x00, "7" ) PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW3") /* IN13 */ PORT_DIPNAME( 0x01, 0x01, "Unknown 3-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 3-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 3-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 3-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 3-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 3-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 3-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW4") /* IN14 */ PORT_DIPNAME( 0x01, 0x01, "Unknown 4-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 4-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 4-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 4-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x00, "Full Test" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, "Background" ) PORT_DIPSETTING( 0x20, "Black" ) PORT_DIPSETTING( 0x00, "Green" ) PORT_DIPNAME( 0x40, 0x40, "Unknown 4-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 4-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWTOP") /* IN15 */ PORT_DIPNAME( 0x01, 0x01, "Credits Per Note" ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPSETTING( 0x00, "10" ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 2-8" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 2-9" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x30, 0x30, "Unknown 3-8&9" ) PORT_DIPSETTING( 0x30, "0" ) PORT_DIPSETTING( 0x20, "1" ) PORT_DIPSETTING( 0x10, "2" ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 4-9" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( ippatsu ) PORT_INCLUDE( mjctrl1 ) PORT_MODIFY("KEY5") PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN1 ) // "COIN2" PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) // "COIN1", but not working PORT_START("DSW1") /* DSW (inport $10) */ PORT_DIPNAME( 0x0f, 0x0f, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x60, 0x60, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x20, "5" ) PORT_DIPSETTING( 0x40, "7" ) PORT_DIPSETTING( 0x60, "10" ) PORT_DIPNAME( 0x80, 0x80, "First Chance" ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x80, DEF_STR( Yes ) ) PORT_START("DSW2") /* DSW (inport $12) */ PORT_DIPNAME( 0x03, 0x03, "Cut" ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x02, "2 Bai" ) PORT_DIPSETTING( 0x01, "3 Bai" ) PORT_DIPSETTING( 0x03, "Yakuman" ) PORT_DIPNAME( 0x0c, 0x0c, "Yakuman Bonus" ) PORT_DIPSETTING( 0x00, "32" ) PORT_DIPSETTING( 0x04, "100" ) PORT_DIPSETTING( 0x08, "200" ) PORT_DIPSETTING( 0x0c, "300" ) PORT_DIPNAME( 0x30, 0x30, "Unknown 1-4&5*" ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x10, "4" ) PORT_DIPSETTING( 0x20, "5" ) PORT_DIPSETTING( 0x30, "6" ) PORT_DIPNAME( 0x40, 0x40, "Unknown 1-6*" ) PORT_DIPSETTING( 0x00, "3" ) PORT_DIPSETTING( 0x40, "5" ) PORT_DIPNAME( 0x80, 0x80, "Unknown 1-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW3") /* DSW (inport $13) */ PORT_DIPNAME( 0x01, 0x01, "Unknown 2-0*" ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x01, DEF_STR( Yes ) ) PORT_DIPNAME( 0x02, 0x02, "Second Bonus" ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x02, DEF_STR( Yes ) ) PORT_DIPNAME( 0x04, 0x04, "Allow Bets" ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x04, DEF_STR( Yes ) ) PORT_DIPNAME( 0x18, 0x18, "Unknown 2-3&4*" ) PORT_DIPSETTING( 0x00, DEF_STR( No ) ) PORT_DIPSETTING( 0x18, "2" ) PORT_DIPSETTING( 0x10, "4" ) PORT_DIPSETTING( 0x08, "8" ) PORT_DIPNAME( 0x20, 0x20, "Unknown 2-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 2-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( mjdejavu ) PORT_INCLUDE( mjctrl2 ) PORT_START("PORT3_5") // IN11 - DSW3 (P3 & P5) PORT_DIPNAME( 0x03, 0x03, "Unknown 3-0&1*" ) PORT_DIPSETTING( 0x00, "1 1" ) PORT_DIPSETTING( 0x02, "3 4" ) PORT_DIPSETTING( 0x01, "1 2" ) PORT_DIPSETTING( 0x03, "1 4" ) PORT_DIPNAME( 0x04, 0x04, "Unknown 3-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 3-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 3-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 3-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 3-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("PORT6_7") // IN12 - DSW4 (P6 & P7) PORT_DIPNAME( 0x01, 0x01, "Unknown 4-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 4-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 4-2" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 4-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 4-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 4-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 4-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Full Tests" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW1") // IN13 - DSW1 ($8001) PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Maximum Bet" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x10, "5" ) PORT_DIPSETTING( 0x20, "10" ) PORT_DIPSETTING( 0x30, "20" ) PORT_DIPNAME( 0x40, 0x40, "Credits Per Note" ) PORT_DIPSETTING( 0x00, "5" ) PORT_DIPSETTING( 0x40, "10" ) PORT_DIPNAME( 0x80, 0x80, "Background" ) PORT_DIPSETTING( 0x80, "Gray" ) PORT_DIPSETTING( 0x00, "Black" ) PORT_START("DSW2") // IN14 - DSW2 ($8000) PORT_DIPNAME( 0x03, 0x03, "Winnings" ) PORT_DIPSETTING( 0x00, "32 24 16 12 8 4 2 1" ) PORT_DIPSETTING( 0x03, "50 30 15 8 5 3 2 1" ) PORT_DIPSETTING( 0x02, "100 50 25 10 5 3 2 1" ) PORT_DIPSETTING( 0x01, "200 100 50 10 5 3 2 1" ) PORT_DIPNAME( 0x3c, 0x3c, "YAKUMAN Bonus" ) PORT_DIPSETTING( 0x3c, "Cut" ) PORT_DIPSETTING( 0x20, "300" ) PORT_DIPSETTING( 0x10, "500" ) PORT_DIPSETTING( 0x08, "700" ) PORT_DIPSETTING( 0x00, "1000" ) // PORT_DIPSETTING( 0x04, "1000?" ) PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x40, "2" ) PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPSETTING( 0x00, "1/4" ) PORT_DIPSETTING( 0x80, "2/4" ) INPUT_PORTS_END static INPUT_PORTS_START( jansou ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") PORT_DIPNAME( 0x0f, 0x00, "Pay Out Rate" ) PORT_DIPLOCATION("SW1:1,2,3,4") PORT_DIPSETTING( 0x0f, "50%" ) PORT_DIPSETTING( 0x0e, "53%" ) PORT_DIPSETTING( 0x0d, "56%" ) PORT_DIPSETTING( 0x0c, "59%" ) PORT_DIPSETTING( 0x0b, "62%" ) PORT_DIPSETTING( 0x0a, "65%" ) PORT_DIPSETTING( 0x09, "68%" ) PORT_DIPSETTING( 0x08, "71%" ) PORT_DIPSETTING( 0x07, "74%" ) PORT_DIPSETTING( 0x06, "77%" ) PORT_DIPSETTING( 0x05, "80%" ) PORT_DIPSETTING( 0x04, "83%" ) PORT_DIPSETTING( 0x03, "86%" ) PORT_DIPSETTING( 0x02, "89%" ) PORT_DIPSETTING( 0x01, "92%" ) PORT_DIPSETTING( 0x00, "95%" ) PORT_DIPNAME( 0x30, 0x00, "Maximum Bet" ) PORT_DIPLOCATION("SW1:5,6") PORT_DIPSETTING( 0x30, "1" ) PORT_DIPSETTING( 0x20, "5" ) PORT_DIPSETTING( 0x10, "10" ) PORT_DIPSETTING( 0x00, "20" ) PORT_DIPNAME( 0x40, 0x40, "Unknown 1-7" ) PORT_DIPLOCATION("SW1:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 1-8" ) PORT_DIPLOCATION("SW1:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW2") PORT_DIPNAME( 0x03, 0x00, "First Chance" ) PORT_DIPLOCATION("SW2:1,2") PORT_DIPSETTING( 0x03, DEF_STR( None ) ) PORT_DIPSETTING( 0x02, "3" ) PORT_DIPSETTING( 0x01, "4" ) PORT_DIPSETTING( 0x00, "5" ) PORT_DIPNAME( 0x0c, 0x00, "Last Chance" ) PORT_DIPLOCATION("SW2:3,4") PORT_DIPSETTING( 0x0c, DEF_STR( None ) ) PORT_DIPSETTING( 0x08, "3" ) PORT_DIPSETTING( 0x04, "4" ) PORT_DIPSETTING( 0x00, "5" ) PORT_DIPNAME( 0x10, 0x10, "Unknown 2-5" ) PORT_DIPLOCATION("SW2:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 2-6" ) PORT_DIPLOCATION("SW2:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 2-7" ) PORT_DIPLOCATION("SW2:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x00, "Middle Chance" ) PORT_DIPLOCATION("SW2:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW3") PORT_DIPNAME( 0x01, 0x01, "Unknown 3-1" ) PORT_DIPLOCATION("SW3:1") PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 3-2" ) PORT_DIPLOCATION("SW3:2") PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 3-3" ) PORT_DIPLOCATION("SW3:3") PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 3-4" ) PORT_DIPLOCATION("SW3:4") PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 3-5" ) PORT_DIPLOCATION("SW3:5") PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x00, "Girl" ) PORT_DIPLOCATION("SW3:6") PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 3-7" ) PORT_DIPLOCATION("SW3:7") PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 3-8" ) PORT_DIPLOCATION("SW3:8") PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END static INPUT_PORTS_START( mjvegasa ) PORT_INCLUDE( mjctrl2 ) PORT_START("DSW1") // 6810 PORT_DIPNAME( 0x0f, 0x07, "Pay Out Rate" ) PORT_DIPSETTING( 0x0f, "96%" ) PORT_DIPSETTING( 0x0e, "93%" ) PORT_DIPSETTING( 0x0d, "90%" ) PORT_DIPSETTING( 0x0c, "87%" ) PORT_DIPSETTING( 0x0b, "84%" ) PORT_DIPSETTING( 0x0a, "81%" ) PORT_DIPSETTING( 0x09, "78%" ) PORT_DIPSETTING( 0x08, "75%" ) PORT_DIPSETTING( 0x07, "71%" ) PORT_DIPSETTING( 0x06, "68%" ) PORT_DIPSETTING( 0x05, "65%" ) PORT_DIPSETTING( 0x04, "62%" ) PORT_DIPSETTING( 0x03, "59%" ) PORT_DIPSETTING( 0x02, "56%" ) PORT_DIPSETTING( 0x01, "53%" ) PORT_DIPSETTING( 0x00, "50%" ) PORT_DIPNAME( 0x30, 0x30, "Odds Rate" ) PORT_DIPSETTING( 0x30, "1 2 4 8 12 16 24 32" ) PORT_DIPSETTING( 0x00, "1 2 3 5 8 15 30 50" ) PORT_DIPSETTING( 0x10, "1 2 3 5 10 25 50 100" ) PORT_DIPSETTING( 0x20, "1 2 3 5 10 50 100 200" ) PORT_DIPNAME( 0xc0, 0xc0, "Max Bet" ) PORT_DIPSETTING( 0xc0, "1" ) PORT_DIPSETTING( 0x80, "5" ) PORT_DIPSETTING( 0x40, "10" ) PORT_DIPSETTING( 0x00, "20" ) PORT_START("DSW2") // 6811 PORT_DIPNAME( 0x03, 0x03, DEF_STR( Coin_A ) ) PORT_DIPSETTING( 0x03, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x02, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x01, DEF_STR( 1C_5C ) ) PORT_DIPSETTING( 0x00, "1 Coin/10 Credits" ) PORT_DIPNAME( 0x0c, 0x0c, "YAKUMAN Times" ) PORT_DIPSETTING( 0x0c, "1" ) PORT_DIPSETTING( 0x08, "2" ) PORT_DIPSETTING( 0x04, "3" ) PORT_DIPSETTING( 0x00, "5" ) PORT_DIPNAME( 0x70, 0x70, "YAKUMAN Bonus" ) PORT_DIPSETTING( 0x70, "Cut" ) PORT_DIPSETTING( 0x60, "100?" ) PORT_DIPSETTING( 0x50, "300" ) PORT_DIPSETTING( 0x40, "500" ) PORT_DIPSETTING( 0x30, "700" ) PORT_DIPSETTING( 0x20, "1000" ) // PORT_DIPSETTING( 0x10, "1000" ) // PORT_DIPSETTING( 0x00, "1000" ) PORT_DIPNAME( 0x80, 0x80, "Unknown 2-7" ) PORT_DIPSETTING( 0x00, "1" ) PORT_DIPSETTING( 0x80, "2" ) PORT_START("DSW3") // 6812 PORT_DIPNAME( 0x01, 0x01, "Unknown 3-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Unknown 3-1" ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "3 BAI In YAKUMAN Bonus Chance" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 3-3" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Unknown 3-4" ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 3-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 3-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 3-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSW4") // 6813 PORT_DIPNAME( 0x01, 0x01, "Unknown 4-0" ) PORT_DIPSETTING( 0x01, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x02, 0x02, "Show Clock" ) PORT_DIPSETTING( 0x02, DEF_STR( No ) ) PORT_DIPSETTING( 0x00, DEF_STR( Yes ) ) PORT_DIPNAME( 0x04, 0x00, "Girls" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x00, "Background" ) PORT_DIPSETTING( 0x08, "Black" ) PORT_DIPSETTING( 0x00, "Green" ) PORT_DIPNAME( 0x10, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x20, 0x20, "Unknown 4-5" ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x40, 0x40, "Unknown 4-6" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Unknown 4-7" ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_START("DSWTOP") // 6814 PORT_DIPNAME( 0x01, 0x01, "Credits Per Note" ) PORT_DIPSETTING( 0x01, "5" ) PORT_DIPSETTING( 0x00, "10" ) PORT_DIPNAME( 0x02, 0x02, DEF_STR( Flip_Screen ) ) PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x04, 0x04, "Unknown 2-8" ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x08, 0x08, "Unknown 2-9" ) PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x10, 0x10, "Flip-Flop Key" ) PORT_DIPSETTING( 0x00, "Flip-Flop" ) PORT_DIPSETTING( 0x10, "Start" ) PORT_DIPNAME( 0x20, 0x20, "Don Den Times" ) PORT_DIPSETTING( 0x00, "5" ) PORT_DIPSETTING( 0x20, "8" ) PORT_DIPNAME( 0x40, 0x40, "Unknown 4-8" ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPNAME( 0x80, 0x80, "Debug Mode" ) // e.g. press start in bet screen PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END MACHINE_CONFIG_START(royalmah_state::royalmah) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z80, 18432000/6) /* 3.072 MHz */ MCFG_CPU_PROGRAM_MAP(royalmah_map) MCFG_CPU_IO_MAP(royalmah_iomap) MCFG_CPU_VBLANK_INT_DRIVER("screen", royalmah_state, irq0_line_hold) MCFG_NVRAM_ADD_0FILL("nvram") /* video hardware */ MCFG_PALETTE_ADD("palette", 16*2) MCFG_PALETTE_INIT_OWNER(royalmah_state,royalmah) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 247) MCFG_SCREEN_REFRESH_RATE(60) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_UPDATE_DRIVER(royalmah_state, screen_update_royalmah) MCFG_SCREEN_PALETTE("palette") /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("speaker") MCFG_SOUND_ADD("aysnd", AY8910, 18432000/12) 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 MACHINE_CONFIG_START(royalmah_state::janoh) royalmah(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(8000000/2) /* 4 MHz ? */ MCFG_CPU_PROGRAM_MAP(janoh_map) MCFG_CPU_ADD("sub", Z80, 4000000) /* 4 MHz ? */ MCFG_CPU_PROGRAM_MAP(janoh_sub_map) MCFG_CPU_IO_MAP(janoh_sub_iomap) MCFG_CPU_VBLANK_INT_DRIVER("screen", royalmah_state, irq0_line_hold) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::jansou) royalmah(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(jansou_map) MCFG_CPU_IO_MAP(royalmah_iomap) MCFG_CPU_ADD("audiocpu", Z80, 4000000) /* 4.000 MHz */ MCFG_CPU_PROGRAM_MAP(jansou_sub_map) MCFG_CPU_IO_MAP(jansou_sub_iomap) MCFG_CPU_PERIODIC_INT_DRIVER(royalmah_state, irq0_line_hold, 4000000/512) MCFG_GENERIC_LATCH_8_ADD("soundlatch") MCFG_SOUND_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::dondenmj) royalmah(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(8000000/2) /* 4 MHz ? */ MCFG_CPU_IO_MAP(dondenmj_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::tahjong) royalmah(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(8000000/2) /* 4 MHz ? */ MCFG_CPU_PROGRAM_MAP(tahjong_map) MCFG_CPU_IO_MAP(tahjong_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::makaijan) royalmah(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(8000000/2) /* 4 MHz ? */ MCFG_CPU_IO_MAP(makaijan_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::daisyari) royalmah(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(8000000/2) /* 4 MHz ? */ MCFG_CPU_IO_MAP(daisyari_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjclub) royalmah(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(8000000/2) /* 4 MHz ? */ MCFG_CPU_IO_MAP(mjclub_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjyarou) royalmah(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(mjyarou_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::ippatsu) dondenmj(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(ippatsu_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::janyoup2) ippatsu(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_CLOCK(XTAL(18'432'000)/4) // unknown divider MCFG_CPU_IO_MAP(janyoup2_iomap) MCFG_MC6845_ADD("crtc", H46505, "screen", XTAL(18'432'000)/12) // unknown divider MCFG_MC6845_SHOW_BORDER_AREA(false) MCFG_MC6845_CHAR_WIDTH(4) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::seljan) janyoup2(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(seljan_map) MCFG_CPU_IO_MAP(seljan_iomap) MACHINE_CONFIG_END INTERRUPT_GEN_MEMBER(royalmah_state::suzume_irq) { if ( m_suzume_bank & 0x40 ) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } MACHINE_CONFIG_START(royalmah_state::suzume) dondenmj(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(suzume_iomap) MCFG_CPU_VBLANK_INT_DRIVER("screen", royalmah_state, suzume_irq) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::tontonb) dondenmj(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(tontonb_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjdiplob) dondenmj(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(mjdiplob_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::majs101b) dondenmj(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(majs101b_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjapinky) dondenmj(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(mjapinky_map) MCFG_CPU_IO_MAP(mjapinky_iomap) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjderngr) dondenmj(config); MCFG_CPU_MODIFY("maincpu") MCFG_CPU_IO_MAP(mjderngr_iomap) /* video hardware */ MCFG_PALETTE_MODIFY("palette") MCFG_PALETTE_ENTRIES(16*32) MCFG_PALETTE_INIT_OWNER(royalmah_state,mjderngr) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::janptr96) mjderngr(config); MCFG_DEVICE_REMOVE("maincpu") MCFG_CPU_ADD("maincpu", TMPZ84C015, XTAL(16'000'000)/2) /* 8 MHz? */ MCFG_CPU_PROGRAM_MAP(janptr96_map) MCFG_CPU_IO_MAP(janptr96_iomap) MCFG_TMPZ84C015_IN_PA_CB(READ8(royalmah_state, janptr96_dsw_r)) MCFG_TMPZ84C015_OUT_PB_CB(WRITE8(royalmah_state, janptr96_dswsel_w)) // internal CTC channels 0 & 1 have falling edge triggers MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8) MCFG_SCREEN_VBLANK_CALLBACK(DEVWRITELINE("maincpu", tmpz84c015_device, trg0)) MCFG_DEVCB_INVERT /* devices */ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768)) MCFG_MSM6242_OUT_INT_HANDLER(DEVWRITELINE("maincpu", tmpz84c015_device, trg1)) MCFG_DEVCB_INVERT MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjifb) mjderngr(config); MCFG_CPU_REPLACE("maincpu",TMP90841, 8000000) /* ? */ MCFG_CPU_PROGRAM_MAP(mjifb_map) MCFG_TLCS90_PORT_P3_READ_CB(READ8(royalmah_state, mjifb_p3_r)) MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(royalmah_state, mjifb_p3_w)) MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(royalmah_state, mjifb_p4_w)) MCFG_TLCS90_PORT_P5_READ_CB(READ8(royalmah_state, mjifb_p5_r)) MCFG_TLCS90_PORT_P6_READ_CB(READ8(royalmah_state, mjifb_p6_r)) MCFG_TLCS90_PORT_P7_READ_CB(READ8(royalmah_state, mjifb_p7_r)) MCFG_TLCS90_PORT_P8_READ_CB(READ8(royalmah_state, mjifb_p8_r)) MCFG_TLCS90_PORT_P8_WRITE_CB(WRITE8(royalmah_state, mjifb_p8_w)) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8) MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjdejavu) mjderngr(config); MCFG_CPU_REPLACE("maincpu",TMP90841, 8000000) /* ? */ MCFG_CPU_PROGRAM_MAP(mjdejavu_map) MCFG_TLCS90_PORT_P3_READ_CB(READ8(royalmah_state, mjifb_p3_r)) MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(royalmah_state, mjifb_p3_w)) MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(royalmah_state, mjifb_p4_w)) MCFG_TLCS90_PORT_P5_READ_CB(READ8(royalmah_state, mjifb_p5_r)) MCFG_TLCS90_PORT_P6_READ_CB(READ8(royalmah_state, mjifb_p6_r)) MCFG_TLCS90_PORT_P7_READ_CB(READ8(royalmah_state, mjifb_p7_r)) MCFG_TLCS90_PORT_P8_READ_CB(READ8(royalmah_state, mjifb_p8_r)) MCFG_TLCS90_PORT_P8_WRITE_CB(WRITE8(royalmah_state, mjifb_p8_w)) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8) MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjtensin) mjderngr(config); MCFG_CPU_REPLACE("maincpu",TMP90841, 12000000) /* ? */ MCFG_CPU_PROGRAM_MAP(mjtensin_map) MCFG_TLCS90_PORT_P3_READ_CB(READ8(royalmah_state, mjtensin_p3_r)) MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(royalmah_state, mjtensin_p4_w)) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8) MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) /* devices */ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768)) MCFG_MSM6242_OUT_INT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ1)) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::cafetime) mjderngr(config); MCFG_CPU_REPLACE("maincpu",TMP90841, 12000000) /* ? */ MCFG_CPU_PROGRAM_MAP(cafetime_map) MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(royalmah_state, cafetime_p3_w)) MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(royalmah_state, cafetime_p4_w)) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8) MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) /* devices */ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768)) MCFG_MSM6242_OUT_INT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ1)) MACHINE_CONFIG_END MACHINE_CONFIG_START(royalmah_state::mjvegasa) mjderngr(config); MCFG_CPU_REPLACE("maincpu",TMP90841, XTAL(8'000'000)) /* ? */ MCFG_CPU_PROGRAM_MAP(mjvegasa_map) MCFG_TLCS90_PORT_P3_READ_CB(READ8(royalmah_state, mjtensin_p3_r)) MCFG_TLCS90_PORT_P3_WRITE_CB(WRITE8(royalmah_state, mjvegasa_p3_w)) MCFG_TLCS90_PORT_P4_WRITE_CB(WRITE8(royalmah_state, mjvegasa_p4_w)) MCFG_SCREEN_MODIFY("screen") MCFG_SCREEN_VISIBLE_AREA(0, 255, 8, 255-8) MCFG_SCREEN_VBLANK_CALLBACK(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) /* devices */ MCFG_DEVICE_ADD("rtc", MSM6242, XTAL(32'768)) MCFG_MSM6242_OUT_INT_HANDLER(INPUTLINE("maincpu", INPUT_LINE_IRQ1)) MACHINE_CONFIG_END /*************************************************************************** Game driver(s) ***************************************************************************/ /*************************************************************************** Royal Mahjong (c)1981 Nichibutsu CPU: Z80 Sound: AY-3-8910 OSC: 18.432MHz ***************************************************************************/ ROM_START( royalmj ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.p1", 0x0000, 0x1000, CRC(549544bb) SHA1(dfb221572c7bfd267a22c0a944830d5f127f9942) ) ROM_LOAD( "2.p2", 0x1000, 0x1000, CRC(afc8a61e) SHA1(4134f6404f955838fc48fd0f87b83ebc75c1a021) ) ROM_LOAD( "3.p3", 0x2000, 0x1000, CRC(5d33e54d) SHA1(bf5e0ad5177c086f1cea5c90d7273a841db941bc) ) ROM_LOAD( "4.p4", 0x3000, 0x1000, CRC(91339560) SHA1(0fb4141e236ab57b3e915dadb982b28ca11d269f) ) ROM_LOAD( "5.p5", 0x4000, 0x1000, CRC(cc9123a3) SHA1(75276045247a0c9ac5810be01f3b58ad63101f9b) ) ROM_LOAD( "6.p6", 0x5000, 0x1000, CRC(92150a0f) SHA1(5c97ba5014abdba4afc78e02e7d90e6ca4d777ac) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "18s030n.6k", 0x0000, 0x0020, CRC(d3007282) SHA1(e4d863ab193e49208ed0f59dcddb1da0492314f6) ) // sldh w/tahjong ROM_END ROM_START( royalmah ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rom1", 0x0000, 0x1000, CRC(69b37a62) SHA1(7792528754b0df4e11f4ebe33380b713ac7351a3) ) ROM_LOAD( "rom2", 0x1000, 0x1000, CRC(0c8351b6) SHA1(9e6b48fd39dd98478d1e3557df839b09652c4349) ) ROM_LOAD( "rom3", 0x2000, 0x1000, CRC(b7736596) SHA1(4b8bc175d945e695b767b9fb2227ffc1cd4b0547) ) ROM_LOAD( "rom4", 0x3000, 0x1000, CRC(e3c7c15c) SHA1(a335374cc0f5b1d8e689cc304d006dd97f3e35e7) ) ROM_LOAD( "rom5", 0x4000, 0x1000, CRC(16c09c73) SHA1(ea712f9ca3200ca27434e4200187b488e24f4c65) ) ROM_LOAD( "rom6", 0x5000, 0x1000, CRC(92687327) SHA1(4fafba5881dca2a147616d94dd055eba6aa3c653) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "f-rom.bpr", 0x0000, 0x0020, CRC(d3007282) SHA1(e4d863ab193e49208ed0f59dcddb1da0492314f6) ) ROM_END ROM_START( openmj ) ROM_REGION( 0x7000, "maincpu", ROMREGION_ERASEFF ) ROM_LOAD( "10", 0x0000, 0x2000, CRC(4042920e) SHA1(19753bcb27ebf391ab824a45c6e41d956826a263) ) ROM_LOAD( "20", 0x2000, 0x2000, CRC(8fa0f735) SHA1(645154d51c0679b953b9ffc2f1d3b8f2752a0796) ) ROM_LOAD( "30", 0x4000, 0x2000, CRC(00045cd7) SHA1(0c32995753c1da14dacc8bc6c12dbcbdcae4e1b0) ) ROM_REGION( 0x20, "proms", 0 ) ROM_LOAD( "82s123.prm", 0x00, 0x20, CRC(d3007282) SHA1(e4d863ab193e49208ed0f59dcddb1da0492314f6) ) ROM_END ROM_START( tahjong ) ROM_REGION( 0x20000, "maincpu", 0 ) ROM_LOAD( "p1.bin", 0x00000, 0x1000, CRC(49c922b3) SHA1(6672a4f739d428b722ab22e7ca93064211557abc) ) ROM_LOAD( "p2.bin", 0x01000, 0x1000, CRC(c33e3cc3) SHA1(707c437f180ddd2916b5806f208e0a478207d528) ) ROM_LOAD( "p3.bin", 0x02000, 0x1000, CRC(9e741a74) SHA1(6c8e8eb04331d48b72e2be270c13dbf8deb76005) ) ROM_LOAD( "p4.bin", 0x03000, 0x1000, CRC(dc6ae62b) SHA1(d0c51047f734c885b7f19972c1bf0408199fde51) ) ROM_LOAD( "p5.bin", 0x04000, 0x1000, CRC(cc9123a3) SHA1(75276045247a0c9ac5810be01f3b58ad63101f9b) ) // same as royalmj (unused) ROM_LOAD( "p6.bin", 0x05000, 0x1000, CRC(92150a0f) SHA1(5c97ba5014abdba4afc78e02e7d90e6ca4d777ac) ) // "" ROM_LOAD( "s1.bin", 0x10000, 0x4000, CRC(beff21af) SHA1(4dc40a1ac4e36401b1ad8ae3954af6e5001e0a67) ) ROM_LOAD( "s2.bin", 0x14000, 0x4000, CRC(fed42e7c) SHA1(31136dff07bd1883dc2d107823ba83a34abf003d) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "18s030n.6k", 0x0000, 0x0020, CRC(c074c0f0) SHA1(b62519d1496ea366b0ea8ed657bd758ce93875ec) ) // sldh w/royalmj ROM_END ROM_START( janputer ) ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) ROM_LOAD( "1.bin", 0x0000, 0x2000, CRC(f36f4222) SHA1(ce18c273a59f86cb17ea6ba8a3daefc3d750df1e) ) ROM_LOAD( "2.bin", 0x2000, 0x2000, CRC(7d57cb48) SHA1(38b97c5d02e3ab6187e5e0f86c06b8a3747b51a8) ) ROM_LOAD( "3.bin", 0x4000, 0x2000, CRC(fb481d9a) SHA1(122e2b0d11fe1fe8cf219da9c8f96fe5a1016bb6) ) ROM_LOAD( "7.bin", 0x6000, 0x1000, CRC(bb00fb9e) SHA1(4d2965a0339328d1700b39c166a5a92a96b05e67) ) ROM_REGION( 0x20, "proms", 0 ) /* taken from Royal Mahjong, might or might not be the same. */ ROM_LOAD( "82s123.prm", 0x00, 0x20, BAD_DUMP CRC(d3007282) SHA1(e4d863ab193e49208ed0f59dcddb1da0492314f6) ) ROM_END /*************************************************************************** Janyou Part II (c)1984 Cosmo Denshi CPU: Z80 Sound: AY-3-8910 Video: HD46505SP(HD6845SP) OSC: 18.432MHz ROMs: 1.C110 [36ebb3d0] 2.C109 [324426d4] 3.C108 [e98b6d34] 4.C107 [377b8ce9] N82S123N.C98 [d3007282] Others: Battery empty socket for MC68705 ***************************************************************************/ ROM_START( janyoup2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.c110", 0x0000, 0x2000, CRC(36ebb3d0) SHA1(39c0cdd1dc5878539768074dad3c39aac4ace8bf) ) ROM_LOAD( "2.c109", 0x2000, 0x2000, CRC(324426d4) SHA1(409244c8458d9bafa325746c37de9e7b955b3787) ) ROM_LOAD( "3.c108", 0x4000, 0x2000, CRC(e98b6d34) SHA1(e27ab9a03aff750df78c5db52a112247bdd31328) ) ROM_LOAD( "4.c107", 0x6000, 0x1000, CRC(377b8ce9) SHA1(a5efc517ae975e54af5325b8b3f4867e9f449d4c) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "n82s123n.c98", 0x0000, 0x0020, CRC(d3007282) SHA1(e4d863ab193e49208ed0f59dcddb1da0492314f6) ) ROM_END ROM_START( seljan ) // Z80A + HD46505SP + AY891X (a sticker covers the chip type) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "2", 0x0000, 0x2000, CRC(8d26d334) SHA1(4ac0f0961f666954caf59336f8389312db9dc263) ) // ok ROM_LOAD( "1", 0x2000, 0x2000, CRC(d670d7c3) SHA1(2106ecf6ad675b8fd167f1f21d615afdfb5bca6d) ) ROM_LOAD( "3", 0x4000, 0x2000, CRC(6c0dfd50) SHA1(1f91ff0ef2f24414888ae8e5ebac72a5bb48780b) ) ROM_LOAD( "5", 0x6000, 0x2000, CRC(22eb98ee) SHA1(aae0ba5098852e6fef3dd7cc97dfad97ca444bb7) ) ROM_LOAD( "4", 0x8000, 0x1000, CRC(d41e2a10) SHA1(9c24f89ba877ab599ea89961b5e705fa770867be) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "82s123_1", 0x0000, 0x0020, CRC(f1df0310) SHA1(cc7dd39a0aa10b57039143e587eee02cf5dd2e5c) ) ROM_END /**************************************************************************** Ippatsu Gyakuten (c)1986 Public Software / Paradais modified Royal Mahjong hardware CPU: Z80 Sound: AY-3-8910 ROMs: 11(27256) 12(27128) 82S123AN dumped by sayu ****************************************************************************/ ROM_START( ippatsu ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "11", 0x0000, 0x8000, CRC(5f563be7) SHA1(2ce486777bd61a2de789683cd0c8abeefe31775b) ) ROM_LOAD( "12", 0x8000, 0x4000, CRC(a09a43b0) SHA1(da12e669ccd036da817a69bd549e8668e6a45730) ) ROM_RELOAD( 0xc000, 0x4000 ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "82s123an", 0x00, 0x20, CRC(3bde1bbd) SHA1(729498483943f960e38c4ada992b099b698b497a) ) ROM_END ROM_START( suzume ) ROM_REGION( 0x100000, "maincpu", 0 ) ROM_LOAD( "p1.bin", 0x00000, 0x1000, CRC(e9706967) SHA1(2e3d78178623de6552c9036da90e02f240d94055) ) ROM_LOAD( "p2.bin", 0x01000, 0x1000, CRC(dd48cd62) SHA1(1ce7b515fabae5054f0ac284a9ed5760f59d18fa) ) ROM_LOAD( "p3.bin", 0x02000, 0x1000, CRC(10a05c23) SHA1(f13ba660bc5eff9057b1ab46f564f586c76e945d) ) ROM_LOAD( "p4.bin", 0x03000, 0x1000, CRC(267eaf52) SHA1(56e2f5d7080463dc0f11a2751590ac2b79eb02c5) ) ROM_LOAD( "p5.bin", 0x04000, 0x1000, CRC(2fde346b) SHA1(7f45aa4427b4cb6bf6cc5919d397b25d53e133f3) ) ROM_LOAD( "p6.bin", 0x05000, 0x1000, CRC(57f42ac7) SHA1(209b2f62a64ddf544578f144d9ec83478603c8b2) ) /* bank switched ROMs follow */ ROM_LOAD( "1.1a", 0x10000, 0x08000, CRC(f670dd47) SHA1(d0236021ae4dd5a10603dde038eb777feeff016f) ) // 0 ROM_LOAD( "2.1c", 0x18000, 0x08000, CRC(140b11aa) SHA1(6f6a96135434324dcb486596920cb785fe2bf1a2) ) // 1 ROM_LOAD( "3.1d", 0x20000, 0x08000, CRC(3d437b61) SHA1(175308086e1d7ab566c82dcaeef9f50690edf92a) ) // 2 ROM_LOAD( "4.1e", 0x28000, 0x08000, CRC(9da8952e) SHA1(956d16b82ff8fe733a7b3135d082e18ea5167dfe) ) // 3 ROM_LOAD( "5.1h", 0x30000, 0x08000, CRC(04a6f41a) SHA1(37117faf6bc823770413faa7618387ca6f16fa34) ) // 4 ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "ic6k.bin", 0x0000, 0x0020, CRC(97e1defe) SHA1(b5002218b2292f7623dd9a205ce183dedeec03f1) ) ROM_END ROM_START( dondenmj ) ROM_REGION( 0x90000, "maincpu", 0 ) ROM_LOAD( "dn5.1h", 0x00000, 0x08000, CRC(3080252e) SHA1(e039087afc36a0c594da093ea599b81a1d757139) ) /* bank switched ROMs follow */ ROM_LOAD( "dn1.1e", 0x18000, 0x08000, CRC(1cd9c48a) SHA1(12bc519889dacea59ae49672ad5313fff3a99f12) ) // 1 ROM_LOAD( "dn2.1d", 0x20000, 0x04000, CRC(7a72929d) SHA1(7955f41883fa53876172bac417955ed0b5eb43f4) ) // 2 ROM_LOAD( "dn3.2h", 0x30000, 0x08000, CRC(b09d2897) SHA1(0cde3e16ca333be01a5ab3a232f2ea602faec7a2) ) // 4 ROM_LOAD( "dn4.2e", 0x50000, 0x08000, CRC(67d7dcd6) SHA1(6b708a29de1f4738eb2d4e667327d9433ff7216c) ) // 8 ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "ic6k.bin", 0x0000, 0x0020, CRC(97e1defe) SHA1(b5002218b2292f7623dd9a205ce183dedeec03f1) ) ROM_END ROM_START( mjdiplob ) ROM_REGION( 0x90000, "maincpu", 0 ) ROM_LOAD( "071.4l", 0x00000, 0x10000, CRC(81a6d6b0) SHA1(c6169e6d5f35304a0c3efcc2175c3213650f179c) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x10000 ) // 0,1 ROM_LOAD( "072.4k", 0x20000, 0x10000, CRC(a992bb85) SHA1(e60231e04831dac122d1d49a68641ee47b57faaf) ) // 2,3 ROM_LOAD( "073.4j", 0x30000, 0x10000, CRC(562ed64f) SHA1(42b4a7e5a8de4dde83c12d7b9facf561bc872978) ) // 4,5 ROM_LOAD( "074.4h", 0x40000, 0x10000, CRC(1eba0140) SHA1(0d0b95be338d7450ad3b24cc47e24e94f86dcefe) ) // 6,7 ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "ic6k.bin", 0x0000, 0x0020, CRC(c1e427df) SHA1(9a9980d93dff4b87a940398b18277acaf946eeab) ) ROM_END ROM_START( tontonb ) ROM_REGION( 0x90000, "maincpu", 0 ) ROM_LOAD( "091.5e", 0x00000, 0x10000, CRC(d8d67b59) SHA1(7e7a85df738f80fc031cda8a104ac9c7b3e24785) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x10000 ) // 0,1 /**/ // 2,3 unused ROM_LOAD( "093.5b", 0x30000, 0x10000, CRC(24b6be55) SHA1(11390d6ed55d7d0b7b84c6d36d4ac5330a06abba) ) // 4,5 /**/ // 6,7 unused ROM_LOAD( "092.5c", 0x50000, 0x10000, CRC(7ff2738b) SHA1(89a49f89705f499439dc024fc70c87141a84780b) ) // 8,9 ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "ic6k.bin", 0x0000, 0x0020, CRC(97e1defe) SHA1(b5002218b2292f7623dd9a205ce183dedeec03f1) ) ROM_END /*************************************************************************** Makaijan (c)1987 Dynax ***************************************************************************/ ROM_START( makaijan ) ROM_REGION( 0x90000, "maincpu", 0 ) ROM_LOAD( "ic1h.bin", 0x00000, 0x10000, CRC(7448c220) SHA1(ebb6564b83ce4f40a6e50a1be734e2086d97f592) ) /* bank switched ROMs follow */ ROM_COPY( "maincpu", 0x08000, 0x10000, 0x8000 ) ROM_COPY( "maincpu", 0x08000, 0x18000, 0x8000 ) ROM_LOAD( "052.1e", 0x50000, 0x10000, CRC(a881ca93) SHA1(499e17d2f57caa49c391d57dd737399fe4672f78) ) ROM_LOAD( "053.1d", 0x30000, 0x10000, CRC(5f1d3e88) SHA1(152fde9f8e506f7f4ca1b2ecf8a828ece0501f78) ) ROM_LOAD( "054.2h", 0x70000, 0x10000, CRC(ebc387c7) SHA1(7dfc892a5cccde7494ed06bbab88b4ea320dffbc) ) ROM_LOAD( "055.2e", 0x20000, 0x10000, CRC(e26852ae) SHA1(8f8edefe851fd3641a5b4b227fb4dd976cdfa3e9) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "ic6k.bin", 0x0000, 0x0020, CRC(97e1defe) SHA1(b5002218b2292f7623dd9a205ce183dedeec03f1) ) ROM_END /*************************************************************************** Daisyarin (c)1989 Best System ***************************************************************************/ ROM_START( daisyari ) ROM_REGION( 0x50000, "maincpu", 0 ) ROM_LOAD( "1a.bin", 0x00000, 0x10000, CRC(7d14f90c) SHA1(742684d0785a93a45de0467e004db00531d016e2) ) /* bank switched ROMs follow */ ROM_COPY( "maincpu", 0x00000, 0x10000, 0x10000 ) ROM_LOAD( "1c.bin", 0x20000, 0x10000, CRC(edfe52b9) SHA1(704c107fc8b89f561d2031d10468c124ab3d007a) ) /*2*/ ROM_LOAD( "1d.bin", 0x30000, 0x10000, CRC(38f54a98) SHA1(d06eb851c75bfb2d8dd99bf5072c7f359f1f17e2) ) /*3*/ ROM_LOAD( "1f.bin", 0x40000, 0x10000, CRC(b635f295) SHA1(dba3a59133c33c915dba678c510f00fb476f24da) ) /*4*/ ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "6k.bin", 0x0000, 0x0020, CRC(c1e427df) SHA1(9a9980d93dff4b87a940398b18277acaf946eeab) ) ROM_END /*************************************************************************** Mahjong Club (c)XEX Royal mahjong subboard 1 3 4 5 63s081n 6116 RAM surface scrached 40pin DIP (Z80?) 4.000MHz ***************************************************************************/ ROM_START( mjclub ) ROM_REGION( 0x80000, "maincpu", 0 ) ROM_LOAD( "5", 0x00000, 0x10000, CRC(cd148465) SHA1(42d1848656e461cfbf3fc0ba88ef8f4e67425f8c) ) /* bank switched ROMs follow */ ROM_COPY( "maincpu", 0x00000, 0x10000, 0x10000 ) ROM_LOAD( "1", 0x50000, 0x10000, CRC(d0131f4b) SHA1(aac40b47b48f0ebfb07aaf17cb2a080fdcaa4697) ) ROM_LOAD( "3", 0x60000, 0x10000, CRC(25628c38) SHA1(5166934c488c2f91bd6026c7896ad3536727d950) ) ROM_LOAD( "4", 0x70000, 0x10000, CRC(a6ada333) SHA1(5fd44bf298a6f327118b98641af1aa0910519ded) ) ROM_COPY( "maincpu", 0x50000, 0x40000, 0x10000 ) /*guess*/ ROM_COPY( "maincpu", 0x60000, 0x30000, 0x10000 ) ROM_COPY( "maincpu", 0x70000, 0x20000, 0x10000 ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "63s081n", 0x0000, 0x0020, CRC(4add90c5) SHA1(de14abcba6eee53e73801ff12c45a75e875e6ca3) ) ROM_END ROM_START( majs101b ) ROM_REGION( 0x90000, "maincpu", 0 ) ROM_LOAD( "171.3e", 0x00000, 0x10000, CRC(fa3c553b) SHA1(fda212559c4d55610a12ad2927afe21f9069c7b6) ) /* bank switched ROMs follow */ /**/ // 0,1 unused ROM_RELOAD( 0x20000, 0x10000 ) // 2,3 ROM_LOAD( "172.3f", 0x30000, 0x20000, CRC(7da39a63) SHA1(34d07978a326c83e5b51ce19619d52a75a501795) ) // 4,5,6,7 ROM_LOAD( "173.3h", 0x50000, 0x20000, CRC(7a9e71ae) SHA1(ce1bde6e05f81b7dbb14015514397ed72f8dd92a) ) // 8,9,a,b ROM_LOAD( "174.3j", 0x70000, 0x10000, CRC(972c2cc9) SHA1(ba78d29d1723783dbd0e8c754d2422caad5ab367) ) // c,d ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "ic6k.bin", 0x0000, 0x0020, CRC(c1e427df) SHA1(9a9980d93dff4b87a940398b18277acaf946eeab) ) ROM_END ROM_START( mjderngr ) ROM_REGION( 0xb0000, "maincpu", 0 ) ROM_LOAD( "2201.1a", 0x00000, 0x08000, CRC(54ec531d) SHA1(c5d9c575f6bdc499bae35123d7ad5bd4869b6ed9) ) /* bank switched ROMs follow */ ROM_CONTINUE( 0x10000, 0x08000 ) // 0 ROM_LOAD( "2202.1b", 0x30000, 0x10000, CRC(edcf97f2) SHA1(8143f41d511fa01bd86faf829eb2c139292d705f) ) // 4,5 ROM_LOAD( "2203.1d", 0x50000, 0x10000, CRC(a33368c0) SHA1(e216b65d7ed59d7cbf2b5d078799915d707b5291) ) // 8,9 ROM_LOAD( "2204.1e", 0x70000, 0x20000, CRC(ed5fde4b) SHA1(d55487ae1007d43b71f06ae5c407c75db7054515) ) // c,d,e,f ROM_LOAD( "2205.1f", 0x90000, 0x20000, CRC(cfb8075d) SHA1(31f613a1a9b5f4295b552aeeddb760605ce2ac70) ) // 0x10,0x11,0x12,0x13 ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "ic3g.bin", 0x000, 0x200, CRC(d43f4c7c) SHA1(117d2e4e8d5bea3e5dc903a4b87bd71786ae009c) ) ROM_LOAD( "ic4g.bin", 0x200, 0x200, CRC(30cf7831) SHA1(b4593d51c6ceb301279a01a98665e4be8a3c403d) ) ROM_END /*************************************************************************** Mahjong If (BET type) (c)1990 Dynax CPU: Unknown 64P(Toshiba TLCS-90 series?) Sound: AY-3-8910 OSC: 8.000MHz 18.432MHz 2911.1B prg. 2902.1C 2903.1D 2904.1E 2905.1F 2906.1G D29-1.4C color D29-2.4D ***************************************************************************/ ROM_START( mjifb ) ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "2911.1b", 0x00000, 0x10000, CRC(138a31a1) SHA1(7e77c63a968206b8e61aaa423e19a766e4142554) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x08000 ) // bank 0 = 8000-bfff ROM_CONTINUE( 0x10000, 0x08000 ) ROM_LOAD( "2903.1d", 0x30000, 0x20000, CRC(90c44965) SHA1(6904bfa7475f9de921bc2abcfc337b3daf7e0fad) ) ROM_LOAD( "2906.1g", 0x50000, 0x20000, CRC(ad469345) SHA1(914ea4c77a540467da779ea78c52e66b05c30475) ) ROM_LOAD( "2904.1e", 0x70000, 0x20000, CRC(2791abfa) SHA1(a8fd1a7e1cf4441b447a4605ad2f1c13775f92da) ) ROM_LOAD( "2905.1f", 0x90000, 0x20000, CRC(b7a73cf7) SHA1(d93111e6d5f84e331f8198d8c595e3500abed133) ) ROM_LOAD( "2902.1c", 0xb0000, 0x10000, CRC(0ce02a98) SHA1(69f6bca9af8548038401839047a304a4aa97cfe6) ) ROM_RELOAD( 0xc0000, 0x10000 ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "d29-2.4d", 0x000, 0x200, CRC(78252f6a) SHA1(1869147bc6b7573c2543bdf6b17d6c3c1debdddb) ) ROM_LOAD( "d29-1.4c", 0x200, 0x200, CRC(4aaec8cf) SHA1(fbe1c3729d078a422ffe68dfde495fcb9f329cdd) ) ROM_END ROM_START( mjifb2 ) ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "2921.bin", 0x00000, 0x10000, CRC(9f2bfa4e) SHA1(7d6ca22bf0a91d65fde34ae321054638df705eef) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x08000 ) // bank 0 = 8000-bfff ROM_CONTINUE( 0x10000, 0x08000 ) ROM_LOAD( "2903.1d", 0x30000, 0x20000, CRC(90c44965) SHA1(6904bfa7475f9de921bc2abcfc337b3daf7e0fad) ) ROM_LOAD( "2906.1g", 0x50000, 0x20000, CRC(ad469345) SHA1(914ea4c77a540467da779ea78c52e66b05c30475) ) ROM_LOAD( "2904.1e", 0x70000, 0x20000, CRC(2791abfa) SHA1(a8fd1a7e1cf4441b447a4605ad2f1c13775f92da) ) ROM_LOAD( "2905.1f", 0x90000, 0x20000, CRC(b7a73cf7) SHA1(d93111e6d5f84e331f8198d8c595e3500abed133) ) ROM_LOAD( "2902.1c", 0xb0000, 0x10000, CRC(0ce02a98) SHA1(69f6bca9af8548038401839047a304a4aa97cfe6) ) ROM_RELOAD( 0xc0000, 0x10000 ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "d29-2.4d", 0x000, 0x200, CRC(78252f6a) SHA1(1869147bc6b7573c2543bdf6b17d6c3c1debdddb) ) ROM_LOAD( "d29-1.4c", 0x200, 0x200, CRC(4aaec8cf) SHA1(fbe1c3729d078a422ffe68dfde495fcb9f329cdd) ) ROM_END ROM_START( mjifb3 ) ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "2931.bin", 0x00000, 0x10000, CRC(2a3133de) SHA1(9fdc8c145d3da17ec5f86810716f1b1a2abd8023) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x08000 ) // bank 0 = 8000-bfff ROM_CONTINUE( 0x10000, 0x08000 ) ROM_LOAD( "2903.1d", 0x30000, 0x20000, CRC(90c44965) SHA1(6904bfa7475f9de921bc2abcfc337b3daf7e0fad) ) ROM_LOAD( "2906.1g", 0x50000, 0x20000, CRC(ad469345) SHA1(914ea4c77a540467da779ea78c52e66b05c30475) ) ROM_LOAD( "2904.1e", 0x70000, 0x20000, CRC(2791abfa) SHA1(a8fd1a7e1cf4441b447a4605ad2f1c13775f92da) ) ROM_LOAD( "2905.1f", 0x90000, 0x20000, CRC(b7a73cf7) SHA1(d93111e6d5f84e331f8198d8c595e3500abed133) ) ROM_LOAD( "2902.1c", 0xb0000, 0x10000, CRC(0ce02a98) SHA1(69f6bca9af8548038401839047a304a4aa97cfe6) ) ROM_RELOAD( 0xc0000, 0x10000 ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "d29-2.4d", 0x000, 0x200, CRC(78252f6a) SHA1(1869147bc6b7573c2543bdf6b17d6c3c1debdddb) ) ROM_LOAD( "d29-1.4c", 0x200, 0x200, CRC(4aaec8cf) SHA1(fbe1c3729d078a422ffe68dfde495fcb9f329cdd) ) ROM_END /*************************************************************************** Janputer '96 (c)1996 Dynax Colour proms are TBP28S42's ***************************************************************************/ ROM_START( janptr96 ) ROM_REGION( 0x210000, "maincpu", 0 ) ROM_LOAD( "503x-1.1h", 0x000000, 0x40000, CRC(39914ecd) SHA1(e5796a95a7e3e7b61da63d50fa089be2946ba611) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x010000, 0x40000 ) ROM_RELOAD( 0x050000, 0x40000 ) ROM_LOAD( "503x-2.1g", 0x090000, 0x80000, CRC(d4b1ed79) SHA1(e1e266339d1d05c0405bfd32b67f215807696c82) ) ROM_LOAD( "503x-3.1f", 0x110000, 0x80000, CRC(9ba4deb0) SHA1(e9d44a6ed849ff90c0b1f9321cdd62e18c3fd35c) ) ROM_LOAD( "503x-4.1e", 0x190000, 0x80000, CRC(e266ca0b) SHA1(d84608e7b474061a680510a266842e667bf2eab5) ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "ns503b.3h", 0x000, 0x200, CRC(3b2a6b12) SHA1(ebd2929e6acbde989964bfef602b81f2f2fe04eb) ) ROM_LOAD( "ns503a.3j", 0x200, 0x200, CRC(fe49b2f0) SHA1(a36ca005380cc92dfe473254c26be2cef2ced9b4) ) ROM_END /*************************************************************************** Janputer Special (c)1997 Dynax Colour proms are TBP28642's ***************************************************************************/ ROM_START( janptrsp ) ROM_REGION( 0x210000, "maincpu", 0 ) ROM_LOAD( "ns51101.1h", 0x000000, 0x80000, CRC(44492ca1) SHA1(49e3dc9872a26e446599deb47161b8f52e4968c4) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x010000, 0x80000 ) ROM_LOAD( "ns51102.1g", 0x090000, 0x80000, CRC(01e6aa19) SHA1(a761fe69fb69c0bf101033e71813742c9fc2d747) ) ROM_LOAD( "ns51103.1f", 0x110000, 0x80000, CRC(0fc94805) SHA1(035002e8354673a063faacd3cb91d0512cab677a) ) ROM_LOAD( "ns51104.1e", 0x190000, 0x80000, CRC(00442508) SHA1(268cc0c76bb9c21213c941952dbc891778ad397e) ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "ns511b.3h", 0x000, 0x200, CRC(1286434f) SHA1(6818549d0e8b231d7071e67923f47b96fc6e1bb6) ) ROM_LOAD( "ns511a.3j", 0x200, 0x200, CRC(26b6714c) SHA1(0d110c1e3f7050a3c4ecbed630a0a8b522f1b0b0) ) ROM_END /*************************************************************************** Mahjong Tensinhai Dynax, 1995 PCB Layout ---------- Top board D10010318L1 |----------------------------------------| |DSW2(1) DSW4(10) DIP16| | |---| | |DSW1(10) DSW3(10)| * | | | |---| PROM2 | | | | PROM1 | | | | | | | | | | 1001.5E | | |-------------| | | | & | 1002.4E |---|| | |-------------| | D || |12MHz 1003.3E | I || | | P || |BATTERY 32.768kHz |40 || | CLOCK 6264 |---|| |----------------------------------------| Notes: Most of the chips have their surface scratched off. * - Unknown PLCC44 IC. Possibly Mach110 or similar CPLD & - Unknown SDIP64 IC. Possibly a Toshiba TMP91P640? Clock input 12.000MHz CLOCK - Some kind of clock IC, like Oki M6242 or similar PROM1 - 82S147 PROM labelled 'D100-1' PROM2 - 82S147 PROM labelled 'D100-2' DIP16 - Socket for cable that joins to lower board DIP40 - Socket for connector that joins to lower board Bottom board |--------------------------------------------------------| | BATTERY 6116 | | VOL | | | | DIP40 | | | | DSW(8) 18.432MHz| | | | | |M DIP16 | |A 4164 4164 | |H | |J 4164 4164 | |O | |N 4164 4164 | |G | |2 4164 4164 | |8 AY3-8910 | | 4164 4164 | | | | 4164 4164 | | | | 4164 4164 | | | | 4164 4164 | |--------------------------------------------------------| Notes: DIP16 - Socket for cable that joins to upper board DIP40 - Socket for connector that joins to upper board AY3-8910 clock - 1.536 [18.432/12] HSync - 15.5kHz VSync - 60Hz ***************************************************************************/ ROM_START( mjtensin ) ROM_REGION( 0x290000, "maincpu", 0 ) ROM_LOAD( "1001.5e", 0x000000, 0x80000, CRC(960e1fe9) SHA1(11f5164b2c75c0e684e910ee8e09de978bdaff2f) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x010000, 0x80000 ) ROM_RELOAD( 0x090000, 0x80000 ) ROM_LOAD( "1002.4e", 0x110000, 0x80000, CRC(240eb7af) SHA1(2309e1c251fe55f6e6b97b5db94fa2fe914b88f4) ) ROM_LOAD( "1003.3e", 0x210000, 0x80000, CRC(876081bf) SHA1(fe962cfa9318a9444123bcaf3406e22fb08e8c4e) ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "d100-2.7e", 0x000, 0x200, CRC(6edeed23) SHA1(f4420c473ebbe3df92b0f5b1f0e4d5495fcb9fda) ) ROM_LOAD( "d100-1.6e", 0x200, 0x200, CRC(88befd59) SHA1(cbcb437f9f6b5e542dc69f5c9e85ccbae47080af) ) ROM_END /*************************************************************************** Almond Pinky Dynax, 1988 This game runs on Royal Mahjong hardware. It appears Royal Mahjong was originally manufactured by Nichibutsu This PCB says "(C) 1983 Nichibutsu" on it. Top PCB ------- D1401128L-0 |------------------------------------------| | |---------| | |DIP40 | | | | Z80A | & | | | |---------| | | 8MHz DSW1 | | | | | | | | | | DSW2 | | | | | | | |DYNAX DYNAX DYNAX DYNAX DYNAX DYNAX | | 146 145 144 143 142 141 6116 *| |------------------------------------------| Notes: Every chip has it's surface scratched * - 4 pin power connector joined to main PCB DSWx - have 8 switches each DIP40 - Socket joins to main PCB & - Large Dynax ceramic SIP module (DAC or similar) Z80 - clock 4MHz [8/2] All ROMs type 27512 Note! On Royal Mahjong-based PCBs where there is a 3 pin RGB connector (3 wires) tied to the main board and joining to the top board, the color PROM is located on the top daughterboard. Usually that chip is an 82S123 (32 bytes), 82S129 (256 bytes) or 82S147 (512 bytes). In any case, you can be sure there is a PROM(s) on the PCB somewhere if the RGB connector cable is present. Main PCB -------- RM-1D (C) Nichibutsu 1983 |------------------------------------------------| | 6116 DIP24 P6 P5 P4 P3 P2 P1 | |MB3712 | | BATTERY | | DSW(8) DIP40 | | | |1 18.432MHz| |8 TBP18S030.6K | |W | |A | |Y | | AY3-8910 | | 4116 4116 | |1 4116 4116 | |0 4116 4116 | |W 4116 4116 | |A 4116 4116 | |Y 4116 4116 | | 4116 4116 | | 4116 4116 | |------------------------------------------------| Notes: DIP40 - Socket joins to top PCB DIP24 - Unpopulated DIP24 position (no socket) TBP18S030.6K - Color PROM (32 bytes) P1-P6 - Program ROM sockets (DIP24) ***************************************************************************/ ROM_START( mjapinky ) ROM_REGION( 0x90000, "maincpu", 0 ) ROM_LOAD( "141.4d", 0x00000, 0x10000, CRC(0c4fb83a) SHA1(5d467e8fae715ca4acf88f8e9437c7cdf9f876bd) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x10000 ) ROM_LOAD( "142.4e", 0x20000, 0x10000, CRC(129806f0) SHA1(d12d2c5bb0c653f2e4974c47004ada128ac30bea) ) ROM_LOAD( "143.4f", 0x30000, 0x10000, CRC(3d0bc452) SHA1(ad61eaa892121f90f31a6baf83158a11e6051430) ) ROM_LOAD( "144.4h", 0x40000, 0x10000, CRC(24509a18) SHA1(ab9daed2cbc72d02c2168a4c93f70ebfe3916ea2) ) ROM_LOAD( "145.4j", 0x50000, 0x10000, CRC(fea3375a) SHA1(cbb89b72cfba9c0448d152dfdbedb20b9896516e) ) ROM_LOAD( "146.4k", 0x60000, 0x10000, CRC(be27a9b9) SHA1(f12402182f598391e445245b345f49084a69620a) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "18s030n.clr", 0x0000, 0x0020, CRC(5736d0aa) SHA1(298b51340d2697347842cfaa5921f31c7b7f9748) ) ROM_END /*************************************************************************** Mahjong Cafe Time (c)1992 Dynax Modified Royal Mahjong PCB D6310128L1-1 (Sub PCB) CPU: Z80 Sound: AY-3-8910 ROMs: 6301.2E [1fc10e7c] 6302.3E [02bbdf78] 6303.5E [0e71eea8] 6304.6E [53c581d6] D63-1.7F [e7410136] MB7124H D63-2.8F [af735b42] / ***************************************************************************/ ROM_START( cafetime ) ROM_REGION( 0x210000, "maincpu", 0 ) ROM_LOAD( "6301.2e", 0x000000, 0x40000, CRC(1fc10e7c) SHA1(0ed6bfd4cc6fc64bbf55bd3c6bde2d8ba9da2afb) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x010000, 0x40000 ) ROM_RELOAD( 0x050000, 0x40000 ) ROM_LOAD( "6302.3e", 0x090000, 0x80000, CRC(02bbdf78) SHA1(e1e107541236ed92854fac4e12c9b300dbac9822) ) ROM_LOAD( "6303.5e", 0x110000, 0x80000, CRC(0e71eea8) SHA1(f95c3b7acee6deabff4aca83b490e255648e2f19) ) ROM_LOAD( "6304.6e", 0x190000, 0x80000, CRC(53c581d6) SHA1(d9cfda63a8f2e92873f69c673d3efe5c22cfa0de) ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "d63-2.8f", 0x000, 0x200, CRC(af735b42) SHA1(deddde3e276d5b9de72e267f65399d80783c6244) ) ROM_LOAD( "d63-1.7f", 0x200, 0x200, CRC(e7410136) SHA1(54d3aec0d11485d4f419e76f9c4071ab9b817937) ) ROM_END /*************************************************************************** Mahjong Cafe Doll Dynax, 1993 This game runs on Royal Mahjong hardware. Top PCB ------- D76052208L-2 |-----------------------------------| | 7601 6264 RTC BATTERY | |DIP40 | | 7602 8MHz | | PAL PAL | | 7603 |-----------| | | | CPU | | | DIP32 |-----------| | | | | | | | | | | | | 82s147.7F &| |* DSW3 DSW1 | | 82S147.9F % DSW4 DSW2 | |-----------------------------------| Notes: Every chip has it's surface scratched, except the PROMs * - Connector joined to main PCB & - Power input connector % - RGB Video output DIP32 - Empty DIP32 socket DSWx - have 10 switches each DIP40 - Socket joins to main PCB CPU - unknown SDIP64 chip. Possibly TMP90P640 or similar TLCS-90 type CPU Main PCB -------- no pcb number |------------------------------------------------| | 6116 DIP24 DIP24 DIP24 DIP28 DIP28 DIP28 | | DIP24 | |HA1368 | | DIP40 | | | | DSW(8) 18.432MHz| |M | |A | |H | |J | |O AY3-8910 | |N 4116 4116 | |G 4116 4116 | |2 4116 4116 | |8 4116 4116 | | 4116 4116 | | 4116 4116 | | 4116 4116 | | 4116 4116 | |------------------------------------------------| Notes: DIP40 - Sockets joins to top PCB DIP24/28 - Unpopulated sockets ***************************************************************************/ ROM_START( cafedoll ) ROM_REGION( 0x190000, "maincpu", 0 ) ROM_LOAD( "76xx.tmp90841", 0x00000, 0x02000, NO_DUMP ) ROM_LOAD( "7601", 0x000000, 0x80000, CRC(20c80ad9) SHA1(e45edd101c6e26c0fa3c3f15f4a4152a853e41bd) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x010000, 0x80000 ) ROM_LOAD( "7602", 0x090000, 0x80000, CRC(f472960c) SHA1(cc2feb4374ba94035101114c73e1690cfeac9b91) ) ROM_LOAD( "7603", 0x110000, 0x80000, CRC(c4293019) SHA1(afd717844e9e681ada14e80cd10dce0ed60d4259) ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "d76-2_82s147.9f", 0x000, 0x200, CRC(9c1d0512) SHA1(3ca82d4271badc890701ecc76b97e80b16509b50) ) ROM_LOAD( "d76-1_82s147.7f", 0x200, 0x200, CRC(9a75349c) SHA1(2071132267aafd8facf1d7841093d9a45c30a8d3) ) ROM_END /*************************************************************************** Mahjong Cafe Paradise 1999 Techno-Top Royal Mahjong board. No roms on the base board. Top board looks like typical Dynax with scratched SDIP64. It is marked 'TSS001-0001 - Techno Top Limited' and has just 2 eproms and 2 PROMs. Everything else is scratched but there's a 32.768kHz OSC, RTC and connected battery. Also, 4 DIP sw each with 10 switches and an 8MHz OSC next to the SDIP64 chip, and a PLCC68 chip (likely FPGA) ***************************************************************************/ ROM_START( cafepara ) ROM_REGION( 0x290000, "maincpu", 0 ) ROM_LOAD( "cafepara.tmp91640", 0x000000, 0x004000, NO_DUMP ) // 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) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x010000, 0x080000 ) ROM_LOAD( "00102.1d", 0x090000, 0x200000, CRC(ed3b5447) SHA1(ac24e9c00c94c35d2b2ec35f0c4262ceeda5408f) ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "ts001b.4h", 0x000, 0x200, CRC(b0019654) SHA1(78ba9b35744849c430f99137ea0da3d5564cc72a) ) ROM_LOAD( "ts001a.4j", 0x200, 0x200, CRC(e89d4db0) SHA1(ff191a76fe1144e72a1cf3769f0156adf2d0507f) ) ROM_END /*************************************************************************** Mahjong Vegas Dynax, 199? This game runs on Royal Mahjong hardware. Top PCB ------- D5011308L1 |-----------------------------------| | DIP32 DIP32 5003 5002 DIP32 5001A| |DIP40 62XX| | 32.768kHz | | RTC | | |-----------| | | | CPU | | | |-----------| | |DSW4 DSW2 | | DSW3 DSW1 PAL | | | | | | | | D50-2 | |* D50-1 8MHz | | % & BATTERY | |-----------------------------------| Notes: Every chip has it's surface scratched * - Cable connector joined to main PCB (to original PROM socket on main board) % - RGB Video output & - +12V input to top PCB DIP32 - Empty DIP32 socket DSWx - have 10 switches each DIP40 - Socket joins to main PCB CPU - unknown SDIP64 chip. Possibly TMP90P640 or similar TLCS-90 type CPU Pins 9-14 have been broken off and removed! 62XX - 6264 or 62256 SRAM D50-* - 82S147 color PROMs Main PCB -------- FRM-00 (with Falcon Logo.... PCB is made by Falcon) |------------------------------------------------| | 6116 DIP24 ROM6 ROM5 ROM4 ROM3 ROM2 ROM1 | |HA1368 | | | | VOL DIP40 | | | | DSW(8) 18.432MHz| |M | |A | |H | |J | |O AY3-8910 | |N 4116 4116 | |G 4116 4116 | |2 4116 4116 | |8 4116 4116 | | 4116 4116 | | 4116 4116 | | 4116 4116 | | 4116 4116 | |------------------------------------------------| Notes: DIP40 - Socket joins to top PCB DIP24 - Unpopulated socket AY-3-8910 - clock 1.536MHz (18.432/12] ROM* - Unpopulated DIP24 sockets ***************************************************************************/ ROM_START( mjvegas ) ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "50xx.tmp90841", 0x00000, 0x02000, NO_DUMP ) ROM_LOAD( "5001a.1b", 0x00000, 0x20000, CRC(91859a47) SHA1(3c452405bf28f5e7302eaccdf472e91b64629a67) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x20000 ) ROM_LOAD( "5002.1d", 0x30000, 0x80000, CRC(016c0a32) SHA1(5c5fdd631eacb36a0ee7dba9e070c2d3d3d8fd5b) ) ROM_LOAD( "5003.1e", 0xb0000, 0x20000, CRC(5323cc85) SHA1(58b75ba560f05a0568024f52ee89f54713219452) ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "d50-2_82s147.4h", 0x000, 0x200, CRC(3c960ea2) SHA1(65e05e3f129e9e6fcb14b7d44a75a76919c54d52) ) ROM_LOAD( "d50-1_82s147.4g", 0x200, 0x200, CRC(50c0d0ec) SHA1(222899456cd2e15391d8d0f771bbd5e5333d6ba3) ) ROM_END ROM_START( mjvegasa ) ROM_REGION( 0x800000, "maincpu", ROMREGION_ERASEFF ) // 100 banks ROM_LOAD( "5040.1b", 0x00000, 0x20000, CRC(c4f03128) SHA1(758567f74de333207dfe6c1cb72b2afffb0c8f4b) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x070000, 0x20000 ) // 0c-0f ROM_LOAD( "5002.1d", 0x210000, 0x80000, CRC(016c0a32) SHA1(5c5fdd631eacb36a0ee7dba9e070c2d3d3d8fd5b) ) // 40-4f ROM_LOAD( "5003.1e", 0x2f0000, 0x20000, CRC(5323cc85) SHA1(58b75ba560f05a0568024f52ee89f54713219452) ) // 5c-5f ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "d50-2_82s147.4h", 0x000, 0x200, CRC(3c960ea2) SHA1(65e05e3f129e9e6fcb14b7d44a75a76919c54d52) ) ROM_LOAD( "d50-1_82s147.4g", 0x200, 0x200, CRC(50c0d0ec) SHA1(222899456cd2e15391d8d0f771bbd5e5333d6ba3) ) ROM_END /*************************************************************************** Mahjong Shinkirou Deja Vu (+ some roms from Jan Oh (Toapan) !?) This game runs on Royal Mahjong hardware. Top PCB ------- D210301BL2 |-----------------------------------| | DIP32 DIP32 2104 2103 2102 2101 | |DIP40 6116| | | |DSW3 | | |-----------| | | | CPU | | | |-----------| | |DSW4 | | 8MHz | | DSW2 DSW1| | | | | | | |* | | % | |-----------------------------------| Notes: Every chip has it's surface scratched * - Connector joined to main PCB % - RGB Video output DIP32 - Empty DIP32 socket DSWx - have 8 switches each DIP40 - Socket joins to main PCB CPU - unknown SDIP64 chip. Possibly TMP90P640 or similar TLCS-90 type CPU Main PCB -------- FRM-00 |------------------------------------------------| | 6116 DIP24 ROM6 ROM5 ROM4 ROM3 ROM2 ROM1 | |HA1368 | | | | DIP40 | | | | DSW(8) 18.432MHz| |M | |A | |H | |J | |O AY3-8910 | |N 4116 4116 | |G 4116 4116 | |2 4116 4116 | |8 4116 4116 | | 4116 4116 | | 4116 4116 | | 4116 4116 | | 4116 4116 | |------------------------------------------------| Notes: DIP40 - Sockets joins to top PCB DIP24 - Unpopulated socket ***************************************************************************/ ROM_START( mjdejavu ) ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "2101.1b", 0x00000, 0x10000, CRC(b0426ea7) SHA1(ac39cbf5d78acdaa4b01d948917965c3aa2761b8) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x08000 ) ROM_CONTINUE( 0x10000, 0x08000 ) // 0 // unused ROM_LOAD( "2103.1d", 0x30000, 0x20000, CRC(ed5fde4b) SHA1(d55487ae1007d43b71f06ae5c407c75db7054515) ) // 8 // unused ROM_LOAD( "2104.1e", 0x70000, 0x20000, CRC(cfb8075d) SHA1(31f613a1a9b5f4295b552aeeddb760605ce2ac70) ) // 18 // unused ROM_LOAD( "2102.1c", 0xb0000, 0x20000, CRC(f461e422) SHA1(c3505feb32650fdd5c0d7f30faed69b65d94937a) ) // 28 ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "82s147.4d", 0x000, 0x200, CRC(d43f4c7c) SHA1(117d2e4e8d5bea3e5dc903a4b87bd71786ae009c) ) ROM_LOAD( "82s147.4c", 0x200, 0x200, CRC(30cf7831) SHA1(b4593d51c6ceb301279a01a98665e4be8a3c403d) ) ROM_END ROM_START( mjdejav2 ) ROM_REGION( 0xd0000, "maincpu", 0 ) ROM_LOAD( "210a.1b", 0x00000, 0x10000, CRC(caa5c267) SHA1(c779f9217f56d9d3b1ee9fadca07f7917d203e8e) ) /* bank switched ROMs follow */ ROM_RELOAD( 0x10000, 0x08000 ) ROM_CONTINUE( 0x10000, 0x08000 ) // 0 // unused ROM_LOAD( "2103.1d", 0x30000, 0x20000, CRC(ed5fde4b) SHA1(d55487ae1007d43b71f06ae5c407c75db7054515) ) // 8 // unused ROM_LOAD( "2104.1e", 0x70000, 0x20000, CRC(cfb8075d) SHA1(31f613a1a9b5f4295b552aeeddb760605ce2ac70) ) // 18 // unused ROM_LOAD( "210b.1c", 0xb0000, 0x20000, CRC(d4383830) SHA1(491333277e5e2341d1c1cc20f8cc32aa6b020b6c) ) // 28 ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "82s147.4d", 0x000, 0x200, CRC(d43f4c7c) SHA1(117d2e4e8d5bea3e5dc903a4b87bd71786ae009c) ) ROM_LOAD( "82s147.4c", 0x200, 0x200, CRC(30cf7831) SHA1(b4593d51c6ceb301279a01a98665e4be8a3c403d) ) ROM_END // Incomplete romset (missing rom7 at $6000): "Jan Oh" by Toaplan, on royalmah hardware (try pc=64f). ROM_START( janoh ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "rom1.p1", 0x0000, 0x1000, CRC(8fc19963) SHA1(309e941c059a97b117090fd9dd69a00031aa6109) ) // "1984 JAN OH" ROM_LOAD( "rom2.p12", 0x1000, 0x1000, CRC(e1141ae1) SHA1(38f7a71b367a607bb20a5cbe62e7c87c96c6997c) ) ROM_LOAD( "rom3.p2", 0x2000, 0x1000, CRC(66e6d2f4) SHA1(d7e00e5bfee60daf844c46d36b1f4860fba70759) ) // "JANOH TOAPLAN 84" ROM_LOAD( "rom4.p3", 0x3000, 0x1000, CRC(9186f02c) SHA1(b7dc2d6c19e67dd3f841cbb56df9589e3e6941f7) ) ROM_LOAD( "rom5.p4", 0x4000, 0x1000, CRC(f3c478a8) SHA1(02a8504457cbcdd3e67e7f5ba60fb789f198a51d) ) ROM_LOAD( "rom6.p5", 0x5000, 0x1000, CRC(92687327) SHA1(4fafba5881dca2a147616d94dd055eba6aa3c653) ) ROM_LOAD( "rom7.p6", 0x6000, 0x1000, NO_DUMP ) ROM_REGION( 0x20, "proms", 0 ) ROM_LOAD( "janho.color", 0x00, 0x20, NO_DUMP ) ROM_END /*************************************************************************** Mahjong Cafe Break Dynax/Nakanihon, 199? This game runs on Royal Mahjong hardware with a Nakanihon top board Top PCB Layout -------------- NS528-9812 |-------------------------| |X NS528A2 | | NS528B2 PLCC84 528011| |RGB DIP32| | 8MHz DIP32| |DSW4(10) | |DSW3(10) SDIP64 6264 | |DSW2(10) | |DSW1(10) 52802 | | A3 | |BATTERY A1 A2 Y A4| |-------------------------| Notes: RGB 3 - wire cable tied to mainboard X - DIP16 socket with flat cable plugged in coming from main board PROM socket PLCC84 - unknown PLCC84 in a socket DIP32 - unpopulated DIP32 socket SDIP64 - unknown CPU, probably TLCS-90 (TMP91640) A1 - unknown DIP8 IC, possibly MB3771 reset/watchdog chip A2/A3 - unknown DIP14 ICs, probably logic A4 - unknown DIP18 IC, RTC IC Y - 32.768kHz OSC for RTC ***************************************************************************/ ROM_START( cafebrk ) ROM_REGION( 0x280000, "maincpu", 0 ) ROM_LOAD( "528.tmp91640", 0x000000, 0x004000, NO_DUMP ) ROM_LOAD( "528011.1f", 0x000000, 0x080000, CRC(440ae60b) SHA1(c24efd76ba73adcb614b1974e8f92592800ba53c) ) /* bank switched ROMs follow */ ROM_LOAD( "52802.1d", 0x080000, 0x200000, CRC(bf4760fc) SHA1(d54ab9e298800a31d95a5f8b98ab9ba5b2866acf) ) ROM_REGION( 0x400, "proms", 0 ) ROM_LOAD( "ns528b2.4h", 0x000, 0x200, CRC(5699e69a) SHA1(fe13b93dd2c4a16865b4edcb0fee1390fdade725) ) ROM_LOAD( "ns528a2.4j", 0x200, 0x200, CRC(b5a3a569) SHA1(8e31c600ae24b672b614908ee920a333ed600941) ) ROM_END /* Janou (c)1985 Toaplan (distributed by SNK) RM-1C (modified Royal Mahjong hardware) CPU: Z80x2 (on subboard) Sound: AY-3-8910 OSC: 18.432MHz ROMs: JO1 JO2 JO3 JO4 JO5 JO6 JO7 Subboard GX002A C8 (2764) 18S030.44 18S030.45 HM6116 MSM2128x4 dumped by sayu --- Team Japump!!! --- */ ROM_START( janoha ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "jo1", 0x0000, 0x1000, CRC(1a7dd28d) SHA1(347085c2b305861e4a4a602c3b3b0c57889f7f45) ) ROM_LOAD( "jo2", 0x1000, 0x1000, CRC(e92ca79f) SHA1(9714ebee954dd98cf98b340e1dc424a4b2a78c36) ) ROM_LOAD( "jo3", 0x2000, 0x1000, CRC(8e349cac) SHA1(27442fc97750ceb6e928682ee545a9ebff4511ac) ) ROM_LOAD( "jo4", 0x3000, 0x1000, CRC(f2bcac9a) SHA1(46eea014edf9f260b35b5f9bd0fd0a0236da16ef) ) ROM_LOAD( "jo5", 0x4000, 0x1000, CRC(16c09c73) SHA1(ea712f9ca3200ca27434e4200187b488e24f4c65) ) ROM_LOAD( "jo6", 0x5000, 0x1000, CRC(92687327) SHA1(4fafba5881dca2a147616d94dd055eba6aa3c653) ) ROM_LOAD( "jo7", 0x6000, 0x1000, CRC(f9a3fea6) SHA1(898c030b34f7432568e080e2814619d836d98a2f) ) ROM_REGION( 0x10000, "sub", 0 ) ROM_LOAD( "c8", 0x0000, 0x2000, CRC(a37ed493) SHA1(a3246c635ee77f96afd96285ef7091f6fc0d7636) ) ROM_REGION( 0x0040, "proms", 0 ) ROM_LOAD( "18s030.44", 0x0000, 0x0020, CRC(d4eabf78) SHA1(f14778b552ff483e36e7c30ee67e8e2075790ea2) ) ROM_LOAD( "18s030.45", 0x0020, 0x0020, CRC(c6a24ae9) SHA1(ec7a4dee2fec2f7151ddc39e40a3eee6a1c4992d) ) // another color prom? ROM_END /* Mahjong Shiyou (BET type) (c)1986 Visco Board: S-0086-001-00 CPU: Z80-A x2 Sound: AY-3-8910 M5205 OSC: 18.432MHz 400KHz 1.1K Z80#2 prg. 2.1G 3.3G Z80#1 prg. 4.3F COLOR.BPR color */ ROM_START( mjsiyoub ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "3.3g", 0x00000, 0x8000, CRC(47d0f16e) SHA1(a125be052668ba93756bf940af31a10e91a3d307) ) ROM_LOAD( "4.3f", 0x08000, 0x8000, CRC(6cd6a200) SHA1(1c53e5caacdb9c660bd98f5331bf5354581f74c9) ) /*encrypted z80*/ ROM_REGION( 0x10000, "sub", 0 ) ROM_LOAD( "1.1k", 0x00000, 0x8000, CRC(a1083321) SHA1(b36772e90be60270234df16cf92d87f8d950190d) ) ROM_LOAD( "2.1g", 0x08000, 0x4000, CRC(cfe5de1d) SHA1(4acf9a752aa3c02b0889b0b49d3744359fa24460) ) ROM_REGION( 0x40000, "proms", 0 ) ROM_LOAD( "color.bpr", 0x00, 0x20, CRC(d21367e5) SHA1(b28321ac8f99abfebe2ef4da0c751cefe9f3f3b6) ) ROM_END /* Mahjong Senka (c)1986 Visco Modified Royal Mahjong Hardware CPU: Z80 <- wrong,they are 2 z80 CPUs -AS Sound: AY-3-8910 OSC: 18.432MHz Others: Battery ROMs: 1 2 3 4 1.2L (N82S129N) 2.2K (N82S123N) 3.1D (N82S129N) 4.8K (N82S123N) - color PROM dumped by sayu --- Team Japump!!! --- http://japump.i.am/ */ ROM_START( mjsenka ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "3", 0x0000, 0x4000, CRC(b2d8be1f) SHA1(da75e1072d271de2dbd897a551f6c32593f6421b) ) ROM_LOAD( "4", 0x4000, 0x2000, CRC(e9e84999) SHA1(7b5f0edd92cf3a45e85055460e6cb00b154fd152) ) ROM_LOAD( "2", 0x6000, 0x2000, CRC(cdb02fc5) SHA1(5de6b15b79ea7c4246a294b17f166e53be6a4abc) ) /*encrypted z80*/ ROM_REGION( 0x10000, "sub", 0 ) ROM_LOAD( "1", 0x0000, 0x2000, CRC(83e943d1) SHA1(c4f9b5036627ccb369e7db03a743e496b149af85) ) ROM_REGION( 0x0040, "proms", 0 ) ROM_LOAD( "4.8k", 0x0000, 0x0020, CRC(41bd4d69) SHA1(4d2da761b338b62b2ea151c201063a24d6e4cc97) ) ROM_LOAD( "2.2k", 0x0020, 0x0020, CRC(46014727) SHA1(eec451f292ee319fa6bfbbf223aaa12b231692c1) ) ROM_REGION( 0x0200, "user1", 0 ) //? ROM_LOAD( "1.2l", 0x0000, 0x0100, CRC(24599429) SHA1(6c93bb2e7bc9902cace0c9d482fc1584c4c1a114) ) ROM_LOAD( "3.1d", 0x0100, 0x0100, CRC(86aeafd1) SHA1(c4e5c56ce5baf2be3962675ae333e28bd8108a00) ) ROM_END /* Mahjong Yarou (c)1986 Visco/Video System FRM-00 (modified royal mahjong hardware) CPU: Z80 (on subboard) Sound: AY-3-8910 OSC: 18.432MHz ROMs: 1(2732) 2(2732) 3(2732) 4(2732) 5(2732) 6(2732) 4.6K (18S030) - pin14 is connected to subboard's WS pin9 is not inserted to the socket Subboard: 7(2764) 8(2764) N82S129N.IC4 N82S123N.IC7 N82S129N.IC15 Connector between mainboard and subboard sub - main CK - LS368 (1K) pin12 HD - LS08 (2E) pin1 VD - LS08 (2E) pin2 WS - 18S030(6K) pin14 () - LS138 (3K) pin13 Mainboard ---------------------------------------------------------- 1 2 3 4 5 6 7 A 74LS04 74LS86 74LS153 MB8116 MB8116 74LS157 B 74LS161 74LS86 74LS153 MB8116 MB8116 74LS95 C 74LS161 74LS86 74LS153 MB8116 MB8116 74LS157 D 74LS74 74LS86 74LS153 MB8116 MB8116 74LS95 8 E 74LS161 74LS08 74LS153 MB8116 MB8116 74LS157 9 F 74LS161 74LS74 74LS00 MB8116 MB8116 74LS95 1 H 74LS74 74LS00 74LS175 MB8116 MB8116 74LS157 0 J 74LS107 74LS32 74LS10 MB8116 MB8116 74LS95 K 74LS368 74LS241 74LS138 74LS08 74LS174 4.6K L 18.432MHz 74LS241 74LS138 74LS04 74LS244 74LS174 M (socket to subbd) 74LS367 74LS08 DIPSW 74LS368 N (74LS245)74LS138 74LS04 TC40H000P 1 2 3 4 5 6 6 B 1 A 1 T 6 T ---------------------------------------------------------- Subboard ----------------------------------------------------------- 74LS42(IC21) ?(IC22) ?(IC23) 74LS85(IC24) 74LS125(IC16) 74LS08(IC17) 74LS393(IC9) 82S129N(IC15) 74LS161(IC6) 82S123N(IC7) 74LS161(IC8) 74LS157(IC14) 82S129N(IC4) 74LS259(IC5) 74LS32(IC12) 74LS74(IC13) 7(IC2) PAL20X10(IC19) 74LS00(IC20) 8(IC3) 74LS245(IC18) DIPSW 74LS32(IC11) Z80A 74LS04(IC10) 5pin connector ----------------------------------------------------------- dumped by sayu --- Team Japump!!! --- http://japump.i.am/ */ ROM_START( mjyarou ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.p1", 0x0000, 0x1000, CRC(312c3b29) SHA1(ec2e14b392cf761f0a7079376994418fd463a06c) ) // on main board ROM_LOAD( "2.p2", 0x1000, 0x1000, CRC(98f14097) SHA1(cd1f72d6effa50f95386dfc5fa9b5056d83e554f) ) // " ROM_LOAD( "3.p3", 0x2000, 0x1000, CRC(295dbf40) SHA1(d6ac7bd88da849e418e750e2c91a594f65bdff39) ) // " ROM_LOAD( "4.p4", 0x3000, 0x1000, CRC(a6a078c8) SHA1(936be36c7c938c705e7054a42c1908bb5a5ee1bb) ) // " ROM_LOAD( "5.p5", 0x4000, 0x1000, CRC(3179657e) SHA1(703fc57ae71554345754267c31809cf7af7f1639) ) // " ROM_LOAD( "6.p6", 0x5000, 0x1000, CRC(6ccc05b4) SHA1(6eefba6023673edd86e82a0ad861a4d8f7f6652b) ) // " ROM_LOAD( "7.ic2", 0x6000, 0x2000, CRC(de6bfdd8) SHA1(dd9727d4d7de4add48cde229b8aa194f0492af7e) ) // on sub board ROM_LOAD( "8.ic3", 0x8000, 0x2000, CRC(1adef246) SHA1(b5f5598daf71694effffbfb486b03fcda5a593ee) ) // " ROM_REGION( 0x0040, "proms", 0 ) ROM_LOAD( "82s123n.ic7", 0x0000, 0x0020, CRC(46014727) SHA1(eec451f292ee319fa6bfbbf223aaa12b231692c1) ) // on sub board ROM_LOAD( "4.6k", 0x0020, 0x0010, CRC(41bd4d69) SHA1(4d2da761b338b62b2ea151c201063a24d6e4cc97) ) // on main board ROM_CONTINUE(0x0000, 0x0010) ROM_REGION( 0x0200, "user1", 0 ) //? ROM_LOAD( "82s129n.ic15", 0x0000, 0x0100, CRC(86aeafd1) SHA1(c4e5c56ce5baf2be3962675ae333e28bd8108a00) ) // on sub board ROM_LOAD( "82s129n.ic4", 0x0100, 0x0100, CRC(f09d3c4c) SHA1(a9e752d75e7f3ebd05add4ccf2f9f15d8f9a8d15) ) // " ROM_END ROM_START( mjyarou2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "my_1", 0x0000, 0x1000, CRC(c303a013) SHA1(1360aa8657740036f017eba864eed2cbc3c9ad62) ) ROM_LOAD( "my_2", 0x1000, 0x1000, CRC(0c7f87cc) SHA1(2e56656b2dd860471eab9dfcb1dfd4e0b23a8df9) ) ROM_LOAD( "my_3", 0x2000, 0x1000, CRC(e94d5f9a) SHA1(c8365991aecf0b1d22c7ce38dd15f6d4a5f70cac) ) ROM_LOAD( "my_4", 0x3000, 0x1000, CRC(a6a078c8) SHA1(936be36c7c938c705e7054a42c1908bb5a5ee1bb) ) ROM_LOAD( "my_5", 0x4000, 0x1000, CRC(3179657e) SHA1(703fc57ae71554345754267c31809cf7af7f1639) ) ROM_LOAD( "my_6", 0x5000, 0x1000, CRC(0ca1cedc) SHA1(bd5d54b185e6ff5633d59df4c06a2094fca9cbf2) ) ROM_LOAD( "7", 0x6000, 0x2000, CRC(de6bfdd8) SHA1(dd9727d4d7de4add48cde229b8aa194f0492af7e) ) ROM_LOAD( "8", 0x8000, 0x2000, CRC(1adef246) SHA1(b5f5598daf71694effffbfb486b03fcda5a593ee) ) ROM_REGION( 0x0040, "proms", 0 ) ROM_LOAD( "82s123n.ic7", 0x0000, 0x0020, CRC(46014727) SHA1(eec451f292ee319fa6bfbbf223aaa12b231692c1) ) // not dumped for this board ROM_LOAD( "82s123", 0x0020, 0x0010, CRC(41bd4d69) SHA1(4d2da761b338b62b2ea151c201063a24d6e4cc97) ) ROM_CONTINUE(0x0000, 0x0010) ROM_REGION( 0x0200, "user1", 0 ) //? ROM_LOAD( "82s129n.ic15", 0x0000, 0x0100, CRC(86aeafd1) SHA1(c4e5c56ce5baf2be3962675ae333e28bd8108a00) ) // not dumped for this board ROM_LOAD( "82s129n.ic4", 0x0100, 0x0100, CRC(f09d3c4c) SHA1(a9e752d75e7f3ebd05add4ccf2f9f15d8f9a8d15) ) // not dumped for this board ROM_END /* Jansou (c)1985 Dyna Industry upgrade kit for Royal Mahjong G85-12-05RL CPU: Z80A OSC: 4.000MHz Other: surface scratched 40pin DIP device ROMs: 1 2 3 4 5 Color PROM: N82S123AN dumped by sayu --- Team Japump!!! --- http://japump.i.am/ */ /* Nothing can be done on this one due of missing main program rom(s) (surface scratched 40pin DIP device). A string of the current z80 rom at offset 0x90 says "THE Janso Voice Version 1.0 (c) Copy Right 1985 Dyna", so it's just a voice player. */ ROM_START( jansou ) /*Missing main cpu program rom*/ ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "unk", 0x0000, 0x8000, NO_DUMP ) /*These probably hooks up with the main cpu program,they are standard 4bpp bitmaps.*/ ROM_REGION( 0x20000, "gfx1", 0 ) ROM_LOAD( "3", 0x00000, 0x8000, CRC(75a0bef0) SHA1(c2f5b3ddc55b58d3ea784d8b3d0a0f577d313341) ) ROM_LOAD( "4", 0x08000, 0x8000, CRC(7304899a) SHA1(636b7673563f75ff2ef95eef3b99f80ef0c45fee) ) ROM_LOAD( "5", 0x10000, 0x8000, CRC(57a4d300) SHA1(35d211d50052cd76721dbd6ad02ec7cb56c475d1) ) /*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", 0x00000, 0x8000, CRC(0321ac7e) SHA1(1a0372a25f979461db09cd153c15daaa556c3d1f) ) ROM_LOAD( "2", 0x08000, 0x8000, CRC(fea7f3c6) SHA1(c196be0030b00cfb747b9dbfa387048d20c70b74) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "n82s123an", 0x0000, 0x0020, CRC(e9598146) SHA1(619e7eb76cc3e882b5b3e55cdd23fe00b0a1fe45) ) ROM_END ROM_START( jansoua ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "1.bin", 0x0000, 0x1000, CRC(aa66a9fc) SHA1(e2a956f17d294e160e16297866cd9be117254ea4) ) ROM_LOAD( "2.bin", 0x1000, 0x1000, CRC(3b6ef098) SHA1(eda181971153888e63aa14e10b0b199383f2d627) ) ROM_LOAD( "3.bin", 0x2000, 0x1000, CRC(63070d44) SHA1(c9c08f774a94cfb4e291f3d7ef81b0f0f9f74460) ) ROM_LOAD( "4.bin", 0x3000, 0x1000, CRC(2b14d3c1) SHA1(210d6f212bda7fb7225e5606b34f674cc5f85150) ) ROM_REGION( 0x20000, "gfx1", 0 ) ROM_LOAD( "3s.bin", 0x00000, 0x8000, CRC(64df20f6) SHA1(6cbe4718d47b52c229863219dba3e1f964ba667a) ) ROM_LOAD( "4s.bin", 0x08000, 0x8000, CRC(8ddc8258) SHA1(a97a5efd06965a70e34684986dd8538a35e43d31) ) ROM_LOAD( "5s.bin", 0x10000, 0x8000, CRC(1745c996) SHA1(6905774b4bdd0bfcc34b847efb037f9d92884a6b) ) /*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", 0x00000, 0x8000, CRC(0321ac7e) SHA1(1a0372a25f979461db09cd153c15daaa556c3d1f) ) ROM_LOAD( "2", 0x08000, 0x8000, CRC(fea7f3c6) SHA1(c196be0030b00cfb747b9dbfa387048d20c70b74) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "n82s123an", 0x0000, 0x0020, CRC(e9598146) SHA1(619e7eb76cc3e882b5b3e55cdd23fe00b0a1fe45) ) ROM_END ROM_START( jangtaku ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "v13_rm_1.p1", 0x0000, 0x1000, CRC(fe761b2b) SHA1(7be1dab12295f1fa399e3d618644715f0300391b) ) ROM_LOAD( "v13_rm_2.p2", 0x1000, 0x1000, CRC(888e97f5) SHA1(cef86f3f108bc40ea18d9b0676940d9340490aa9) ) ROM_LOAD( "v13_rm_3.p3", 0x2000, 0x1000, CRC(1b428819) SHA1(a419017f9c077c0dd21000b3b9f949c47f20343e) ) ROM_LOAD( "v13_rm_4.p4", 0x3000, 0x1000, CRC(72d8abdf) SHA1(286a4fe6899c53daeb1a656b94206f9a19ceaee0) ) ROM_REGION( 0x20000, "gfx1", 0 ) ROM_LOAD( "3.d3", 0x00000, 0x8000, CRC(a865ac4c) SHA1(f8bff3b44a229ddb6165a986faa3de058001e285) ) ROM_LOAD( "4.f3", 0x08000, 0x8000, CRC(7f4c7194) SHA1(f9bf6e12b3a89b3d25ad15a85432e22bf4e10a24) ) ROM_LOAD( "5.g3", 0x10000, 0x8000, CRC(091df750) SHA1(6b7ad93bdfb6a7e11f923b084de3e713cf4d1dad) ) /*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) ) ROM_END ROM_START( rkjanoh2 ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "pf_1", 0x000000, 0x001000, CRC(582e7eda) SHA1(96578b6142051d9452f23c8c1b674e2d8a4c3b62) ) ROM_LOAD( "pf_2", 0x001000, 0x001000, CRC(49e7dc40) SHA1(d6232a82b6927c79dd47884e5e2a6589c5524424) ) ROM_LOAD( "pf_3_1", 0x002000, 0x001000, CRC(a1fdc929) SHA1(27cab4da2365bcf311d7f00d75e8db150183b108) ) ROM_LOAD( "pf_4l", 0x003000, 0x001000, CRC(c9ccdfa0) SHA1(ce6f2df7fb6739ddf0529bcae0596e4593ecc3e0) ) //ROM_LOAD( "pf_4_fewest", 0x003000, 0x001000, CRC(9a1650a0) SHA1(2da5957879d9f207721fc2f0d63dccc32850cbe2) ) //ROM_LOAD( "pf_4_middle", 0x003000, 0x001000, CRC(b1a721d8) SHA1(de24ec4bac7ec761c7b25a7ba62b850006444bbc) ) ROM_LOAD( "pf_5", 0x004000, 0x001000, CRC(8a858464) SHA1(55c71ce1c30e908dfc8c21237256dfbb75c55363) ) ROM_LOAD( "pf_6", 0x005000, 0x001000, CRC(5b649918) SHA1(191a221a515c261d90d7432443a7fbc8da71e7ac) ) ROM_LOAD( "pf_7", 0x006000, 0x001000, CRC(c4fdd2ac) SHA1(76c5645534b87dde87acfb4140d0f3ba18c95cd2) ) ROM_REGION( 0x002000, "gfx", 0 ) ROM_LOAD( "pf_8", 0x000000, 0x002000, CRC(c789e2b3) SHA1(33b5c8f22a1e337816a61fd2c91bc175a412d10e) ) ROM_REGION( 0x0020, "proms", 0 ) ROM_LOAD( "82s123", 0x000, 0x020, CRC(74a53e94) SHA1(ca9114bd9b2b07f5abe82616b41ae9fdb9537a4f) ) ROM_END DRIVER_INIT_MEMBER(royalmah_state, tahjong) { membank("mainbank")->configure_entries(0, 2, memregion("maincpu")->base() + 0x10000, 0x4000); } DRIVER_INIT_MEMBER(royalmah_state, jansou) { 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, 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(0x1000 * 9); membank("bank3")->set_base(m_janptr96_nvram.get()); machine().device("nvram")->set_base(m_janptr96_nvram.get(), 0x1000 * 9); membank("rambank")->configure_entries(0, 8, m_janptr96_nvram.get() + 0x1000, 0x1000); } // the original Janputer (Sanritsu) is not yet dumped, basically Royal Mahjong but non-BET type GAME( 1981, royalmj, 0, royalmah, royalmah, royalmah_state, 0, ROT0, "Nichibutsu", "Royal Mahjong (Japan, v1.13)", 0 ) 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, seljan, 0, seljan, seljan, royalmah_state, 0, ROT0, "Jem / Dyna Corp", "Sel-Jan [BET] (Japan)", 0 ) GAME( 1983, janyoup2, royalmj, janyoup2, 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, 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 Corp", "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, 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, 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, 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, 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, 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, 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 )