summaryrefslogblamecommitdiffstatshomepage
path: root/src/mame/machine/nb1413m3.h
blob: b2b53160d5e63c596f93a89a37c6a52bce73d9f4 (plain) (tree)
1
2
3
4
5
6
7
8
9
                       
                                  






                                                                               

                               

            
 







                                    























                          
                         


































                          

                          









































                          


                                       





                                                                                                                    
                                                                                                         
                             
 

                                                           
 



                        
 













                                                              

                           



                                     

                                                
 
                                              



                                    

                           
                            
 

                                 


                                                                                                       
 
        
 
                       








                                              
                              
                              
                                                
  
 
                                                                                                           
                                   

                                 
 
                                              
 
                                 
// license:BSD-3-Clause
// copyright-holders:Takahiro Nogi
/******************************************************************************

    Machine Hardware for Nichibutsu Mahjong series.

    Driver by Takahiro Nogi <nogi@kt.rim.or.jp> 1999/11/05 -

******************************************************************************/
#ifndef MAME_MACHINE_NB1413M3_H
#define MAME_MACHINE_NB1413M3_H

#pragma once

#define NB1413M3_VCR_NOP        0x00
#define NB1413M3_VCR_POWER      0x01
#define NB1413M3_VCR_STOP       0x02
#define NB1413M3_VCR_REWIND     0x04
#define NB1413M3_VCR_PLAY       0x08
#define NB1413M3_VCR_FFORWARD   0x10
#define NB1413M3_VCR_PAUSE      0x20

enum {
	NB1413M3_NONE = 0,
	// unknown
	NB1413M3_JOKERMJN,
	NB1413M3_JANGOU,
	NB1413M3_JNGOLADY,
	NB1413M3_JNGNIGHT,
	NB1413M3_MJKING,
	NB1413M3_NIGHTGAL,
	NB1413M3_NGALSUMR,
	NB1413M3_ROYALNGT,
	NB1413M3_RYLQUEEN,
	NB1413M3_SWEETGAL,
	NB1413M3_SEXYGAL,
	// NB1411M1
	NB1413M3_PASTELG,
	NB1413M3_THREEDS,
	// NB1413M3
	NB1413M3_CRYSTALG,
	NB1413M3_CRYSTAL2,
	NB1413M3_NIGHTLOV,
	NB1413M3_CITYLOVE,
	NB1413M3_MCITYLOV,
	NB1413M3_SECOLOVE,
	NB1413M3_BARLINE,
	NB1413M3_HOUSEMNQ,
	NB1413M3_HOUSEMN2,
	NB1413M3_LIVEGAL,
	NB1413M3_BIJOKKOY,
	NB1413M3_IEMOTO,
	NB1413M3_IEMOTOM,
	NB1413M3_RYUUHA,
	NB1413M3_SEIHA,
	NB1413M3_SEIHAM,
	NB1413M3_HYHOO,
	NB1413M3_HYHOO2,
	NB1413M3_SWINGGAL,
	NB1413M3_BIJOKKOG,
	NB1413M3_OJOUSAN,
	NB1413M3_OJOUSANM,
	NB1413M3_KORINAI,
	NB1413M3_KORINAIM,
	NB1413M3_MJCAMERA,
	NB1413M3_MJCAMERB,
	NB1413M3_MMCAMERA,
	NB1413M3_TAIWANMJ,
	NB1413M3_TAIWANMB,
	NB1413M3_OTONANO,
	NB1413M3_ABUNAI,
	NB1413M3_MJSIKAKU,
	NB1413M3_MMSIKAKU,
	NB1413M3_MSJIKEN,
	NB1413M3_HANAMOMO,
	NB1413M3_TELMAHJN,
	NB1413M3_GIONBANA,
	NB1413M3_MGION,
	NB1413M3_OMOTESND,
	NB1413M3_SCANDAL,
	NB1413M3_SCANDALM,
	NB1413M3_MGMEN89,
	NB1413M3_OHPAIPEE,
	NB1413M3_TOGENKYO,
	NB1413M3_MJFOCUS,
	NB1413M3_MJFOCUSM,
	NB1413M3_GALKOKU,
	NB1413M3_MJNANPAS,
	NB1413M3_BANANADR,
	NB1413M3_GALKAIKA,
	NB1413M3_MCONTEST,
	NB1413M3_UCHUUAI,
	NB1413M3_TOKIMBSJ,
	NB1413M3_TOKYOGAL,
	NB1413M3_TRIPLEW1,
	NB1413M3_NTOPSTAR,
	NB1413M3_MLADYHTR,
	NB1413M3_PSTADIUM,
	NB1413M3_TRIPLEW2,
	NB1413M3_CLUB90S,
	NB1413M3_LOVEHOUS,
	NB1413M3_CHINMOKU,
	NB1413M3_VANILLA,
	NB1413M3_MJLSTORY,
	NB1413M3_QMHAYAKU,
	NB1413M3_MJGOTTUB,
	NB1413M3_MAIKO,
	NB1413M3_MMAIKO,
	NB1413M3_HANAOJI,
	NB1413M3_KAGUYA,
	NB1413M3_KAGUYA2,
	NB1413M3_APPAREL,
	NB1413M3_AV2MJ1BB,
	NB1413M3_AV2MJ2RG,
	NB1413M3_FINALBNY,
	NB1413M3_HYOUBAN,
	NB1413M3_ORANGEC,
	NB1413M3_ORANGECI,
	NB1413M3_VIPCLUB,
	NB1413M3_IDHIMITU,
	NB1413M3_KANATUEN,
	NB1413M3_KYUHITO,
	NB1413M3_PAIRSNB,
	NB1413M3_PAIRSTEN
};

class nb1413m3_device : public device_t
{
public:
	nb1413m3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, int type) :
		nb1413m3_device(mconfig, tag, owner, clock)
	{
		set_type(type);
	}

	nb1413m3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
	~nb1413m3_device() {}

	// configuration helpers
	void set_type(int type) { m_nb1413m3_type = type; }

	enum
	{
		TIMER_CB
	};

	void nmi_clock_w(uint8_t data);
	uint8_t sndrom_r(address_space &space, offs_t offset);
	void sndrombank1_w(uint8_t data);
	void sndrombank1_alt_w(uint8_t data);
	void sndrombank2_w(uint8_t data);
	uint8_t gfxrom_r(offs_t offset);
	void gfxrombank_w(uint8_t data);
	void gfxradr_l_w(uint8_t data);
	void gfxradr_h_w(uint8_t data);
	void inputportsel_w(uint8_t data);
	uint8_t inputport0_r();
	uint8_t inputport1_r();
	uint8_t inputport2_r();
	uint8_t inputport3_r();
	uint8_t dipsw1_r();
	uint8_t dipsw2_r();
	uint8_t dipsw3_l_r();
	uint8_t dipsw3_h_r();
	void outcoin_w(uint8_t data);
	void vcrctrl_w(uint8_t data);
	DECLARE_READ_LINE_MEMBER( busyflag_r );
	DECLARE_WRITE_LINE_MEMBER( busyflag_w );

	required_device<cpu_device> m_maincpu;
	const char * m_sndromrgntag;
	int m_sndrombank1;
	int m_sndrombank2;
	int m_busyctr;
	int m_outcoin_flag;
	int m_inputport;
	int m_nb1413m3_type;

protected:
	// device-level overrides
	virtual void device_start() override;
	virtual void device_reset() override;
	virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;

private:

	int m_busyflag;
	int m_74ls193_counter;
	int m_nmi_count;          // for debug
	int m_nmi_clock;
	int m_nmi_enable;
	int m_counter;
	int m_gfxradr_l;
	int m_gfxradr_h;
	int m_gfxrombank;
	int m_outcoin_enable;
	emu_timer *m_timer_cb;
	output_finder<> m_led;
	TIMER_CALLBACK_MEMBER( timer_callback );
};

/* used in: hyhoo.cpp, niyanpai.cpp, pastelg.cpp, nbmj8688.cpp, nbmj8891.cpp, nbmj8991.cpp, nbmj9195.cpp */
INPUT_PORTS_EXTERN( nbmjcontrols );
INPUT_PORTS_EXTERN( nbhf1_ctrl );
INPUT_PORTS_EXTERN( nbhf2_ctrl );

DECLARE_DEVICE_TYPE(NB1413M3, nb1413m3_device)

#endif // MAME_MACHINE_NB1413M3_H