1 // license:BSD-3-Clause 2 // copyright-holders:Takahiro Nogi 3 4 #include "machine/nb1413m3.h" 5 #include "emupal.h" 6 #include "screen.h" 7 8 class nbmj8891_state : public driver_device 9 { 10 public: 11 enum 12 { 13 TIMER_BLITTER 14 }; 15 nbmj8891_state(const machine_config & mconfig,device_type type,const char * tag)16 nbmj8891_state(const machine_config &mconfig, device_type type, const char *tag) 17 : driver_device(mconfig, type, tag) 18 , m_maincpu(*this, "maincpu") 19 , m_nb1413m3(*this, "nb1413m3") 20 , m_screen(*this, "screen") 21 , m_palette(*this, "palette") 22 , m_clut_ptr(*this, "protection") 23 { 24 } 25 26 void mjfocusm(machine_config &config); 27 void mjfocus(machine_config &config); 28 void bananadr(machine_config &config); 29 void scandal(machine_config &config); 30 void hanamomo(machine_config &config); 31 void telmahjn(machine_config &config); 32 void pairsten(machine_config &config); 33 void club90s(machine_config &config); 34 void mgion(machine_config &config); 35 void chinmoku(machine_config &config); 36 void msjiken(machine_config &config); 37 void hnageman(machine_config &config); 38 void mjcamerb(machine_config &config); 39 void mjnanpas(machine_config &config); 40 void mmcamera(machine_config &config); 41 void pairsnb(machine_config &config); 42 void taiwanmb(machine_config &config); 43 void hanaoji(machine_config &config); 44 void lovehous(machine_config &config); 45 void hnxmasev(machine_config &config); 46 void mmaiko(machine_config &config); 47 void maiko(machine_config &config); 48 void mladyhtr(machine_config &config); 49 void omotesnd(machine_config &config); 50 void abunai(machine_config &config); 51 void gionbana(machine_config &config); 52 void mgmen89(machine_config &config); 53 void scandalm(machine_config &config); 54 55 void init_pairsten(); 56 void init_telmahjn(); 57 void init_gionbana(); 58 void init_omotesnd(); 59 void init_scandal(); 60 void init_mgmen89(); 61 void init_mjfocusm(); 62 void init_mjfocus(); 63 void init_pairsnb(); 64 void init_mjnanpas(); 65 66 DECLARE_READ_LINE_MEMBER(nb1413m3_outcoin_flag_r); 67 68 private: 69 required_device<cpu_device> m_maincpu; 70 required_device<nb1413m3_device> m_nb1413m3; 71 required_device<screen_device> m_screen; 72 required_device<palette_device> m_palette; 73 optional_region_ptr<uint8_t> m_clut_ptr; 74 75 int m_scrolly; 76 int m_blitter_destx; 77 int m_blitter_desty; 78 int m_blitter_sizex; 79 int m_blitter_sizey; 80 int m_blitter_src_addr; 81 int m_blitter_direction_x; 82 int m_blitter_direction_y; 83 int m_vram; 84 int m_gfxrom; 85 int m_dispflag; 86 int m_flipscreen; 87 int m_clutsel; 88 int m_screen_refresh; 89 int m_gfxdraw_mode; 90 bitmap_ind16 m_tmpbitmap0; 91 bitmap_ind16 m_tmpbitmap1; 92 std::unique_ptr<uint8_t[]> m_videoram0; 93 std::unique_ptr<uint8_t[]> m_videoram1; 94 std::unique_ptr<uint8_t[]> m_palette_ptr; 95 std::unique_ptr<uint8_t[]> m_clut; 96 int m_param_old[0x10]; 97 int m_param_cnt; 98 int m_flipscreen_old; 99 emu_timer *m_blitter_timer; 100 101 uint8_t palette_type1_r(offs_t offset); 102 void palette_type1_w(offs_t offset, uint8_t data); 103 uint8_t palette_type2_r(offs_t offset); 104 void palette_type2_w(offs_t offset, uint8_t data); 105 uint8_t palette_type3_r(offs_t offset); 106 void palette_type3_w(offs_t offset, uint8_t data); 107 void clutsel_w(uint8_t data); 108 uint8_t clut_r(offs_t offset); 109 void clut_w(offs_t offset, uint8_t data); 110 void blitter_w(offs_t offset, uint8_t data); 111 void scrolly_w(uint8_t data); 112 void vramsel_w(uint8_t data); 113 void romsel_w(uint8_t data); 114 115 uint8_t taiwanmb_unk_r(); 116 void taiwanmb_blitter_w(offs_t offset, uint8_t data); 117 void taiwanmb_gfxdraw_w(uint8_t data); 118 void taiwanmb_gfxflag_w(uint8_t data); 119 void taiwanmb_mcu_w(uint8_t data); 120 121 virtual void video_start() override; 122 DECLARE_VIDEO_START(_1layer); 123 124 uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 125 void vramflip(int vram); 126 void update_pixel0(int x, int y); 127 void update_pixel1(int x, int y); 128 void gfxdraw(); 129 130 void common_save_state(); 131 void postload(); 132 133 void bananadr_io_map(address_map &map); 134 void club90s_map(address_map &map); 135 void gionbana_io_map(address_map &map); 136 void gionbana_map(address_map &map); 137 void hanamomo_io_map(address_map &map); 138 void hanamomo_map(address_map &map); 139 void hanaoji_map(address_map &map); 140 void hnageman_map(address_map &map); 141 void hnxmasev_map(address_map &map); 142 void lovehous_io_map(address_map &map); 143 void lovehous_map(address_map &map); 144 void maiko_io_map(address_map &map); 145 void maiko_map(address_map &map); 146 void mgion_io_map(address_map &map); 147 void mgion_map(address_map &map); 148 void mmaiko_map(address_map &map); 149 void msjiken_io_map(address_map &map); 150 void omotesnd_io_map(address_map &map); 151 void omotesnd_map(address_map &map); 152 void scandal_io_map(address_map &map); 153 void scandalm_io_map(address_map &map); 154 void scandalm_map(address_map &map); 155 void taiwanmb_io_map(address_map &map); 156 void taiwanmb_map(address_map &map); 157 158 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 159 }; 160