1 // license:BSD-3-Clause 2 // copyright-holders:Nicola Salmoria 3 4 /************************************************************************* 5 6 Deniam games 7 8 *************************************************************************/ 9 10 #include "machine/gen_latch.h" 11 #include "sound/okim6295.h" 12 #include "emupal.h" 13 #include "tilemap.h" 14 15 class deniam_state : public driver_device 16 { 17 public: deniam_state(const machine_config & mconfig,device_type type,const char * tag)18 deniam_state(const machine_config &mconfig, device_type type, const char *tag) : 19 driver_device(mconfig, type, tag), 20 m_videoram(*this, "videoram"), 21 m_textram(*this, "textram"), 22 m_spriteram(*this, "spriteram"), 23 m_spritegfx(*this, "spritegfx"), 24 m_maincpu(*this, "maincpu"), 25 m_audiocpu(*this, "audiocpu"), 26 m_oki(*this, "oki"), 27 m_gfxdecode(*this, "gfxdecode"), 28 m_palette(*this, "palette"), 29 m_soundlatch(*this, "soundlatch") 30 { } 31 32 void deniam16c(machine_config &config); 33 void deniam16b(machine_config &config); 34 35 void init_karianx(); 36 void init_logicpro(); 37 38 private: 39 /* memory pointers */ 40 required_shared_ptr<u16> m_videoram; 41 required_shared_ptr<u16> m_textram; 42 required_shared_ptr<u16> m_spriteram; 43 44 required_memory_region m_spritegfx; 45 46 /* video-related */ 47 tilemap_t *m_fg_tilemap; 48 tilemap_t *m_bg_tilemap; 49 tilemap_t *m_tx_tilemap; 50 int m_display_enable; 51 int m_bg_scrollx_offs; 52 int m_bg_scrolly_offs; 53 int m_fg_scrollx_offs; 54 int m_fg_scrolly_offs; 55 int m_bg_scrollx_reg; 56 int m_bg_scrolly_reg; 57 int m_bg_page_reg; 58 int m_fg_scrollx_reg; 59 int m_fg_scrolly_reg; 60 int m_fg_page_reg; 61 int m_bg_page[4]; 62 int m_fg_page[4]; 63 u16 m_coinctrl; 64 65 /* devices */ 66 void irq_ack_w(u16 data); 67 void videoram_w(offs_t offset, u16 data, u16 mem_mask = ~0); 68 void textram_w(offs_t offset, u16 data, u16 mem_mask = ~0); 69 u16 coinctrl_r(); 70 void coinctrl_w(offs_t offset, u16 data, u16 mem_mask = ~0); 71 void deniam16b_oki_rom_bank_w(u8 data); 72 void deniam16c_oki_rom_bank_w(u8 data); 73 TILEMAP_MAPPER_MEMBER(scan_pages); 74 TILE_GET_INFO_MEMBER(get_bg_tile_info); 75 TILE_GET_INFO_MEMBER(get_fg_tile_info); 76 TILE_GET_INFO_MEMBER(get_tx_tile_info); 77 virtual void machine_start() override; 78 virtual void machine_reset() override; 79 virtual void video_start() override; 80 u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); 81 void deniam_common_init( ); 82 void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect ); 83 void set_bg_page( int page, int value ); 84 void set_fg_page( int page, int value ); 85 required_device<cpu_device> m_maincpu; 86 optional_device<cpu_device> m_audiocpu; // system 16c does not have sound CPU 87 required_device<okim6295_device> m_oki; 88 required_device<gfxdecode_device> m_gfxdecode; 89 required_device<palette_device> m_palette; 90 optional_device<generic_latch_8_device> m_soundlatch; 91 void deniam16b_map(address_map &map); 92 void deniam16c_map(address_map &map); 93 void sound_io_map(address_map &map); 94 void sound_map(address_map &map); 95 }; 96