1 // license:BSD-3-Clause 2 // copyright-holders:Takahiro Nogi 3 4 #include "machine/nb1413m3.h" 5 #include "machine/gen_latch.h" 6 #include "emupal.h" 7 #include "screen.h" 8 9 class nbmj8991_state : public driver_device 10 { 11 public: nbmj8991_state(const machine_config & mconfig,device_type type,const char * tag)12 nbmj8991_state(const machine_config &mconfig, device_type type, const char *tag) 13 : driver_device(mconfig, type, tag) , 14 m_maincpu(*this, "maincpu"), 15 m_audiocpu(*this, "audiocpu"), 16 m_nb1413m3(*this, "nb1413m3"), 17 m_screen(*this, "screen"), 18 m_palette(*this, "palette"), 19 m_soundlatch(*this, "soundlatch"), 20 m_generic_paletteram_8(*this, "paletteram") { } 21 22 void nbmjdrv1(machine_config &config); 23 void nbmjdrv2(machine_config &config); 24 void nbmjdrv3(machine_config &config); 25 void tokyogal(machine_config &config); 26 void finalbny(machine_config &config); 27 void mjlstory(machine_config &config); 28 void galkaika(machine_config &config); 29 void pstadium(machine_config &config); 30 void galkoku(machine_config &config); 31 void av2mj2rg(machine_config &config); 32 void av2mj1bb(machine_config &config); 33 void vanilla(machine_config &config); 34 void mcontest(machine_config &config); 35 void triplew1(machine_config &config); 36 void ntopstar(machine_config &config); 37 void tokimbsj(machine_config &config); 38 void triplew2(machine_config &config); 39 void uchuuai(machine_config &config); 40 void hyouban(machine_config &config); 41 void qmhayaku(machine_config &config); 42 void mjgottub(machine_config &config); 43 44 void init_galkaika(); 45 void init_tokimbsj(); 46 void init_tokyogal(); 47 void init_finalbny(); 48 49 private: 50 required_device<cpu_device> m_maincpu; 51 optional_device<cpu_device> m_audiocpu; 52 required_device<nb1413m3_device> m_nb1413m3; 53 required_device<screen_device> m_screen; 54 required_device<palette_device> m_palette; 55 optional_device<generic_latch_8_device> m_soundlatch; 56 57 required_shared_ptr<uint8_t> m_generic_paletteram_8; 58 59 enum 60 { 61 TIMER_BLITTER 62 }; 63 64 int m_scrollx; 65 int m_scrolly; 66 int m_blitter_destx; 67 int m_blitter_desty; 68 int m_blitter_sizex; 69 int m_blitter_sizey; 70 int m_blitter_src_addr; 71 int m_blitter_direction_x; 72 int m_blitter_direction_y; 73 int m_gfxrom; 74 int m_dispflag; 75 int m_flipscreen; 76 int m_clutsel; 77 int m_screen_refresh; 78 bitmap_ind16 m_tmpbitmap; 79 std::unique_ptr<uint8_t[]> m_videoram; 80 std::unique_ptr<uint8_t[]> m_clut; 81 int m_flipscreen_old; 82 emu_timer *m_blitter_timer; 83 84 void soundbank_w(uint8_t data); 85 void palette_type1_w(offs_t offset, uint8_t data); 86 void palette_type2_w(offs_t offset, uint8_t data); 87 void palette_type3_w(offs_t offset, uint8_t data); 88 void blitter_w(offs_t offset, uint8_t data); 89 uint8_t clut_r(offs_t offset); 90 void clut_w(offs_t offset, uint8_t data); 91 92 virtual void machine_reset() override; 93 virtual void video_start() override; 94 95 uint32_t screen_update_type1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 96 uint32_t screen_update_type2(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 97 void vramflip(); 98 void update_pixel(int x, int y); 99 void gfxdraw(); 100 101 void postload(); 102 103 void av2mj1bb_io_map(address_map &map); 104 void av2mj1bb_map(address_map &map); 105 void av2mj2rg_map(address_map &map); 106 void galkaika_map(address_map &map); 107 void galkoku_io_map(address_map &map); 108 void galkoku_map(address_map &map); 109 void hyouban_io_map(address_map &map); 110 void mjlstory_map(address_map &map); 111 void nbmj8991_sound_io_map(address_map &map); 112 void nbmj8991_sound_map(address_map &map); 113 void pstadium_io_map(address_map &map); 114 void pstadium_map(address_map &map); 115 void tokyogal_map(address_map &map); 116 void triplew1_map(address_map &map); 117 void triplew2_map(address_map &map); 118 119 virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; 120 }; 121